更新VS Team Services中的工作项关系/链接

时间:2017-01-21 15:35:43

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

我正在尝试使用VSTS API删除项目上的所有父链接,并将这些父项设置为相关项目。

https://www.visualstudio.com/en-us/docs/integrate/api/wit/work-items#update-work-items

我不完全理解删除关系所需的“路径”是如何工作的 - 我有时会得到不一致的结果,有时它不起作用(所以,我明显做错了)

我假设它只是API返回的顺序。所以,例如:

  • 索引[0]项目
  • 索引[1]项目
  • 索引[2]项< - 这是我要删除的那个,所以我使用索引2

    .setAudience()

文档说明Path是:

要添加,替换,删除或测试的值的路径。 对于特定关系,请使用“relations / Id”。 对于所有关系,请使用“/ relations /-".

索引当然不是Id,但我如何准确地得到关系/ Id?

2 个答案:

答案 0 :(得分:1)

使用GetWorkItemAsync或GetWorkItemsAsync与WorkItemExpand.Relations参数来获取链接的工作项。

**/*

然后索引就是关系的索引。

enter image description here

答案 1 :(得分:0)

' id'在'/relation/id'路径中实际上是一个索引。您检索工作项定义,然后'id''relations'数组中链接的索引。因此,你的假设是正确的。

证据:给定一个包含2个链接的工作项,如果您尝试删除/修改ID> = 2,它将回答:

  

{" $ id":" 1"," innerException":null," message":"索引out of范围   for path /relations/2."," typeName":   " Microsoft.VisualStudio.Services.WebApi.Patch.PatchOperationFailedException,   Microsoft.VisualStudio.Services.WebApi,Version = 14.0.0.0,   Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a"," typeKey":   " PatchOperationFailedException"," errorCode":0," eventId":3000}

0和1,id工作正常。

我可能错了,但我猜测在'replace'操作之前使用'add'操作时可能会出错。例如,您需要在链接的'comment'内添加'attributes',然后才能修改(即'替换'操作)其值。