【问题标题】:Azure DevOps REST APIs FOR SWIMLANE用于游泳的 Azure DevOps REST API
【发布时间】:2022-01-20 15:26:43
【问题描述】:

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

我成功地在工作项上创建和更新了很多东西

我找不到告诉工作项落入特定泳道的 API

如果你查看我附上的图片,它有一个默认泳道(测试)和自定义泳道......所以 H 有一个 api 将它从“ToDo”移动到“Doing”,但如果你注意到那里多个“正在做”,因为有不同的泳道,所以任何人都可以帮助解决诀窍或告诉工作项落入特定泳道的 API

我做了一些研究,发现“System.BoardLane”我确实在后期和补丁中使用了它

错误:

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

【问题讨论】:

    标签: azure-devops


    【解决方案1】:

    用于游泳的 Azure DevOps REST API

    事实上,你已经非常接近正确答案了。

    您遇到的第一个错误:TF401326: Invalid field status 'ReadOnly' for field 'System.BoardLane' 表明如果您想通过 API 更新 System.BoardLane 字段来修改 SwimLane,我们不允许这样做,因为它的 只读

    (对于fields,不仅System.BoardLane是只读的,System.BoardColumn也是只读的)

    这是设计的。


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

    • 第一步:

    调用Get - Boards API 以获取有关 Board 的信息。在其响应正文中,extension field 名称将显示在 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)。

    • 第二步:

    调用Update - Work Items 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"
      }
    ]
    

    Lane for product team泳道之一。

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


    注意: 扩展字段的 GUID 对于板来说是唯一的。不同的板子有不同的扩展文件GUID值。

    【讨论】:

    【解决方案2】:

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

    您可以配置团队的棋盘设置,将状态映射到您想要的泳道。如果您使用的是标准板流程,那么状态和泳道之间的映射应该非常简单,但是如果您有自定义的工作项,则需要将该逻辑应用于您的代码(即这个新项目的状态应该是X 显示为做)

    【讨论】:

    猜你喜欢
    • 2020-06-12
    • 1970-01-01
    • 2022-07-17
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 2020-08-05
    • 2020-05-23
    • 2020-11-26
    相关资源
    最近更新 更多