通过TFS REST API将工作项添加到板列中

问题描述 投票:0回答:1

我正在使用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
}

如何在特定板上包含工作项?

c# tfs azure-devops azure-devops-rest-api tfs-sdk
1个回答
0
投票

要更新面板列,您应该更新另一个字段,而不是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;
© www.soinside.com 2019 - 2024. All rights reserved.