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

Posted

技术标签:

【中文标题】通过 TFS REST API 将工作项添加到板列【英文标题】:Add work item to board column via TFS REST API 【发布时间】:2020-09-27 10:31:59 【问题描述】:

我正在使用 TFS 2018 Rest API 创建工作项。

我可以创建一个工作项,但我希望它转到板上的特定列。

我在创建工作项时尝试传递以下参数来配置列:

  
    "op": "add",
    "path": "/fields/System.BoardColumn",
    "from": null,
    "value": "Waiting worker"
  

当我使用上述代码发出 Patch 请求以插入工作项时,我收到以下返回:


    "$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

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

【问题讨论】:

你查看下面的回复了吗?如果它对您有帮助,您可以Accept it as an Answer,这对阅读此主题的其他社区成员会有所帮助。 【参考方案1】:

要更新板列,您应该更新另一个字段,而不是 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;

【讨论】:

以上是关于通过 TFS REST API 将工作项添加到板列的主要内容,如果未能解决你的问题,请参考以下文章

是否可以通过自定义扩展或 REST API 添加新的工作项类型?

TFS看板规则

通过 REST API 将测试结果发布到 TFS 2018 测试用例

将TFS REST API与存储的查询一起使用时是否会编译?

如何使用 API 创建跨 TFS 集合的 TFS/Azure DevOps 工作项查询并将其导出到 Wor/Excel/Outlook 等

使用 TFS 2015 REST API 进行队列构建的 409 冲突响应