Eclipse BIRT使用之BIRT Designer篇
在開源的報表工具中,Eclipse的BIRT(Business Intelligence and Reporting Tools ,簡稱BIRT)應該是很重要的一種。BIRT基于Eclipse IDE開發,可以為Java/J2EE應用提供良好的圖形及報表。該報表工具主要包括以下幾大塊組成:
l BIRT Designer:用于進行報表的設計,因為以出報表之前,第一步需的做的就是設計模板,幾乎所有的報表工具都采用這樣的模式,如著名的JasperReports就有專門的iReports來進行報表設計。
l Web Viewer:在頁面上展現報表的工具,提供了大量的JSP標簽庫,方便將BIRT報表集成到J2EE項目中去。
l BIRT Charting包:用于構建成熟的圖表,因為在報表里如果能添加上圖表的話,則可以達到圖文并茂的效果。而BIRT Charting包正提供了這樣的功能。
BIRT項目最初是2005年夏季發布,如今其下載量已過百萬,充分的說明了其受歡迎的程度??梢栽L問BIRT的官方網站:http://www.eclipse.org/birt,這里有關于BIRT的介紹、教程、下載包、示例等等。

圖1 Eclipse BIRT報表
一、 BIRT Designer
BIRT的核心就在于BIRT Designer,該設計器使用Eclipse插件功能,可以使設計過程通過拖放控件進行設計,達到所見即所得的效果。通過BIRT設計出來的報表文件,采用XML格式進行保存。

圖2 BIRT Designer
在Eclipse BIRT設計器中,提供了多種視圖,以方便進行模板文件的設計。各種設計視圖如下:
1.Report Editor:
Report Editor提供了報表設計的畫板,可以擺放設計元素并將其格式化。包括布局的表格、主頁面、腳本、XML 文件源及預覽。
l 布局表格:用于對整個報表界面進行整體布局,框架性的組件,支持拖放功能;
l 主頁面:用于設置模板文件的共用屬性,如報表文件的頭、尾、背景圖片等;
l 腳本:支持對JavaScript腳本的編輯,BIRT支持事件模型,因此可以使用Java或JavaScript來編寫事件處理器,事件處理器存在于報表的生成及渲染過程,可以用于修改報表的屬性、字體顏色、數據值或調用外部代碼;
l XML 文件源:用于查看報表模板中所用于的XML代碼,可以在這里進行XML內容的查看或編輯。
l 預覽:把報表模板快速的渲染成為HTML格式文件進行預覽。如下圖所示:

圖3 報表預覽
2.Data Explorer
在進行報表設計之前,設置好數據庫連接通常是必須的。為了方便進行數據庫的連接設置,BIRT提供了Data Explorer視圖。

圖4 BIRT Data Explorer
這種視圖下可以允許為報表添加數據源及數據集。當然這里的數據源指是的數據庫連接。BIRT提供了對JDBC、XML、腳本數據源等等的支持。隨著BIRT 2.2的發布,將支持Web Service數據源、CSV、TSV、SSV及PSV等數據源。
而數據集可以理解為已經被執行的查詢語句并返回的記錄集。BIRT提供了一種特殊的數據集:Joint Data Set(簡稱聯合數據集)。它可以對現在的數據集進行內連接或是外連接。當使用不同的數據源的,這種功能非常的實用。
Data Explorer還可以用于添加報表參數及數據立方體。報表參數是暴露給報表模板使用人員的參數,參數傳遞相關參數值,可以個性化報表。例如,可以使用數據集參數來修改查詢語句,或使用BIRT JavaScript表達式來改變報表元素的樣式及可見性。
報表參數可以是靜態的,也可以是動態的。靜態參數是指用戶可以從預先定義好的參數值可選取值,進行相關的展示或運算,最簡單就是文本框中的靜態內容。動態參數一般指在綁定到BIRT數據集,而用戶可以從中選取某些需要的數據或記錄。
在BIRT2.2中,動態報表參數支持使用JavaScript表態式來動態顯示文本或參數值。這樣即可以動態的顯示最終用戶所傳遞的參數值。
此外,BIRT還支持聯動報表參數??梢栽O置二級或是三級的聯動下拉框或是List。最明顯的例子如下圖所示:

圖5 BIRT聯動報表參數
在Data Explorer視圖中可以創建數據立方體。這是BIRT2.2的新特性,可以與BIRT中的交叉報表結合使用。BIRT數據立方體是多維的,可以基于多個數據集,如下圖所示:

