Oracle® Fusion Middleware Oracle Business Intelligence Publisherレポート・デザイナーズ・ガイド 12c (12.2.1.4.0) E96099-04 |
|
前 |
次 |
ここでは、RTFサブ・テンプレートを使用して機能を作成し、複数のレポート間で機能を再利用する方法について説明します。
RTFサブ・テンプレートは、1つ以上の<?template:?>定義で構成されたRTFファイルであり、各定義には書式設定またはコマンドのブロックが含まれています。
RTFファイルは、カタログ内のサブ・テンプレート・オブジェクトとしてBI Publisherにアップロードするとき、他のRTFテンプレートからコールすることができます。
次の図は、RTFサブ・テンプレートの構成を示しています。
RTFファイルにコンポーネントまたは指示を入力します。指示をサブテンプレートとして定義するには、内容を次のタグで囲みます。
<?template:template_name?> ..subtemplate contents... <?end template?>
説明
template_nameは、選択するサブ・テンプレートの名前です。
ノート:
単一のRTFファイルで、複数の入力を行って異なるサブテンプレートまたはセグメントを指定し、他のファイルに含めることができます。<?template:template_name?>
<?end template?>
たとえば、次の図に示すサンプルのRTFファイルには、名前がcommonHeaderおよびcommonFooterの2つのサブテンプレートが含まれています。
メイン・テンプレートからサブテンプレートをコールするには、2つの入力を行う必要があります。
サブ・テンプレートをメイン・テンプレートに実装するには、メイン・テンプレートに2つのエントリを作成する必要があります。
最初に、メイン・テンプレートにサブ・テンプレートをインポートします。インポートの構文で、カタログ内のサブ・テンプレートを検出するBI Publisherエンジンを指定します。
次に、サブ・テンプレートの内容をレンダリングするコール・コマンドを必要な位置に入力します。
メイン・テンプレート内のコール・テンプレート・コマンドより前の任意の位置にインポート・コマンドを入力します。
ロケールが必要ない場合は、次のように入力します。
<?import:xdoxsl:///path to subtemplate.xsb?>
説明
path to subtemplate.xsbは、カタログ内のサブ・テンプレート.xsbオブジェクトへのパスです。
次に例を示します。
<?import:xdoxsl:///Executive/HR_Reports/mySubtemplate.xsb?>
ノート:
サブ・テンプレートが、「マイ・フォルダ」の下位の個人フォルダにある場合、サブ・テンプレートをインポートするコマンドは次のとおりです。
<?import:xdoxsl:///~username/path to subtemplate.xsb?>
このusernameはユーザー名です。
たとえば、ユーザーmyuserが、「マイ・フォルダ」の下位のSubtemplatesというフォルダにTemplate1というサブテンプレートをアップロードする場合、正しいインポート文は次のようになります。
<?import:xdoxsl:///~myuser/Subtemplates/Template1.xsb?>
サブテンプレートの内容をレンダリングするコール・コマンドを必要な位置に入力することもできます。
次の図は、メイン・テンプレートで必要な入力を示しています。
インポートしたサブテンプレートのロケールを指定するには、次のようにインポート文にロケールを追加します。
<?import:xdoxsl:///{path to subtemplate.xsb}?loc={locale_name}?>
説明
path to subtemplate.xsbは、カタログ内のサブ・テンプレート.xsbオブジェクトへのパスです。
および
locale_nameは、ロケールを構成する言語-地域の組合せです。ロケールの指定は、オプションです。
次に例を示します。
<?import:xdoxsl:///Executive/HR_Reports/mySubtemplate.xsb?loc=en-US?>
また、${_XDOLOCALE}を使用して、実行時のユーザー・ロケールに基づいてローカライズ済サブ・テンプレートをインポートすることもできます。次に例を示します。
<?import:xdoxsl:///Executive/HR_Reports/mySubtemplate.xsb?loc=${_XDOLOCALE}?>
この例では、会社の住所がすべてのテンプレートに固定の文字列として表示されます。すべてのテンプレートでこの文字列を再表示するのではなく、1つのサブ・テンプレートに配置して、他のすべてのテンプレートから参照できます。
実行時に、MyAddressサブ・テンプレートの内容がフェッチされ、メイン・テンプレートのレイアウト内でレンダリングされます。
この機能では、文字列のみでなく、サブ・テンプレート内の任意の有効なRTFテンプレート機能を挿入できます。さらに、パラメータを一方から他方へ渡すことも可能です。この例については、「RTFサブテンプレートを使用する状況」を参照してください。
RTFサブテンプレートは様々なシナリオで使用できます。
次に、いくつかのRTFサブ・テンプレートの一般的なユースケースを示します。
しばしば、複数のレポートで同じヘッダーとフッターが必要になります。
この内容の組込みにRTFサブ・テンプレートを使用することにより、全体的な変更を単純化でき、更新もレイアウトごとではなくこのサブ・テンプレートのみで済みます。
サブ・テンプレートは、レポート・データの値に基づいた条件付レイアウトに適用するために使用することもできます。
RTFテンプレートのchooseコマンドを使用することで、BI Publisherに対してサブテンプレート・ファイルに定義された別の<?template?>を適用するように指定できます。
ノート:
サブ・テンプレート・ファイルのimport文は条件付にできません。そのかわりに、1つのサブ・テンプレート・ファイルをインポートして、コール文を条件付にできます。1つのサブ・テンプレート・ファイルに複数の<?template?>オプションを定義します。
インドと米国内の顧客に送信するレポートがあるとします。データで指定される国コード(COUNTRY_CODE)に応じて、適用する住所のレイアウトを変える必要があります。この例では、RTFテンプレートのif
文の機能を使用して該当するアドレス書式のサブテンプレートをコールします。
サブテンプレート・ファイルは、次のようになります。
<?template:US_Address?> <?US_Address_Field1?> <?US_Address_Field2?> <?US_Address_Field3?> <?end template?> <?template:IN_Address?> <?IN_Address_Field1?> <?IN_Address_Field2?> <?IN_Address_Field3?> <?end template?>
レポートを実行すると、アドレスの書式がデータ内のCOUNTRY_CODEの値に応じて適切に適用されます。
この例では、ユーザーのパラメータ値を基に、または値のリストからの選択を基に異なるレイアウトを表示する方法について示します。パラメータはRTFテンプレートに渡すことができ、値に基づいてサブ・テンプレート・ファイル内の異なる<?template?>をコールするために使用できます。
ノート:
サブ・テンプレート・ファイルのimport文は条件付にできません。
レポート・データ・モデルで、DeptNameという名前のパラメータを定義しているとします。このパラメータをMenu型として設定し、これに値リストを関連付けることで、ユーザーがレポート・ビューアでレポートを表示するとき(またはレポートをスケジュールするとき)、リストから選択可能になります。
RTFメイン・レイアウト・テンプレートで次のコマンドを入力し、ユーザーが選択した値を取得するようにします。
<?param@begin:DeptName?>
このユーザーの選択を基にレイアウトを表示する場合、IFまたはCHOOSE文を使用し、パラメータ値を評価して、関連するサブ・テンプレートのコールができます。
CHOOSE文は、多数の条件テストがあり、残りの値に対してデフォルト処理が予期される場合に使用します。たとえば、経理、営業およびマーケティング部門のそれぞれで異なるレイアウトが必要だとします。これ以外のすべての部門はデフォルトのレイアウトを使用できます。
<?import:xdoxsl:///Executive/Department Expenses/DeptSubtemps.xsb?loc=en-US?> <?param@begin:DeptName?> <?choose:?> <?when:$DeptName='Accounting'?> <?call:tAccounting?> <?end when?> <?when:$DeptName='Sales'?> <?call:tSales?> <?end when?> <?when:$DeptName='Marketing'?> <?call:tMark?> <?end when?> <?otherwise:$> <?call:tDefault?> <?end otherwise?> <?end choose:?>
ユーザーがレポートを実行するとき、DeptNameの値を基に、適用されるレイアウトが決定されます。RTFテンプレートのCHOOSE文の詳細は、「Choose文の挿入」を参照してください。
この例では、利子を計算する計算式を含んだサブ・テンプレートの設定方法を示します。
このサブ・テンプレートは、レポート内のデータに対して金利計算を実行して、結果をメイン・テンプレートに返します。この機能をコールする複数のレポートでは、計算式のコンポーネントのタグ名が異なる可能性がありますが、このサブ・テンプレートはそのような状況にも対応します。
次のXMLデータを使用するとします。
<LOAN_DATA> <LOAN_AMOUNT>6000000</LOAN_AMOUNT> <INTEREST_RATE>.053</INTEREST_RATE> <NO_OF_YEARS>30</NO_OF_YEARS> </LOAN_DATA>
RTFサブ・テンプレートでは、RTFテンプレート・ファイルと同様に翻訳がサポートされています。
単一のサブテンプレート定義に対して複数の翻訳済RTFファイルをアップロードし、適切なロケールを割り当てることができます。これらは、次の図のように「テンプレート」リージョンに表示されます。
または、翻訳可能な文字列のXLIFF (.xlf)ファイルを生成し、文字列を翻訳して、翻訳済ファイルをアップロードします。これらは、次の図に示すように、「翻訳」リージョンに表示されます。
実行時、オンラインで表示されるレポートに対するユーザー・アカウントのレポート・ロケールの「プリファレンス」設定に基づいて、適切なサブテンプレートのローカライゼーションが適用されます。また、スケジュールされたレポートの場合は、スケジュールされたレポートのレポート・ロケールに関するユーザーの選択に基づいて適用されます。
サブ・テンプレートのXLIFFファイルは個別に生成して、翻訳し、個別にアップロードできます。また、サブ・テンプレート・フォルダが含まれるカタログの翻訳を行う場合、サブ・テンプレート・ファイルから文字列が抽出され、より大きなカタログ翻訳ファイルに組み込まれます。カタログ翻訳ファイルがBI Publisherにアップロードされると、「サブ・テンプレート」定義の「翻訳」リージョンに該当するカタログ・ファイルからの翻訳が表示されます。
翻訳の詳細は、「翻訳サポートの概要と概念」を参照してください。