EGL JasperReport ハンドラー

JasperReports オープン・ソース・レポート・ライブラリーの標準機構を使用すると、 極めて複雑な出力を作成できます。 より高度なレポートが必要な場合は、EGL JasperReport ハンドラーを作成できます。

JasperReports エンジンは、レポート・ハンドラーを scriptletClass と見なします。 Java™ での経験がないユーザーのための補足として、上述の内容が意味するところは、JasperReports のエンジンから JasperReport ハンドラーのメソッド (メソッドは関数に似たものです) を呼び出せるということです。

以下に、JasperReport ハンドラーの一般的な使い方を示します。

JasperReport ハンドラーが応答可能なイベントの完全なリストについては、『事前定義の EGL JasperReport ハンドラー関数』を参照してください。 JasperReport ハンドラーから生成される出力について詳しくは、「EGL 生成ガイド」を参照してください。

イベントへの応答

EGL には、JasperReports がレポートを埋め込む際に発生する可能性があるイベントに対応する、 いくつかの事前定義の関数名があります。 このようなイベントには、ページへの出入り、行の開始や終了、およびその他が含まれます。 これらのイベントのいずれかが発生すると、JasperReports エンジンは、そのイベントに対応する関数がレポート・ハンドラーに含まれているかどうかをチェックします。 含まれている場合、JasperReports エンジンはその関数を自動的に呼び出します。

EGL が認識するイベントの 1 つは、ユーザー定義グループの初期化です。 XML 設計ソース・ファイルで <group> タグを使用すると、グループを定義する式を指定できます。 例えば、番号が 2000 から 2999 までの顧客をまとめてグループ化できます。 標準 XML 設計ソース・タグを使用してグループの小計を印刷することや、 JasperReport ハンドラーを使用してより複雑な操作を実行することが可能です。

明示的に呼び出す関数の作成

JasperReports XML ソース・ファイル自体の内部で複雑な (複数行の) Java コーディングを実行することはできません。 ただし、JasperReport ハンドラーで EGL コードを作成することにより、 JasperReports エンジンが実行時にアクセスできる関数を作成できます。 これらの関数は、いずれの特定のイベントにも結合する必要はありません。 また、いずれかの事前定義されたイベント関連関数の内部から呼び出す必要もありません。 例えば、DATE 型の SQL 変数を検索し、書式制御文字ストリングで日付を戻す関数を作成できます。 この関数を、トランザクションの詳細を印刷する XML ソースから直接呼び出すことができます。

EGL によってレポート・ハンドラーのソース・ファイルから scriptletClass が生成されるため、 この動作が機能します。 scriptletClass は、JasperReports エンジンがアクセスできる Java クラスであり、レポートの記入プロセスの間に、 このエンジンはそのクラスのメソッドを呼び出すことが可能です。 これらのメソッドは、ユーザーが作成した関数です。

JasperReport ハンドラーには、レコード・パーツ、システム関数、およびライブラリーなどの、 その他の EGL リソースへの全アクセス権限があります。

データの保存および検索

次のアクションを実行してデータをサブレポートに渡します。
  1. 組み込みのハンドラー関数 addReportData() を使用し、 後でサブレポートで使用できるようデータを保存します。
  2. 設計ファイルの <subreport> タグの内部で、<dataSourceExpression> タグをセットアップします。 <dataSourceExpression> タグ内で、組み込みレポート・ハンドラー関数 getDataSource() を呼び出します。 この関数は、データを内部フォーマットで戻します。 サブレポートがデータを使用できるように、戻り値を JRDataSource としてキャストする必要があります。
これにより、サブレポートは、検索したデータを使用して各行項目の詳細を提供できるようになります。

詳細および例については、「EGL プログラマー・ガイド」を参照してください。


フィードバック