 |

|
Eclipseが提供するBIとレポーティングツール |
第4回:スクリプティング機能・Tomcatでのプレビュー・レポートエンジンを使用したレポート出力
著者:ビーブレイクシステムズ 川本 博之 2006/3/23
|
|
|
1 2 3 次のページ
|
 |
はじめに
|
こんにちは、ビーブレイクシステムズの川本です。
今回はスクリプティング機能、Tomcatを使用したプレビュー、レポートエンジンを使用したJavaクラスからのレポート出力機能を紹介していきます。
|
スクリプティング機能
|
まずEclipse BIRTの持つ多彩なスクリプティング機能を紹介します。
Eclipse BIRTではレポートファイル/レポート内の要素/データソース/データセットが持つイベントハンドルメソッド内にスクリプトを記述することにより、独自の処理を登録することができます。スクリプト言語はMozillaの「Rhino」により、JavaコードとJavaScriptコードのどちらの記述も可能です。
今回は、前回作成した「店舗一覧」レポートに、グローバル情報の登録、SQLの表示、行背景色の変更をスクリプティング機能によって行っていきます。
またMozillaの「Rhino」の使用方法については以下のURLに詳しく掲載されていますので、参考にしてください。
|
メソッドの種類
|
定義できるメソッドと対象要素の一覧を表1に示します。
定義できるメソッド |
対象要素 |
レポートファイル |
initialize、beforeFactory、afterFactory、beforeRender、afterRender |
レポート内エレメント |
onPrepare、onCreate、onRender |
データソース |
afterClose、afterOpen、beforeColse、beforeOpen、Open(注)、Close(注) |
データセット |
afterClose、afterOpen、beforeColse、beforeOpen、onFetch、describe(注)、open(注)、close(注)、fetch(注) |
表1:定義できるメソッドと対象要素
※注:
データソースが「スクリプト記述済みデータソース」の場合
レポート生成時におけるメソッドの呼び出し順は以下のようになります。
- レポートのinitialize
- 各要素(テーブル、ロウ、セル、データ)のonPrepare
- レポートのboforeFactory
- データセットのbeforeOpen、afterOpen、onFetch
- 各要素(テーブル、ロウ、セル、データ)のonCreate
- データセットのbeforeClose、afterClose
- レポートのafterFactory
表2:メソッドの呼び出し順
|
レポートファイルへのメソッド
|
まずinitializeメソッドにレポート内で使用するグローバルな値などを定義します。今回はタイトルの文字列、背景色を格納したMapオブジェクトを登録します。
「レポートファイル → レポートエディタのスクリプトタブ → メソッドinitialize」を選択しスクリプトを定義します。メソッド内で使用する式や値はPalletより選択できます。
initializeメソッド
// レポートコンテキストにキーと値を登録
reportContext.setPersistentGlobalVariable("title", "店舗一覧");
// アプリケーションコンテキストにMapを登録
appContext = reportContext.getAppContext();
importPackage(Packages.java.util)
colorMap = new HashMap();
colorMap.put("color1", "#FAFAD2");
colorMap.put("color2", "#FAEBD7");
appContext.put("colors", colorMap);
同様にbeforeFactoryにスクリプトを記述し、実行SQLをレポート内の「sql」というフィールドに表示してみます。
beforeFactoryメソッド
// sqlの取得
query = this.getDataSet("StoreListDataSet").queryText;
// ダイナミックテキストにセット
this.getDynamicText("sql").valueExpr = "query;";
続いて、行の背景色を「店舗区分」で色分けします。
行のonCreateメソッド
// 指定カラムの値によって行の背景色を設定
if (this.rowData.getExpressionValue(3) == "0") {
this.getStyle().backgroundColor = reportContext.getAppContext().get("colors").get("color1")
} else {
this.getStyle().backgroundColor = reportContext.getAppContext().get("colors").get("color2")
}
スクリプトの定義が終わったらプレビューで確認してみましょう。

図1:スクリプト定義後のプレビュー画面 (画像をクリックすると別ウィンドウに拡大図を表示します)
また作成したJavaクラスを「%ECLIPSE%\plugins\org.eclipse.birt.report.viewer\birt\WEB-INF\lib」の下におくことにより、スクリプト内で使用可能となります。
|
1 2 3 次のページ
|

|
|

|
著者プロフィール
株式会社ビーブレイクシステムズ 川本 博之
Javaスペシャリスト。前職ではJava専業ソフトウェアハウスにおいてプロジェクトリーダーとして活躍。現職ではオープンソースに関する技術の研究活動を日々行なう。常に、ビジネス設計を意識したユーザが使いやすいシステム構築を心掛けている。
|
|
|
|