我正在使用VSO REST API,并对如何分配迭代和区域ID提出疑问。具体来说,为什么当我将工作项分配给根Iteration或Area时,在查询分类节点时不会返回为WIT返回的ID?
例如,假设我在查询/ DefaultCollection / my project / _apis / wit / classificationnodes时有这个层次结构?$ depth = 2
然后我使用/ 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。)
答案 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