Azure DevOps REST API用于Swimlane。

4

我正在尝试使用REST API将Servicenow与Azure Devops Board集成,以创建/更新工作项等。

我成功地在工作项上创建和更新了很多内容。

我找不到一个API来告诉工作项位于特定的Swimlane中。

enter image description here

如果你看一下我附加的图片,其中有一个默认的Swimlane(test)和自定义的Swimlane……所以我有一个API将它从“ToDo”移动到“Doing”,但是如果你注意到有多个“Doing”,因为有不同的Swimlane,所以有人可以帮忙解决这个问题或提供一个API,告诉工作项落在特定的SwimLane中吗?

我进行了一些研究,发现了“System.BoardLane”,我在post和patch中使用了它。

错误:

{
    "$id": "1",
    "customProperties": {
        "ReferenceName": null
    },
    "innerException": null,
    "message": "TF401326: Invalid field status 'ReadOnly' for field 'System.BoardLane'.",
    "typeName": "Microsoft.TeamFoundation.WorkItemTracking.Server.WorkItemFieldInvalidException, Microsoft.TeamFoundation.WorkItemTracking.Server",
    "typeKey": "WorkItemFieldInvalidException",
    "errorCode": 600171,
    "eventId": 3200
}

然后我使用了操作"op":"move"

错误:

{
    "$id": "1",
    "innerException": null,
    "message": "Move/Copy is not implemented.",
    "typeName": "Microsoft.VisualStudio.Services.WebApi.Patch.PatchOperationFailedException, Microsoft.VisualStudio.Services.WebApi",
    "typeKey": "PatchOperationFailedException",
    "errorCode": 0,
    "eventId": 3000
}
2个回答

8

面向SwimLane的Azure DevOps REST API

实际上,您非常接近正确答案。

您遇到的第一个错误:TF401326:在字段“System.BoardLane”中,无效的字段状态“ReadOnly”表明,如果您想通过API更新System.BoardLane字段来修改SwimLane,我们不允许进行此操作,因为它是只读的。

(对于这些字段,不仅System.BoardLane是只读的,System.BoardColumn也是)

这是经过设计的。


为了更新SwimLane,你需要通过API更新扩展字段而不是系统字段

  • 步骤1:

调用获取 - 板API以获取有关板的信息。在其响应正文中,扩展字段名称将显示在fields -> rowField下。

样本:

GET https://dev.azure.com/{org name}/{project name}/{team name}/_apis/work/boards/Stories?api-version=5.1

输入图像描述

这些扩展字段的引用名称将包括一个对于该看板唯一的GUID(例如:WEF_6623ED31B8E04C778FB1129D3239B1A7_Kanban.Lane)。

  • 步骤2:

调用更新 - 工作项 API,使用上面获取到的字段名称作为路径(例如:/fields/WEF_6623ED31B8E04C778FB1129D3239B1A7_Kanban.Lane),并将泳道值作为您想要将项目移动到的行的名称输入:

示例:

PATCH https://dev.azure.com/{org name}/{project name}/_apis/wit/workitems/{WIT id}?api-version=5.1

请求正文:

[
  {
    "op": "add",
    "path": "/fields/WEF_6623ED31B8E04C778FB1129D3239B1A7_Kanban.Lane",
    "from": null,
    "value": "Lane for product team"
  }
]

产品团队专用泳道泳道之一。

现在,您会看到工作项已移动到您指定的相应泳道中。


注意:扩展字段的GUID对于该看板是唯一的。不同的看板具有不同的扩展字段GUID值。


@rahul 太棒了!很高兴这个解决方案对你有帮助。感谢你将此答案标记为已接受 - Mengdi Liang
不确定为什么,在我的情况下我必须使用Kanban.Column而不是Kanban.Lane - 但总的来说,这是非常有帮助的答案。 - nilphilus

0

所使用的泳道是基于工作项的状态(我相信您想要的字段是System.Status)。如果您更新了工作项的值,它应该会将工作项移动到适当的泳道中。

您可以配置团队的看板设置,将状态映射到所需的泳道。如果您使用标准的看板过程,则状态和泳道之间的映射应该很简单,但如果您自定义了工作项,则需要将此逻辑应用于您的代码(即应将此新项设置为状态X以显示正在进行中)。


沙姆赖·亚历山大 - rahul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接