Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Kiedy uruchamiasz zapytania protokołu Open Data Protocol (OData) dla usługi Analytics w Azure DevOps, możesz pobrać informacje o elementach roboczych. Możesz również wykonywać zapytania dotyczące połączonych elementów roboczych. Elementy robocze mogą być połączone hierarchicznie, na przykład w relacjach nadrzędnych lub podrzędnych. Elementy robocze mogą być również połączone niehierarchicznie, na przykład gdy elementy robocze są powiązane lub są duplikatami.
Sposób wykonywania zapytań dotyczących połączonych elementów roboczych jest podobny do sposobu używania właściwości nawigacji do filtrowania zapytań dotyczących zestawów jednostek. Jednak linki są jednostkami, więc istnieje pewna dodatkowa złożoność. Istnieją dwa sposoby wykonywania zapytań dotyczących połączonych elementów roboczych:
- Korzystając z właściwości nawigacyjnych
ParentlubChildren - Korzystając z właściwości nawigacji
Links
W tym samouczku nauczysz się:
- Konstruowanie zapytań w celu zwrócenia hierarchicznie połączonych elementów roboczych.
- Konstruowanie zapytań w celu zwrócenia niehierarchicznie połączonych elementów roboczych.
Uwaga
Usługa Analizy jest automatycznie włączona i obsługiwana w środowisku produkcyjnym dla wszystkich usług w usłudze Azure DevOps Services. Integracja z usługą Power BI i dostęp do źródła danych OData usługi Analytics są ogólnie dostępne. Zachęcamy do korzystania ze źródła danych OData analizy i przekazywania opinii.
Dostępne dane są zależne od wersji. Najnowsza obsługiwana wersja interfejsu API OData to v2.0, a najnowsza wersja zapoznawcza to v4.0-preview. Aby uzyskać więcej informacji, zobacz Wersjonowanie 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 z usługą Power BI i dostęp do źródła danych OData usługi Analytics są ogólnie dostępne. Zachęcamy do korzystania ze źródła danych OData analizy i przekazywania opinii. Jeśli uaktualnisz program Azure DevOps Server 2019, możesz zainstalować usługę Analytics podczas uaktualniania.
Dostępne dane są zależne od wersji. Najnowsza obsługiwana wersja interfejsu API OData to v2.0, a najnowsza wersja zapoznawcza to v4.0-preview. Aby uzyskać więcej informacji, zobacz Wersjonowanie API OData.
Wymagania wstępne
| Kategoria | Wymagania |
|---|---|
| Poziomy dostępu |
-
członek projektu. — Co najmniej podstawowy dostęp. |
| uprawnienia | Domyślnie członkowie projektu mają uprawnienia do wykonywania zapytań w usłudze Analytics i tworzenia widoków. Aby uzyskać więcej informacji na temat innych wymagań wstępnych dotyczących włączania usługi i funkcji oraz ogólnych działań śledzenia danych, zobacz Uprawnienia i wymagania wstępne dotyczące uzyskiwania dostępu do usługi Analytics. |
Uwaga
Przykłady w tym artykule używają adresu URL usługi Azure DevOps Services w następującym formacie:
https://analytics.dev.azure.com/{organization-name}/{project-name}/_odata/{version}
W przypadku usługi Azure DevOps Server użyj następującego formatu, który zawiera serwer lokalny:
https://{server-name}:{port}/tfs/{organization-name}/{project-name}/_odata/{version}
Wykonywanie zapytań dotyczących elementów roboczych nadrzędnych lub podrzędnych
Elementy powiązane za pomocą linków nadrzędny-podrzędny można wyszukiwać, używając opcji $expand we właściwościach nawigacji Parent i Children.
Przykład: żądanie podrzędnych elementu
Aby zwrócić informacje o elementach podrzędnych, użyj $expand na właściwości nawigacji Children. Poniższy kod OData wysyła zapytanie do projektu Fabrikam Fiber w organizacji Fabrikam. Zwraca elementy podrzędne elementu roboczego o identyfikatorze 359.
Zażądaj
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)
Odpowiedź zawiera informacje o elementach roboczych funkcji z identyfikatorami 479 i 480. Te cechy są elementami podrzędnymi epickiego elementu roboczego o identyfikatorze 359.
Uwaga
Większość zapytań OData, które żądają informacji o linkach elementów roboczych, zwraca 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. Jednak przykłady zapytań w tym artykule są prawidłowe.
Odpowiedź
{
"@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"
}]
}]
}
Przykład: żądanie elementu nadrzędnego
Zastępując Children elementem Parent w opcji $expand, możesz odnaleźć pochodzenie elementu.
Poniższy kod wysyła zapytanie do elementu nadrzędnego elementu roboczego o identyfikatorze 1048 w projekcie Fabrikam Fiber i organizacji fabrikam.
Zażądaj
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
Odpowiedź zawiera informacje o funkcji o identyfikatorze 480, która jest elementem nadrzędnym dla elementu backlogu produktu z identyfikatorem 1048.
Odpowiedź
{
"@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"
}
}]
}
Zapytanie dotyczące linków niehierarchicznych
Oprócz łączy nadrzędny-podrzędny, inne typy, takie jak Related lub Duplicate mogą również łączyć elementy robocze. Za pomocą Links właściwości nawigacji można żądać informacji o elementach roboczych połączonych za pośrednictwem relacji niehierarchicznych.
Przykład: żądanie linków elementu
Aby pobrać łącza skojarzone z elementem, użyj opcji $expand w właściwości nawigacyjnej Links. Poniższe zapytanie pobiera wartości SourceWorkItemId, TargetWorkItemId i LinkTypeName dla wszystkich linków skojarzonych z elementem roboczym 363.
Zażądaj
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)
Odpowiedź
{
"@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ółowych informacji o połączonych elementach
Możesz zapytać o szczegółowe informacje o połączonych elementach roboczych, korzystając z opcji $expand we właściwościach nawigacyjnych TargetWorkItem lub SourceWorkItem.
Podobnie jak poprzednie zapytanie, następujące zapytanie pobiera wartości SourceWorkItemId, TargetWorkItemId i LinkTypeName dla wszystkich linków skojarzonych z elementem roboczym. Jednak to zapytanie również pobiera wartości WorkItemId, Title i State każdego elementu roboczego linku docelowego.
Zażądaj
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))
Odpowiedź
{
"@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"
}
}]
}]
}
Przykład: żądanie łączy określonego typu
Jeśli interesuje Cię specyficzny typ połączenia między elementami, możesz użyć LinkTypeName właściwości w klauzuli $filter. Poniższe zapytanie rozszerza wszystkie Related linki i filtruje wszystkie inne typy linków dla elementu roboczego 103.
Zażądaj
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))
Odpowiedź
{
"@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"
}
}]
}]
}