我正在尝试使用普通的Java API创建和更新RTC工作项。 除了“Found In”之外,我能够设置我需要的大部分属性。
我尝试过类似的事情:
IAttribute FoundInAttribute = workItemClient.findAttribute(projectArea,“Found In”,null); wc.getWorkItem()。setValue(FoundInAttribute,“我想设置的值”);
我得到一个例外,说setValue()期望一个IDeliverableHandle对象而不是String。
如何获得我需要的IDeliverableHandle?
谢谢, 凯恩
答案 0 :(得分:0)
OP Kane Zeng报告in the comments,在下面的解决方案中,有一个正在运行:
我用:
IDeliverableHandle deliverable =
workItemClient.findDeliverableByName(projectArea, currentFoundIn,
IDeliverable.SMALL_PROFILE ,null);
我可以得到我现在需要的东西
原始答案:
That thread提及:
IDeliverableHandle deliverable= ... // Find a deliverable using one of
the IWorkItemClient#findDeliverable* methods
IAttribute foundIn= workItemClient.findAttribute(project,
IWorkItem.FOUND_IN_PROPRTY, monitor);
workItem.setValue(foundIn, deliverable);
这似乎与this thread类似:
可以使用
获取属性
IWorkItemCommon#findAttribute(IProjectAreaHandle projectArea,
String attributeId, IProgressMonitor monitor);
因此,对于Found In属性,您将执行以下操作
IAttribute foundIn= workItemClient.findAttribute(projectArea,
IWorkItem.FOUND_IN_PROPERTY, monitor);
IDeliverableHandle deliverable = (IDeliverableHandle)workItem.getValue(foundIn);
IAttribute foundInAttribute = myWorkItemClient.findAttribute(projectAreaHandle, "foundIn" , null);
IDeliverableHandle foundInDeliverableHandle = (IDeliverableHandle) currentWI.getValue(foundInAttribute);
if (foundInDeliverableHandle != null){
IDeliverable deliverable = (IDeliverable) this.repository.itemManager().fetchCompleteItem(foundInDeliverableHandle, IItemManager.DEFAULT, null);
}
(你会找到similar approach there)