2013-05-13 49 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 2013-05-13 12:57:22

+0

IAttribute discussionAttribute = service.findAttribute(projectArea,「discussion」,monitor); //這裏我得到一個空的「discussionAttribute」? – Echo 2013-05-13 13:10:37

回答

1

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

我懷疑 「discussion」 不是一個有效的工作項屬性ID。

試試這個問題:「Where can I find a list of IWorkItem attributes」來查詢工作項的所有屬性,以獲得正確的屬性名稱「discussion」(也許「comments」?)

使用IItemManager.fetchCompleteItem,以獲取物品的任何處理。
這些項目載有實際的信息;句柄基本上就像指針/ 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來獲取該項目。


在項目區域配置的屬性,我看到

「註釋」:ID 「com.ibm.team.workitem.attribute.comments」,但沒有 「討論」。

Jazz.net,你會發現一個鏈接到this discussion並提到命名爲 「internalComments」 的ID。

嘗試則:

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 2013-05-13 13:49:49

+0

我在配置中發現了這個: 如何以編程方式設置它! <節ID = 「com.ibm.team.workitem.web.inline.section.discussion」> \t \t \t <演出ID = 「com.ibm.team.workitem.presentation.discussion」 類=「COM。 ibm.team.workitem.kind.internal.discussion 「> \t \t \t <屬性鍵=」 hideIfCreation」值= 「真」/> \t \t \t \t \t \t – Echo 2013-05-13 13:50:07

+1

@Echo 「討論」是** GUI小部件**的名稱,其中包含有關工作項目的註釋。然而,該屬性(即附加到WI的* data *,而不是其圖形表示)被稱爲*** comments ***。看到我編輯的答案。 – VonC 2013-05-13 13:55:08

1

這是最後的分辨率,它的工作原理: ) 感謝VonC &山姆。

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 2013-05-13 18:50:58

+0

感謝VonC的幫助:) – Echo 2013-05-13 18:56:12