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からプラグイン化されました。