我无法弄清楚如何将错误的状态从“新”更改为我尝试“批准,完成,关闭”的任何内容,每次出现以下所示的异常时。我查看了整个互联网,发现System.State字段与其他字段有点不同。我认为好吧也许有一种方法来移动过渡状态但是找不到。我还在.NET api中看到了一些帖子,其中切换状态导致其他字段特别是原因字段变为无效。我不认为这是问题,因为一旦我尝试调用field.setValue(“Closed”)它就抛出异常。我看了电动工具,System.State显示可编辑?它不能成为过渡状态问题,因为我尝试了下一步应该有效的状态。例如,工作项是新的,因此Approved是一个有效的下一步。
如果有人知道这是什么问题,我将非常感激。
示例代码:
WorkItem workItem = s.get(0);
Map<String, String> fieldValueMap = settings.getFieldValues();
String status_field_text = settings.getFieldMap().get(SettingsParser.STATUS);
Field statusField = workItem.getFields().getField(status_field_text);
String currentFieldValue = fieldValueMap.get(SettingsParser.CLOSED_STATE);
if(currentFieldValue != null)
{
statusField.setValue("Approved");//<=========== no matter what i add there i get exception
}
else
{
System.out.println("pp");
}
线程“main
中的异常错误:
“java.lang.IllegalArgumentException:字段ID [10013]在此集合中不存在(wi = 16,size = 13) at com.microsoft.tfs.core.clients.workitem.internal.fields.FieldCollectionImpl.newIllegalFieldIDException(FieldCollectionImpl.java:119) 在com.microsoft.tfs.core.clients.workitem.internal.fields.FieldCollectionImpl.getFieldInternal(FieldCollectionImpl.java:459) 在com.microsoft.tfs.core.clients.workitem.internal.WorkItemImpl.getRuleTargetField(WorkItemImpl.java:769) 在com.microsoft.tfs.core.clients.workitem.internal.rules.RuleEngine.preProcessFields(RuleEngine.java:224) 在com.microsoft.tfs.core.clients.workitem.internal.rules.RuleEngine.fieldChanged(RuleEngine.java:196) 在com.microsoft.tfs.core.clients.workitem.internal.rules.RuleEngine.fieldChanged(RuleEngine.java:167) 在com.microsoft.tfs.core.clients.workitem.internal.fields.FieldImpl.fireRules(FieldImpl.java:795) 在com.microsoft.tfs.core.clients.workitem.internal.fields.FieldImpl.setValue(FieldImpl.java:765) 在com.microsoft.tfs.core.clients.workitem.internal.fields.FieldImpl.setValue(FieldImpl.java:457) 在com.microsoft.tfs.core.clients.workitem.internal.fields.FieldImpl.setValue(FieldImpl.java:389) 在Test.main(Test.java:54)
答案 0 :(得分:0)
TEE SDK中没有SettingsParser
。我不确定这个类是什么,但更新bug没有帮助。通过使用它,您似乎正在尝试更新名为“10013”的字段,该字段不存在。
状态字段称为System.State
,或者更好,您只需使用常量CoreFieldReferenceNames.STATE
来引用它。
如果您查看SDK附带的示例,您会发现一个(EditWorkItemByID
)应该说明为您编辑工作项。根据您上面发布的代码段和代码,您应该尝试以下内容:
WorkItem workItem = s.get(0);
workItem.getFields().getField(CoreFieldReferenceNames.STATE).setValue("Approved");