Définir une requête d’élément de travail dans Azure Boards

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Les requêtes d'éléments de travail génèrent des listes d'éléments de travail en fonction des critères de filtre que vous avez fournis. Vous pouvez enregistrer et partager ces requêtes gérées avec d'autres.

Vous pouvez créer des requêtes à partir du portail Web ou à partir d'un client pris en charge, tel que Visual Studio Team Explorer. Pour prendre en charge les mises à jour ou les ajouts en bloc, importez ou exportez des requêtes à l’aide d’Excel ou de fichiers .csv.

Consultez nos meilleures pratiques recommandées plus loin dans cet article.

Prérequis

  • Vous devez disposer d'un accès Stakeholder pour afficher et exécuter des requêtes partagées. Tous les membres du projet ont un accès partie prenante par défaut. Pour plus d'informations, consultez Modifier les autorisations pour une requête ou un dossier partagé.
  • Vous devez disposer d'un accès De base ou supérieur pour ajouter et enregistrer une requête partagée.
  • Votre autorisation Contribuer doit être définie sur Autoriser pour le dossier auquel vous souhaitez ajouter une requête. Par défaut, le groupe Contributeurs ne dispose pas de cette autorisation.

Notes

Les utilisateurs disposant d’un accès Partie prenante pour un projet public ont un accès complet aux fonctionnalités de requête, tout comme les utilisateurs disposant d’un accès De base. Pour plus d’informations, consultez Référence rapide sur l’accès de partie prenante.

  • Par défaut, tous les membres et utilisateurs du projet disposant d’un accès Partie prenante peuvent afficher et exécuter l’ensemble des requêtes partagées. Vous pouvez modifier le jeu d’autorisations d’un dossier de requête partagé ou d’une requête partagée. Pour plus d'informations, consultez Définir les autorisations de requête.
  • Pour ajouter et enregistrer une requête sous Requêtes partagées, vous devez disposer d’un accès De base ou supérieur. En outre, votre autorisation Contribuer doit être définie sur Autoriser pour le dossier auquel vous souhaitez ajouter la requête. Cette autorisation n’est pas définie par défaut pour le groupe Contributeurs.

Choisir un filtre de requête

Dans l'Éditeur Power Query, vous pouvez sélectionner le filtre pour accéder à un article contenant des exemples de requêtes. En plus des filtres de requête, vous pouvez appliquer des filtres de manière interactive aux résultats de la requête.

Notes

Les requêtes managées ne prennent pas en charge les recherches de proximité, mais les recherches sémantiques le font. En outre, les recherches sémantiques prennent en charge à la fois * et ? en tant que caractères génériques, et vous pouvez utiliser plusieurs caractères génériques pour faire correspondre plusieurs caractères génériques. Pour plus d'informations, voir Recherche d'éléments de travail fonctionnels.


Filtrer les fonctionnalités

Macros



Vous pouvez également filtrer une requête de manière interactive à l'aide de la fonction Filtre.

Ouvrir des requêtes

Depuis votre navigateur Web, (1) vérifiez que vous avez sélectionné le bon projet, (2) choisissez Boards > Queries, puis (3) choisissez Tout.

Ouvrez Tableaux>Requêtes, navigation verticale

Si vous ouvrez Requêtes pour la première fois, la page s’ouvre à la section Favoris. Cette page répertorie les requêtes que vous avez indiquées comme favorites. Vous pouvez également choisir Tout pour afficher l’ensemble des requêtes que vous avez définies et les requêtes partagées définies pour le projet.

Conseil

Les requêtes que vous ou votre équipe a ajoutées aux favoris s’affichent sur la page Favoris. Les requêtes favorites, ainsi que d’autres objets, s’affichent également sur votre page Projet. Pour plus d'informations, voir Définir des favoris personnels ou d'équipe.

Définir une requête de liste plate

Démarrez une nouvelle requête à partir de l’onglet Requêtes du portail Web ou de l’onglet Éléments de travail dans Team Explorer.

