Zapytanie dotyczące połączonych elementów roboczych
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Wykonywanie zapytań dotyczących elementów roboczych między linkami jest podobne do typowych właściwości nawigacji. Same linki są jednak jednostkami, więc istnieje pewna dodatkowa złożoność.
Istnieją dwa sposoby wykonywania zapytań dotyczących połączonych elementów roboczych. Pierwszy to hierarchia nadrzędna/podrzędna, a druga to właściwość nawigacji Łącza.
Z tego artykułu dowiesz się:
- Jak utworzyć zapytanie w celu zwrócenia elementów roboczych połączonych hierarchicznie (nadrzędny-podrzędny)
- Jak utworzyć zapytanie w celu zwrócenia elementów roboczych nie hierarchicznie (powiązanych, bezpośrednich)
Uwaga
Usługa Analytics jest automatycznie włączona i obsługiwana w środowisku produkcyjnym dla wszystkich usług Azure DevOps Services. Integracja usługi Power BI i dostęp do źródła danych OData usługi Analytics są ogólnie dostępne. Zachęcamy do korzystania z niego i przekazywania opinii.
Dostępne dane są zależne od wersji. Najnowsza obsługiwana wersja to v2.0
, a najnowsza wersja zapoznawcza to v4.0-preview
. Aby uzyskać więcej informacji, zobacz Przechowywanie wersji interfejsu API OData.
Uwaga
Usługa Analytics jest automatycznie instalowana i obsługiwana w środowisku produkcyjnym dla wszystkich nowych kolekcji projektów dla usługi Azure DevOps Server 2020 i nowszych wersji. Integracja usługi Power BI i dostęp do źródła danych OData usługi Analytics są ogólnie dostępne. Zachęcamy do korzystania z niego i przekazywania opinii. W przypadku uaktualnienia z usługi Azure DevOps Server 2019 możesz zainstalować usługę Analytics podczas uaktualniania.
Dostępne dane są zależne od wersji. Najnowsza obsługiwana wersja to v2.0
, a najnowsza wersja zapoznawcza to v4.0-preview
. Aby uzyskać więcej informacji, zobacz Przechowywanie wersji interfejsu API OData.
Uwaga
Usługa Analytics jest dostępna w wersji zapoznawczej dla usługi Azure DevOps Server 2019. Możesz ją włączyć lub zainstalować dla kolekcji projektów. Integracja usługi Power BI i dostęp do źródła danych OData usługi Analytics są dostępne w wersji zapoznawczej. Zachęcamy do korzystania z niego i przekazywania opinii.
Dostępne dane są zależne od wersji. Najnowsza obsługiwana wersja to v2.0
, a najnowsza wersja zapoznawcza to v4.0-preview
. Aby uzyskać więcej informacji, zobacz Przechowywanie wersji interfejsu API OData.
Uwaga
Przykłady przedstawione w tym artykule są oparte na adresie URL usługi Azure DevOps Services. W przypadku usługi Azure DevOps Server należy zastąpić adres URL serwera lokalnego.
https://{servername}:{port}/tfs/{OrganizationName}/{ProjectName}/_odata/{version}/
Hierarchia nadrzędny-podrzędny
Elementy pokrewne można dołączać za pomocą linków Nadrzędny/Podrzędny, używając $expand
właściwości Nadrzędny i Podrzędny.
Przykład: zapytanie nadrzędne do podrzędnego
Aby zwrócić informacje o elementach podrzędnych, użyj $expand
właściwości nawigacji Podrzędne .
Poniższy fragment kodu żąda zwrócenia elementów podrzędnych elementu roboczego o identyfikatorze 359 z projektu Fabrikam Fiber.
Zażądaj
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)
Odpowiedź zwraca funkcje 479 i 480, które są elementami podrzędnymi epików 359.
Uwaga
Większość zapytań OData, które żądają informacji o łączem elementu roboczego, zwróci wyniki, ale także ostrzeżenie. Ostrzeżenie jest przypomnieniem, aby postępować zgodnie z zalecanymi wytycznymi dotyczącymi zapytań opisanymi w wytycznych dotyczących zapytań usługi OData Analytics. Podane przykłady zapytań są jednak prawidłowe.
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"
Przykład: podrzędne do zapytania nadrzędnego
Zastępując element Podrzędny element nadrzędny w $expand
opcji , możesz pobrać przodków elementu.
Następujące zapytanie żąda zwrócenia elementu nadrzędnego o identyfikatorze 1048 elementu roboczego z projektu Fabrikam Fiber.
Zażądaj
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
Odpowiedź zwraca funkcję 480, która jest elementem nadrzędnym elementu listy prac produktu 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"
Wykonywanie zapytań dotyczących linków nie hierarchicznych
Oprócz hierarchii Nadrzędne/Podrzędne elementy mogą być bezpośrednio powiązane z innymi elementami z typami linków, takimi jak Powiązane lub Duplikowane. Właściwość nawigacji Łącza umożliwia zażądanie tych relacji.
Przykład: żądanie linków elementu
Aby pobrać łącza skojarzone z elementem, możesz $expand
uruchomić właściwość nawigacji Łącza . W tym przykładzie elementy SourceWorkItemId, TargetWorkItemId i LinkTypeName są pobierane dla wszystkich łączy skojarzonych z elementem roboczym 363.
Zażądaj
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"
}
}]
}
Przykład: żądanie szczegółów połączonych elementów
Szczegóły połączonych elementów roboczych można uwzględnić przy użyciu $expand
właściwości nawigacji TargetWorkItem lub SourceWorkItem . W tym przykładzie pobieramy element roboczy WorkItemId, Title i State docelowego elementu roboczego dla każdego łącza.
Zażądaj
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"
}
}]
}]
}
Przykład: linki określonego typu
Możesz również zainteresować się konkretnym typem połączenia między elementami. Określ właściwość LinkTypeName w klauzuli $filter
. Poniższy przykład zapytania rozszerza wszystkie powiązane linki i filtruje wszystkie inne typy linków dla elementu roboczego 103.
Zażądaj
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))
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": 112,
"LinkTypeName": "Related",
"TargetWorkItem": {
"WorkItemId": 112,
"Title": "Some issue",
"State": "Active"
}
}]
}]
}