WebAPI 可编辑的只读字段

问题描述

是否可以使用 Azure DevOps/TFS WebAPI 来编辑 READONLY workItem 字段?

我已尝试像往常一样更改该字段,但与该字段在 VisualStudio 或 Azure 网页中只读的方式相同,您无法使用 UpdateWorkItem webApi 调用进行等效更改。

简化如下:

using (WorkItemTrackingHttpClient wiClient = new WorkItemTrackingHttpClient(new Uri(devOpsServerHost),credentials)) {
    WorkItem wi = wiClient.GetWorkItemAsync(workItemId).Result;

    JsonPatchDocument patchDoc = new JsonPatchOperation[] {
        new JsonPatchOperation()
        {
            Operation = operation,// Add or Replace
            Path = "/fields/Microsoft.VSTS.Scheduling.OriginalEstimate",Value = estimated // a float
        }
    });

    return wiClient.UpdateWorkItemAsync(patchDoc,workItemId,bypassRules).Result;
}

我正在尝试使 workItem 字段可通过外部 API 进行编辑并与进行更改的用户相关联,而同一用户无法直接编辑该字段。 例如,用户在外部应用程序中设置了多个任务,联合估计更新到 TFS 工作项中。

作为奖励,我希望对其进行更改,以免阻止保存工作项版本。 readonly 字段给了我希望,尽管我认为这可能是不可能的。

解决方法

我正在尝试使 workItem 字段可通过外部 API 进行编辑并与进行更改的用户相关联,而同一用户无法直接编辑该字段

不过,目前不支持通过 API 更改 READONLY 工作项字段的值。

如果您将字段设为 READONLY,则无法在页面上或通过 API 对其进行编辑。

另一种可能不太完美的替代方法是在每次执行 API 时以编程方式使该字段可编辑,然后在编辑后将其设为 READONLY。您可以使用 REST API Fields - Update

PATCH https://dev.azure.com/{organization}/_apis/work/processes/{processId}/workItemTypes/{witRefName}/fields/{fieldRefName}?api-version=6.0-preview.2

这是一个示例请求正文:

{
  "readOnly": true
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...