Как установить значение для атрибута Found In Attribute для рабочего элемента RTC?

Я пытаюсь создать и обновить рабочий элемент RTC, используя простой Java API. Я могу установить большинство необходимых мне атрибутов, кроме «Найдено в».

Я пробовал что-то вроде:

IAttribute FoundInAttribute = workItemClient.findAttribute(projectArea, "Found In", null); wc.getWorkItem().setValue(FoundInAttribute, "Значение, которое я хочу установить");

И я получил исключение, говорящее, что setValue() ожидает объект IDeliverableHandle, а не String.

Как я могу получить нужный IDeliverableHandle?

Спасибо, Кейн


person Kane Zeng    schedule 01.04.2014    source источник


Ответы (1)


OP Kane Zeng сообщает в комментариях одно из следующих решений работает:

Я использую:

IDeliverableHandle deliverable = 
   workItemClient.findDeliverableByName(projectArea, currentFoundIn,
   IDeliverable.SMALL_PROFILE ,null);

и я могу получить то, что мне нужно сейчас


Оригинальный ответ:

В этой ветке упоминается:

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);

Это похоже на эта тема:

Атрибуты могут быть получены с помощью

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);
} 

(вы найдете похожий подойти туда)

person VonC    schedule 01.04.2014
comment
Спасибо, первое помогло. Я использую IDeliverableHandle deliverable= workItemClient.findDeliverableByName(projectArea, currentFoundIn ,IDeliverable.SMALL_PROFILE ,null); и теперь могу получить то, что мне нужно - person Kane Zeng; 02.04.2014
comment
@KaneZeng Отлично! Я включил ваш вывод в ответ для большей наглядности. - person VonC; 02.04.2014