Fråga efter länkade arbetsobjekt
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Att köra frågor mot arbetsobjekt mellan länkar är ungefär som att använda vanliga navigeringsegenskaper. Själva länkarna är dock entiteter, så det finns lite extra komplexitet.
Det finns två sätt att fråga efter länkade arbetsobjekt. Den första är hierarkin Överordnad/Underordnad och den andra är navigeringsegenskapen Länkar.
I den här artikeln får du lära dig:
- Så här konstruerar du en fråga för att returnera hierarkiskt (överordnat-underordnat) länkade arbetsobjekt
- Så här konstruerar du en fråga för att returnera icke-hierarkiskt (relaterade, direkta) länkade arbetsobjekt
Kommentar
Analytics-tjänsten aktiveras automatiskt och stöds i produktion för alla Azure DevOps Services. Power BI-integrering och åtkomst till OData-flödet i Analytics Service är allmänt tillgängliga. Vi rekommenderar att du använder den och ger oss feedback.
Tillgängliga data är versionsberoende. Den senaste versionen som stöds är v2.0
, och den senaste förhandsversionen är v4.0-preview
. Mer information finns i OData API-versionshantering.
Kommentar
Analytics-tjänsten installeras automatiskt och stöds i produktion för alla nya projektsamlingar för Azure DevOps Server 2020 och senare versioner. Power BI-integrering och åtkomst till OData-flödet i Analytics Service är allmänt tillgängliga. Vi rekommenderar att du använder den och ger oss feedback. Om du har uppgraderat från Azure DevOps Server 2019 kan du installera Analytics-tjänsten under uppgraderingen.
Tillgängliga data är versionsberoende. Den senaste versionen som stöds är v2.0
, och den senaste förhandsversionen är v4.0-preview
. Mer information finns i OData API-versionshantering.
Kommentar
Analytics-tjänsten är en förhandsversion för Azure DevOps Server 2019. Du kan aktivera eller installera den för en projektsamling. Power BI-integrering och åtkomst till OData-flödet för Analystjänsten finns i förhandsversion. Vi rekommenderar att du använder den och ger oss feedback.
Tillgängliga data är versionsberoende. Den senaste versionen som stöds är v2.0
, och den senaste förhandsversionen är v4.0-preview
. Mer information finns i OData API-versionshantering.
Kommentar
Exemplen som visas i den här artikeln baseras på en URL för Azure DevOps Services. För Azure DevOps Server måste du ersätta URL:en för den lokala servern.
https://{servername}:{port}/tfs/{OrganizationName}/{ProjectName}/_odata/{version}/
Hierarki för över-/underordnad
Du kan inkludera objekt som är relaterade via överordnade/underordnade länkar med hjälp $expand
av egenskaperna Överordnad och Underordnad.
Exempel: Överordnad till underordnad fråga
Om du vill returnera information om ett objekts underordnade objekt använder du $expand
navigeringsegenskapen Barn .
Följande kodfragment begär att returnera underordnade arbetsobjekts-ID 359 från Fabrikam Fiber-projektet.
Begär
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)
Svaret returnerar funktionerna 479 och 480, som är underordnade till den episka 359.
Kommentar
De flesta OData-frågor som begär länkinformation för arbetsobjekt returnerar resultat men också en varning. Varningen är en påminnelse om att följa rekommenderade frågeriktlinjer som beskrivs i OData Analytics-frågeriktlinjer. De angivna frågeexemplen är dock giltiga.
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"
Exempel: Underordnad till överordnad fråga
Genom att ersätta Underordnade med Överordnad $expand
i alternativet kan du hämta ett objekts anor.
Följande frågor begär att returnera överordnad för arbetsobjektets ID 1048 från Fabrikam Fiber-projektet.
Begär
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
Svaret returnerar funktionen 480, som är överordnad till produktpost 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"
Fråga efter icke-hierarkiska länkar
Förutom hierarkin Överordnad/Underordnad kan objekt vara direkt relaterade till andra objekt med länktyper som Relaterade eller Duplicerade. Med navigeringsegenskapen Länkar kan du begära dessa relationer.
Exempel: Begära ett objekts länkar
Om du vill hämta länkarna som är associerade med ett objekt kan $expand
du använda navigeringsegenskapen Länkar . I det här exemplet hämtas SourceWorkItemId, TargetWorkItemId och LinkTypeName för alla länkar som är associerade med arbetsobjektet 363.
Begär
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"
}
}]
}
Exempel: Begära information om länkade objekt
Du kan inkludera information om dina länkade arbetsobjekt med hjälp $expand
av navigeringsegenskaperna TargetWorkItem eller SourceWorkItem . I det här exemplet hämtar vi WorkItemId, Title och State för målarbetsobjektet för varje länk.
Begär
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"
}
}]
}]
}
Exempel: Länkar av en viss typ
Du kan också vara intresserad av en viss typ av länk mellan objekt. Ange egenskapen LinkTypeName i en $filter
sats. Följande frågeexempel expanderar alla relaterade länkar och filtrerar bort alla andra länktyper för arbetsobjekt 103.
Begär
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"
}
}]
}]
}