【iDempiere Lab】IReportRendererの研究

JIRA: 【IDEMPIERE-5949】Datatables.js and Pivot.js Report Viewerのチケットで、IReportRendererやIReportViewerRendererというプラグイン可能な箇所ができたので、調査及び研究し、その成果をまとめています。

前提:2つあるレポートビュワー

iDempiereには、汎用的なレポートビューワーとジャスパーレポート専用のレポートビュワーの2つのレポートビューワーがあります。レポートビュワーは、レポートを表示する枠組みのようなものです。

汎用的なレポートビューワー

ジャスパーレポート専用のレポートビューワー

ver11の現時点で、汎用的なレポートビューワーと比較すると、表示形式の種類やアイコンが少なくなっていたり、印刷書式が選択できなかったりします。

上記の2つのレポートビュワーに加えて、JPiereでは、添付ファイルの機能と追加したレポートビュワーを用意しています。

汎用的なレポートビューワーの呼び出し

汎用的なレポートビューワーはプラグイン化してカスタマイズできるようになっています。プラグイン化した汎用的なレポートビューワーは、ReportViewerProviderクラスを実装した汎用的なレポートビューワーを呼び出す専用のクラス(※プロバイダークラス)から提供されるようになっています。

プロバイダークラスの呼び出し

◆ReportCtl#getReportViewerProvider()

ジャスパーレポート専用のレポートビューワーの呼び出し

ジャスパーレポート専用のレポートビューワーもプラグイン化してカスタマイズできるようになっています。プラグイン化した汎用的なレポートビューワーは、JRViewerProviderクラスを実装した汎用的なレポートビューワーを呼び出す専用のクラス(※プロバイダークラス)から提供されるようになっています。

ReportStarter#getViewerProvider()

IReportViewerRenderer

汎用的なレポートビュワーから呼び出されて、レポートビュワーに表示するコンテンツ(レポート)を作成します。iDempiere ver11からプラグイン化されました。

実装例と実装するメソッド

IReportRenderer

IreportViewRendererクラスのrenderMedia()メソッドで使用されることを想定し、レポートのレンダリング処理をプラグイン化できるようにしています。iDempiere ver11からプラグイン化されました。

実装例と実装するメソッド

IReportRendererのインスタンスの取得

◆Core#getReportRenderer()