Определение запроса рабочего элемента
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
Запросы рабочих элементов в Azure Board создают списки рабочих элементов на основе критериев фильтра, предоставленных вами. Вы можете сохранить и поделиться этими управляемыми запросами с другими пользователями.
Запросы можно создавать на веб-портале или из поддерживаемого клиента, например Visual Studio Team Explorer. Для поддержки массовых обновлений или добавлений импортируйте или экспортируйте запросы с помощью файлов Excel или .csv.
Примечание.
Образы браузера, используемые в этой статье, относятся к функции New Boards Hubs, которая включена по умолчанию. Если эта функция не включена, возможно, вы используете предыдущий интерфейс доски. Чтобы отобразить изображения для предыдущего интерфейса, выберите версию Azure DevOps Server 2022 этой статьи.
Ознакомьтесь с нашими рекомендуемыми рекомендациями далее в этой статье.
Необходимые компоненты
- Уровни доступа:
- Получить доступ к заинтересованным лицам для просмотра и выполнения общих запросов. Все члены проекта имеют доступ к заинтересованным лицам по умолчанию. Дополнительные сведения см. в разделе "Изменение разрешений для общего запроса или папки".
- У вас есть базовый доступ или более высокий уровень, чтобы добавить и сохранить общий запрос.
- Разрешения. Укажите разрешение на участие , чтобы разрешить папку, в которую требуется добавить запрос. По умолчанию у группы участников нет этого разрешения.
Примечание.
Пользователи с доступом заинтересованных лиц для общедоступного проекта имеют полный доступ к функциям запросов, как и пользователи с базовым доступом. Дополнительные сведения см. в кратком справочнике по правам доступа для заинтересованных лиц.
- Уровни доступа: по умолчанию все участники проекта и пользователи с доступом заинтересованных лиц могут просматривать и выполнять все общие запросы. Вы можете изменить набор разрешений для папки общего запроса или общего запроса. Дополнительные сведения см. в разделе "Настройка разрешений запроса".
- Разрешения. Чтобы добавить и сохранить запрос в общих запросах, необходимо предоставить базовый доступ или более поздней версии. Кроме того, у вас должен быть задано разрешение на участие , чтобы разрешить папку, в которую нужно добавить запрос. По умолчанию у группы участников нет этого разрешения.
Выбор фильтра запросов
В Редактор запросов выберите фильтр, чтобы перейти к статье с примерами запросов. Наряду с фильтрами запросов можно интерактивно применять фильтры к результатам запроса.
Примечание.
Управляемые запросы не поддерживают поиск близкого взаимодействия, однако семантические поиски выполняются. Семантические поиски также поддерживают и *
?
как подстановочные знаки, и вы можете использовать несколько подстановочных знаков для сопоставления нескольких символов. Дополнительные сведения см. в разделе "Поиск функциональных рабочих элементов".
Функции фильтрации
Макросы
Вы можете интерактивно отфильтровать запрос с помощью функции фильтра.
Открытие запросов
В веб-браузере (1) убедитесь, что выбран правильный проект (2) выберите "Запросы >доски", а затем (3) выберите "Все".
Откроется страница "Запросы " на вкладке "Избранное ", в которую перечислены запросы, заданные в качестве избранного. Вы можете выбрать вкладку "Все ", чтобы просмотреть все определенные и общие запросы для проекта.
Совет
Запросы, выбранные вами или командой в качестве избранного, отображаются на странице "Избранное ". На странице Project также отображаются избранные запросы вместе с другими объектами. Дополнительные сведения см. в разделе "Настройка личных или избранных команд".
В проекте выберите "Запросы к доскам">, а затем выберите "Все".
Откроется страница "Запросы " на вкладке "Избранное ", в которую перечислены запросы, заданные в качестве избранного. Вы можете выбрать вкладку "Все ", чтобы просмотреть все определенные и общие запросы для проекта.
Совет
Запросы, выбранные вами или командой в качестве избранного, отображаются на странице "Избранное ". На странице Project также отображаются избранные запросы вместе с другими объектами. Дополнительные сведения см. в разделе "Настройка личных или избранных команд".
Определение запроса с неструктурированным списком
Запустите новый запрос на вкладке "Запросы " на веб-портале или на вкладке "Рабочие элементы " в Team Explorer.
- Выберите новый>запрос.
Редактор запросов отображается со следующими параметрами по умолчанию: неструктурированный список рабочих элементов, рабочий тип=[Любой], и State=[Any].
- Измените значения и добавьте или удалите предложения или измените тип запроса на рабочие элементы и прямые ссылки или дерево рабочих элементов.
- Выберите новый>запрос.
Редактор запросов отображается со следующими параметрами по умолчанию: неструктурированный список рабочих элементов, рабочий тип=[Любой], и State=[Any].
- Измените значения и добавьте или удалите предложения или измените тип запроса на рабочие элементы и прямые ссылки или дерево рабочих элементов.
Запрос между проектами или внутри проектов
По умолчанию новые запросы ограничиваются областью текущего проекта. Но вы можете создавать запросы для поиска рабочих элементов, определенных в организации или коллекции проектов. Однако все сохраненные запросы сохраняются в определенном проекте.
Чтобы вывести список рабочих элементов, определенных в двух или нескольких проектах, установите флажок "Запрос" в проектах. Например, следующий запрос находит все функции, созданные во всех проектах за последние 30 дней.
При проверке запроса между проектами можно добавить поле "Командный проект", чтобы отфильтровать количество проектов.
Примечание.
- Разделите несколько имен проектов с разделителем списка, соответствующим региональным параметрам, определенным для клиентского компьютера, например запятой
,
. - При использовании поля State в запросе в нескольких проектах отображаемые значения ограничиваются значениями, определенными в проекте по умолчанию. Это означает, что если вы запрашиваете все возможные значения состояния из каждого проекта, но только те из проекта, которые задаются по умолчанию. Например, если у вас есть три проекта : Project A, Project B и Project C, а только Project A имеет состояние "В проверке", в то время как проекты B и C имеют разные состояния, запросы между этими проектами показывают только состояния, определенные в Project A.
- Поле "Командный проект " доступно только после проверки запроса в проектах.
- При проверке запроса между проектами все поля из всех типов рабочих элементов, определенных во всех проектах в коллекции, отображаются в раскрывающемся меню "Поле ".
- Если запрос между проектами снят, в раскрывающемся меню "Поле" отображаются только те поля из этих типов рабочих элементов, как определено в текущем проекте.
Определение предложения
Чтобы создать запрос, определите одно или несколько предложений. Каждое предложение определяет критерии фильтра для одного поля.
Пример предложения запроса
и/или | Поле | Оператор | Значение |
---|---|---|---|
And | Назначено | = | @Me |
Список доступных операторов на основе типа данных поля см . в кратком справочнике по индексу запросов.
Все предложения добавляются как оператор And . Выберите или измените группирование. Предложения групп, чтобы убедиться, что операторы предложения выполняются в требуемой последовательности.
Выберите " Добавить новое предложение", чтобы добавить другое предложение в конце запроса, а затем выберите поле, оператор и значение для этого предложения.
Например, выполните поиск всех рабочих элементов, назначенных вам, указав поле "Назначенный кому ", оператор равенства (=) и макрос @Me , представляющий удостоверение пользователя.
Совет
Чтобы просмотреть синтаксис WIQL для запроса и как скобки используются для группирования предложений, установите редактор Wiql Marketplace. Это расширение поддерживает просмотр синтаксиса WIQL и экспорт его в WIQL-файл для использования в вызовах REST API. Дополнительные сведения см. в разделе Синтаксис языка запросов рабочих элементов (WIQL).
Контрольный список для определения предложения запроса
В первой пустой строке в заголовке столбца "Поле " щелкните стрелку вниз, чтобы отобразить список доступных полей и выбрать элемент в списке. Дополнительные сведения см. в разделе "Поля запроса" и "Значения".
В той же строке в заголовке столбца оператора щелкните стрелку вниз, чтобы отобразить список доступных операторов, а затем выберите элемент в списке. Дополнительные сведения см. в статье Операторы.
В той же строке в заголовке столбца "Значение " введите значение или щелкните стрелку вниз, а затем выберите элемент в списке. Дополнительные сведения об использовании макроса или переменной для указания текущего проекта, пользователя, даты или другого выбора см. в разделе "Переменные".
Чтобы добавить предложение, нажмите кнопку "Добавить новое предложение".
Предложение можно добавить в конец запроса или выполнить следующие задачи с соответствующими значками:
- Вставка новой строки фильтра
- Удаление этой строки фильтра
- Группировать выбранные предложения
- Предложения разгруппировать
Использование дерева рабочих элементов для просмотра иерархий
Используйте запрос дерева рабочих элементов для просмотра многоуровневого вложенного списка рабочих элементов. Например, можно просмотреть все элементы невыполненной работы и связанные задачи. Чтобы сосредоточиться на разных частях дерева, выберите "Развернуть все" или "Свернуть все".
Примечание.
Невозможно создать запрос, показывающий иерархическое представление планов тестирования, наборов тестов и тестовых вариантов. Эти элементы не связаны друг с другом с помощью типов ссылок родительского дочернего элемента. Однако можно создать запрос прямых ссылок, который перечисляет тестовые рабочие элементы. Кроме того, вы можете просмотреть иерархию на странице "Планы тестирования".
Определите критерии фильтра для родительских и дочерних рабочих элементов. Чтобы найти связанные дочерние элементы, сначала выберите "Сопоставление рабочих элементов верхнего уровня". Чтобы найти связанные родители, сначала выберите "Совпадение связанных рабочих элементов".
Использование прямых ссылок для просмотра зависимостей
Используйте запрос рабочих элементов и прямых ссылок для отслеживания рабочих элементов, зависящих от других отслеживаемых работ, таких как задачи, ошибки, проблемы или функции. Например, можно просмотреть элементы невыполненной работы, зависящие от других элементов, реализованных или исправленных ошибок.
Используйте запрос прямых ссылок для отслеживания зависимостей между командами. Запрос также помогает управлять обязательствами вашей команды. Выберите критерии фильтра для верхних и связанных рабочих элементов. И выберите типы ссылок для фильтрации зависимостей.
Отфильтруйте список рабочих элементов первого уровня, выбрав один из следующих вариантов:
- Возвращают только элементы с соответствующими ссылками: возвращается рабочий элемент первого уровня, но только если они имеют ссылки на рабочие элементы, указанные критериями фильтрации связанных рабочих элементов.
- Возвращает все элементы верхнего уровня: все рабочие элементы первого уровня возвращаются, несмотря на критерии фильтрации связанных рабочих элементов. Рабочие элементы второго уровня, связанные с первым уровнем, возвращаются, если они соответствуют критериям фильтра связанных рабочих элементов.
- Возвращаются только те элементы, которые не имеют сопоставленных ссылок: возвращаются рабочие элементы первого уровня, но только если они не имеют ссылок на рабочие элементы, указанные критериями фильтра связанных рабочих элементов.
Дополнительные сведения о каждом типе ссылки см. в справочнике по типу ссылок.
Использование и (или) логического выражения
Укажите или Or
создайте And
логические выражения предложений запроса. Используется And
для поиска рабочих элементов, которые соответствуют критериям в текущем предложении и предыдущем предложении. Используется Or
для поиска рабочих элементов, которые соответствуют критерию в текущем предложении или предыдущем предложении.
Добавьте одно новое предложение для каждого поля рабочего элемента, чтобы уточнить критерии поиска. Добавьте предложения, чтобы вернуть только нужный набор рабочих элементов. Если вы не получаете ожидаемые результаты из запроса, измените его. Вы можете добавлять, удалять, группировать или разгруппировать предложения запросов, чтобы улучшить результаты запроса.
Предложения групповых запросов для работы в виде одной единицы, отдельной от остальной части запроса. Предложения группировки похожи на размещение скобок вокруг выражения в математическом уравнении или инструкции логики. Когда вы группируете предложения, And
Or
первое предложение в группе применяется ко всей группе.
Предложения групп
Сгруппированные предложения работают отдельно от остальной части запроса. Предложения группировки похожи на размещение скобок вокруг математического уравнения или выражения логики. Or
Оператор And
или оператор для первого предложения в группе применяется ко всей группе.
Как показано в следующих примерах, сгруппированные предложения преобразуются в соответствующее логическое выражение.
Query | Сгруппированные предложения | Логическое выражение |
---|---|---|
1 | ||
2 | ||
3 |
Эти запросы возвращают рабочие элементы, которые являются типом "Ошибка" и соответствуют следующим логическим выражениям:
- Запрос 1.
AND State=Active OR Assigned to @Me
- Запрос 2.
AND (State=Active OR Assigned to @Me)
- Запрос 3.
OR (State=Active AND Assigned to @Me)
Чтобы сгруппировать одно или несколько предложений, выберите их и щелкните значок предложений группы.
Можно также сгруппировать несколько сгруппированных предложений. Установите флажки каждого предложения. Затем выберите значок предложений группы.
Если результаты запроса не возвращают ожидаемые результаты, выполните следующие действия.
- Убедитесь, что каждое предложение определено как нужное.
- Проверьте
And
/Or
назначения для каждого предложения. Если результаты содержат больше рабочих элементов, чем ожидалось, частоOr
предложение присутствует вместоAnd
предложения. - Определите, нужно ли группировать или изменять группирование предложений запросов и
And
/Or
назначения каждого сгруппированного предложения. - Добавьте дополнительные предложения запросов, чтобы уточнить критерии фильтра запросов.
- Просмотрите параметры, доступные для указания полей, операторов и значений.
- См . рекомендации далее в этой статье.
Разгруппировать предложение
Чтобы разгруппировать предложение, выберите значок предложений разгруппировки для сгруппированного предложения.
Установка ширины столбца по умолчанию в результатах запроса
Чтобы задать ширину столбца по умолчанию в результатах запроса, выполните следующие действия.
- Откройте запрос, который требуется изменить.
- Вручную настройте ширину столбца на нужный размер, перетащив края заголовков столбцов.
- Нажмите кнопку "Сохранить" или "Сохранить как если вы хотите сохранить его в качестве нового запроса".
- Закройте и повторно откройте запрос, чтобы обеспечить сохранение ширины столбца.
Azure DevOps в настоящее время не поддерживает настройку ширины столбца по умолчанию, которая сохраняется во всех сеансах. Ширина столбца сохраняется для каждого запроса, поэтому необходимо настроить и сохранить их для каждого запроса по отдельности.
Просмотр результатов запроса на панели мониторинга
В следующих двух мини-приложениях отображаются результаты запроса. Рабочие элементы можно открывать непосредственно из этих мини-приложений.
- Работа назначена мне: перечисляет все предлагаемые или активные рабочие элементы, назначенные пользователю, вошедшего в систему. Выводит поля идентификатора, состояния и заголовка.
- Мини-приложение результатов запроса: отображает результаты запроса плоских, дерева или прямых ссылок. Вы можете настроить поля, отображаемые с помощью мини-приложения, изменить размер полей столбца и развернуть и свернуть дерево и запрос прямых ссылок.
Дополнительные сведения см. в разделе "Добавление мини-приложений" на панель мониторинга.
Просмотр мини-приложения результатов запроса с родительскими заголовками
Вы можете просмотреть результаты запроса с отображаемым заголовком Parent . Для этого выполните следующие действия:
- Создайте запрос, который фильтрует интересующие рабочие элементы. Запрос может быть неструктурированным, деревом или запросом прямых ссылок.
- Добавьте поле Parent в качестве столбца.
- Сохраните запрос как общий запрос или избранное группы.
- Добавьте мини-приложение результатов запроса на панель мониторинга и настройте запрос. Убедитесь, что для отображения задано поле "Родительский".
На следующем рисунке показан мини-приложение результатов запроса, отображающее поле Parent .
Определение запроса в виде гиперссылки
Гиперссылка запроса использует язык запросов рабочих элементов (WIQL), который напоминает Transact-SQL. Дополнительные сведения см. в разделе Синтаксис языка запросов рабочих элементов (WIQL).
Примечание.
Большинство браузеров применяют ограничение в диапазоне от 2000 до 2083 символов для строки URL-адреса.
Синтаксис гиперссылки запроса
Кодирование части WIQL синтаксиса URL-адреса. Для кодирования URL-адреса можно использовать любой инструмент кодировщика URL-адресов.
https://dev.azure.com/OrganizationName/ProjectName/_workitems?_a=query&wiql={Encoded WorkItemQueryLanguage}
Например, следующая гиперссылка содержит идентификатор и заголовок всех активных ошибок, определенных в пути к области FabrikamFiber/Web для организации Fabrikam.
https://dev.azure.com/fabrikam/FabrikamFiber/_workitems?_a=query&wiql=SELECT%20%5BSystem.ID%5D%2C%20%5BSystem.Title%5D%20FROM%20WorkItems%20WHERE%20%5BSystem.TeamProject%5D%3D'FabrikamFiber'%20AND%20%5BSystem.WorkItemType%5D%3D'Bug'%20AND%20%5BSystem.State%5D%3D'Active'%20AND%20%5BSystem.AreaPath%5D%3D'FabrikamFiber%5CWeb'
Декодированные WIQL соответствуют следующим требованиям:
SELECT [System.ID], [System.Title]
FROM WorkItems
WHERE [System.TeamProject]='FabrikamFiber'
AND [System.WorkItemType]='Bug'
AND [System.State]='Active'
AND [System.AreaPath]='FabrikamFiber\Web'
Примечание.
Длина WIQL не должна превышать 32K символов для запросов Azure Boards.
Синтаксис гиперссылки запроса
https://{ServerName}/{CollectionName}/{ProjectName}/_workitems?_a=query&wiql={Encoded WorkItemQueryLanguage}
Например, следующая гиперссылка содержит идентификатор, заголовок и состояние всех ошибок в пути к области FabrikamFiber/Web.
http://fabrikam:8080/tfs/DefaultCollection/FabrikamFiber/_workitems?_a=query&wiql=SELECT%20%5BSystem.ID%5D%2C%20%5BSystem.Title%5D%2C%20%5BSystem.State%5D%20FROM%20WorkItems%20WHERE%20%5BSystem.TeamProject%5D%3D'FabrikamFiber'%20AND%20%5BSystem.WorkItemType%5D%3D'Bug'%20AND%20%5BSystem.AreaPath%5D%3D'FabrikamFiber%5CWeb'%20%20
Например, см. следующую некодированную запись.
http://fabrikam:8080/tfs/DefaultCollection/FabrikamFiber/_workitems?_a=query&wiql=
SELECT [System.ID], [System.Title], [System.State]
FROM WorkItems
WHERE [System.TeamProject]='FabrikamFiber'
AND [System.WorkItemType]='Bug'
AND [System.AreaPath]='FabrikamFiber\Web'
Рекомендации
Следующие рекомендации применяются к следующим запросам, которые можно создать:
Создание ориентированных, выборочных запросов
Определите высокоизбирательный запрос, применяя все фильтры, необходимые для запроса. Чем более выборочный запрос, тем меньше набор результатов. Чем меньше результирующий набор, тем больше целевого и выборочного запроса.
Использование тегов для классификации рабочих элементов
Используйте теги рабочих элементов для классификации рабочих элементов вместо настраиваемого поля. Запросы, которые фильтруют теги, обычно выполняются быстрее по сравнению с этими запросами, которые фильтруют по строковым совпадениям.
В отличие от совпадений настраиваемого поля или частичных совпадений, запрос с Tags Contains
операцией не требует полного сканирования всех таблиц рабочих элементов.
Использование Contains words
для строковых совпадений
Чтобы отфильтровать совпадение строк, используйте Contains Words
вместо Contains
оператора. Оператор Contains Words
выполняет полнотекстовый поиск по указанному полю, что, как правило, выполняется быстрее.
Оператор Contains
выполняет проверку таблицы, которая является более медленной операцией, чем Contains Words
оператор. Он также потребляет больше циклов ЦП. Эти циклы ЦП могут привести к возникновению ограничений скорости. Дополнительные сведения см. в разделе "Ограничения скорости и использования".
Указание небольших групп с In Group
помощью оператора
Оператор In Group
фильтрует рабочие элементы на основе совпадений в группе значений. Группа значений соответствует значениям, содержащимся в группе, группе безопасности или категории отслеживания работы. Например, можно создать запрос, чтобы найти все рабочие элементы, назначенные любому участнику команды. Или найдите все рабочие элементы, принадлежащие категории требований (Microsoft.RequirementCategory
).
При фильтрации по группе, содержащей большое количество элементов, результирующий набор, как правило, будет большим и неизбирательным. Кроме того, если группа соответствует большой группе Microsoft Entra, запрос создает довольно большие затраты для разрешения этой группы из идентификатора Microsoft Entra.
Избегайте использования негритированных операторов
Неисправные операторы, такие как <>, Not In, Not Under, Not In Group
, как правило, создают неизбирательные запросы и большие результирующие наборы.
При необходимости используйте только отрицание операторов. Всегда старайтесь сначала найти альтернативные варианты. Например, если Field1 имеет значения A, B, C, D; укажите Field1 In A, B, C
предложение, а не предложение с отрицаниемField1 <> D
.
Избегайте сравнения строк
Запросы, содержащие сравнения строк, создают проверки таблиц, которые по сути неэффективны. Вместо этого рекомендуется использовать теги или определенное настраиваемое поле в качестве альтернативных вариантов, особенно если запрос выполняется плохо.
Ограничения Or
операторов
Ограничить количество операторов, определенных Or
в запросе. Запросы выполняются лучше, если используются меньше Or
операторов. Слишком много Or
операторов может сделать запрос неизбирательным. Если запрос выполняется медленно, переупорядочение Or
предложения оператора в верхней части предложений запроса.
Сохранение запроса
Из-за внутренней оптимизации сохраненные запросы, как правило, лучше выполняются по сравнению с несохраненным запросом. Всегда сохраняйте запрос при планировании повторного использования. Даже для запросов WIQL, выполняемых через REST API, сохраните WIQL через веб-портал, чтобы сделать вызовы REST API, поэтому они менее подвержены будущим регрессиям производительности.
Выполнение запроса
Иногда необходимо выполнить запрос несколько раз, чтобы достичь правильного плана оптимизации. Не забудьте сохранить запрос и запустить его до 10 раз в течение 30-минутного периода. Таким образом, система может изучить и искать план оптимизации, наиболее подходящий для вашего запроса.