2013-05-13 3 views
1

Я пытаюсь установить значение «Обсуждение» в рабочей статье прагматично.Атрибут «Обсуждение» RTC Рабочий элемент

мне удалось установить «Описание» атрибут, но когда я попытался установить Обсуждение я исключения нулевого указателя:

IWorkItemClient workItemClient= (IWorkItemClient)repository.getClientLibrary(IWorkItemClient.class); 
IWorkItemWorkingCopyManager manager= workItemClient.getWorkItemWorkingCopyManager(); 
manager.connect(workItem, IWorkItem.SMALL_PROFILE, SysoutProgressMonitor.getMonitor()); 
WorkItemWorkingCopy wc= manager.getWorkingCopy(workItem); 

    IProgressMonitor monitor = SysoutProgressMonitor.getMonitor(); 
    IWorkItemClient service = (IWorkItemClient) repository.getClientLibrary(IWorkItemClient.class); 

    IAttribute discussionAttribute = service.findAttribute(projectArea, "discussion", monitor);//Here I got a null "discussionAttribute"? 

    wc.getWorkItem().setValue(discussionAttribute, "New Value for Discussion"); 

Любые идеи!

+0

Что такое 'null'? 'wc.getWorkItem()'? – VonC

+0

IAttribute discussionAttribute = service.findAttribute (projectArea, «обсуждение», монитор); // Здесь я получил нулевой «accountAttribute»? – Echo

ответ

1

//Here I got a null "discussionAttribute"?
Attribute discussionAttribute = service.findAttribute(projectArea, "discussion", monitor);

Я подозреваю, "discussion" не является допустимым идентификатор атрибута WorkItem.

Попробуйте вопрос «Where can I find a list of IWorkItem attributes» запрашивать все атрибуты элемента работы, для того, чтобы получить правильное имя атрибута для «discussion» (возможно «comments»?)

Использование IItemManager.fetchCompleteItem для извлечения item для любой ручки.
Элементы несут фактическую информацию; Ручки по существу точно так же, как указатели/URL-адреса.

Например:

IContributorHandle contributorHandle = ... 

IContributor contributor = (IContributor) teamRepository.itemManager.fetchCompleteItem(contributorHandle, IItemManager.DEFAULT, null); // should really provide a progress monitor in last arg for progress/cancelaton 

String name = contributor.getName(); 

Это для клиентской стороны. Для сервера используйте IRepositoryItemService для извлечения элемента.


В атрибутах конфигурации зоны проекта, я вижу

"Комментарии": ИД "com.ibm.team.workitem.attribute.comments", но не "обсуждение".

На Jazz.net, вы найдете ссылку на this discussion и упоминает идентификатор с именем «internalComments».

Попробуйте тогда:

Attribute discussionAttribute = 
    service.findAttribute(projectArea, "internalComments", monitor); 

Не забудьте сохранить измененный рабочий элемент, хотя, как и в "Modify a WorkItem"

IDetailedStatus s = wc.save(null); 
if (!s.isOK()) { 
    throw new TeamRepositoryException("Error saving work item", 
             s.getException()); 
} 
+0

Я попытался получить комментарии таким образом, но получил нулевой объект :! IAttribute attribute = service.findAttribute (projectArea, "comments", monitor); – Echo

+0

Я нашел это в моей конфигурации: Как я могу установить его программно! <идентификатор раздела = "com.ibm.team.workitem.web.inline.section.discussion"> \t \t \t <презентация ID = "com.ibm.team.workitem.presentation.discussion" вид = "ком. ibm.team.workitem.kind.internal.discussion "> \t \t \t <свойство ключ =" «значение = "hideIfCreation правда"/> \t \t \t \t \t \t – Echo

+1

@ECHO "обсуждение" это имя виджета ** GUI **, в котором содержатся комментарии к рабочим элементам. Однако атрибут (т. Е. * Данные *, прикрепленный к WI, а не его графическое представление) называется *** комментариями ***. См. Мой отредактированный ответ. – VonC

1

Это окончательное решение, и оно работает:) Благодаря VonC & Sam.

IWorkItemClient workItemClient= (IWorkItemClient)repository.getClientLibrary(IWorkItemClient.class); 
     IWorkItemWorkingCopyManager manager= workItemClient.getWorkItemWorkingCopyManager(); 
     manager.connect(workItem, IWorkItem.SMALL_PROFILE, SysoutProgressMonitor.getMonitor()); 
     WorkItemWorkingCopy wc= manager.getWorkingCopy(workItem); 

     IAttribute commentsAttr = findAttribute(repository, projectArea, "internalComments"); 
     IComments comments= wc.getWorkItem().getComments(); 
     IComment comment= comments.createComment(repository.loggedInContributor(), 
       XMLString.createFromPlainText("Aloo from Mars"));     

      comments.append(comment); 

      wc.save(null); 
+1

Отлично. Рабочая версия моего ответа. +1 – VonC

+0

Спасибо VonC за помощь :) – Echo

Смежные вопросы