每当我收到如下所示的以下异常时,我都无法弄清楚如何将错误的状态从“新”更改为我尝试过的任何“已批准、已完成、已关闭”。我浏览了整个互联网,发现 System.State 字段与其他字段有点不同。我想好吧,也许有一种方法可以移动过渡状态,但找不到。我还在 .NET api 中看到了一些帖子,其中切换状态导致其他字段,特别是原因字段变得无效。我认为这不是问题,因为一旦我尝试调用 field.setValue("Closed") 它就会引发异常。我使用电动工具查看并且 System.State 确实显示为可编辑?这不可能是过渡状态问题,因为我 v 尝试过的状态应作为下一步有效。例如,工作项是新的,因此 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: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.java:54)