Sélectionnez Nouvelle requête.

Capture d’écran de l’ajout d’une nouvelle requête, nouvelle expérience.

L’Éditeur de requête s’affiche avec les paramètres par défaut suivants : Liste plate d’éléments de travail, Type d’élément de travail=[Any]et État=[Any].

Capture d’écran de l’Éditeur de requête avec la liste plate des éléments de travail sélectionnés.

Modifiez les valeurs et ajoutez ou supprimez des clauses, ou changez le type de requête en éléments de travail et liens directs ou en arborescence d'éléments de travail.

Interroger entre ou au sein de projets

Les nouvelles requêtes portent par défaut sur le projet en cours. Toutefois, vous pouvez créer des requêtes pour rechercher des éléments de travail définis au sein de l’organisation ou de la collection de projets. Cependant, toutes les requêtes que vous enregistrez sont enregistrées dans un projet spécifique.

Pour répertorier les éléments de travail définis dans au moins deux projets, cochez la case Requête sur plusieurs projets. Par exemple, la requête suivante recherche toutes les fonctionnalités créées dans tous les projets au cours des 30 derniers jours.

Capture d’écran de l’éditeur de requête avec Requête sur plusieurs projets coché.

Une fois que vous avez coché Requête sur plusieurs projets, vous pouvez ajouter le champ Projet d’équipe pour filtrer sur un certain nombre de projets.

Capture d’écran de l’Éditeur de requête avec Projet d’équipe et d’autres champs ajoutés au filtre.

Remarque

Séparez plusieurs noms de projets avec le séparateur de liste qui correspond aux paramètres régionaux définis pour votre ordinateur client, par exemple une virgule ,.

  • Le champ Projet d’équipe n’est disponible qu’après avoir coché Requête sur plusieurs projets.
  • Lorsque l’option Requête sur plusieurs projets est cochée, tous les champs de tous les types d’éléments de travail définis dans tous les projets de la collection s’affichent dans le menu déroulant Champ.
  • Lorsque l'option Requête sur plusieurs projets n'est pas cochée, seuls les champs de ces types d'éléments de travail, tels que définis dans le projet en cours, apparaissent dans le menu déroulant Champ.

Définir une clause

Pour créer une requête, définissez une ou plusieurs clauses. Chaque clause définit un critère de filtre pour un champ unique.

Exemple de clause de requête

et/ou Champ Opérateur Valeur
And Affecté à = @Me

Pour obtenir la liste des opérateurs disponibles en fonction du type de données de champ, consultez Référence rapide de l’index de requête.

Toutes les clauses sont ajoutées en tant qu'instruction Et. Sélectionnez Ou pour modifier le regroupement. Regroupez les clauses pour garantir que les instructions de clause sont exécutées dans l’ordre requis.

Sélectionnez Ajouter une nouvelle clause pour ajouter une autre clause à la fin de la requête, puis sélectionnez Champ, Opérateur et Valeur pour cette clause.

Capture d’écran de l’Éditeur de requête montrant comment ajouter une clause.

Par exemple, recherchez tous les éléments de travail qui vous sont attribués en spécifiant le champ Affecté à, l’opérateur égal à (=) et la macro @Me, qui représente votre identité d’utilisateur.

Conseil

Pour afficher la syntaxe WIQL d’une requête et la façon dont les parenthèses sont utilisées pour regrouper des clauses, installez l’Éditeur Wiql de la Place de marché. Cette extension prend en charge l’affichage de la syntaxe WIQL et son exportation vers un fichier WIQL pour une utilisation dans les appels d’API REST. Pour plus d'informations, consultez Syntaxe du langage WIQL (WIQL).

