我正在使用Azure devops API通过AWS Lambda node.js创建一个通知机器人。此时,我需要检查每个任务工作项是否都附加到父用户故事。
第一步是获取“给定”项目上的所有任务工作项,为此,我正在阅读azure devops api文档并发现了以下内容:Work Items - List
API正在询问我想要获取的工作项的ID,但是如果我需要“给定”项目中的所有工作项怎么办?
GET https://dev.azure.com/{organization}/{project}/_apis/wit/workitems?ids={ids}&api-version=5.1
或者是否有其他方法可以从给定项目中获取所有工作项ID?
答案 0 :(得分:2)
您可以使用不需要ID的Work Items - Get Work Items Batch API,但结果中的最大工作项为200。
但是,如果需要检查“任务”,为什么需要所有项目中的工作项?您只能使用Wiql - Query By Wiql API来获得任务:
POST https://dev.azure.com/{organization}/{project}/{team}/_apis/wit/wiql?api-version=5.1
在正文中进行查询:
{
"query": "Select [System.Id], [System.Title], [System.State] From WorkItems Where [System.WorkItemType] = 'Task'"
}
答案 1 :(得分:1)
进一步了解Shayki关于使用WIQL查询的回答,我建议您通过执行工作项链接查询来查找没有父用户故事的任务,从而在这里拥有两只鸟,只有一块石头。
POST https://dev.azure.com/{organization}/{project}/{team}/_apis/wit/wiql?api-version=5.1
请求有效载荷:
{
"query": "SELECT [System.Id] FROM workitemLinks WHERE ([Source].[System.WorkItemType] = 'Task') AND ([System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Reverse') AND ([Target].[System.WorkItemType] = 'User Story') MODE (DoesNotContain)"
}
这样,您不必遍历每个工作项即可检查它是否具有父项。
注意:WIQL查询将返回的结果限制为20K,如果查询产生的工作项多于20K,则返回错误。如果适用,请进一步使用上述查询的原因。