我有一个 Azure DevOps 扩展,我需要更新只读自定义工作项字段。
自定义字段通过流程规则设置为只读。
我意识到我可以做这样的事情,并通过完整的 API 本身绕过规则:
fetch('https://dev.azure.com/aherrick/_apis/wit/workitems/1?api-version=7.0&bypassRules=true', {
method: 'PATCH',
headers: {
'Content-Type': 'application/json-patch+json',
"Authorization": "Basic " + btoa("" + ":" + "PAT")
},
body: JSON.stringify([{
"op": "add",
"path": "/fields/Custom.MyField",
"value": "100"
}])
});
但是,我不想在我的 Azure DevOps 扩展中嵌入 PAT。我已经使用 VSS 工作项客户端尝试过类似的操作:
var document = [{
"op": "add",
"path": "/fields/Custom.MyField",
"value": "10001"
}];
witClient.updateWorkItem(document, 1)
.then(function (response) {
console.log(response);
}, function (error) {
console.log(error);
});
但是,如何使用内置的 VSS 工作项客户端绕过规则?关于如何实现这一目标还有其他建议吗?
我的想法似乎可行,但完全是一个黑客。本质上,我使用的是隐藏的自定义“支持字段”,当设置为值(通过规则)时,我正确的自定义字段将设置为只读。
因此,在代码中,我强制支持字段并删除它的值(从而从我的正确自定义字段中删除只读),实际上更新我的自定义字段,然后重置支持字段。 :(
必须有一种更清洁的方法吗?