Visual Studio REST API迭代和区域ID

时间:2015-04-09 22:26:58

标签: tfs azure-devops

我正在使用VSO REST API,并对如何分配迭代和区域ID提出疑问。具体来说,为什么当我将工作项分配给根Iteration或Area时,在查询分类节点时不会返回为WIT返回的ID?

例如,假设我在查询/ DefaultCollection / my project / _apis / wit / classificationnodes时有这个层次结构?$ depth = 2

  • 我的项目:id = 1234
    • 区域1:id = 5678
      • 区域2:id = 9012

然后我使用/ DefaultCollection / _apis / wit / workItems / 1查询工作项?$ expand = all

如果工作项位于Area 1或Area 2中,则System.AreaId字段与预期一致(分别为5678和9012)。但是,如果我将工作项分配给My Project,则System.AreaID是在查询所有分类节点时未包含的某个值。 ID之间似乎存在某种关系,因为它们是串行的(例如,分类节点查询返回的ID对于该区域为1232,对于迭代为1233),但我似乎无法找到一种查询方法来获取工作项查询返回的实际ID。

实际上,当我查询所有分类节点时,不仅返回工作项的ID,如果我将工作项分配给根迭代和区域,则返回的两个字段的ID都是相同的值这不包括在分类节点查询中。

我需要的是一种查看工作项并找出它所属的区域和迭代的方法。我可能会对返回的路径字段字符串执行某些操作,但这似乎很容易出错,因为用户可以更改它们。

**** ****编辑 以上似乎是REST API中的一个错误,但对于遇到这篇文章的人来说,有一种方法可以通过路径字符串获取可用的迭代ID。像这样构建您的REST调用:

/ DefaultCollection / [Project Name] / _ apis / wit / classificationnodes / iterations / Release 1 / Sprint 1(etc。)

2 个答案:

答案 0 :(得分:3)

我从未用ID做过这件事。我只使用路径。在分类服务中,您可以轻松地通过路径获取节点。

例如,使用REST API - 您可以访问此URL以获取有关特定迭代的数据:

/DefaultCollection/[Project Name]/_apis/wit/classificationnodes/iterations/[Release X]/[Sprint Y]

请注意,尝试访问默认迭代路径(项目名称而不是特定的迭代)将返回错误:

/DefaultCollection/[Project Name]/_apis/wit/classificationnodes/iterations/[Project Name]

会给:

{"$id":"1","innerException":null,"message":"VS402485: The node name is not recognized: [Project Name]","typeName":"Microsoft.TeamFoundation.WorkItemTracking.Server.Metadata.WorkItemTrackingTreeNodeNotFoundException, Microsoft.TeamFoundation.WorkItemTracking.Server","typeKey":"WorkItemTrackingTreeNodeNotFoundException","errorCode":0,"eventId":3200}

因此,如果您进行批处理工作,则必须在查询api之前对其进行过滤。

答案 1 :(得分:0)

识别区域有三种方法(我发布的所有内容同样适用于迭代)。 Path(字符串),ID(int)和Guid。他们每个人都以不同的方式使用,并有不同的分歧。

例如,重命名区域,不会更改它的标识,因此不会更新工作项(工作项中返回的路径是动态的)。

也可以删除并重新创建相同的路径,但它将具有不同的ID。

GUID主要用于Excel报表(例如SharePoint门户的父级)

根据您的需要,事物的反应决定了要使用的适当元素。

我没有看到你提到的ID有任何问题,如果你能创建一个简单的repro,我很乐意看看它。

大卫(点)卡宾(AT)dynconcepts(点)的COM