我正在使用TFS 2018 Rest API创建工作项。
我可以创建工作项,但我希望它进入董事会的特定列。
我将在创建工作项以配置列时尝试传递以下参数:
{
"op": "add",
"path": "/fields/System.BoardColumn",
"from": null,
"value": "Waiting worker"
}
当我发出补丁请求以使用上述代码插入工作项时,收到以下返回:
{
"$id": "1",
"customProperties": {
"ReferenceName": null
},
"innerException": null,
"message": "TF401326: Invalid field status 'ReadOnly' for field 'System.BoardColumn'.",
"typeName": "Microsoft.TeamFoundation.WorkItemTracking.Server.WorkItemFieldInvalidException, Microsoft.TeamFoundation.WorkItemTracking.Server",
"typeKey": "WorkItemFieldInvalidException",
"errorCode": 600171,
"eventId": 3200
}
如何在特定板上包含工作项?
要更新面板列,您应该更新另一个字段,而不是System.BoardColumn
(他是只读的)。
哪个字段?根据Microsoft Docs,您应该调查这些字段,然后您会看到这种字段:
WEF_432678B52358ACDA34ASDA243489FD343_Kanban.Column
因此,您应该找到刚创建的工作项目的字段并更新该字段:
WorkItem workItem = this.CreateWorkItem("Board Column Test", "User Story");
string wefField = "";
// By the way - I opened PR to improve it, still waiting for the approval...
foreach (var field in workItem.Fields)
{
if (field.Key.Contains("_Kanban.Column"))
{
wefField = field.Key.ToString();
break;
}
}
patchDocument.Add(
new JsonPatchOperation()
{
Operation = Operation.Add,
Path = "/fields/" + wefField,
Value = targetColumn
}
);
WorkItem result = witClient.UpdateWorkItemAsync(patchDocument, Convert.ToInt32(workItem.Id)).Result;