有没有办法使用java sdk for TFS更改工作项的状态?
每次我遇到如下异常时,我都无法弄清楚如何将bug的状态从“新”更改为我尝试过的“已批准、已完成、已关闭”状态。我在互联网上到处寻找,发现这个系统。“状态”字段与其他字段稍有不同。我想可能有一种方法可以移动过渡态,但是找不到。我在网上也看到了一些帖子。NET api,其中切换状态会导致其他字段,尤其是原因字段变得无效。我不认为这是个问题,因为只要我试着打电话给field。setValue(“Closed”)它抛出异常。我看了看电动工具和系统。状态是否显示为可编辑?这不可能是一个转换状态问题,因为我尝试了下一步应该有效的状态。例如,工作项是新的,因此批准是有效的下一步
如果有人知道问题出在哪里,我将非常感激
示例代码:
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) 在com。微软tfs。果心客户。工作项目。内部的领域。FieldCollectionImpl。newIllegalFieldIDException(FieldCollectionImpl.java:119) 在com。微软tfs。果心客户。工作项目。内部的领域。FieldCollectionImpl。getFieldInternal(FieldCollectionImpl.java:459) 在com。微软tfs。果心客户。工作项目。内部的工作方式简单。getRuleTargetField(WorkItemImpl.java:769) 在com。微软tfs。果心客户。工作项目。内部的规则。规则引擎。预处理字段(RuleEngine.java:224) 在com。微软tfs。果心客户。工作项目。内部的规则。规则引擎。fieldChanged(RuleEngine.java:196) 在com。微软tfs。果心客户。工作项目。内部的规则。规则引擎。fieldChanged(RuleEngine.java:167) 在com。微软tfs。果心客户。工作项目。内部的领域。FieldImpl。fireRules(FieldImpl.java:795) 在com。微软tfs。果心客户。工作项目。内部的领域。FieldImpl。setValue(FieldImpl.java:765) 在com。微软tfs。果心客户。工作项目。内部的领域。FieldImpl。setValue(FieldImpl.java:457) 在com。微软tfs。果心客户。工作项目。内部的领域。FieldImpl。setValue(FieldImpl.java:389) 在测试中。main(Test.java:54)
# 1 楼答案
teesdk中没有
SettingsParser
。我不确定这个类是什么,但它对更新bug没有帮助。通过使用它,您似乎正在尝试更新名为“10013”的字段,该字段不存在状态字段称为
System.State
,或者更好,您可以简单地使用常量CoreFieldReferenceNames.STATE
来引用它如果您查看SDK中包含的示例,您会发现一个(
EditWorkItemByID
)应该说明如何为您编辑工作项。通过修改该代码段和上面发布的代码,您应该尝试以下操作: