BIRT(Business Intelligence and Reporting Tools)是一個實用的開源報表工具,不僅能滿足商業智能領域報表設計的一般需求,還可結合 Java 語言實現更豐富的個性化報表樣式。本文透過一個簡單實例,在 Eclipse 中創建單一專案,使用 Java 語言實現 BIRT 的事件響應處理程式,引導讀者快速了解 BIRT 並掌握使用 Java 創建事件處理程式的基本步驟與調試方法。
在新發布的 Eclipse Ganymede 軟體包站點上,提供了 Eclipse IDE for Java and Report Developers(圖 1),它來自 Eclipse 社區頂級項目 BIRT。

圖 1. Eclipse Ganymede 軟體包站點
這是一個功能強大的商業智能報表開發工具,中文名「百靈報表」。撰文時,依 Eclipse 系列劃分,該軟體包最新版本為 3.4.0;依 BIRT 系列劃分,最新版本為 2.3.0。即該軟體包由 Eclipse 3.4.0 平台與 BIRT 2.3.0 外掛整合而成。文中提到的 BIRT 與 BIRT 設計器均指該軟體包。
作為專門的報表設計工具,開發者使用 BIRT 設計器可完成大多數商業智能領域的數據模型組建與報表佈局設計。但實踐中常遇到特殊個性化需求,難以用一般設計手段實現,往往需要定制報表事件響應處理程式。BIRT 設計器提供 JavaScript 開發與調試環境,方便使用 JavaScript 實現事件處理;同時 BIRT 也支援直接調用 Java 編寫的事件處理類。雖然相比 JavaScript,使用 Java 顯得較複雜,但對習慣 Java 或希望利用豐富 Java 資源的開發者,這是相當好的選擇。
本文將透過簡單實例,在 Eclipse 中創建單一專案,引入範例報表,使用 Java 實現報表事件響應處理程式,引導讀者快速上手並掌握基本步驟與調試方法。
首先從 Eclipse Ganymede 軟體包站點下載 BIRT - Eclipse IDE for Java and Report Developers,解壓縮即完成安裝。
按以下步驟建立 Java 專案並引入 BIRT Engine API JAR 包。

圖 2. 建立專案
BirtWithJava,點擊 Next,打開 Java Settings 對話框。<BIRT根目錄>/plugins/org.eclipse.birt.report.engine_2.3.0.v20080616.jar,添加為專案類庫。此 JAR 為 BIRT Engine API,不同版本檔名版本資訊不同。
圖 8. BirtWithJava 專案
BirtWithJava,點擊 OK,系統顯示 Project Exists 提示框。DataItemEventHandler,點擊 Browse… 選擇父類 org.eclipse.birt.report.engine.api.script.eventadapter.DataItemEventAdapter。DataItemEventHandler.java,輸入以下代碼:import org.eclipse.birt.report.engine.api.script.IReportContext;
import org.eclipse.birt.report.engine.api.script.eventadapter.DataItemEventAdapter;
import org.eclipse.birt.report.engine.api.script.instance.IDataItemInstance;
public class DataItemEventHandler extends DataItemEventAdapter {
public void onRender(IDataItemInstance data, IReportContext reportContext) {
super.onRender(data, reportContext);
if (((Double) data.getValue()).doubleValue() > 100000) {
data.getStyle().setColor("red");
}
}
}
代碼中重寫 onRender 方法,參數 data 為當前操作的數據實例,透過條件判斷將大於 10 萬的數據設為紅色;reportContext 為全域上下文物件,可在不同事件處理類間傳遞資訊。
revenue 數據項(即季度銷售數據)。DataItemEventHandler 類,點擊 OK 完成關聯。BIRT 提供調試器,可對定制的 Java 事件響應處理類進行調試。
DataItemEventHandler 中設置斷點。New_configuration。BirtWithJava 專案,返回對話框。Java 語言具良好結構性與豐富程式資源。利用本文方法可提高報表事件響應處理程式的演算法複雜度,實現一般設計手段難以達到的效果。但需注意:設計好的報表部署到 Web 時,採用 Java 實現的事件響應處理類在 BIRT 伺服器端加載運行。除非能保證客戶端與伺服器端總在同一台電腦,否則任何嘗試利用此方法在客戶端與用戶交互的做法都可能導致失敗。