Liste de contrôle pour définir une clause de requête

  1. Dans la première ligne vide, sous l’en-tête de colonne Champ, sélectionnez la flèche bas pour afficher la liste des champs disponibles, puis sélectionnez un élément dans la liste. Pour plus d’informations, voir Champs de requête et valeurs.

  2. Dans la même ligne, sous l'en-tête de colonne Opérateur, sélectionnez la flèche vers le bas pour afficher la liste des opérateurs disponibles, puis choisissez un élément dans la liste. Pour plus d’informations, consultez Opérateurs.

  3. Dans la même ligne, sous l'en-tête de colonne Valeur, saisissez une valeur ou sélectionnez la flèche vers le bas, puis choisissez un élément dans la liste. Pour plus d’informations sur l’utilisation d’une macro ou d’une variable pour spécifier le projet actuel, l’utilisateur, la date ou toute autre sélection, consultez Variables.

  4. Pour ajouter une clause, choisissez Ajouter une nouvelle clause.

    Vous pouvez ajouter une clause à la fin de la requête ou effectuer les tâches suivantes avec les icônes correspondantes :

    • Insérer une nouvelle ligne de filtre
    • Supprimer cette ligne de filtre
    • Regrouper les clauses sélectionnées
    • Dissocier les clauses

Utiliser une arborescence d’éléments de travail pour afficher les hiérarchies

Utilisez la requête Arborescence des éléments de travail pour afficher une liste imbriquée multiniveau d’éléments de travail. Par exemple, vous pouvez afficher tous les éléments de backlog et leurs tâches liées. Pour vous concentrer sur différentes parties de l’arborescence, choisissez Développer tout ou Réduire tout.

Notes

Vous ne pouvez pas construire une requête qui affiche une vue hiérarchique des Test Plans, Suites de tests et Cas de test. Ces éléments ne sont pas liés entre eux à l’aide de types de liens parent-enfant. Toutefois, vous pouvez créer une requête de liens directs qui répertorie les éléments de travail liés aux tests. Vous pouvez également afficher la hiérarchie via la page Plans de test.

Capture d’écran de liste de résultats affichant une requête d’arborescence.

Définissez les critères de filtre pour les éléments de travail parents et enfants. Pour rechercher les enfants liés, sélectionnez Trouver d’abord les éléments de travail de niveau supérieur. Pour rechercher les parents liés, sélectionnez Trouver d’abord les éléments de travail liés.

Capture d’écran de l’Éditeur de requête, vue d’arborescence des éléments de travail.

Utilisez la requête Éléments de travail et liens directs pour suivre les éléments de travail qui dépendent d’un autre travail suivi, tel que les tâches, les bogues, les problèmes ou les fonctionnalités. Par exemple, vous pouvez afficher les éléments du backlog qui dépendent d’autres éléments en implémentation ou d’un bogue en cours de résolution.

Utilisez la requête de liens directs pour suivre les dépendances entre les équipes. La requête vous aide également à gérer les engagements pris par votre équipe. Choisissez les critères de filtre pour les éléments de travail en haut et liés. Ensuite, sélectionnez les types de liens pour filtrer les dépendances.

Capture d’écran des résultats de la requête de liens directs.

Capture d’écran de l’éditeur de requête, requête de liens directs.

Filtrez votre liste de première couche d’éléments de travail à l’aide de l’une des options suivantes :

  • Retourner uniquement les éléments qui ont les liens correspondants : les éléments de travail de la première couche sont retournés, mais seulement s’ils ont des liens vers les éléments de travail spécifiés par les critères du filtre des éléments de travail liés.
  • Retourner tous les éléments de niveau supérieur : tous les éléments de travail de la première couche sont retournés indépendamment des critères de filtre d’éléments de travail liés. Les éléments de travail de la deuxième couche qui sont liés à ceux de la première couche sont retournés s’ils répondent aux critères du filtre des éléments de travail liés.
  • Retourner uniquement les éléments qui n’ont pas les liens correspondants : les éléments de travail de la première couche sont retournés, mais seulement s’ils n’ont pas de liens vers les éléments de travail spécifiés par les critères du filtre des éléments de travail liés.

