程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 在Eclipse中用Java實現百靈報表(BIRT)的事件處理

在Eclipse中用Java實現百靈報表(BIRT)的事件處理

編輯:關於JAVA

百靈報表(BIRT)是一個非常實用的開源報表工具,它不僅能滿足商業智能領域報表設計的一般需求,還可以通過與 Java 語言相結合,來實現一些更為豐富的個性化報表樣式。本文通過一個簡單的實例,在 Eclipse 中創建一個單一工程,使用 Java 語言實現百靈報表(BIRT)的事件響應處理程序。引導讀者在短時間內對百靈報表(BIRT)有一個初步了解,並掌握使用 Java 語言創建百靈報表(BIRT)事件響應處理程序的基本步驟和調試方法。

概述

在新近發布的 Eclipse Ganymede 軟件包站點上,提供了一個新的軟件包 Eclipse IDE for Java and Report Developers(圖一),它來自 Eclipse 社區的頂級項目 BIRT(Business Intelligence and Reporting Tools,參見參考資料中“獲得產品和技術”一欄)。

圖 1. Eclipse Ganymede 軟件包站點

這是一個具有強大功能的商業智能報表開發工具,它有一個很好聽的中文名字,叫百靈報表。到本文撰寫時為止,按照 Eclipse 系列劃分,該軟件包的最新版本是3.4.0,按照百靈報表(BIRT)的系列劃分,它的最新版本是2.3.0.這也就是說,該軟件包是由3.4.0的 Eclipse 平台與2.3.0的百靈報表(BIRT)插件的集成而成。本文以下所提到的百靈報表(BIRT)和百靈報表(BIRT)設計器,均指該軟件包。

作為一個專門的報表設計工具,開發者使用百靈報表(BIRT)設計器,可以完成大多數商業智能領域的數據模型組建和報表布局設計。但是,在實踐中經常會遇到一些比較特殊的個性化需求,很難用一般的設計手段來實現。這往往需要開發者定制相應的報表事件響應處理程序來解決。百靈報表(BIRT)設計器提供了一個 JavaScript 的開發和調試環境,開發者可以很方便地使用 JavaScript 來實現報表的事件響應處理程序。同時,百靈報表(BIRT)也具有直接調用 Java 編寫的事件響應處理類的機制,盡管與 JavaScript 相比,使用 Java 來完成這一工作顯得有些復雜,但對於習慣使用 Java 語言、或者希望利用豐富的 Java 資源的開發者來說,這種辦法是一個相當好的選擇。

本文接下來就通過一個簡單的實例,在 Eclipse 中創建一個單一工程,引入樣例報表,使用 Java 語言實現報表事件響應處理程序。引導讀者在短時間內對百靈報表(BIRT)有一個初步了解,並掌握使用 Java 語言創建百靈報表(BIRT)事件響應處理程序的基本步驟和調試方法。

准備

首先在 Eclipse Ganymede 軟件包站點(參見參考資料中“獲得產品和技術”一欄) 下載百靈報表(BIRT - Eclipse IDE for Java and Report Developers) ,下載之後解壓縮到系統,即完成安裝。

建立工程

按照如下步驟,建立一個Java工程,同時引入BIRT Engine API JAR 包。

圖 2. 建立工程

1. 啟動百靈報表(BIRT),在主菜單中選擇 File -> New -> Project…… 菜單項,打開 New Project 對話框。

圖 3. New Project 對話框

2. 在 New Project 對話框中選擇 Java -> Java Project 項目,單擊 Next 按鈕,打開 New Java Project 對話框。

圖 4. New Java Project 對話框

3. 在 Project name 處輸入“BirtWithJava”作為項目名稱,單擊 Next 按鈕,打開 Java Settings 對話框。

圖 5. Java Settings 對話框

4. 在 Java Settings 對話框中選擇 Libraries 頁面,單擊 Add External JARs…… 按鈕。

圖 6. Libraries 頁面

5. 選擇 “<百靈報表(BIRT)根目錄>/plug-ins/org.eclipse.birt.report.engine_2.3.0.v20080616.jar” 文件,添加為工程類庫。這個 JAR 包文件是百靈報表(BIRT) 的 Engine API.對於不同版本的百靈報表(BIRT),該文件的文件名中所附帶的版本信息是不一樣的。

圖 7. 引入 Engine API

6. 單擊 Finish 按鈕,當系統提示 “Open Associated Perspective?” 時,單擊 Yes 按鈕,如下結構的 Java 工程被創建出來。

圖 8. BirtWithJava 工程

導入樣例報表

按照如下步驟,導入一個樣例報表。

圖 9. 打開 Show View 對話框

1. 在主菜單中選擇 Window -> Show View -> Other…… 菜單項,打開 Show View 對話框。

圖 10. Show View 對話框

2. 在 Show View 對話框中選擇 Report and Chart Design -> Report Examples 項目,單擊 OK 按鈕,打開 Report Examples 窗口。

圖 11. Report Examples 窗口

3. 在 Report Examples 窗口的 Sample Reports 列表中選擇 Reporting Feature Examples -> Cross tab -> CrosstabSampleRevenue.rptdesign 項目。這是一個樣例報表,它采用交叉表格式來展示一份商品銷售情況報告,其數據來自百靈報表(BIRT)內嵌的一個樣例數據庫。交叉表的具體用法較為復雜,本文不做過多討論。選擇好樣例報表後,單擊窗口右上角的導入按鈕,打開 Project Name 對話框。

圖 12. Project Name 對話框

4. 在 Project Name 對話框中輸入 BirtWithJava,單擊 OK 按鈕,系統顯示 Project Exists 提示框。

圖 13. Project Exists 提示框

