原貼地址:http://www.ibm.com/developerworks/cn/opensource/os-cn-eclipse-birtinteam/index.htmljavascript
在團隊中用 BIRT 進行報表開發html
本文主要介紹如何在 BIRT 中建立,使用庫( Library )和模板,及如何在報表中使用用戶自定義的 JS 文件。java
前言app
BIRT 是一個基於 Eclipse 的開源報表插件,特別適用於給 J2EE 的 WEB 應用程序建立報表。隨着 BIRT 的不斷完善,採用 BIRT 進行報表設計的人也愈來愈多。而隨着 BIRT 應用的深刻,不少人都碰到了這樣一些問題:
在一個團隊中,不一樣的設計者設計報表的時候,如何可以保證報表風格的統一?
如何可以使得您的設計獲得重用,從而提升工做效率?
如何可以集中定義一些經常使用的資源,從而避免一處資源的變更,全部報表都要修改的狀況發生?eclipse
因爲BIRT的官方文檔還不是很完善,不少問題都還不能在官方文檔找到詳細的說明。本文將會試圖經過實際的例子,幫助讀者解決以上一些問題。函數
BIRT的主要組件分爲兩部分: BIRT 報表設計器和 BIRT 運行引擎。本文將主要介紹 BIRT報表設計器中的一些功能。做爲 BIRT 的進階教程,本文將不會涉及到如何用 BIRT 建立簡單報表的內容,須要讀者對 BIRT 有一些初步的認識,而且掌握 BIRT 報表的基本設計方法。工具
示例項目及相關設置介紹字體
爲了方便讀者理解,在開始介紹正式內容以前,先簡單介紹一下本文中將會用到的 BIRT 示例項目和相關設置。spa
本文中用到的項目名稱爲 BirtIntroduction ,項目結構以下圖:插件
圖 1:示例項目層次結構
其中:
JavaScripts 文件夾用於存放用戶自定義的 JavaScript 文件。
lib 文件夾用於存放用戶創建的庫( Library )文件。
pic 文件夾用於存放全部報表中會用到的圖片。
template 文件夾用於存放用戶創建的模板文件。
全部的報表文件都會創建在 BirtIntroduction 下面。
在開始使用這些資源以前,還須要在Eclipse裏面設置資源所在的位置。具體設置方法以下:
在Eclipse中選擇 Window -> Preference ,打開 Eclipse 設置窗口,選擇 Report Design -> Resource 設置資源文件夾爲當前項目所在位置,以下圖:
圖 2:設置資源位置根目錄
「 D:/BIRTReport/BirtIntroduction/ 」 是這個項目的絕對路徑。 相關設置作好後,就能夠開始咱們的正式內容了。
在報表中使用用戶自定義的 JavaScript 文件
BIRT給設計者提供了強大的數據控制功能,它不只提供了一些經常使用的函數,並且還容許設計者在報表中自定義JavaScript方法,並利用這些函數對報表輸出樣式,數值等因素進行修改,計算。可是,在大型項目中,若是不少功能相同的 JavaScript 方法的定義分佈在各個報表中,對設計者來講,修改報表中的 JavaScript 將會成爲噩夢同樣的事情。那麼 BIRT 能不能把這些功能相同的函數集中定義在一個 JS 文件中,並在 BIRT 中得以應用呢?答案是確定的。
因爲 BIRT 並無給使用者提供 GUI 的方式爲報表添加用戶自定義的 JS 文件。因此咱們只能經過修改 .rptdesign 文件的源文件進行 JS 文件的添加,刪除工做。請看下面的詳細步驟:
首先,咱們要先建立本身的 JavaScript 文件。以下圖:
圖 3:建立 JavaScript 文件
建立的 JavaScript 文件名爲 demo_scripts.js 。接下來,在新建的 JavaScript 文件中寫入自定義的方法。下面是將在本文中用到的一個簡單的方法,主要目的是把傳入的兩個數字參數經過下劃線鏈接在一塊兒,而且返回。
清單 1. 自定義的 JavaScript 方法
JavaScript 文件定義好了之後,就能夠在報表中使用了,具體使用方法是:
打開報表定義文件,而且在主編輯區切換到」 XML Source 」標籤,而後在報表定義文件中加入以下語句。
清單 2. 把用戶自定義的 JavaScript 文件加入到報表中
以下圖:
圖 4:在報表中使用 JavaScript 文件
因爲在文章開始的地方已經設置好了資源根目錄,因此」 JavaScripts/demo_scripts.js 」這個相對路徑映射的絕對路徑就是「 D:/BIRTReport/BirtIntroduction/JavaScripts/demo_scripts.js 」。
到這裏就能夠在報表中使用 demo_scripts.js 中定義的全部方法了。使用方法請看下面的簡單例子。
在報表中用鼠標雙擊 Number 列,打開數據編輯窗口,輸入名稱爲 CombineNum ,以下圖
圖 5:打開數據編輯窗口
單擊 fx 按鈕,打開表達式編輯窗口,輸入以下內容:
清單 3. 使用 JS 文件中的方法
以下圖
圖 6:使用 JS 文件中的方法-1
選擇 OK 按鈕,確認輸入,回到報表設計頁面中。如圖 7
圖 7:使用 JS 文件中的方法-2
下面讓咱們來預覽一下這個報表,如圖 8:
圖 8:預覽報表
在圖8中,咱們發現 NUMBER 列中的數據是合併之後的。這說明咱們的方法起到了做用。是否是很簡單?
不過,這裏要特別指出的一點是,BIRT仍是一個發展中的工具,有些地方還不是很完善。因此用戶自定義的JS文件在報表的有些地方還不可以使用。好比,在圖表( Chart )中的 Script 中,若是想在 Event Function 使用JS文件中的方法,在當前版本中(2.2.2)是不行的。據 BIRT 的開發者說,這是由於圖表( Chart )的渲染引擎是一個獨立的部分。固然,暇不掩玉,相信 BIRT 會很快修正這些問題的!!
BIRT 中庫( Library )的建立與應用
庫( Library )是一組用戶自定義的報表元素的集合,好比數據源,經常使用的數據集,通用的報表參數定義等等。經過庫的應用,設計者能夠集中定義經常使用資源,重用功能設計。
下面將會詳細介紹庫在BIRT中的建立與應用:
建立庫( Library )
在lib文件夾上單擊鼠標右鍵,並在彈出菜單中選擇 New -> Library , 以下圖 9 所示:
圖 9:建立庫
在接下來的窗口中輸入這個庫的名字,如圖10
圖 10:輸入庫的名字
庫是以 .rptlibrary 爲擴展名的文件。例子中的庫名爲 demo_library.rptlibrary 。
打開新建的庫,你會發現基本全部能在報表中定義的元素均可以在這裏定義。開發者能夠從項目中汲取可被重用的資源,集中定義到庫中來。好比數據源定義,經常使用的數據集定義等等。
在下面的例子中,以一個數據源的定義說明了如何在庫中添加新的項目。
和在報表中定義數據源同樣,在 Data Explorer -> Data Sources 上右鍵單擊鼠標,在彈出菜單中選擇 New Data Source 。
圖 11:在庫中建立數據源
選擇數據源類型,而且輸入數據源名稱,並選擇下一步( Next ),本例中,數據源名稱爲 Demo_Data_Source 。如圖 12 所示:
圖 12:輸入數據源的名稱及類型
在下面的數據源定義窗口中輸入數據源的信息
圖 13:輸入數據源的信息
單擊肯定( OK )按鈕,完成數據源的建立。到此,咱們就爲庫中建立了一個數據源。
庫建立好了,如何在咱們的報表中使用庫中的資源呢?下面將會講解庫的使用。
在報表中使用庫 ( Library )
首先,打開您的報表文件,在 Library Explore 中選擇要用到的庫,在這個例子中爲 lib -> demo_library.rptlbrary 。在庫上單擊鼠標右鍵,而後選擇 Use Library 選項。如圖14所示
圖 14:使用庫
繼續打開您的報表設計頁面,並選中 Outline 視圖,把定義在庫中的報表元素用鼠標從 Library Explore 視圖中拖到 Outline 中相應的位置。本例中爲把數據源 Demo_Data_Source 添加到 DemoReport.rptdesign 中去,如圖 15 所示:
圖 15:使用庫中定義的元素
這時,當建立數據集時,您會發現已經能夠用到這個數據源了,如圖 16 所示:
圖 16:使用庫中的數據源建立數據集
在進行報表設計的時候,當您庫中的數據源或其餘庫中信息更新後,您須要刷新一下您的報表,從而使更新後的庫中的元素起到做用。方法是,打開您的報表,在 Outline -> 您的報表上單擊鼠標右鍵,而後選擇 Refresh Library 選項來更新報表,如圖 17 所示:
圖 17:更新庫中的信息
若是您的項目規模很大,庫的使用好壞與否,將在很大程度上決定項目後期維護上的難度。想象一下,您的項目中有上百個報表,但並無用到庫,若是您的報表的數據源發生了改變,那麼上百個報表,每一個報表的數據源都要從新修改一下,這將是一件很麻煩的事情。因此,在報表設計以前,先將經常使用資源定義在庫中會是一個很好的開發習慣。
使用模板( Template )定製統一的報表風格
一個團隊中,每一個人的審美觀都是不徹底一致的,若是沒有一個集中的控制,不一樣的隊員設計出不一樣風格的報表會使得一個項目變得像不少項目的集合。在一個項目中,維護報表風格的統一相當重要。BIRT爲開發者提供了模板的概念,經過使用相同的模板,能夠保證團隊中不一樣設計者設計出來的報表風格統一。
BIRT 的模板中定義了報表的版面設置,字體大小,配色方案等一系列設置, 下面將詳細講解BIRT 模板的建立與使用方法。
建立模板 ( Template )
在 Eclipse 中選擇 File -> New –> Template ,如圖 18 所示:
圖 18:建立新的模板
在接下來的窗口中,爲新模板輸入一個名字,而且寫上一些註釋。這些註釋對不熟悉這個模板的使用者來講,將會有很大的幫助,如圖 19 所示:
圖 19:輸入模板信息
選擇結束( Finish )建立新的模板。
接下來,打開新的模板,您能夠像定義普通報表同樣在模板中添加必要的元素,例如字體的大小,頁眉頁腳的設置等等,下面的例子在模板中定義了一個數據集,一個圖( Chart )和一些頁面設置,如圖 20,21,22 所示:
圖 20:模板中用到的數據集
圖 21:模板中定義的主要內容
圖 22:模板中定義的 Master Page
讓咱們來預覽一下這個模板的樣子,如圖 23:
圖 23:預覽模板
模板建立好了以後,須要發佈出去才能使用,方法是:鼠標右鍵點擊建立的模板,選擇 Register Template with New Report Wizard 如圖 24 所示:
圖 24:發佈模板
在接下來的窗口中爲模板輸入名稱和描述,在這個例子中,模板的名字叫 DemoTemplate ,如圖 25 所示
圖 25:發佈模板-輸入名稱和描述
這樣一個模板就能夠被使用了。
使用模板 ( Template ) 建立報表
下面咱們將用一個例子來講明如何用剛剛建立的模板建造新的報表。
在 Eclipse 中選擇 File -> New -> Report , 如圖 26 所示:
圖 26:建立新的報表
在接下來的窗口中輸入報表的名稱及所在文件夾,本例中報表名稱爲 demo_report_from_template..rptdesign , 如圖 27 所示:
圖 27:輸入報表名稱
在接下來的窗口中,能夠看到剛剛發佈的模板 DemoTemplate ,選擇這個模板,如圖 28 所示:
圖 28:選擇模板
單擊結束( Finish )按鈕,報表就生成好了,咱們來看看新生成的報表,如圖 29:
圖 29:從模板中生成的報表
在預覽一下新建的報表,如圖 30 所示:
圖 30:預覽新的報表
是否是和剛剛創建的模板徹底一致?這時,報表設計者只須要修改相應的數據集,參數等與其餘報表不一樣的地方,並保留模板自帶的風格,就能夠作出風格統一,但用處不同的報表來了。
結束語
雖然 BIRT 還存在着這樣那樣的一些小問題,可是在報表領域,它已經成長成爲一股不可被忽視的力量。相信隨着 BIRT 的不斷完善,咱們會擁有一個完美的報表工具。