Pour plus d’informations sur chaque type de lien, consultez Référence sur les types de liens.

Utilisation et/ou expression logique

Spécifiez And ou Or pour créer des expressions logiques de vos clauses de requête. Utilisez And pour rechercher des éléments de travail qui répondent aux critères de la clause actuelle et de la clause précédente. Utilisez Or pour rechercher des éléments de travail qui répondent au critère de la clause actuelle ou de la clause précédente.

Ajoutez une nouvelle clause pour chaque champ d’élément de travail afin d’affiner vos critères de recherche. Ajoutez des clauses pour renvoyer uniquement l’ensemble d’éléments de travail souhaité. Si vous ne recevez pas les résultats attendus de votre requête, affinez-la. Vous pouvez ajouter, supprimer, regrouper ou dissocier des clauses de requête pour améliorer les résultats de votre requête.

Regroupez les clauses de requête pour fonctionner comme une seule unité distincte du reste de la requête. Le regroupement de clauses est similaire à l’insertion de parenthèses autour d’une expression dans une équation mathématique ou une instruction logique. Lorsque vous regroupez des clauses, le And ou Or de la première clause du groupe s'applique à l'ensemble du groupe.

Grouper les clauses

Les clauses groupées fonctionnent en tant qu’unité unique distincte du reste de la requête. Le regroupement de clauses est similaire à l’insertion de parenthèses autour d’une équation mathématique ou d’une expression logique. L'opérateur And ou Or pour la première clause du groupe s'applique à l'ensemble du groupe.

Comme les exemples suivants le montrent, les clauses regroupées sont traduites en l’expression logique correspondante.

Requête Clauses regroupées Expression logique
1 Capture d’écran montrant une requête de clause de groupe. Les filtres sont configurés pour le champ Type d’élément de travail et soit le champ État soit le champ Affecté à. Capture d’écran d’une expression logique. Un opérateur AND regroupe les champs Type d’élément de travail, État et Affecté à. Un opérateur OR regroupe les champs État et Affecté à.
2 Capture d’écran montrant une requête de clause de groupe, avec des filtres pour le champ Type d’élément de travail et l’un des champs État ou Affecté à. Capture d’écran d’une expression logique. Un opérateur AND regroupe le type d’élément de travail avec les champs État ou Affecté à, qui sont regroupés par un opérateur OR.
3 Capture d’écran montrant une requête de clause de groupe. Les filtres sont configurés pour le champ Type d’élément de travail ou à la fois le champ État et le champ Affecté à. Capture d’écran d’une expression logique. Un opérateur OR lie le Type d’élément de travail aux champs État et Affecté à, qui sont liés par un opérateur AND.

Ces requêtes retournent des éléments de travail de type Bogue et répondent aux expressions logiques suivantes :

  • Requête 1 : AND State=Active OR Assigned to @Me
  • Requête 2 : AND (State=Active OR Assigned to @Me)
  • Requête 3 : OR (State=Active AND Assigned to @Me)

Pour regrouper une ou plusieurs clauses, sélectionnez-les puis sélectionnez l'icône de groupe de clauses .

Capture d’écran du portail web, éditeur de requête, clauses de requête sélectionnées par groupe.

Vous pouvez également regrouper plusieurs clauses groupées. Cochez les cases de chaque clause. Ensuite, choisissez l’icône de clauses de groupe .

Capture d’écran du portail web, éditeur de requête, regroupement de clauses de requête.

Si les résultats de votre requête ne renvoient pas les résultats attendus, procédez comme suit :

  • Vérifiez que chaque clause est bien définie comme prévu.
  • Vérifiez les affectations And/Or à chaque clause. Si vos résultats contiennent plus d'éléments de travail que prévu, une clause Or est souvent présente à la place d'une clause And.
  • Déterminez si vous devez regrouper ou modifier le regroupement des clauses de requête et les affectations And/Or de chaque clause groupée.
  • Ajoutez d'autres clauses de requête pour affiner vos critères de filtre de requête.
  • Examinez les options disponibles pour spécifier des champs, des opérateurs et des valeurs.
  • Consultez les bonnes pratiques plus loin dans cet article.

