연결된 작업 항목 쿼리
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
링크 간에 작업 항목을 쿼리하는 것은 일반적인 탐색 속성을 사용하는 것과 비슷합니다. 하지만 링크 자체는 엔터티이므로 몇 가지 복잡성이 추가로 있습니다.
연결된 작업 항목을 쿼리하는 방법에는 두 가지가 있습니다. 첫 번째는 부모/자식 계층 구조이고, 두 번째는 링크 탐색 속성입니다.
이 문서에서는 다음을 알아봅니다.
- 계층적으로(부모-자식) 연결된 작업 항목을 반환하는 쿼리를 생성하는 방법
- 비 계층적(관련, 직접) 연결된 작업 항목을 반환하는 쿼리를 생성하는 방법
참고 항목
Analytics 서비스는 모든 Azure DevOps Services에 대해 프로덕션에서 자동으로 사용하도록 설정되고 지원됩니다. Analytics Service의 OData 피드에 대한 Power BI 통합 및 액세스는 일반적으로 사용할 수 있습니다. 이를 사용하고 피드백을 제공하는 것이 좋습니다.
사용 가능한 데이터는 버전에 따라 다릅니다. 지원되는 최신 버전은 v2.0
최신 미리 보기 버전입니다 v4.0-preview
. 자세한 내용은 OData API 버전 관리를 참조 하세요.
참고 항목
Analytics 서비스는 Azure DevOps Server 2020 이상 버전의 모든 새 프로젝트 컬렉션에 대해 프로덕션에 자동으로 설치되고 지원됩니다. Analytics Service의 OData 피드에 대한 Power BI 통합 및 액세스는 일반적으로 사용할 수 있습니다. 이를 사용하고 피드백을 제공하는 것이 좋습니다. Azure DevOps Server 2019에서 업그레이드한 경우 업그레이드 중에 Analytics 서비스를 설치할 수 있습니다.
사용 가능한 데이터는 버전에 따라 다릅니다. 지원되는 최신 버전은 v2.0
최신 미리 보기 버전입니다 v4.0-preview
. 자세한 내용은 OData API 버전 관리를 참조 하세요.
참고 항목
Analytics 서비스는 Azure DevOps Server 2019용 미리 보기로 제공됩니다. 프로젝트 컬렉션에 사용하도록 설정하거나 설치할 수 있습니다. Power BI 통합 및 Analytics Service의 OData 피드에 대한 액세스는 미리 보기로 제공됩니다. 이를 사용하고 피드백을 제공하는 것이 좋습니다.
사용 가능한 데이터는 버전에 따라 다릅니다. 지원되는 최신 버전은 v2.0
최신 미리 보기 버전입니다 v4.0-preview
. 자세한 내용은 OData API 버전 관리를 참조 하세요.
참고 항목
이 문서에 표시된 예제는 Azure DevOps Services URL을 기반으로 합니다. Azure DevOps Server의 경우 온-프레미스 서버의 URL을 대체해야 합니다.
https://{servername}:{port}/tfs/{OrganizationName}/{ProjectName}/_odata/{version}/
부모-자식 계층 구조
부모 및 자식 속성을 사용하여 $expand
부모/자식 링크를 통해 관련된 항목을 포함할 수 있습니다.
예: 부모-자식 쿼리
항목의 자식에 대한 정보를 반환하려면 자식 탐색 속성을 사용합니다.$expand
다음 코드 조각은 Fabrikam 파이버 프로젝트에서 작업 항목 ID 359의 자식을 반환하도록 요청합니다.
요청
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)
응답은 서사시 359의 자녀 인 479 및 480 기능을 반환합니다.
참고 항목
작업 항목 링크 정보를 요청하는 대부분의 OData 쿼리는 결과뿐만 아니라 경고도 반환합니다. 이 경고는 OData Analytics 쿼리 지침에 설명된 권장 쿼리 지침을 따르도록 미리 알림입니다. 그러나 제공된 쿼리 예제는 유효합니다.
응답
@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"
예: 자식-부모 쿼리
옵션에서 $expand
자식을 부모로 바꿔 항목의 조상을 검색할 수 있습니다.
다음 쿼리는 Fabrikam 파이버 프로젝트에서 작업 항목 ID 1048의 부모를 반환하도록 요청합니다.
요청
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
응답은 제품 백로그 항목 1048의 부모인 기능 480을 반환합니다.
응답
@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"
비 계층적 링크 쿼리
부모/자식 계층 구조 외에도 항목은 관련 또는 중복과 같은 링크 형식이 있는 다른 항목과 직접 관련될 수 있습니다. 링크 탐색 속성을 사용하면 이러한 관계를 요청할 수 있습니다.
예: 항목의 링크 요청
항목과 연결된 링크를 검색하려면 링크 탐색 속성을 사용할 수 있습니다.$expand
이 예제에서는 작업 항목 363과 연결된 모든 링크에 대해 SourceWorkItemId, TargetWorkItemId 및 LinkTypeName이 검색됩니다.
Request
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"
}
}]
}
예: 연결된 항목의 세부 정보 요청
TargetWorkItem 또는 SourceWorkItem 탐색 속성을 사용하여 $expand
연결된 작업 항목의 세부 정보를 포함할 수 있습니다. 이 예제에서는 각 링크에 대한 대상 작업 항목의 WorkItemId, 제목 및 상태를 검색합니다.
Request
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"
}
}]
}]
}
예: 특정 형식의 링크
항목 간의 특정 유형의 링크에 관심이 있을 수도 있습니다. 절에 LinkTypeName 속성을 지정합니다 $filter
. 다음 쿼리 예제에서는 모든 관련 링크를 확장하고 작업 항목 103에 대한 다른 모든 링크 유형을 필터링합니다.
Request
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))
응답
{
"@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"
}
}]
}]
}