如何使用tfs Java sdk切换工作项的状态
我尝试将工作项的状态从“新”切换到“活动”,如下所示:如何使用tfs Java sdk切换工作项的状态,java,tfs,Java,Tfs,我尝试将工作项的状态从“新”切换到“活动”,如下所示: WorkItemCollection co = tpc.getWorkItemClient().query("select xxxxxx..."); WorkItem newWorkItem = co.getWorkItem(0); newWorkItem.getFields().getField(CoreFieldReferenceNames.STATE).setValue("Active&
WorkItemCollection co = tpc.getWorkItemClient().query("select xxxxxx...");
WorkItem newWorkItem = co.getWorkItem(0);
newWorkItem.getFields().getField(CoreFieldReferenceNames.STATE).setValue("Active");
但有如下错误报告:
Exception in thread "main" java.lang.IllegalArgumentException: field id [10112] does not exist in this collection (wi=5789377,size=9)
我假设此方法有问题,或者此方法不支持Azure Devops Server 2019U1,因为此包是可用的 我的测试代码:
public class HelloJava {
public static void main(String[] args) {
// TODO Auto-generated method stub
URI serverURI = null;
try {
serverURI = new URI("xxxxxxxx");
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Credentials credentials = new UsernamePasswordCredentials("xxx","xxx");
TFSTeamProjectCollection tpc = new TFSTeamProjectCollection(serverURI, credentials);
tpc.authenticate();
WorkItemClient myClient = tpc.getWorkItemClient();
WorkItemCollection myWorkitemCollection = myClient.query("SELECT [System.Id],[System.WorkItemType],[System.State] FROM workitems");
//Get workItem Task1
WorkItem myWorkItem = myWorkitemCollection.getWorkItem(0);
FieldCollection myFieldCollection = myWorkItem.getFields();
Field myField = myFieldCollection.getField(CoreFieldReferenceNames.STATE);
//Get workItem Task2
WorkItem myWorkItem2 = myWorkitemCollection.getWorkItem(1);
FieldCollection myFieldCollection2 = myWorkItem2.getFields();
Field myField2 = myFieldCollection2.getField(CoreFieldReferenceNames.STATE);
System.out.println(myField.getValue());
System.out.println(myField2.getValue());
myField2.setValue(myField.getValue()); //Where the error occurs.
System.out.println(myField.getValue());
System.out.println(myField2.getValue());
}
}
结果是:
setValue()
方法将引发异常,即使我试图将Task1的状态设置为Task2的状态
奇怪的是,如果我将当前状态作为输入,它不会抛出错误。。。(如果task1的状态是To Do
,它不会为xx.setValue(“To Do”)抛出错误。如果我通过web portal将状态更改为Do
,那么如果我下次输入To Do
,代码就会抛出错误!!!)
因此,我认为您必须将此问题报告给sdk团队,以获得修复或分享您的反馈,因为它可能不适用于新的Azure Devops Server 2019。如果我们看到类的定义,诊断起来会更容易