使用BIRT 和 Rational Team Concert創建定制報表,第2部分:復雜報表與固定數據集
關於本文
IBM® Rational Team Concert™ 可以幫助軟件開發團隊存儲和組織大量的信息,包括工作計劃與任務,構建與測試,源代碼與其他的字段。對於任意規模的儲存庫,可視化都會成為一個問題。怎樣才能得到 Rational Team Concert 所追蹤項目狀態的高層次視圖?操作板與工作項查詢提供了一些方法以查看這些信息,但是對於一個更加可以定制的視圖, Rational Team Concert 支持通用 BIRT 報表直接載入到 Web 客戶端中。
三篇文章所組成系列的第一篇涉及到了安裝 Rational Team Concert 與 BIRT 的基礎,並創建了一些簡單的報表。這一部分涉及到了兩個話題:
使用報表中的數據來執行復雜的交替引用操作
解決工作項之間的聯系問題,以顯示報表中的上級-下級關系
前提條件
本系列文章假設您基本熟悉 Rational Team Concert 中的報表,包括創建報表,處理數據源與數據集合,並向報表添加表格等等。這些問題在第 1 部分中已經涉及到了。如果您對 Rational Team Concert 與 BIRT 中的報表不熟悉的話,那麼您可以首先學習那一篇文章 。
在完成本文以後,您需要 jazz.net 上的一個自由賬號,以及 Rational Team Concert 服務器與 Rational Team Concert 客戶端的完整或者試用版本。如果您沒有服務器和客戶端,那麼第 1 部分描述了怎樣得到 Rational Team Concert 服務器的一個試用版本,和 Rational Team Concert 客戶端的免費版本。
對固定的表格創建一個復雜的報表
BIRT 報表與 Rational Team Concert 工作項查詢之間的差異,是 BIRT 允許您去處理多個數據源;但是, Rational Team Concert Web 客戶端只需要一次處理一個工作項查詢。因此,在報表中一次可以顯示不止一個數據表,而且您可以對數據集進行交替引用,以顯示更加復雜的信息。
假設您是一個手下有多個員工的管理人員。如果您想要輕松看到團隊的工作項,那麼您可以創建一個查詢,以顯示團隊區域的工作項,根據工作項的所有者來進行分類。一種更好的方式是顯示團隊成員信息,每一個成員都有一個工作項的列表。在 BIRT 報表的 固定表格 中這是可以實現的。
在另一個表格中包含有一個固定的表格。在這個范例中,外層表格的每一行都顯示了關於不同用戶的信息。工作項的固定表格位於外層表格的裡面,這樣固定的表格會重復外層表格中的每一行。這些工作項的固定表格會得到篩選,只顯示外層表格當前行的工作項。報表上的結果數據的結構如代碼清單 1 所示。
清單 1. 來自表格的范例數據
CONTRIBUTOR_NAME TEAM_AREA_NAME
John Doe Team A
WI_ID SUMMARY
101 A task for John
102 Something for John to do
Jane Smith Team B
WI_ID SUMMARY
103 Jane's task
104 Jane needs to do this
重點:
這個部分假設您正在處理第 1 部分中所創建的報表。如果您沒有學習過第 1 部分,並熟悉 Rational Team Concert 報表的話,那麼您可以在為本文做准備時,可以為 COMMON_SNAPSHOT 與 WORKITEMS_SNAPSHOT 創建數據源,並從 WORKITEMS_SNAPSHOT 快照的 LIVE_WORKITEMS_CNT 表格中創建一個數據集合。
切換至 Report Design 視角,並從您在前文中所創建的工作項報表中刪除掉表格。
提示:
為了選擇並刪除整個的表格,您可以將鼠標停留在表格上面,直到您看到表格左下部的 Table 項為止。點擊該項以選擇整個的表格,然後點擊 Delete。
圖 1. 選擇表格以刪除它
接下來,按照以下的方法來創建一個列出用戶的數據集合:
從 COMMON_SNAPSHOT 快照中創建一個名為 Common 的數據源。
圖 2. 從 COMMON_SNAPSHOT 快照中創建一個數據源
使用 LIVE_CONTRIBUTOR 表格來創建一個名為 Users 的數據集合(圖 3)。
選擇 CONTRIBUTOR_USERID、CONTRIBUTOR_NAME 與 TEAM_AREA_NAME 作為輸出字段。
選擇 CONTRIBUTOR_ARCHIVED 作為一個參數字段。
圖 3. 從 LIVE_CONTRIBUTOR 表格中創建一個數據集合
點擊 Finish。
在數據集合編輯器的 Parameters 項上,將 CONTRIBUTOR_ARCHIVED 參數設置為邏輯類型的 False 值。這種方式,數據集合只包含了儲存庫中的非檔案用戶 。
圖 4. 設置獲得的參數
點擊 Preview Results 項以查看用戶的列表以及他們的團隊區域。
圖 5. 查看來自用戶數據集合的結果
提示:
注意用戶已經多次列出了:用戶所聯系的每一個團隊區域。接下來的一篇文章將會展示,怎樣對您所感興趣的團隊區域篩選這些條目。您還可以選擇,通過從輸出中刪除 TEAM_AREA_NAME 表格,可以只將每一個用戶顯示一次。在這裡的范例中,每一個用戶在結果中只會顯示一次,因為每一個用戶的其他實例,都會篩選出結果集合之外 。
如果您在 Preview Results 項中沒有看到任何的數據,那麼有兩件事情會引起問題 :
在項目區域中尚未存在什麼團隊區域。如果沒有團隊區域存在,那麼在 LIVE_CONTRIBUTOR 表格中就不會列出什麼用戶,就算儲存庫中擁有一個或者多個用戶時也是這樣。在這裡的情況下,添加一個團隊區域並添加至少一個用戶。
將數據記錄到快照上的自動化任務可能尚未運行。這種情況可能會發生,因為您正在使用 Rational Team Concert 服務器的一個實例,它是新建的或者根本就沒有運行過。為了對快照記錄數據,您可以作為管理員登錄到 Web 客戶端的 Reports 項上,點擊 Administer Data Warehouse,然後點擊 Update All Snapshot Data。在較短的時間內,可以從數據集中獲得數據。
將 Users 數據集拖拉到報表上。
右擊表格頂部的框架來向表格添加一個新列,然後點擊 Insert > Column to the Right。新列在頂部擁有一個頭單元,中部的一個數據單元,以及底部的一個底單元。不管您將什麼置於數據單元中,都要對表格中的每一行重復執行。
圖 6. 對表格添加一個列
從 Data Explorer 視圖中,將工作項數據拖拉到新列中的數據單元中。現在工作項表格在用戶表中的位置已經固定了。
圖 7. 固定的表格
如果您現在查看報表,那麼您會看到一個報表,它在每一個用戶之下列出了數據庫中的用戶,還會看到一個儲存庫中所有工作項的表格。為了實現這一份報表,您必須將 inner 表格限制為只顯示 outer 表格行中用戶所擁有的工作項。您可以通過從外層表格向內層表格發送一個參數(在本例中,是所有者的用戶 ID),來實現這項任務。
點擊表格(見於圖 8)左下部的 Table 項,來選擇工作項的內層表格。注意 Property Editor 視圖的標題是“Property Editor - Table”。在處理 Property Editor 視圖之前選擇報表上的適當元素是非常重要的,因為該視圖根據您是否選擇表格、一列、一行、一個單元或者表格中的一個元素,會對報表造成不同的影響。
圖 8. 選擇固定的表格
在 Property Editor 視圖的 Binding 項之下,點擊 Dataset Parameter Binding。
圖 9. 為表格編輯參數聯系
Dataset Parameter Binding 窗口中顯示了數據集合的參數。在您創建數據集合時,您可以使用它來更改指定的值。
選擇 CONTRIBUTOR_USERID 參數然後點擊 Edit。
在“Edit data set parameter binding”彈出窗口中,點擊 Open Expression Builder 按鈕(Value 字段的右邊),如圖 10 所示。
圖 10. 設置一個參數對用戶 ID 的聯系
您可以使用 BIRT 表達式編輯器來編寫帶有 JavaScript 代碼與 BIRT 代碼聯合的復雜表達式。稍後您將會學到更多關於這些表達式的信息。現在,輸入一個表達式,引用外層表格當前行的用戶 ID,如以下步驟中所述:
在表達式構建器中, Category 之下,點擊 Available Column Bindings。
在 Sub-Category 之下,點擊 Table,它會引用用戶外層表格,而不是工作項的內層表格 。
在 Double Click to insert 之下,雙擊 CONTRIBUTOR_USERID。
表達式編輯器現在顯示有以下的代碼:
row["CONTRIBUTOR_USERID"]
點擊 OK 三次以關閉彈出窗口。
現在,當您查看報表,或者上傳 Rational Team Concert 服務器的新版本(如前文所述)時,工作項的內層表格只會顯示與外層表格相關的工作項。通過按照這種方式來交替引用表格,您就可以顯示報表中的復雜數據,並將數據集合相互之間聯系起來。
圖 11. 固定表格中完整的報表
獲取固定表格的聯系項目
A common task in Rational Team Concert 報表中的一個普通任務,是獲得連接至特定工作項的項目。例如,您可能想要顯示一些重要的工作項,然後顯示這些工作項的下級。這項任務要比它看起來的更加復雜,因為在工作項表格中沒有“上級”或者“下級”。相反,工作項目之間的聯系在 COMMON_SNAPSHOT 快照的 LINKS 表格中是單獨的實體。
通過這種方式,獲得重要工作項的下級需要三個固定的表格:
外層的表格顯示了重要的工作項。
接下來的表格顯示了來自重要工作項的上級聯系 。
內層的表格顯示了那些聯系目標的工作項。
接下來的范例向您展示了怎樣顯示工作項的下級:
從 LIVE_WORKITEM_CNT 表格中為上級工作項創建一個數據集合。對於參數,您可以使用 WI_TYPE 列來限制對重要工作項或者改進的數據集合,或者您可以使用 TEAM_AREA_NAME 列來限制特定團隊區域上的項目。該數據集合必須包含輸出中的 WI_ITEMID 列,因為該表提供了您將會使用到的鍵,來獲取來自這些工作項的聯系。
圖 12. 數據集合顯示了重要的工作項
從 COMMON_SNAPSHOT 快照的 LINKS 表格中創建一個數據集合。它最少在輸出中含有 SOURCE_ITEMID 與 TARGET_ITEMID 列。將 LINK_TYPE 參數設置成 com.ibm.team.workitem.linktype.parentworkitem ,它還在參數列表中包含有 TARGET_ITEMID 列。 Rational Team Concert 中的聯系從下級(源)到上級(目標),這樣您就可以將該 TARGET_ITEMID 參數與外層表格中的 WI_ITEMID 列聯系起來。
圖 13. 顯示上級聯系的數據集合
從 LIVE_WORKITEM_CNT 表格(圖 14)為下級工作項創建一個工作集合。對於參數,它包含有 WI_ITEMID 列,這樣您就可以顯示作為聯系源的工作項 。
圖 14. 顯示下級工作項的數據集合
將上級工作項數據集合拖拉到報表中,並添加一個額外的列以顯示下級工作項。您可以直接添加一個列,或者從已存在的列中刪除掉字段以騰出空間。
將聯系數據集合拖拉到重要工作項表格的空白數據單元中。
選擇聯系的內部表格,並將其 TARGET_ITEMID 列於外層表格(圖 15)的 WI_ITEMID 列聯系起來。現在內部表格只是顯示了外層表格中的工作項作為目標。
圖 15. 將連接表格上的參數聯系起來
將下級工作項數據拖拉到連接表格中的空白數據單元中。
選擇下級工作項的表格,並將其 WI_ITEMID 列與連接表格(圖 16)中的 SOURCE_ITEMID 列聯系起來。現在最內層的表格只顯示了連接表格中聯系的源。
圖 16. 聯系內部工作項上的參數
因為對聯系本身並不感興趣,所以您可以點擊聯系表格中的字段(圖 17),並點擊 Delete。通過從表格中刪除掉數據,您就可以利用最裡層表格中的數據,而不用將其在報表中直接顯示出來 。
圖 17. 從聯系表格中刪除數據而不用刪除表格
完整的報表顯示了上級項目以及它們的下級項目(圖 18).
圖 18. 上級和下級工作項的完整報表
固定表格的這項技術,在許多其他的區域內都十分有用,但是在本文中並沒有進行討論。當您需要將一個數據集合與另一個數據集合聯系的時候,這項技術是一個選項。三篇文章組成的系列中的最後一篇文章,將會討論交替引用數據的其他方式,包括交接表格 。