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
調色板支持以下報表項
標簽元素用來顯 示靜態文本。像大多數報表元素一樣,我們可以改變文本的外觀以支持本地化,同時也可以 設置超鏈接,字體大小和高亮等屬性。
文本元素與標簽很相似,不過具有更多的屬性 :可以顯示多行,格式化良好的HTML。利用BIRT的表達式構建器我們可以將現存的數據集的 值,參數,JavaScript函數以及BIRT特有的函數注入到格式化的HTML中。通過使用標簽,文 本元素還可以用於創建可在客戶端執行的腳本。
動態文本元素經常用來顯示CLOB數據 類型值。這些值也可以利用BIRT的表達式構建器與其他數據聯合使用。
數據元素是用 來顯示來自數據源的值的基本元素。可以利用表達式構建器改變和操縱數據值。例如,如果 一個數據集具有一個叫做first name的列,還有一個叫做last name的列,那麼你可以利用表 達式構建器將二者連接起來組成一個新的數據元素。
dataSetRow ["contactLastName"] + ", " + dataSetRow ["contactFirstName"]
圖片元素用來管理報表中輸出圖片。BIRT 支持獲取URI中的圖片以及嵌入在設計器中的圖片,來自數據源的動態圖片(BLOB)以及文件 夾中的圖片文件。
網格元素作為其他報表元素的容器,以一種合乎邏輯的方式來定位 元素位置。網格元素被配置為表格格式。例如,如果你的報表顯示產品銷量情況,而你想在 表格的右側增加一個圖表,那麼你就可以增加一個一行兩列的網格元素來完成這個任務。
列表元素也是作為其他元素的容器。列表不同於其他容器型元素的地方在於列表會迭 代綁定到其上的數據集。默認的列表元素有一個頭,一個尾和細節部分。當渲染列表時,頭 和尾通常只顯示一次,而綁定到列表的數據集的每一行的細節部分都要顯示。在細節部分中 可以包含文本元素或者其他的容器型元素,例如網格,表格或者另一個列表。
表格元素與列表元素很相似,因為他們都是容器元素並且都會迭代綁定到其上的數據集, 但是表格元素是以平面列表方式展現的。表格元素的布局很像HTML的表格一樣。表格元素有 頭,尾和細節部分以及列。
聚合元素是BIRT2.2新加入的元素類型,其利用新的聚合構建器來向報表中增加聚合元素 。該聚合構建器提供了超過25種不同的函數,例如SUM,MIN,MAX和AVERAGE。
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新聞組來了解更多信息 。