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

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

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

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

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

圖5 BIRT聯(lián)動報表參數(shù)
在Data Explorer視圖中可以創(chuàng)建數(shù)據(jù)立方體。這是BIRT2.2的新特性,可以與BIRT中的交叉報表結(jié)合使用。BIRT數(shù)據(jù)立方體是多維的,可以基于多個數(shù)據(jù)集,如下圖所示:

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

圖8 BIRT的Palette視圖
Palette包括以下一些常用的元素:
l Label:標簽元素用于顯示靜態(tài)文本,標簽元素的外觀可以通過本地進行設(shè)置,如設(shè)置標簽元素的超級連接、字體大小等屬性;
l Text:文本元素與標簽元素相似,只是文本元素可以顯示多行數(shù)據(jù),更加易于格式輸出。可以在文本元素中使用腳本表達式,然后在客戶端使用標簽進行解析;
l Dynamic Text:動態(tài)文本元素通常用于顯示CLOB數(shù)據(jù)值。CLOB數(shù)據(jù)可以通過使用BIRT Expression Builder得到數(shù)據(jù);
l Data:數(shù)據(jù)元素用于顯示數(shù)據(jù)源的數(shù)據(jù),通過使用Expression Builder來操作或改變數(shù)據(jù)值。例如,數(shù)據(jù)集有包含姓列以及名列,那么可以使用Expression Builder來將姓列與名列進行合并,從而形成包含姓名的一列;
l Image:圖片元素用于在報表模板中顯示圖片。BIRT支持通過URL獲得圖片,或是從數(shù)據(jù)庫的取得圖片(BLOB),或是從本地硬盤上獲得圖片;
l Grid:網(wǎng)格元素用于布局報表中的報表元素,并進行統(tǒng)一的管理。例如,想在報表中顯示產(chǎn)品銷售數(shù)據(jù)表格,同時又想在右邊顯示一張圖表,此時則需要使用Grid來進行網(wǎng)格劃分,將報表分成一行兩列;
l List:列表元素也相當于一個容器,它不同于其它容器的地方在于列表元素可以綁定到數(shù)據(jù)集上。列表元素包含頭、腳及數(shù)據(jù)部分。當渲染列表元素時,頭與腳部分一次性渲染完成,而中間的數(shù)據(jù)部分需要顯示數(shù)據(jù)集的每一行數(shù)據(jù)。數(shù)據(jù)格式可以是文本元素,也可以是表格、列表等元素;
l Table:表格元素與列表元素相似,都可以用于顯示數(shù)據(jù)集中的數(shù)據(jù)。表格元素與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用于設(shè)計圖形,并提供了三大設(shè)置區(qū)域,分別是:設(shè)置圖表類型、設(shè)置數(shù)據(jù)、設(shè)置圖表格式。BIRT提供了大量的圖表類型,同時,圖表格式可以是PNG、JPG、BMP、SVG等輸出格式。
l Cross Tab:交叉報表元素用于顯示BIRT數(shù)據(jù)立方體中的數(shù)據(jù)。在BIRT以前的版本中,表格中列數(shù)據(jù)需要在設(shè)計時就確定,而使用交叉報表元素,則列數(shù)據(jù)與行數(shù)可以動態(tài)生成,無需在報表設(shè)計時確定。

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

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

圖12 BIRT的Property Editor視圖
6.Outline
Outline視圖通過層次關(guān)系來展現(xiàn)報表設(shè)計的內(nèi)容及其相關(guān)元素的層次關(guān)系。可以從Outline中直接選擇元素進行查看或修改,當報表設(shè)計比較復雜時,Outline是相關(guān)方便有用的輔助工具。

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

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