Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Lorsque vous exécutez des requêtes OData (Open Data Protocol) sur Analytics pour Azure DevOps, vous pouvez récupérer des informations sur les éléments de travail. Vous pouvez également interroger des éléments de travail liés. Les éléments de travail peuvent être liés hiérarchiquement, comme dans les relations parent ou enfant. Les éléments de travail peuvent également être liés non hiérarchiquement, par exemple lorsque les éléments de travail sont liés ou sont des doublons.
La façon dont vous interrogez les éléments de travail liés est similaire à la façon dont vous utilisez les propriétés de navigation pour filtrer les requêtes des jeux d’entités. Mais les liens sont des entités, il y a donc une certaine complexité supplémentaire. Il existe deux façons d’interroger les éléments de travail liés :
- À l’aide des propriétés de
Parent
ouChildren
navigation - En utilisant la propriété de navigation
Links
Dans ce tutoriel, vous allez :
- Créez des requêtes pour retourner des éléments de travail liés hiérarchiquement.
- Créez des requêtes pour retourner des éléments de travail non liés de façon non hiérarchique.
Remarque
Le service Analytics est automatiquement activé et pris en charge en production pour tous les services dans Azure DevOps Services. L’intégration de Power BI et l’accès au flux OData du service Analytics sont généralement disponibles. Vous êtes encouragé à utiliser le flux OData Analytics et à fournir des commentaires.
Les données disponibles dépendent de la version. La dernière version prise en charge de l’API OData est v2.0
, et la dernière version préliminaire est v4.0-preview
. Pour plus d’informations, consultez gestion des versions de l’API OData .
Remarque
Le service Analytics est automatiquement installé et pris en charge en production pour toutes les nouvelles collections de projets pour Azure DevOps Server 2020 et versions ultérieures. L’intégration de Power BI et l’accès au flux OData du service Analytics sont généralement disponibles. Vous êtes encouragé à utiliser le flux OData Analytics et à fournir des commentaires. Si vous effectuez une mise à niveau à partir d’Azure DevOps Server 2019, vous pouvez installer le service Analytics pendant la mise à niveau.
Les données disponibles dépendent de la version. La dernière version prise en charge de l’API OData est v2.0
, et la dernière version préliminaire est v4.0-preview
. Pour plus d’informations, consultez gestion des versions de l’API OData .
Conditions préalables
Catégorie | Exigences |
---|---|
niveaux d’accès |
-
membre du projet. - Au moins un accès de base. |
autorisations | Par défaut, les membres du projet ont l’autorisation d’interroger Analytics et de créer des vues. Pour plus d’informations sur les autres conditions préalables concernant l’activation du service et des fonctionnalités et les activités de suivi des données générales, consultez Autorisations et conditions préalables pour accéder à Analytics. |
Remarque
Les exemples de cet article utilisent une URL Azure DevOps Services au format suivant :
https://analytics.dev.azure.com/{organization-name}/{project-name}/_odata/{version}
Pour Azure DevOps Server, utilisez plutôt le format suivant, qui inclut le serveur local :
https://{server-name}:{port}/tfs/{organization-name}/{project-name}/_odata/{version}
Rechercher des éléments de travail parents ou enfants
Vous pouvez interroger des éléments liés via des liens parent-enfant en utilisant l’option $expand
sur les propriétés de navigation Parent
et Children
.
Exemple : Requérir les enfants d’un élément
Pour retourner des informations sur les enfants d’un élément, utilisez $expand
sur la propriété de navigation Children
. Le code OData suivant interroge le projet Fabrikam Fiber dans l’organisation fabrikam. Il retourne les enfants de l'élément de travail avec l'identifiant 359.
demande n°
https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/WorkItems?$filter=WorkItemId eq 359&$select=WorkItemId, Title, WorkItemType, State&$expand=Children($select=WorkItemId,Title, WorkItemType, State)
La réponse répertorie les informations sur les éléments associés aux fonctionnalités avec les ID 479 et 480. Ces fonctionnalités sont des sous-éléments de l’élément de travail d'envergure avec l’ID 359.
Remarque
La plupart des requêtes OData qui demandent des informations de lien d’élément de travail retournent des résultats, mais également un avertissement. L’avertissement est un rappel pour suivre les instructions de requête recommandées décrites dans les instructions de requête OData Analytics. Toutefois, les exemples de requête de cet article sont valides.
Réponse
{
"@odata.context": "https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/$metadata#WorkItems(WorkItemId,Title,WorkItemType,State,Children(WorkItemId,Title,WorkItemType,State))",
"vsts.warnings@odata.type": "#Collection(String)",
"@vsts.warnings": [
"VS403508: Using the Parent, Children, Descendants or Revision properties in a filter or expand is not recommended. Details on recommended query patterns are available here: https://go.microsoft.com/fwlink/?linkid=861060."
],
"value": [{
"WorkItemId": 359,
"Title": "Phase 1 - Customer access and engagement 5",
"WorkItemType": "Epic",
"State": "In Progress",
"Children": [{
"WorkItemId": 480,
"Title": "Customer Phone - Phase 1",
"WorkItemType": "Feature",
"State": "In Progress"
},
{
"WorkItemId": 479,
"Title": "Customer Web - Phase 1",
"WorkItemType": "Feature",
"State": "In Progress"
}]
}]
}
Exemple : Demander le parent d’un élément
En remplaçant Children
Parent
par l’option $expand
, vous pouvez récupérer l’ancêtre d’un élément.
Le code suivant interroge le parent de l’élément de travail avec l’ID 1048 dans le projet Fabrikam Fiber et l’organisation Fabrikam.
demande n°
https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/WorkItems?$select=WorkItemId,Title,WorkItemType,State&$expand=Parent($select=WorkItemId,Title,WorkItemType, State)&$filter=WorkItemId eq 1048
La réponse fournit des informations sur la fonctionnalité avec l’ID 480, qui est le parent de l’élément du backlog de produit avec l’ID 1048.
Réponse
{
"@odata.context": "https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/$metadata#WorkItems(WorkItemId,Title,WorkItemType,State,Parent(WorkItemId,Title,WorkItemType,State))",
"vsts.warnings@odata.type": "#Collection(String)",
"@vsts.warnings": [
"VS403508: Using the Parent, Children, Descendants or Revision properties in a filter or expand is not recommended. Details on recommended query patterns are available here: https://go.microsoft.com/fwlink/?linkid=861060."
],
"value": [{
"WorkItemId": 1048,
"Title": "Support reset",
"WorkItemType": "Product Backlog Item",
"State": "New",
"Parent": {
"WorkItemId": 480,
"Title": "Customer Phone - Phase 1",
"WorkItemType": "Feature",
"State": "In Progress"
}
}]
}
Rechercher des liens non hiérarchiques
Outre les liens parent-enfant, d’autres types comme Related
ou Duplicate
peuvent également lier des éléments de travail. Vous pouvez utiliser la Links
propriété de navigation pour demander des informations sur les éléments de travail liés via des relations non hiérarchiques.
Exemple : Demander les liens d’un élément
Pour récupérer les liens associés à un élément, vous utilisez l’option $expand
sur la propriété de Links
navigation. La requête suivante récupère les valeurs SourceWorkItemId
, TargetWorkItemId
et LinkTypeName
de tous les liens associés à l’élément de travail 363.
demande n°
https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/WorkItems?$select=WorkItemId,Title,WorkItemType,State&$filter=WorkItemId%20eq%20363&$expand=Links($select=SourceWorkItemId,TargetWorkItemId,LinkTypeName)
Réponse
{
"@odata.context": "https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/$metadata#WorkItems(WorkItemId,Title,WorkItemType,State,Links(SourceWorkItemId,TargetWorkItemId,LinkTypeName))",
"value": [{
"WorkItemId": 363,
"Title": "Welcome back page",
"WorkItemType": "Product Backlog Item",
"State": "Done",
"Links": [{
"SourceWorkItemId": 363,
"TargetWorkItemId": 400,
"LinkTypeName": "Related"
},
{
"SourceWorkItemId": 363,
"TargetWorkItemId": 470,
"LinkTypeName": "Tested By"
},
{
"SourceWorkItemId": 363,
"TargetWorkItemId": 501,
"LinkTypeName": "Related"
},
{
"SourceWorkItemId": 363,
"TargetWorkItemId": 1079,
"LinkTypeName": "Tested By"
}]
}]
}
Exemple : Demander des informations détaillées sur les éléments liés
Vous pouvez interroger des informations détaillées sur les éléments de travail liés en utilisant l'option $expand
avec les propriétés de navigation TargetWorkItem
ou SourceWorkItem
.
Comme dans la requête précédente, la requête suivante récupère les valeurs SourceWorkItemId
, TargetWorkItemId
et LinkTypeName
de tous les liens associés à un élément de travail. Mais cette requête récupère également les valeurs WorkItemId
, Title
, et State
de l'élément de travail cible de chaque lien.
demande n°
https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/WorkItems?$select=WorkItemId,Title,WorkItemType,State&$filter=WorkItemId%20eq%20103&$expand=Links($select=SourceWorkItemId,TargetWorkItemId,LinkTypeName;$expand=TargetWorkItem($select=WorkItemId,Title,State))
Réponse
{
"@odata.context": "https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/$metadata#WorkItems(WorkItemId,Title,WorkItemType,State,Links(SourceWorkItemId,TargetWorkItemId,LinkTypeName,TargetWorkItem(WorkItemId,Title,State)))",
"value": [{
"WorkItemId": 103,
"Title": "Feature Y",
"WorkItemType": "Feature",
"State": "New",
"Links": [{
"SourceWorkItemId": 103,
"TargetWorkItemId": 48,
"LinkTypeName": "Child",
"TargetWorkItem": {
"WorkItemId": 48,
"Title": "Story 15",
"State": "Resolved"
}
}, {
"SourceWorkItemId": 103,
"TargetWorkItemId": 50,
"LinkTypeName": "Child",
"TargetWorkItem": {
"WorkItemId": 50,
"Title": "Story 17",
"State": "Active"
}
}, {
"SourceWorkItemId": 103,
"TargetWorkItemId": 55,
"LinkTypeName": "Child",
"TargetWorkItem": {
"WorkItemId": 55,
"Title": "Story 22",
"State": "New"
}
}, {
"SourceWorkItemId": 103,
"TargetWorkItemId": 112,
"LinkTypeName": "Related",
"TargetWorkItem": {
"WorkItemId": 112,
"Title": "Issue 10",
"State": "Active"
}
}]
}]
}
Exemple : Demander des liens d’un type spécifique
Si vous êtes intéressé par un type particulier de lien entre les éléments, vous pouvez utiliser la LinkTypeName
propriété dans une $filter
clause. La requête suivante développe tous les Related
liens et filtre tous les autres types de liens pour l’élément de travail 103.
demande n°
https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/WorkItems?$select=WorkItemId,Title,WorkItemType,State&$filter=WorkItemId eq 103&$expand=Links($select=SourceWorkItemId,TargetWorkItemId,LinkTypeName;$filter=LinkTypeName eq 'Related';$expand=TargetWorkItem($select=WorkItemId,Title,State))
Réponse
{
"@odata.context": "https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/$metadata#WorkItems(WorkItemId,Title,WorkItemType,State,Links(SourceWorkItemId,TargetWorkItemId,LinkTypeName,TargetWorkItem(WorkItemId,Title,State)))",
"value": [{
"WorkItemId": 103,
"Title": "Feature Y",
"WorkItemType": "Feature",
"State": "New",
"Links": [{
"SourceWorkItemId": 103,
"TargetWorkItemId": 112,
"LinkTypeName": "Related",
"TargetWorkItem": {
"WorkItemId": 112,
"Title": "Issue 10",
"State": "Active"
}
}]
}]
}