首页 > 解决方案 > 跨多个项目查询 lastChanged 工作项

问题描述

我正在尝试创建查询,为我提供过去两天内更新的所有用户故事,这在使用 WorkItem Batch Query 的项目中应该是非常基本的。https://[TENNANT].analytics.visualstudio.com/[PROJECT]/_odata/v1.0/WorkItems 我需要更新一些设置了一组标准的用户故事(计算我无法像现在这样使用 DevOps 中的规则进行估计)

我的挑战是我们有 200 个项目,我需要在所有这些项目中获取最后更改的用户故事。所以我目前的解决方案如下:

  1. 查询分页为 100 的项目(现在是 3 个查询)
  2. 查询用户故事,分页为 200(现在是 207 个查询)
  3. 运行所有用户故事并在需要时更新计算(平均每天约 20 个)

总而言之,查询将运行大约 11 分钟,然后由于 Azure DevOps REST Api 上的限制阈值而失败。

有没有一种方法可以查询租户中所有项目的用户故事,或者查询用户故事自那以后发生更改的项目?项目的 LastChanged 与底层元素无关,而是与项目元数据相关。

希望找到解决此问题的每一个提示:)

标签: azure-devopsazure-devops-rest-api

解决方案


有没有一种方法可以查询租户中所有项目的用户故事,或者查询用户故事自那以后发生更改的项目?

你可以试试 Azure Devops Rest Api Query By Wiql,这样你就可以通过WIQL 语法自定义逻辑。

返回User Stories which have been changed within the last two days特定项目的简单请求:

Post https://dev.azure.com/{OrgName}/_apis/wit/wiql?api-version=6.1-preview.2

如果您要查询组织内的所有项目,请请求正文:

{
  "query": "Select [System.Id] From WorkItems WHERE [System.WorkItemType]='User Story' AND [System.ChangedDate] >= @today-2 ORDER BY [System.ChangedDate] DESC"
}

如果您正在查询组织内的特定项目,请请求正文:

{
  "query": "Select [System.Id] From WorkItems WHERE [System.WorkItemType]='User Story' AND [System.ChangedDate] >= @today-2 And ([System.TeamProject] = 'ProjectName1' OR [System.TeamProject] ='ProjectName2') ORDER BY [System.ChangedDate] DESC"
}

推荐阅读