熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

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

2013-11-23 20:15:24  來源: 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參見參考資料中獲得產品和技術一欄)

   Eclipse Ganymede 軟件包站點

  Eclipse Ganymede 軟件包站點

  這是一個具有強大功能的商業智能報表開發工具它有一個很好聽的中文名字叫百靈報表到本文撰寫時為止按照 Eclipse 系列劃分該軟件包的最新版本是按照百靈報表(BIRT)的系列劃分它的最新版本是這也就是說該軟件包是由的 Eclipse 平台與的百靈報表(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 包

   建立工程

  建立工程

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

  圖 New Project 對話框

  New Project 對話框

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

  圖 New Java Project 對話框

  New Java Project 對話框

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

  圖 Java Settings 對話框

  Java Settings 對話框

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

  圖 Libraries 頁面

  Libraries 頁面

   選擇 <百靈報表(BIRT)根目錄>/plugins/orgeclipsebirtreportengine_vjar 文件添加為工程類庫這個 JAR 包文件是百靈報表(BIRT) 的 Engine API對於不同版本的百靈報表(BIRT)該文件的文件名中所附帶的版本信息是不一樣的

  圖 引入 Engine API

  引入 Engine API

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

  圖 BirtWithJava 工程

  BirtWithJava 工程

  導入樣例報表

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

  圖 打開 Show View 對話框

  打開 Show View 對話框

   在主菜單中選擇 Window > Show View > Other…… 菜單項打開 Show View 對話框

  圖 Show View 對話框

  Show View 對話框

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

  圖 Report Examples 窗口

  Report Examples 窗口

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

  圖 Project Name 對話框

  Project Name 對話框

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

  圖 Project Exists 提示框

  Project Exists 提示框

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

  圖 樣例報表

  樣例報表

   單擊報表 CrosstabSampleRevenuerptdesign 的 Preview 頁面預覽此報表

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

  圖 預覽報表

  預覽報表

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

  創建 Java 類

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

  圖 創建 Java 類

   創建 Java 類

   在主菜單中選擇 File > New > Class 菜單項打開 New Java Class 對話框

  圖 New Java Class 對話框

  New Java Class 對話框

   在 New Java Class 對話框的 Name 處輸入 DataItemEventHandler 作為該事件響應處理類的名字單擊 Browse…… 按鈕打開 Superclass Selection 對話框選擇或直接輸入 orgeclipsebirtreportengineapiscripteventadapterDataItemEventAdapter 作為父類

   單擊 Finish 按鈕一個名稱為 DataItemEventHandlerjava 的文件被創建出來在這個文件裡輸入如下代碼

  清單 報表事件響應處理類

   import orgeclipsebirtreportengineapiscriptIReportContext;
import orgeclipsebirtreportengineapiscripteventadapterDataItemEventAdapter;
import orgeclipsebirtreportengineapiscriptinstanceIDataItemInstance;

public class DataItemEventHandler extends DataItemEventAdapter {

public void onRender(IDataItemInstance data IReportContext reportContext) {
superonRender(data reportContext);

if (((Double) datagetValue())doubleValue() > ) {
datagetStyle()setColor(red);
}
}
}

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

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

  Java 類與報表關聯

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

  圖 打開報表屬性頁面

  打開報表屬性頁面

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

  圖 Show View 對話框

  Show View 對話框

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

  圖 Property Editor 窗口

  Property Editor 窗口

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

   在 Property Editor Data 窗口左側選擇 Event Handler 頁面

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

  圖 Class Selection 對話框

  Class Selection 對話框

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

  圖 關聯 Java 類

  關聯 Java 類

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

  圖 預覽報表

  預覽報表

  調試 Java 類

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

   在 Java 類 DataItemEventHandle 中設置斷點

  圖 設置斷點

  設置斷點

   在主菜單中選擇 Run > Debug Configurations…… 菜單項打開 Debug Configurations 對話框

  圖 Debug Configurations 對話框

  Debug Configurations  對話框

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

  圖 配置調試環境

  配置調試環境

   在 Main 頁面中選擇 Debug type 為 Java並選中 Output 中的 Open generated file when finished

   單擊 Classpath打開 Classpath 頁面

  圖 Classpath 頁面

  Classpath 頁面

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

  圖 Project Selection 對話框

  Project Selection 對話框

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

  圖 Debug Configurations 對話框

  Debug Configurations  對話框

   在 Debug Configurations 對話框中 單擊 Debug 按鈕開始調試

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

  圖 開始調試

  開始調試

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

  圖 運行結果

  運行結果

  結束語

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


From:http://tw.wingwit.com/Article/program/Java/ky/201311/28188.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.