2016-08-09 33 views
0

该团队尝试在VSTS上创建自定义小部件,以帮助管理小组代码审阅。其中一项任务是创建类型为“代码审查响应”的新工作项并将其链接到代码更改。但下面的代码不起作用:通过VSO SDK创建工作项失败

import WorkitemRestClient = require("TFS/WorkItemTracking/RestClient"); 
var workitemClient = WorkitemRestClient.getClient(); 

var c = VSS.getWebContext(); 

import VersionCtrlRestClient = require("TFS/VersionControl/TfvcRestClient"); 
var versionCtrlClient = VersionCtrlRestClient.getClient(); 

versionCtrlClient.getChangesets(c.project.name) 
.then(changesets => { 
    for (var i = changesets.length - 1; i >= 0; i--) { 
     var content = $("#content"); 
     content.append("<pre>" + JSON.stringify(changesets[i].comment, null, "\t") + "</pre>"); 

     workitemClient.createWorkItem([{ 
      "op": "add", 
      "path": "/relations/-", 
      "value": { 
       "rel": "", 
       "title": "xxxx", 
       "url": changesets[i].url 
      } 
     }], c.project.name, "Code Review Response") 
      .then(workitem => { 
       //workitem.relations.push({ 
       // "attributes": { "key": [] }, 
       // "rel": "", 
       // "title": "", 
       // "url": changesets[i].url 
       //}); 
      }); 
    } 
}); 

我不知道工作的问题是。它总是给出一个400错误的请求错误,并说referenceName不能为空。 我们的代码有什么问题吗? createWorkItem的第一个参数是document: VSS_Common_Contracts.JsonPatchDocument。我不太确定如何传入此参数。 任何人都可以帮忙吗?非常感谢。

回答

1

您发送的内容不正确,您在“关系”中包含工作项目标题,也遗漏了关系类型。请下列内容的尝试:workitemClient.createWorkItem([ { “OP”: “添加”, “路径”: “/fields/System.Title”

[ 
    { 
     "op": "add", 
     "path": "/fields/System.Title", 
     "value": "xxxx" 
    }, 
    { 
     "op": "add", 
     "path": "/relations/-", 
     "value": 
     { 
      "rel": "ArtifactLink", 
      "url": "vstfs:///VersionControl/Changeset/xxx" 
     } 
    } 
] 
+0

我还是用得到的400错误, “值”:改变[I]的.comment },{ “OP”: “添加”, “路径”: “/关系/ - ”, “值”: { “相对”: “ArtifactLink”, “url”:changes [i] .url } } ],projectName,“代码审查回复”); – Max

+0

@Max尝试在创建“代码审阅响应”工作项类型时在内容中包含“分配给”字段。 –