tfs - 如何使用 REST API 修改工作项的 BoardColumn 字段
问题描述
我有一个定制的董事会:
第一个默认列“New”映射到“New”状态。
第二列“待办事项”也映射到“新”状态(每周审查新的 WI 后,团队将它们移动到此列以避免下次审查它们)。
在 TFS Board 中,我可以将 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 中的注释以更改 State 字段时,这是有效的。
任何想法?
解决方案
该字段System.BoardColumn
是只读的,不是常规的工作项规则,因此bypass = true
在这种情况下可以提供帮助。这就是您无法以常规方式更新此字段的原因。
根据您提供的新Microsoft Docs(3 天前添加的相关部分),有一个解决方案。如果您更新另一个字段值,则可以更新该字段 - 如果您获取工作项并调查这些字段,您将看到这种字段:
WEF_432678B52358ACDA34ASDA243489FD343_Kanban.Column
当您将此字段更新为 Board Column State 时,工作项将移至此 Board 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
推荐阅读
- javascript - js2xmlparser 自定义 XML 正文
- jquery - 在关闭按钮单击动态弹出框时调用自定义函数
- opendaylight - Opendaylight 人功能链接
- ios - 当用户从 Appstore 更新 IOS 应用程序时,Realm 数据库会发生什么?
- asp.net - DataTable:检查现有值的列
- java - 如何使用 Spring Boot 实现“负载均衡器”?
- javascript - 使用 html 将相同的结果输出到其他选择标签
- javascript - 如果我有许多同名的输入,如何禁用输入类型 = 复选框上的文本单击
- kotlin - 如何在 Kotlin 中调用在 with(){} 范围之外声明的(同名)方法
- java - 基于JDBC的锁实现