Dissocier une clause

Pour dissocier une clause, sélectionnez l'icône de dissociation des clauses pour la clause groupée.


Afficher les résultats d’une requête dans un tableau de bord

Les deux widgets suivants affichent les résultats de la requête. Vous pouvez ouvrir des éléments de travail directement à partir de ces widgets.

  • Travail attribué à moi : répertorie tous les éléments de travail proposés ou actifs attribués à l’utilisateur connecté. Répertorie les champs ID, État et Titre.
  • Widget de résultats de requête : affiche les résultats d’une requête plate, d’arborescence ou de liens directs. Vous pouvez configurer les champs affichés via le widget, redimensionner les champs de colonne et développer et réduire l’arborescence et la requête de liens directs.

Pour plus d'informations, consultez Ajouter des widgets à un tableau de bord.

Afficher le widget de résultats de requête avec les titres parents

Vous pouvez voir les résultats d’une requête avec le titre Parent affiché. Pour ce faire, procédez comme suit :

  1. Créez la requête qui filtre les éléments de travail intéressants. La requête peut être une requête de liste plate, d’arborescence ou de liens directs.
  2. Ajoutez le champ Parent en tant que colonne.
  3. Enregistrez la requête en tant que requête partagée ou favori d’équipe.
  4. Ajoutez le widget Résultats de requête à votre tableau de bord et configurez la requête. Vérifiez que le champ Parent est défini pour s’afficher.

L’image suivante illustre un widget de résultats de requête qui affiche le champ Parent.

Capture d’écran du widget de résultats de requête montrant un champ de colonne Parent.

Le lien hypertexte utilise le langage WIQL (Work Item Query Langage) qui ressemble à Transact-SQL. Pour plus d'informations, consultez Syntaxe du langage WIQL (WIQL).

Remarque

La plupart des navigateurs appliquent une limite comprise entre 2 000 et 2 083 caractères pour une chaîne d’URL.

Encoder la partie WIQL de la syntaxe d’URL. Vous pouvez utiliser n’importe quel outil d’encodeur d’URL pour encoder votre URL.

https://dev.azure.com/OrganizationName/ProjectName/_workitems?_a=query&wiql={Encoded WorkItemQueryLanguage}

Par exemple, le lien hypertexte suivant répertorie l'ID et le titre de tous les bogues actifs définis sous le chemin de la zone FabrikamFiber/Web pour l'organisation 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'

Le WIQL décodé est conforme à :

SELECT [System.ID], [System.Title]
   FROM WorkItems 
   WHERE [System.TeamProject]='FabrikamFiber' 
   AND [System.WorkItemType]='Bug'
   AND [System.State]='Active'
   AND [System.AreaPath]='FabrikamFiber\Web'

Remarque

La longueur WIQL ne doit pas dépasser 32 000 caractères pour les requêtes Azure Boards.

https://{ServerName}/{CollectionName}/{ProjectName}/_workitems?_a=query&wiql={Encoded WorkItemQueryLanguage}

Par exemple, le lien hypertexte suivant répertorie l’ID, le titre et l’état de tous les bogues sous le chemin de zone 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

Par exemple, consultez l’entrée non codée suivante.

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'   

Bonnes pratiques

Les bonnes pratiques suivantes s'appliquent aux requêtes suivantes que vous pouvez créer :

Créer des requêtes ciblées et sélectives

Définissez une requête hautement sélective en appliquant tous les filtres nécessaires à votre requête. Plus la requête est sélective, plus l’ensemble des résultats est petit. Plus le jeu de résultats est petit, plus votre requête est ciblée et sélective.

