我有一个自定义的董事会,其中包括:
第一个默认列“ New”已映射为“ New”状态。
第二个“待办事项”列也映射到“新”状态(在每周检查新的WI之后,团队将其移至该列中以避免下次对其进行检查)。
在TFS董事会中,我可以将WI从第一列移动到第二列。
当我阅读现有的WI时,使用REST API,我可以获得关于BoardColumn字段的正确信息。
但是当我使用REST API修改BoardColumn时,会引发异常。
我具有绕过规则的权限。
$tfsTargetUri = "https://path to my collection/"
$tfsTargetProject = "MyProject"
$MyWI = 56 #use an existing Id
$mycredentials = Get-Credential
$workitem2 =
@(
@{op="test";path="/rev";value="1"},
@{op="add";path="/fields/System.BoardColumn";value="New"}
#@{op="add";path="/fields/System.State";value="Active"}
)
$json2 = $workitem2 | ConvertTo-Json -Depth 100
$url2= $tfsTargetUri + $tfsTargetProject + '/_apis/wit/workitems/' + $MyWI +'?bypassRules=true&api-version=2.0'
$targetbug = Invoke-RestMethod -Uri $url2 -Method Patch -Credential $mycredentials -Body ([System.Text.Encoding]::UTF8.GetBytes($json2)) -ContentType 'application/json-patch+json'
当我在workitem2中尝试使用BoardColumn时,会引发异常。
当我在workitem2中修改注释以更改“状态”字段时,此方法有效。
有什么主意吗?
答案 0 :(得分:0)
字段System.BoardColumn
只能通过设计读取,不是常规的工作项规则,因此在这种情况下bypass = true
可以提供帮助。这就是为什么您不能以常规方式更新此字段的原因。
根据您提供的新Microsoft Docs(三天前添加的相关部分),有一个解决方案。如果您更新另一个字段值,则可以更新该字段-如果您获得工作项并调查这些字段,您将看到以下类型的字段:
WEF_432678B52358ACDA34ASDA243489FD343_Kanban.Column
当您将此字段更新为“董事会栏目状态”时,工作项将移至“董事会栏目”。
示例如何从工作项详细信息中提取此字段:
$url = $collection/_apis/wit/workitems/$id?api-version=4.0
$workItem = Invoke-RestMethod -Uri $url -Method Get ...
$boardColumnField = $workItem.fields.PSObject.Properties.Name.Where({$_.Contains("Kanban")})[0]
# Now in the work item json use it: /fields/$boardColumnFied
答案 1 :(得分:0)