Rechercher des éléments de travail liés
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
L’interrogation d’éléments de travail entre les liens ressemble beaucoup à l’utilisation de propriétés de navigation classiques. Les liens eux-mêmes sont des entités, donc il y a une certaine complexité supplémentaire.
Il existe deux façons d’interroger les éléments de travail liés. La première est la hiérarchie parent/enfant, et la seconde est la propriété de navigation Liens.
Dans cet article, vous apprendrez ce qui suit :
- Comment construire une requête pour retourner des éléments de travail liés hiérarchiquement (parent-enfant)
- Comment construire une requête pour retourner des éléments de travail liés non hiérarchiquement (connexes, directs)
Remarque
Le service Analytics est automatiquement activé et pris en charge en production pour tous les services Azure DevOps. L’intégration de Power BI et l’accès au flux OData du service Analytics sont généralement disponibles. Nous vous encourageons à l’utiliser et à nous faire part de vos commentaires.
Les données disponibles dépendent de la version. La dernière version prise en charge est v2.0
, et la dernière version d’évaluation 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. Nous vous encourageons à l’utiliser et à nous faire part de vos commentaires. Si vous avez effectué 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 est v2.0
, et la dernière version d’évaluation est v4.0-preview
. Pour plus d’informations, consultez gestion des versions de l’API OData.
Remarque
Le service Analytics est en préversion pour Azure DevOps Server 2019. Vous pouvez l’activer ou l’installer pour une collection de projets. L’intégration de Power BI et l’accès au flux OData du service Analytics sont en préversion. Nous vous encourageons à l’utiliser et à nous faire part de vos commentaires.
Les données disponibles dépendent de la version. La dernière version prise en charge est v2.0
, et la dernière version d’évaluation est v4.0-preview
. Pour plus d’informations, consultez gestion des versions de l’API OData.
Remarque
Les exemples présentés dans cet article sont basés sur une URL Azure DevOps Services. Pour Azure DevOps Server, vous devez remplacer l’URL du serveur local.
https://{servername}:{port}/tfs/{OrganizationName}/{ProjectName}/_odata/{version}/
Hiérarchie parent-enfant
Vous pouvez inclure des éléments liés via des liens parent/enfant à l’aide $expand
des propriétés Parent et Children.
Exemple : Requête parent-enfant
Pour renvoyer des informations sur les enfants d’un élément, utilisez $expand
la propriété de navigation Enfants .
L’extrait de code suivant demande de renvoyer les enfants de l’ID d’élément de travail 359 à partir du projet Fabrikam Fibre.
Requête
https://analytics.dev.azure.com/fabrikam/Fabrikam Fiber/_odata/v4.0-preview/WorkItems?$filter=WorkItemId eq 359&$select=WorkItemId, Title, WorkItemType, State&$expand=Children($select=WorkItemId,Title, WorkItemType, State)
La réponse retourne des caractéristiques 479 et 480, qui sont des enfants de l’épopée 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 fournis sont valides.
Response
@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
0 "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
0
WorkItemId 359
Title "Phase 1 - Customer access and engagement 5"
WorkItemType "Epic"
State "In Progress"
Children
0
WorkItemId 480
Title "Customer Phone - Phase 1"
WorkItemType "Feature"
State "In Progress"
1
WorkItemId 479
Title "Customer Web - Phase 1"
WorkItemType "Feature"
State "In Progress"
Exemple : requête enfant à parent
En remplaçant Les enfants par Parent dans l’option $expand
, vous pouvez récupérer l’ancêtre d’un élément.
Les requêtes suivantes demandent de retourner le parent de l’ID d’élément de travail 1048 à partir du projet Fabrikam Fibre.
Requête
https://analytics.dev.azure.com/fabrikam/Fabrikam%20Fiber/_odata/v4.0-preview/WorkItems?$select=WorkItemId,Title,State&$expand=Parent($select=WorkItemId,Title,WorkItemType, State)&$filter=WorkItemId eq 1048
La réponse retourne la fonctionnalité 480, qui est le parent de l’élément de backlog de produit 1048.
Response
@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
0 "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
0
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
En plus de la hiérarchie parent/enfant, les éléments peuvent être directement liés à d’autres éléments avec des types de liens tels que Connexes ou Dupliqués. La propriété de navigation Liens vous permet de demander ces relations.
Exemple : Demander les liens d’un élément
Pour récupérer les liens associés à un élément, vous pouvez $expand
la propriété de navigation Liens . Dans cet exemple, les id SourceWorkItemId, TargetWorkItemId et LinkTypeName sont récupérés pour tous les liens associés à l’élément de travail 363.
Requête
https://analytics.dev.azure.com/fabrikam/Fabrikam Fiber/_odata/v4.0-preview/WorkItems?$select=WorkItemId,Title,WorkItemType,State&$filter=WorkItemId%20eq%20363&$expand=Links($select=SourceWorkItemId,TargetWorkItemId,LinkTypeName)
Response
{
"@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 les détails des éléments liés
Vous pouvez inclure les détails de vos éléments de travail liés à l’aide $expand
des propriétés de navigation TargetWorkItem ou SourceWorkItem . Dans cet exemple, nous récupérons workItemId, Title et State de l’élément de travail cible pour chaque lien.
Requête
https://analytics.dev.azure.com/fabrikam/Fabrikam Fiber/_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))
Response
{
"@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": "Some issue",
"State": "Active"
}
}]
}]
}
Exemple : Liens d’un type spécifique
Vous pouvez également être intéressé par un type particulier de lien entre les éléments. Spécifiez la propriété LinkTypeName dans une $filter
clause. L’exemple de requête suivant développe tous les liens associés et filtre tous les autres types de liens pour l’élément de travail 103.
Requête
https://analytics.dev.azure.com/fabrikam/Fabrikam Fiber/_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": "Some issue",
"State": "Active"
}
}]
}]
}