5. 在 Project Exists 提示框中單擊 Proceed 按鈕,將選擇的樣例報表 CrosstabSampleRevenue.rptdesign 導入到本文的示例工程 BirtWithJava 中。導入成功後,此報表被自動打開。

圖 14. 樣例報表

6. 單擊報表 CrosstabSampleRevenue.rptdesign 的 Preview 頁面,預覽此報表。

7. 系統顯示處理狀態,表示正在生成報表,這可能需要等待幾十秒鐘的時間。

圖 15. 預覽報表

8. 當系統處理完成後,報表被顯示出來。這是一份商品銷售報告,顯示的是每類商品的季度銷售額以及累計情況。接下來,我們嘗試用 Java 創建一個事件響應處理類,把每季度銷售額在10萬美元以上的數據用紅色標示出來。

創建 Java 類

按照如下步驟,用 Java 創建百靈報表(BIRT)的事件響應處理程序。

圖 16. 創建 Java 類

1. 在主菜單中選擇 File -> New -> Class 菜單項,打開 New Java Class 對話框。

圖 17. New Java Class 對話框

2. 在 New Java Class 對話框的 Name 處輸入 DataItemEventHandler ,作為該事件響應處理類的名字。單擊 Browse…… 按鈕,打開 Superclass Selection 對話框。選擇或直接輸入 "org.eclipse.birt.report.engine.api.script.eventadapter.DataItemEventAdapter" 作為父類。

3. 單擊 Finish 按鈕,一個名稱為 DataItemEventHandler.java 的文件被創建出來,在這個文件裡輸入如下代碼:

清單 1. 報表事件響應處理類

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");
}
}
}

在上面這段代碼中,我們重寫了 DataItemEventHandler 類的 onRender 方法。該方法帶有兩個參數,其中 data 就是當前我們要操作的數據實例,在這裡我們通過條件判斷來把大於10萬美元的數據設置為紅色。另外一個參數 reportContext 則是一個全局的上下文對象,利用這個上下文對象,可以在不同的事件響應處理類中傳遞信息。

4. 確認無誤後存盤,報表事件響應處理類創建完成。

Java 類與報表關聯

按照如下步驟,將創建好的 Java 事件響應處理類和樣例報表關聯起來。

圖 18. 打開報表屬性頁面

1. 切換到報表 Layout 頁面,在主菜單中選擇 Window -> Show View -> Other 菜單項,打開 Show View 對話框。

圖 19. Show View 對話框

2. 在 Show View 對話框中選擇 Report Design -> Property Editor 項目,單擊 OK 按鈕,打開 Property Editor 窗口。

圖 20. Property Editor 窗口

3. 選中報表設計區中的第一個 revenue 數據項,這就是我們要操作的季度銷售數據。

4. 在 Property Editor - Data 窗口左側選擇 Event Handler 頁面。

5. 在 Event Handler 頁面中,單擊 Browse…… 按鈕,打開 Class Selection 對話框。

圖 21. Class Selection 對話框

6. 在 Class Selection 對話框中選擇 DataItemEventHandler 類,單擊 OK 按鈕,完成報表數據項和 Java 事件響應處理類的關聯。

圖 22. 關聯 Java 類

7. 單擊報表的 Preview 頁面,可以看到10萬美元以上的季度銷售數據(不包括累計數據)都被標示為紅色了。這表明我們定制的 Java 事件響應處理類已經和報表成功關聯起來。

圖 23. 預覽報表

調試 Java 類

對於任何一個開發工作,調試都是不可避免的。百靈報表(BIRT)提供了一個調試器,開發者可以利用這個調試器,對定制的 Java 事件響應處理類進行調試。

1. 在 Java 類 DataItemEventHandle 中設置斷點。

圖 24. 設置斷點

2. 在主菜單中選擇 Run -> Debug Configurations…… 菜單項,打開 Debug Configurations 對話框。

圖 25. Debug Configurations 對話框

3. 在 Debug Configurations 對話框中,選擇 Report 列表項目,單擊鼠標右鍵。在彈出菜單中,選擇 New 菜單項,創建一個新的調試環境配置 New_configuration.

圖 26. 配置調試環境

4. 在 Main 頁面中,選擇 Debug type 為 Java,並選中 Output 中的 “Open generated file when finished”。

5. 單擊 Classpath,打開 Classpath 頁面。

圖 27. Classpath 頁面

6. 在 Classpath 頁面中,選中 User Entries 項目,單擊 Add Projects…… 按鈕,打開 Project Selection 對話框。

圖 28. Project Selection 對話框

7. 在 Project Selection 對話框中,選擇 BirtWithJava 工程項目,單擊 OK 按鈕,回到 Debug Configurations 對話框。

圖 29. Debug Configurations 對話框

8. 在 Debug Configurations 對話框中, 單擊 Debug 按鈕,開始調試。

9. 系統准備進入調試狀態,這可能需要幾十秒鐘的時間。當提示 “Confirm Perspective Switch” 對話框時,單擊 Yes 按鈕,進入調試畫面。

圖 30. 開始調試

10. 系統運行停留在斷點處,開始調試。調試完成後,去除斷點,單擊 Resume (F8) 按鈕繼續運行,最終生成的報表在外部浏覽器中被打開。

圖 31. 運行結果

結束語

眾所周知, Java 語言具有良好的結構性和豐富的程序資源。利用本文所提供的方法,可以充分提高報表事件響應處理程序的算法復雜性,實現普通設計手段難以達到的效果。但需要注意的是,當設計好的報表被部署到 WEB 時,采用 Java 實現的事件響應處理類是在百靈報表(BIRT)的服務器端被加載和運行的。因此,除非能夠保證客戶端和服務器端總是運行在同一台計算機上,否則任何試圖利用本文所描述的方法,在客戶端與用戶進行交互的嘗試,都有可能導致失敗。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved