Visual Studio REST API 迭代和区域 ID
Visual Studio REST API Iteration and Area ID's
我正在使用 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
查询工作项
如果工作项在区域 1 或区域 2 中,则 System.AreaId 字段符合预期(分别为 5678 和 9012)。但是,如果我将工作项分配给我的项目,则 System.AreaID 是一些在我查询所有分类节点时不包括的值。 ID 之间似乎存在某种关系,因为它们是连续的(例如,分类节点查询返回的 ID 区域为 1232,迭代为 1233),但我似乎无法找到查询方法获取工作项查询返回的实际 ID。
事实上,不仅查询所有分类节点时,工作项返回的ID不存在,如果我将工作项分配给根迭代和区域,则两个字段返回的ID都是不包含在分类节点查询中的相同值。
我需要的是一种查看工作项并找出它所属的区域和迭代的方法。我可能可以对返回的路径字段字符串做一些事情,但这似乎很容易出错,因为用户可以更改它们。
****编辑****
上面的内容似乎是 REST API 中的错误,但对于任何遇到此 post 的人来说,有一种方法可以通过路径字符串获取可用的迭代 ID。像这样构造您的 REST 调用:
/DefaultCollection/[项目名称]/_apis/wit/classificationnodes/iterations/Release 1/Sprint 1(等)
我从来没有用身份证做过这件事。我只使用路径。在分类服务中,您可以很容易地通过路径获取节点。
例如,使用 REST API - 您可以访问此 url 以获取有关特定迭代的数据:
/DefaultCollection/[Project Name]/_apis/wit/classificationnodes/iterations/[Release X]/[Sprint Y]
请注意,尝试访问默认迭代路径(项目名称而不是特定迭代)将 return 出错:
/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 之前过滤那些。
可以通过三种方式来识别区域(我 post 中的所有内容同样适用于迭代)。路径(字符串)、ID(整数)和 Guid。它们中的每一个都以不同的方式使用,并且有不同的后果。
例如,重命名区域不会更改其身份,因此不会更新工作项(工作项中返回的路径是动态的)。
也可以删除并重新创建相同的路径,但它会有不同的 ID。
GUID 主要用于 Excel 报告(例如 SharePoint 门户的父报告)
根据您希望事物如何反应来确定要使用的适当元素。
我没有发现你提到的 ID 有任何问题,如果你能创建一个简单的重现,我很乐意查看它。
大卫(点)科尔宾(at)dynconcepts(点)com
我正在使用 VSO REST API,我对迭代和区域 ID 的分配方式有疑问。具体来说,为什么我将工作项分配给根Iteration或Area时,查询分类节点时没有返回WIT返回的ID?
例如,假设我在查询时有这个层次结构 /DefaultCollection/my project/_apis/wit/classificationnodes?$depth=2
- 我的项目:id=1234
- 1区:id=5678
- 2区:id=9012
- 1区:id=5678
然后我使用 /DefaultCollection/_apis/wit/workItems/1?$expand=all
查询工作项如果工作项在区域 1 或区域 2 中,则 System.AreaId 字段符合预期(分别为 5678 和 9012)。但是,如果我将工作项分配给我的项目,则 System.AreaID 是一些在我查询所有分类节点时不包括的值。 ID 之间似乎存在某种关系,因为它们是连续的(例如,分类节点查询返回的 ID 区域为 1232,迭代为 1233),但我似乎无法找到查询方法获取工作项查询返回的实际 ID。
事实上,不仅查询所有分类节点时,工作项返回的ID不存在,如果我将工作项分配给根迭代和区域,则两个字段返回的ID都是不包含在分类节点查询中的相同值。
我需要的是一种查看工作项并找出它所属的区域和迭代的方法。我可能可以对返回的路径字段字符串做一些事情,但这似乎很容易出错,因为用户可以更改它们。
****编辑**** 上面的内容似乎是 REST API 中的错误,但对于任何遇到此 post 的人来说,有一种方法可以通过路径字符串获取可用的迭代 ID。像这样构造您的 REST 调用:
/DefaultCollection/[项目名称]/_apis/wit/classificationnodes/iterations/Release 1/Sprint 1(等)
我从来没有用身份证做过这件事。我只使用路径。在分类服务中,您可以很容易地通过路径获取节点。
例如,使用 REST API - 您可以访问此 url 以获取有关特定迭代的数据:
/DefaultCollection/[Project Name]/_apis/wit/classificationnodes/iterations/[Release X]/[Sprint Y]
请注意,尝试访问默认迭代路径(项目名称而不是特定迭代)将 return 出错:
/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 之前过滤那些。
可以通过三种方式来识别区域(我 post 中的所有内容同样适用于迭代)。路径(字符串)、ID(整数)和 Guid。它们中的每一个都以不同的方式使用,并且有不同的后果。
例如,重命名区域不会更改其身份,因此不会更新工作项(工作项中返回的路径是动态的)。
也可以删除并重新创建相同的路径,但它会有不同的 ID。
GUID 主要用于 Excel 报告(例如 SharePoint 门户的父报告)
根据您希望事物如何反应来确定要使用的适当元素。
我没有发现你提到的 ID 有任何问题,如果你能创建一个简单的重现,我很乐意查看它。
大卫(点)科尔宾(at)dynconcepts(点)com