圖6 BIRT數據立方體
除了上面的特性外,BIRT還新增了兩種用于支持其它數據源的項目類型。這類數據源基于Eclipse的DTP(Data Tools Platform)項目所提供的ODA(Open Data Access)框架
圖7 BIRT中ODA設計工具
3.Palette
BIRT Palette視圖用于給報表畫板添加報表元素。這里的元素可以代表從Data Explorer視圖中所設計的數據。Palette中的元素支持自由的拖放功能,Palette上的元素屬性可以通過屬性編輯器進行設計,也可以通過ROM(BIRT Reports Object Model)進行描述。

圖8 BIRT的Palette視圖
Palette包括以下一些常用的元素:
l Label:標簽元素用于顯示靜態文本,標簽元素的外觀可以通過本地進行設置,如設置標簽元素的超級連接、字體大小等屬性;
l Text:文本元素與標簽元素相似,只是文本元素可以顯示多行數據,更加易于格式輸出。可以在文本元素中使用腳本表達式,然后在客戶端使用標簽進行解析;
l Dynamic Text:動態文本元素通常用于顯示CLOB數據值。CLOB數據可以通過使用BIRT Expression Builder得到數據;
l Data:數據元素用于顯示數據源的數據,通過使用Expression Builder來操作或改變數據值。例如,數據集有包含姓列以及名列,那么可以使用Expression Builder來將姓列與名列進行合并,從而形成包含姓名的一列;
l Image:圖片元素用于在報表模板中顯示圖片。BIRT支持通過URL獲得圖片,或是從數據庫的取得圖片(BLOB),或是從本地硬盤上獲得圖片;
l Grid:網格元素用于布局報表中的報表元素,并進行統一的管理。例如,想在報表中顯示產品銷售數據表格,同時又想在右邊顯示一張圖表,此時則需要使用Grid來進行網格劃分,將報表分成一行兩列;
l List:列表元素也相當于一個容器,它不同于其它容器的地方在于列表元素可以綁定到數據集上。列表元素包含頭、腳及數據部分。當渲染列表元素時,頭與腳部分一次性渲染完成,而中間的數據部分需要顯示數據集的每一行數據。數據格式可以是文本元素,也可以是表格、列表等元素;
l Table:表格元素與列表元素相似,都可以用于顯示數據集中的數據。表格元素與HTML中的表格元素風格相似;
l Aggregation:匯總元素是BIRT 2.2新增的元素,使用Aggregation Builder向報表添加匯總功能。Aggregation Builder提供的匯總功能大概有25項,常見的如:SUM、MIN、MAX、AVERAGE等等;

圖9 BIRT的Aggregation元素
l Chart:圖表元素用于在報表中添加圖表。當在報表中添加了圖表元素時,Chart Builder Wizard自動進行渲染并顯示。Chart Builder Wizard用于設計圖形,并提供了三大設置區域,分別是:設置圖表類型、設置數據、設置圖表格式。BIRT提供了大量的圖表類型,同時,圖表格式可以是PNG、JPG、BMP、SVG等輸出格式。
l Cross Tab:交叉報表元素用于顯示BIRT數據立方體中的數據。在BIRT以前的版本中,表格中列數據需要在設計時就確定,而使用交叉報表元素,則列數據與行數可以動態生成,無需在報表設計時確定。

圖10 BIRT的Cross Tab元素
4.Library Explorer
Library Explorer支持從已存在的報表庫中拖放報表元素。因此,各種報表之間即可以共享一些公用的類庫元素。同時,修改其中某一公用的類庫元素,即可以修改所有的引用至此類庫元素的所有報表。例如,可以在類庫元素中保存公司的Logo,如果公司的Logo變化,則只需要修改類庫的中Logo元素即可,其它引用此Logo的報表無需修改。

圖11 BIRT的Library Explorer視圖
5.Property Editor
Property Editor視圖用于設置報表中元素的屬性。當然,每種元素的屬性都不盡相同,因此,其界面都有所變化。當然也具有共用的一些屬性,如style、width、font等等。此外,大部分元素都支持是否可見的屬性。

圖12 BIRT的Property Editor視圖
6.Outline
Outline視圖通過層次關系來展現報表設計的內容及其相關元素的層次關系??梢詮?/span>Outline中直接選擇元素進行查看或修改,當報表設計比較復雜時,Outline是相關方便有用的輔助工具。

圖13 BIRT的Outline視圖
7. Miscellaneous
BIRT 2.2中提供了對同一組數據進行多種視圖或表達的功能。例如,對同一組數據,可以使用報表展示,同時還可以進行圖形的展示。

圖14 BIRT的Miscellaneous視圖
未完,等續,下篇寫
BIRT Web Viewer
參考:http://www.infoq.com/articles/birt2-intro