Définir une requête d'élément de travail
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 dans Azure Boards génèrent des listes d’éléments de travail basées sur les critères de filtrage 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.
Remarque
Les images du navigateur utilisées dans cet article proviennent de la nouvelle fonctionnalité New Boards Hubs, activée par défaut. Si cette fonctionnalité n’est pas activée, vous utilisez peut-être l’expérience précédente des tableaux. Pour afficher les images de l’expérience précédente, sélectionnez la version Azure DevOps Server 2022 de cet article.
Consultez nos bonnes pratiques recommandées, plus loin dans cet article.
Prérequis
- Niveaux d’accès :
- Autorisations : Avoir l’autorisation Contributeur définie sur Autoriser pour le dossier auquel vous souhaitez ajouter une requête. Cette autorisation n’est pas définie par défaut pour le groupe Contributeurs.
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.
- Niveaux d’accès :
- Autorisations : définissez votre autorisation Contribution 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
Depuis l’éditeur de requêtes, sélectionnez le filtre pour accéder à un article avec 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. Les recherches sémantiques prennent également en charge les caractères génériques *
et ?
, et vous pouvez utiliser plus d’un caractère générique pour correspondre à plus d’un caractère. Pour plus d'informations, voir Recherche d'éléments de travail fonctionnels.
Filtrer les fonctionnalités
Macros
Vous pouvez filtrer une requête de manière interactive en utilisant la fonction Filtre.
Ouvrir des requêtes
Depuis votre navigateur web, (1) vérifiez que vous avez sélectionné le bon projet, (2) choisissez Tableaux > Requêtes, puis (3) choisissez Tous.
La page Requêtes s’ouvre sur l’onglet Favoris qui répertorie les requêtes que vous avez définies comme favoris. Vous pouvez choisir l’onglet Tous pour afficher toutes les requêtes que vous avez définies et les requêtes partagées 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.
Depuis votre projet, choisissez Tableaux > Requêtes, puis choisissez Tous.
La page Requêtes s’ouvre sur l’onglet Favoris qui répertorie les requêtes que vous avez définies comme favoris. Vous pouvez choisir l’onglet Tous pour afficher toutes les requêtes que vous avez définies et les requêtes partagées 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 Nouveau>Nouvelle requête.
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].
- 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.
- Sélectionnez Nouveau>Nouvelle requête.
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].
- 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.
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.
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
,
. - Lorsque vous utilisez le champ « État » dans une requête couvrant plusieurs projets, les valeurs affichées sont limitées à celles définies dans le projet par défaut. Cela signifie que si vous effectuez une requête couvrant plusieurs projets, vous ne verrez peut-être pas toutes les valeurs d’état possibles de chaque projet, mais seulement celles du projet défini comme projet par défaut. Par exemple, si vous avez trois projets, Projet A, Projet B et Projet C, et que seul le Projet A a un état appelé « En révision », tandis que les Projets B et C ont des états différents, la requête couvrant ces projets n’affichera que les états définis dans le Projet A.
- 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.
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
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.
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.
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.
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.
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.
Utiliser des liens directs pour afficher les dépendances
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.
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 | ||
2 | ||
3 |
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 .
Vous pouvez également regrouper plusieurs clauses groupées. Cochez les cases de chaque clause. Ensuite, choisissez l’icône de clauses de groupe .
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 clauseOr
est souvent présente à la place d'une clauseAnd
. - 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.
Définir la largeur de colonne par défaut dans les résultats de requête
Pour définir la largeur de colonne par défaut dans les résultats de requête, procédez comme suit :
- Ouvrez la requête que vous souhaitez modifier.
- Ajustez manuellement la largeur des colonnes à la taille souhaitée en faisant glisser les bords des en-têtes de colonne.
- Sélectionnez Enregistrer ou Enregistrer sous si vous souhaitez l’enregistrer en tant que nouvelle requête.
- Fermez et rouvrez la requête pour vous assurer que les largeurs des colonnes sont conservées.
Azure DevOps ne prend pas actuellement en charge la définition d’une largeur de colonne par défaut qui persiste d’une session à l’autre. Les largeurs de colonnes sont enregistrées par requête, vous devez donc les ajuster et les enregistrer pour chaque requête individuellement.
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 :
- 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.
- Ajoutez le champ Parent en tant que colonne.
- Enregistrez la requête en tant que requête partagée ou favori d’équipe.
- 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.
Définir une requête en tant que lien hypertexte
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.
Syntaxe du lien hypertexte de requête
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.
Syntaxe du lien hypertexte de requête
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.