レポートの開発
目的
このトピックでは、改訂不可能な承認申請と改訂可能な承認申請の両方について、オーバーライド可能な API を拡張して人間が判読可能な承認申請レポートを生成する方法について説明します。デフォルトの実装では、デモを目的とした基本的な PDF レポートが提供されます。ただし、実装者は、監督官庁の要件に準拠した申請固有のレポートを作成できます。
概要
デフォルトの動作では、承認申請のプライマリコンテンツの PDF レポートが生成され、それが承認申請に関連付けられます。これで十分な場合もありますが、ほとんどの監督官庁ではカスタマイズされたフォーマットとレイアウトが必要です。
これを実現するには、次のいずれかを実行できます。
• カスタムプロセッサクラス内の generatePrimaryContent メソッドをオーバーライドする。
• 提供されているヘルパークラス GeneratePrimaryContentAsPDF を拡張して、高度なカスタマイズを行う。
ソリューションの手順
1. generatePrimaryContent メソッドをオーバーライドするカスタム承認申請プロセッサクラスを作成します。
2. 人間が判読可能なレポートを生成するためのカスタムロジックを実装します。
3. services.xconf にカスタムクラスを登録します。
ソリューションエレメント
|
エレメント
|
タイプ
|
説明
|
|
RegulatorySubmission generatePrimaryContent(RegulatorySubmission regulatorySubmission)
|
API
|
|
|
この API は廃止予定であり、今後のリリースで除去されます。
|
承認申請のプライマリコンテンツを生成します。
|
|
RegulatorySubmission generatePrimaryContent(RegulatorySubmission regulatorySubmission, boolean draft)
|
API
|
承認申請のプライマリコンテンツのサンプルを生成します。
|
デフォルトの動作
• 承認申請のプライマリコンテンツの PDF レポートを作成します。
• draft = TRUE に設定した場合は、各ページに DRAFT ウォーターマークを追加します。
• 生成された PDF を申請のプライマリコンテンツとして関連付けます。
• レポートのレイアウト:
◦ 使用可能な場合は、「レポートの画面レイアウト」を使用します。
◦ 「レポートの画面レイアウト」を使用できない場合は、「プライマリ属性」レイアウトおよび「その他の属性」レイアウトにフォールバックします。
• 申請にリンクされている「テーブルデータ」、「件名」、「ドライバー」を含めます。
• デモを目的としていますが、一部の申請タイプには適している場合があります。
• 実装者は、監督官庁の要件に一致する申請固有のレポートを作成できます。
プライマリコンテンツのカスタマイズ
カスタマイズするには、次の手順を実行します。
• SimpleRegulatorySubmissionProcessor または改訂可能なサブタイププロセッサを拡張する Java クラスを作成します。改訂可能なサブタイププロセッサには、AERSubmissionProcessor、ERSubmissionProcessor、RPSSubmissionProcessor、UDISubmissionProcessor などがあります。
• generatePrimaryContent() メソッドをオーバーライドします。
次の例は、generatePrimaryContent メソッドがオーバーライドされた新しいカスタムクラスを示しています。
public RegulatorySubmission generatePrimaryContent(RegulatorySubmission regulatorySubmission, boolean draft) throws Exception
{
String fileName = "RegSub_Report.pdf";
// This method will get all the primary contents form the Regulatory Submission and create a formatted output for storing.
InputStream in = generatePDF(regulatorySubmission);
// This method will get the formatted output and check all the validations to store the PDF report as Primary content.
RegulatoryContentHelper.getService().storePrimaryContent(regulatorySubmission, in, fileName);
return regulatorySubmission;
}
}
独自のロジックをゼロから実装することもできますが、プラットフォームには PDF の生成と保存を簡素化するヘルパークラス GeneratePrimaryContentAsPDF が用意されています。このクラスを拡張して、高度なカスタマイズを行うことができます。
GeneratePrimaryContentAsPDF クラス
このクラスは、PDF レポートを作成し、プライマリコンテンツとして保存するためのコア機能を実装します。
主な機能
• 申請属性、件名、ドライバー、およびテーブルデータを含む、承認申請用の PDF レポートを生成します。
• 生成された PDF を申請のプライマリコンテンツとして保存します。
• generatePrimaryContent や createHeader などのメソッドをカスタマイズできます。
• PDF のフォーマット、フォント、レイアウト、ヘッダー、スタイルを管理します。
• レポートのドラフトバージョンと最終バージョンの両方をサポートします (ドラフトのウォーターマークを含む)。
使用方法
• 開発者はこのクラスをサブクラス化して、ヘッダーのコンテンツ、フォーマット、その他のレポートの詳細をカスタマイズできます。
• カスタムコードでの拡張を安全に行えるように設計されています。
サポートされている API
|
メソッド
|
目的
|
|
generatePrimaryContent()
|
PDF レポートを生成して保存します。
|
|
createHeader()
|
PDF のヘッダーセクションを作成します。
|
generatePrimaryContent のデフォルトの動作
• レポートがドラフトであるか最終であるかに基づいて、出力ファイル名を決定します。
次に例を示します。
◦ ドラフト: RegSub_Report_draft.pdf
◦ 最終: RegSub_Report.pdf
• generatePDF(regulatorySubmission) を呼び出して PDF コンテンツを作成します。
• 以下を使用して、生成された PDF を申請のプライマリコンテンツとして保存します。
RegulatoryContentHelper.getService().storePrimaryContent
• 常に、指定された申請に対して新しい PDF を生成し、既存のプライマリコンテンツを置き換えます。
createHeader のデフォルトの動作
• 承認申請 PDF のヘッダーセクションを作成します。
• ローカライズされたタイプ名、申請名および識別子、現在のタイムスタンプなど、申請に関する重要な詳細を収集します。
• タイプ名、申請名および識別子、現在の日付と時刻の 3 行からなる単一コラムのテーブルを作成します。各行には太字のフォントが使用され、中央揃えで配置されます。
• テーブルを枠線なしの PdfPCell でラップし、それを PDF に含めるために返します。