首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

在 Eclipse 中使用 Java 實現 BIRT 報表事件處理

     編輯:Java 相關知識

BIRT(Business Intelligence and Reporting Tools)是一個實用的開源報表工具,不僅能滿足商業智能領域報表設計的一般需求,還可結合 Java 語言實現更豐富的個性化報表樣式。本文透過一個簡單實例,在 Eclipse 中創建單一專案,使用 Java 語言實現 BIRT 的事件響應處理程式,引導讀者快速了解 BIRT 並掌握使用 Java 創建事件處理程式的基本步驟與調試方法。

概述

在新發布的 Eclipse Ganymede 軟體包站點上,提供了 Eclipse IDE for Java and Report Developers(圖 1),它來自 Eclipse 社區頂級項目 BIRT。

Eclipse Ganymede 軟體包站點

圖 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. 建立專案

  1. 啟動 BIRT,主選單選擇 File → New → Project…,打開 New Project 對話框。
  2. 選擇 Java → Java Project,點擊 Next,打開 New Java Project 對話框。
  3. 在 Project name 輸入 BirtWithJava,點擊 Next,打開 Java Settings 對話框。
  4. 選擇 Libraries 頁面,點擊 Add External JARs… 按鈕。
  5. 選擇 <BIRT根目錄>/plugins/org.eclipse.birt.report.engine_2.3.0.v20080616.jar,添加為專案類庫。此 JAR 為 BIRT Engine API,不同版本檔名版本資訊不同。
  6. 點擊 Finish,系統提示 Open Associated Perspective? 時選 Yes,即建立如下結構的 Java 專案。

BirtWithJava 專案

圖 8. BirtWithJava 專案

導入範例報表

  1. 主選單選擇 Window → Show View → Other…,打開 Show View 對話框。
  2. 選擇 Report and Chart Design → Report Examples,點擊 OK,打開 Report Examples 視窗。
  3. 在 Sample Reports 列表選擇 Reporting Feature Examples → Cross tab → CrosstabSampleRevenue.rptdesign。此範例報表採用交叉表格式展示商品銷售情況,數據來自 BIRT 內嵌範例資料庫。點擊視窗右上角導入按鈕,打開 Project Name 對話框。
  4. 輸入 BirtWithJava,點擊 OK,系統顯示 Project Exists 提示框。
  5. 點擊 Proceed,將範例報表導入專案。導入成功後自動打開報表。
  6. 點擊報表的 Preview 頁面預覽,系統顯示處理狀態,稍等片刻後報表顯示:一份商品銷售報告,顯示每類商品季度銷售額與累計情況。接著嘗試用 Java 創建事件響應處理類,將季度銷售額超過 10 萬美元的數據標紅。

創建 Java 類

  1. 主選單選擇 File → New → Class,打開 New Java Class 對話框。
  2. Name 輸入 DataItemEventHandler,點擊 Browse… 選擇父類 org.eclipse.birt.report.engine.api.script.eventadapter.DataItemEventAdapter。
  3. 點擊 Finish,創建 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 為全域上下文物件,可在不同事件處理類間傳遞資訊。

  1. 確認無誤後存檔,事件響應處理類創建完成。

Java 類與報表關聯

  1. 切換到報表 Layout 頁面,主選單選擇 Window → Show View → Other,選擇 Report Design → Property Editor,打開 Property Editor 視窗。
  2. 選中報表設計區中的第一個 revenue 數據項(即季度銷售數據)。
  3. 在 Property Editor - Data 視窗左側選擇 Event Handler 頁面。
  4. 點擊 Browse…,在 Class Selection 對話框選擇 DataItemEventHandler 類,點擊 OK 完成關聯。
  5. 點擊報表 Preview 頁面,可見 10 萬美元以上的季度銷售數據(不含累計)已標紅,表明 Java 事件響應處理類已成功關聯。

調試 Java 類

BIRT 提供調試器,可對定制的 Java 事件響應處理類進行調試。

  1. 在 DataItemEventHandler 中設置斷點。
  2. 主選單選擇 Run → Debug Configurations…,打開對話框。
  3. 選擇 Report 列表項,右鍵選 New 創建新調試環境配置 New_configuration。
  4. Main 頁面選擇 Debug type 為 Java,勾選 Output 中的 Open generated file when finished。
  5. 點擊 Classpath,選中 User Entries,點擊 Add Projects…,選擇 BirtWithJava 專案,返回對話框。
  6. 點擊 Debug 開始調試,系統準備進入調試狀態,提示 Confirm Perspective Switch 時選 Yes。
  7. 系統停在斷點處,開始調試。調試完成後移除斷點,點擊 Resume (F8) 繼續運行,最終生成的報表在外部瀏覽器中打開。

結語

Java 語言具良好結構性與豐富程式資源。利用本文方法可提高報表事件響應處理程式的演算法複雜度,實現一般設計手段難以達到的效果。但需注意:設計好的報表部署到 Web 時,採用 Java 實現的事件響應處理類在 BIRT 伺服器端加載運行。除非能保證客戶端與伺服器端總在同一台電腦,否則任何嘗試利用此方法在客戶端與用戶交互的做法都可能導致失敗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved