JasperReports オープン・ソース・レポート・ライブラリーの標準機構を使用すると、 極めて複雑な出力を作成できます。 より高度なレポートが必要な場合は、EGL レポート・ハンドラーを作成します。
EGL レポート・ハンドラーは、JasperReport 型の EGL ハンドラー・パーツです。 JasperReports エンジンは、レポート・ハンドラーを scriptletClass と見なします。 Java™ での経験がないユーザーのための補足として、 上述の内容の持つ意味するところは、JasperReports の設計ファイルからレポート・ハンドラーのメソッド (メソッドは関数に似たものです) を呼び出せるということです。
レポート・ハンドラーの作成は、ブランク・ファイルから行うことも、 「EGL 新規レポート・ハンドラー (EGL New Report Handler)」ウィザードを使用して行うこともできます。 レポート・ハンドラー・ウィザードでは、レポートの埋め込み中に JasperReports エンジンが呼び出せる、 それぞれの事前定義 (イベント関連の) 関数の名前が含まれるアウトラインから開始します。 これらのイベントの詳細なリストについては、 『事前定義された EGL レポート・ハンドラー関数』を参照してください。
EGL には、JasperReports がレポートを埋め込む際に発生する可能性があるイベントに対応する、 幾つかの事前定義の関数名があります。 そのようなイベントには、ページへの出入り、行項目の開始や終了、およびその他が含まれます。 これらのイベントのいずれかが発生すると、JasperReports エンジンは、そのイベントに対応する関数がレポート・ハンドラーに含まれているかどうかをチェックします。 含まれている場合、JasperReports エンジンは、その関数を自動的に呼び出します。
EGL が認識するイベントの 1 つは、ユーザー定義グループの初期化です。 XML 設計ソース・ファイルで <group> タグを使用すると、グループを定義する式を指定できます。 例えば、番号が 2000 から 2999 までの顧客をまとめてグループ化できます。 標準 XML 設計ソース・タグを使用してグループの小計を印刷したり、 レポート・ハンドラーを使用してより複雑な操作を実行したりすることができます。
JasperReports XML ソース・ファイル自体の内部で複雑な (複数行の) Java コーディングを実行することはできません。 しかし、レポート・ハンドラーで EGL コードを作成することにより、 JasperReports エンジンが実行時にアクセスできる関数を作成できます。 これらの関数は、いずれの特定のイベントにも結合している必要はありません。 また、いずれかの事前定義されたイベント関連関数の内部から呼び出す必要もありません。 例えば、DATE 型の SQL 変数を検索し、書式制御文字ストリングで日付を戻す関数を作成できます。 この関数を、トランザクションの詳細を印刷する XML ソースから直接呼び出すことができます。
EGL によってレポート・ハンドラーのソース・ファイルから scriptletClass が生成されるため、 この動作が機能します。 scriptletClass は、JasperReports エンジンがアクセスできる Java クラスであり、印刷中に、 このエンジンはそのクラスのメソッドを呼び出すことが可能です。 これらのメソッドは、ユーザーが作成した関数です。
レポート・ハンドラーには、レコード・パーツ、システム関数、およびライブラリーなどの、 その他の EGL リソースへの全アクセス権限があります。
詳細と例については、『EGL レポート・ハンドラーの作成』および『追加の EGL レポート・ハンドラー関数』を参照してください。
生成時に、EGL は EGL レポート・ハンドラーのソース・ファイルを使用して、 JRDefaultScriplet クラスを作成します。 このクラスは、JasperReports スクリプトレット・クラスのサブクラスです。 このサブクラスには、ユーザーがコード化した各関数のメソッドが含まれています。 実行時に、JasperReports エンジンは <jasperReports> タグ内の scriptletClass 属性をチェックします。 この属性が存在する場合、レポート・エンジンは、スクリプトレット・クラスをロードし、 レポート設計に使用可能なクラス・メソッドを作成します。 JasperReports スクリプトレットおよびスクリプトレット・クラスの詳細については、 JasperReports の資料を参照してください。
EGL が .java ファイルを生成する場合、 クラス名は小文字です。 XML 設計文書に入力したクラス名がすべて小文字であることを確認してください。