Utiliser des balises pour classer les éléments de travail

Utilisez des balises d’élément de travail pour classer vos éléments de travail au lieu d’un champ personnalisé. Les requêtes filtrées sur des balises s’exécutent généralement plus rapidement que celles filtrées sur les correspondances de chaîne.

Contrairement aux correspondances de champs personnalisés ou partielles, une requête avec une opération Tags Contains ne nécessite pas une analyse complète de toutes les tables d’éléments de travail.

Utiliser Contains words pour les correspondances de chaîne

Pour filtrer sur une correspondance de chaîne, utilisez Contains Words au lieu de l’opérateur Contains. L’opérateur Contains Words exécute une recherche en texte intégral sur le champ spécifié, qui tend à se terminer plus rapidement.

L'opérateur Contains exécute une analyse de table, ce qui est une opération plus lente que l'opérateur Contains Words. Il consomme également plus de cycles de processeur. Ces cycles de processeur peuvent vous amener à rencontrer des limitations de débit. Pour plus d’informations, consultez Limites du débit et de l’utilisation.

Spécifier des petits groupes avec l’opérateur In Group

L’opérateur In Group filtre les éléments de travail en fonction des correspondances au sein d’un groupe de valeurs. Le groupe de valeurs correspond aux valeurs contenues dans une équipe, un groupe de sécurité ou une catégorie de suivi du travail. Par exemple, vous pouvez créer une requête pour trouver tous les éléments de travail assignés aux membres d’une équipe. Vous pouvez également rechercher tous les éléments de travail qui appartiennent à la catégorie des exigences (Microsoft.RequirementCategory).

Lorsque vous filtrez sur un groupe contenant un grand nombre de membres, votre jeu de résultats a tendance à être plus grand et non sélectif. De plus, si un groupe correspond à un grand groupe Microsoft Entra, la requête génère un coût assez important pour résoudre ce groupe à partir de l'ID Microsoft Entra.

Éviter l’utilisation d’opérateurs annulés

Les opérateurs annulés—tels que<>, Not In, Not Under, Not In Group—ont tendance à générer des requêtes non sélectives et de grands ensembles de résultats.

N'utilisez des opérateurs annulés que lorsque cela est nécessaire. Essayez toujours de trouver des alternatives en premier. Par exemple, si Field1 a des valeurs A, B, C, D ; spécifiez la clause Field1 In A, B, C, au lieu de la clause annulée Field1 <> D.

Éviter des comparaisons de chaînes

Les requêtes qui contiennent des comparaisons de chaînes génèrent des analyses de table qui sont par nature inefficaces. Au lieu de cela, nous vous recommandons d’utiliser des balises ou un champ personnalisé spécifique comme alternatives, en particulier lorsqu’une requête fonctionne mal.

Limiter les opérateurs Or

Limitez le nombre d'opérateurs Or définis dans votre requête. Les requêtes s’exécutent mieux lorsque moins d’opérateurs Or sont utilisés. Trop d'opérateurs Or peuvent rendre votre requête non sélective. Si votre requête s’exécute lentement, réorganisez la clause d’opérateur Or en haut des clauses de requête.

Enregistrer votre requête

En raison des optimisations internes, les requêtes enregistrées ont tendance à mieux fonctionner que les requêtes non enregistrées. Enregistrez toujours votre requête lorsque vous prévoyez de la réutiliser. Même pour les requêtes WIQL exécutées via une API REST, enregistrez le WIQL via le portail Web pour effectuer vos appels d'API REST, afin qu'elles soient moins sujettes à de futures régressions de performances.

Exécutez votre requête

Parfois, vous devez exécuter votre requête plusieurs fois pour atteindre le bon plan d'optimisation. Assurez-vous de sauvegarder votre requête et de l'exécuter jusqu'à 10 fois sur une période de 30 minutes. De cette façon, le système peut examiner et rechercher le plan d'optimisation le plus approprié pour votre requête.