簡介
Eclipse的商業智能和報表工具(BIRT)項目是一個基于當今流行的Eclipse IDE的開源項目,用于在Java或者J2EE環境下構建和部署報表。該項目提供的主要下載項中包括以下內容:
- BIRT設計器—用來構建報表。
- Web查看器—一個用來部署報表的J2EE示例,其中包含了一個JSP標簽庫以降低與現存的web應用的耦合。
- BIRT制圖包—支持構建復雜的圖表。
BIRT項目于2005年夏天發布了第一個主版本并且到目前為止已經擁有了超過100萬的下載量。請訪問http://www.eclipse.org/birt來更多地了解BIRT項目,這上面有關于BIRT項目的介紹,指南,下載以及使用的例子。我們將以對BIRT設計器的介紹作為本文的開始,并且以對BIRT查看器的討論作為本文的結束。其中,BIRT設計器用來進行報表的設計,而BIRT查看器則用來部署設計以及產生最終的報表。
BIRT 2.2 Collage
BIRT設計器
在BIRT的中間位置是由一系列Eclipse插件組成的報表設計器,這些插件構成了一個提供拖拽能力以快速設計報表的設計透視圖。報表是以XML格式創建和存儲的。

Figure 1 - Eclipse BIRT Designer
此Eclipse透視圖包含了很多視圖,這些視圖提供了創建報表的功能。我們將在后面對此進行闡述。
報表編輯器
報表編輯器用來構建報表并且扮演著一個畫布的角色來定位和格式化報表元素。在該視圖中有很多標簽頁,例如布局,母板頁,腳本,XML源以及預覽。
- 布局標簽頁用來對報表進行可視化布局并且提供了拖拽的功能。
- 母板頁用來設定整個報表的頭,腳以及背景圖片。例如,該頁通常是所有報表頭的位置。
- 腳本標簽頁提供了對JavaScript編輯器的訪問。BIRT支持這樣一種事件模型,在該模型中可以使用Java或者JavaScript來改寫事件處理器。我們可以在報表產生和渲染階段調用這些事件處理器,并且這些事件處理器還能修改報表屬性,比如改變字體顏色,數據值以及調用外部代碼。
- XML源標簽頁可以顯示XML源代碼用于報表設計。盡管通常情況下最好使用布局視圖,但也可以在此標簽頁中編輯XML代碼。
- 預覽標簽頁允許報表設計者快速地將報表轉化為HTML。 注意你也可以利用工具欄以其他被支持的格式來預覽報表。
Figure 2 - BIRT Preview
數據瀏覽
在構建報表之前,我們通常都要建立數據源。BIRT提供了數據瀏覽視圖以簡化該任務。
Figure 3 - Data Explorer View
Eclipse視圖允許設計者向報表設計器中添加數據源和數據集。本質上,一個數據源僅僅就是數據連接。數據集可以被理解為一個可執行的查詢以及該查詢所返回的特定的列。
BIRT提供了對JDBC,XML,flat file(譯者注:falt file是一個只能連續的讀寫的計算機文件。它包含一條或多條記錄,每個記錄包含一個或多個字段,http://en.wikipedia.org/wiki/Flat_file)和腳本化的數據源的驅動。隨著BIRT2.2的發布,BIRT還提供了一個Web Service數據源和一個改進的flat file驅動,現在該驅動已經支持CSV,TSV,SSV以及PSV文件格式。
BIRT還提供了一個叫做聯合數據集(Joint Data Set )的特殊數據集以使用內外連接來整合現存的數據集。當從不同的數據源中整合數據集時該特性的作用就顯得尤為明顯。除此之外,現在BIRT數據源具備導入或者鏈接本地連接配置文件的能力以此來達到跨報表的連接共享的目的。
在增加報表參數和數據體時我們也會使用數據瀏覽視圖。報表參數將呈現給報表的最終用戶并且經常用來為特定的用戶進行報表的個性化定制。例如:報表參數可以依賴數據集參數來修改查詢,我們可以在BIRT的JavaScript表達式中用此來改變報表元素的樣式和可見性,或者在腳本事件中基于選擇的輸出格式來定制內容。
報表參數可以是靜態或者動態的。靜態參數允許用戶選擇預先定義好的值集或者在文本框中輸入一個值。動態參數可以是綁定到現存的BIRT數據集的一些數據。例如,用戶可以從一個數據集提供的客戶列表中選擇一個客戶。
此外,BIRT支持級聯參數,它可以顯示多個下拉列表,并且一個下拉列表顯示的內容會隨著前一個列表的內容的改變而動態改變。例如,一個級聯參數可以在第一個列表中顯示客戶列表,在第二個列表中顯示選中客戶的訂單。
Figure 4 - Cascaded Parameter
現在BIRT2.2的動態參數可以支持使用JavaScript表達式來顯示文本和參數值。這個改進使得參數列表以一種更符合邏輯的方式呈現給最終用戶。例如,在開發一個詳細訂單的報表時,你可能希望展示一個所有訂單的動態參數列表。表達式使得你可以為每個訂單增加相應的客戶姓名。圖5顯示了一個動態參數列表。
Figure 5 - Dynamic Parameter Expression
數據瀏覽視圖也支持數據體的創建。這是BIRT2.2的新特性,且與新的交叉報表元素聯合使用。BIRT數據體是多維的,基于一個或多個BIRT數據集,使用新的跨標簽數據立方構建器(Cross Tab Cube Builder)來構建的。請參見下面的圖表。
Figure 6 - Cross Tab Cube Builder
除了上面提到的特性,BIRT現在提供兩個新的項目類型使得Java開發者可以創建更多的數據源。這些數據源基于Open Data Access(ODA)框架,該框架由Eclipse Data Tools Platform(DTP)項目提供。我們構建圖形界面時需要使用ODA設計器插件,該插件是報表開發者使用相應的驅動時所需要的。當開發你自己驅動的運行時部分時,需要利用ODA運行時驅動的插件項目。該插件通常部署在一個運行時環境中,主要負責處理對數據源的調用和結果的獲取。
Figure 7 - BIRT Projects
調色板
BIRT調色板視圖用來向報表畫布中添加報表條目。調色板視圖包含了一些報表元素,這些元素用來顯示從數據瀏覽視圖中獲得的數據。僅僅是簡單地從調色板視圖中拖拽報表到報表編輯器中就可以使用該報表了。BIRT報表元素支持所有可在屬性編輯器視圖中配置且可被BIRT的報表對象模型(Report Object Model)描述的屬性。
Figure 8 - Palette View
調色板支持以下報表項
Figure 9 - Aggregation element
- 圖表元素允許向報表設計器中插入圖表。當一個圖表元素被置于報表編輯器中時,圖表構建器向導將會自動出現。該向導用來設計圖表并提供三個設計標簽頁(選擇圖表類型,選擇數據和選擇圖表格式)。BIRT2.2提供了13種圖表類型以及很多子類型的組合。圖表構建器提供了拖放,圖表預覽,數據過濾和參數化等功能。圖表元素可以以PNG,JPG,BMP和SVG的輸出格式呈現,并且這些輸出格式支持鉆透(drilling through ),高亮(highlighting),開關可視化(toggling visibility)以及客戶端腳本(client side script)。
Figure 10 - Chart Wizard
- 跨標簽元素也是BIRT2.2中新出現的元素,用來顯示BIRT數據體中的數據。在BIRT以前的版本中,表格元素中列的數量在設計時就要確定好,而在跨標簽元素的幫助下,列和行的數量都可以動態生成。該元素也支持等級聚合和數據顯示,允許三維的行和列并且會測量數據以便使其顯示在恰當的交叉點上。
Figure 11 - BIRT Cross Tab element
庫資源管理器
庫資源管理器視圖具有拖放功能,使得用戶可以從現存的報表庫中拖放組件到當前報表中。 BIRT中的庫是一些可被其他報表使用的高效報表XML片段。這些庫被使用它們的報表所引用,這意味著庫的改動會自動地反映到所有使用它們的報表中去。一個很好的示例是使用一個報表庫存儲公司標識(logo)。如果公司標識改變了,只需要更新庫就可以了,而不用更新引用它的報表。庫被引用的位置是相對于資源文件夾的,在設計階段通過設計器,在運行階段通過Web查看器都可以配置該資源文件夾。
Figure 12 - Library Explorer
屬性編輯器
屬性編輯器視圖用來對增加到報表上的報表元素設置屬性。視圖中顯示何種條目將決定于報表編輯器中所選的元素類型。屬性窗口中顯示一些通用設置,例如樣式,寬度和字體信息。此外,大多數報表元素支持可視化的屬性設置,這樣就可以動態地隱藏內容了。在屬性標簽的右側,視圖具有如下特性:排序,分組,映射,高亮和過濾頁。
大多數功能都是自說明的,映射標簽頁允許動態構建(使用表達式構建器),以使得報表元素的顯示值可以動態改變。例如,如果月份行的值是“1”,你可能想顯示“January”。高亮標簽頁根據條件來動態地應用不同的樣式,例如以紅色來顯示低銷售量。大多數功能都允許在一個條目上應用多個條件或者關鍵字。一個條件可能改變字體顏色,而另一個條件可能改變字體大小。一個排序關鍵字可以按字母順序列出結果,而另一個排序關鍵字卻將“Jones”放在列表的最上面。
Figure 13 - Property Editor
此外,在BIRT2.2中,當使用高亮時,報表開發者可以指定樣式而不必手動地去設置樣式屬性。
Figure 14 - Style Highlighting
大綱
大綱視圖展示了報表設計的圖形化繼承體系,同時說明了報表元素與容器的關系。我們可以直接在大綱視圖中選擇報表元素,當報表設計非常復雜時,這個功能非常有用。此外,在BIRT2.2中,大綱視圖可用來導入或者鏈接外部樣式,也可用來查看實現了腳本事件處理器的報表元素。
Figure 15 - Outline View
導入一個樣式表會將該樣式表的值復制到報表XML中。使用一個外部樣式表允許你鏈接到BIRT資源文件夾中的樣式表。
更多特性
BIRT2.2還提供了兩個新視圖。一個視圖顯示example報表,另一個視圖顯示example圖表并且提供了Java代碼以產生圖表。當在Java應用中使用圖表引擎時會使用到該視圖。
Figure 16 - Example Views
Eclipse BIRT Web查看器
一旦報表開發完成了,我們就可以使用BIRT的example Web查看器部署它們。在BIRT2.2中該查看器已經得到了改進,它是一個基于AJAX的J2EE應用,說明了如何使用BIRT引擎來產生和渲染報表內容。
Web查看器概覽
Web查看器可用來產生和渲染報表,同時也支持更多的交互性特征,例如內容表格,以多種格式導出報表內容,客戶端和服務器端打印以及報表分頁。利用查看器導航和工具欄使得這些特征成為可能。下圖展示了使用查看器的一個示例。
Figure 17 - Example Web Viewer
Toolbar
查看器的工具欄有很多圖標,他們可以完成內容表格的顯示,重新運行報表,導出數據,以多種格式導出報表以及客戶端和服務器端打印等任務。一個內容表格是基于報表設計而自動產生的。通過修改報表的分組片段可以定制內容表格。要從example查看器中訪問內容表格,請選擇該圖標
Figure 18 - Example Table of Contents
工具欄也提供了一個圖標來重新運行現存的報表。當用戶想要修改用于產生報表的參數集時,這將十分有用。要訪問該特性,請選擇該圖標
Figure 19 - Example report parameter dialog containing cascaded parameter
一個改進的數據導出對話框在BIRT2.2中首次出現。可以通過圖標
激活該對話框。
Figure 20 - Example Export Data Dialog
結果集被顯示在一個下拉列表中,該下拉列表包含了報表中所有數據綁定控件。這些結果集并不是BIRT的數據集,但卻包含了數據容器中綁定的列,而該數據容器中的數據則來自于一個數據集。這些可用的列顯示在左邊的列表框中,而對話框控制著這些列的導出。數據導出分隔符也已經得到了改進以支持更多的分隔符,例如制表符,分號,冒號,垂直線。此外,數據可以用用戶指定的編碼導出。
查看器同樣支持以多種格式導出報表。利用導出報表對話框就可以完成報表的導出,我們可以通過選擇圖標
來訪問該對話框。
Figure 21 - Example Export Report Dialog
該對話框允許報表用戶將報表導出為Word,PowerPoint,PDF,PostScript和XLS 格式。此外,用戶可以選擇導出所有頁面或者指定范圍的頁面。
BIRT中的客戶端打印是在example查看器中完成的,這是通過用戶選擇圖標
將報表轉換為PDF格式實現的。用戶可以利用標準的PDF功能打印或者保存報表。
Figure 22 - Client Print Example
BIRT2.2的example查看器也提供了服務器端打印功能。該特性可以通過在web.xml中做如下設置而禁用。
<context-param>
<param-name>BIRT_VIEWER_PRINT_SERVERSIDE</param-name>
<param-value>OFF</param-value>
</context-param>
可以通過選擇圖標
來訪問服務器端打印功能。
Figure 23 - Example Server Side Print Dialog
該對話框將列出可用的服務器端打印機以及影響打印結果的各種設置
Viewer Navigation Bar
當顯示一個多頁的報表時我們將使用查看器導航條。分頁是由報表元素和分組的分頁符屬性來決定的。這些屬性就像使用前后分頁符或者分頁符間隔那樣簡單,而分頁符間隔則指定了將一個分頁符插入到產生的HTML中之前一個容器元素要處理多少行。當通過Servlet映射來使用查看器時,其默認行為是加載首頁且使得導航條控件可用。導航條包含了可以向前向后或者直接定位頁面的控件。
Web查看器部署向導
利用Web Tools Platform項目(WTP)的一部分,BIRT2.2現在可以支持Web項目。該項目類型會將example查看器自動部署到你所選擇的應用服務器中。此外,新的BIRT標簽庫也會被部署進去。通過新建項目,在Business Intelligence and Reporting Tools類別下面選擇Web項目,我們可以使用該項目類型。
Figure 24 - Web Project
Web查看器標簽庫
現在Web查看器包含了一個標簽庫,該標簽庫可被用來定制查看器的行為。我們可以通過兩種方式部署該標簽庫,其一是按照通常方式部署查看器;其二是利用BIRT的Web項目部署向導。此外,如果你想將BIRT部署在一個上下文中,并且將標簽庫放置在一個單獨的上下文中,你可以通過復制birt.tld到你的WEB-INF\tlds目錄下并且從查看器庫目錄中復制coreapi.jar,modelapi.jar,viewerservlets.jar和com.ibm.icu_3.6.1v20070417.jar到目錄:新上下文/web-inf/lib下來實現。將下面的代碼添加到你的web.xml文件中:
<jsp-config>
<taglib>
<taglib-uri>/birt.tld</taglib-uri>
<taglib-location>/WEB-INF/tlds/birt.tld</taglib-location>
</taglib>
</jsp-config>
在這種方式下,報表將通過BIRT查看器被引用,而不是新的上下文。
查看器標簽庫包含5個標簽:param,paramDef,parameterPage,report和viewer。每個標簽都有多個屬性來控制查看器的行為。

Figure 25 - BIRT Tag Library
結論
這篇文章介紹了BIRT2.2的一些新特性。請訪問BIRT的網站和BIRT 新聞組 來了解更多信息。
查看英文原文:An Introduction to the Eclipse Business Intelligence and Reporting Tools
譯者簡介:張龍,同濟大學軟件工程碩士,現就職于理光軟件研究所。主要從事文檔工作流和辦公自動化解決方案的研發工作。熱衷于Java輕量級框架的研究,對敏捷方法很感興趣。曾有若干年的J2EE培訓講師經歷。參與InfoQ中文站內容建設,請郵件至china-editorial@infoq.com。
en 發表人 avatar blogbin 發表于 2008年1月31日 下午8時19分
Re: 迷途的狼 發表人 jack wan 發表于 2008年2月17日 下午7時39分