0

每当我收到如下所示的以​​下异常时,我都无法弄清楚如何将错误的状态从“新”更改为我尝试过的任何“已批准、已完成、已关闭”。我浏览了整个互联网,发现 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)

4

1 回答 1

0

TEE SDK中没有SettingsParser。我不确定这个类是什么,但它对更新错误没有帮助。通过使用它,您似乎正在尝试更新名为“10013”的字段,该字段不存在。

状态字段称为System.State,或者更好的是,您可以简单地使用一个常量CoreFieldReferenceNames.STATE来引用它。

如果您查看 SDK 中包含的示例,您会发现一个 ( EditWorkItemByID) 应该说明为您编辑工作项。调整该片段和您在上面发布的代码,您应该尝试以下操作:

WorkItem workItem = s.get(0);
workItem.getFields().getField(CoreFieldReferenceNames.STATE).setValue("Approved");
于 2013-05-03T19:02:02.600 回答