ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Reports ServicesレポートWeb公開ガイド
11g リリース 1 (11.1.1)
B61375-04
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

22.4 実行時のXMLファイルの使用

作成したOracle Report XMLカスタマイズ・ファイルは、次の方法で使用できます。

この後の項では、各ケースを詳しく説明するとともに、例を示します。

22.4.1 実行時のXMLレポート定義の適用

実行時にXMLレポート定義をRDFまたはその他のXMLファイルに適用するには、CUSTOMIZEコマンドライン・キーワードまたはSRW.APPLY_DEFINITIONビルトイン・プロシージャを使用します。CUSTOMIZEは、rwclientrwrunrwbuilderrwconverterおよびURLレポート・リクエストとともに使用できます。


注意:

CUSTOMIZErwconverterと併用する方法の詳細は、第22.4.3項「バッチ変更の実行」を参照してください。


22.4.1.1 1つのXMLレポート定義の適用

次に示すコマンドラインは、ジョブ・リクエストをOracle Reports Servicesに送信し、XMLレポート定義(emp.xml)をRDFファイル(emp.rdf)に適用します。この例では、CUSTOMIZEキーワードがWindowsのディレクトリ・パスにあるファイルを参照しています。UNIXの場合は、UNIXの標準に従ってパスを指定してください(つまりmyreports/emp.xml)。

rwclient REPORT=emp.rdf CUSTOMIZE=\myreports\emp.xml
  USERID=username/password@my_db DESTYPE=file DESNAME=emp.pdf
  DESFORMAT=PDF SERVER=server_name

Reports Runtimeのコマンドであるrwrunを使用する場合のコマンドラインは、次のとおりです。

rwrun USERID=username/password@my_db REPORT=emp.rdf
   CUSTOMIZE=\myreports\emp.xml DESTYPE=file DESNAME=emp.pdf
   DESFORMAT=PDF

22.4.1.2 複数のXMLレポート定義の適用

実行時に複数のXMLレポート定義をレポートに適用するには、CUSTOMIZEコマンドライン・キーワードにリストを指定します。次に示すコマンドラインにより、2つのXMLレポート定義のEMP0.XMLおよびEMP1.XMLをRDFファイルのEMP.RDFに適用するジョブ・リクエストをOracle Reports Servicesに送信します。

rwclient REPORT=emp.rdf 
  CUSTOMIZE="(d:\corp\myreports\emp0.xml,d:\corp\myreports\emp1.xml)"
  USERID=username/password@my_db DESTYPE=file DESNAME=emp.pdf
  DESFORMAT=PDF SERVER=server_name

注意:

この例では、CUSTOMIZEの値に、Windowsプラットフォームに格納されているファイルへのディレクトリ・パスが示されています。UNIXの場合は、そのプラットフォームの標準に従ってディレクトリ・パスを指定してください(つまり円記号(\)のかわりに通常のスラッシュを使用)。


Reports Runtimeを使用する場合のコマンドラインは、次のとおりです。

rwrun REPORT=emp.rdf 
  CUSTOMIZE="(D:\CORP\MYREPOORTS\EMP0.XML,D:\CORP\MYREPORTS\EMP1.XML)"
  USERID=username/password@my_db DESTYPE=file DESNAME=emp.pdf
  DESFORMAT=PDF

22.4.1.3 PL/SQLでのXMLレポート定義の適用

PL/SQLでRDFファイルにXMLレポート定義を適用するには、Before Parameter FormまたはAfter Parameter FormトリガーでSRW.APPLY_DEFINITIONおよびSRW.ADD_DEFINITIONビルトイン・プロシージャを使用します。この後の項では、これらのビルトイン・プロシージャの例を示します。


注意:

SRW.APPLY_DEFINITIONおよびSRW.ADD_DEFINITIONビルトイン・プロシージャを含むSRWビルトイン・パッケージの説明、およびレポート・トリガーの詳細は、Oracle Reportsのオンライン・ヘルプを参照してください。


22.4.1.3.1 ファイルに保存されたXML定義の適用

ファイル・システムに保存されたXMLをレポートに適用するには、レポートのBefore Parameter FormまたはAfter Parameter FormトリガーでSRW.APPLY_DEFINITIONビルトイン・プロシージャを使用します。

Windowsの場合:

SRW.APPLY_DEFINITION ('%ORACLE_HOME%\TOOLS\DOC\US\RBBR\COND.XML');

UNIXの場合:

SRW.APPLY_DEFINITION ('$ORACLE_HOME/TOOLS/DOC/US/RBBR/COND.XML');

レポートの実行時に、トリガーが実行され、指定したXMLファイルがレポートに適用されます。

22.4.1.3.2 メモリーに保存されたXML定義の適用

メモリー内にXMLレポート定義を作成するには、SRW.ADD_DEFINITIONを使用してドキュメント・バッファに定義を追加した後に、SRW.APPLY_DEFINITIONビルトイン・プロシージャを使用してその定義を適用する必要があります。

次の例では、ユーザーが入力したパラメータ値に基づいてメモリー内にいくつかの定義を作成し、それらを適用する方法を示します。この例のPL/SQLは、videosales_custom.rdfというレポートのAfter Parameter Formトリガーで使用されます。

videosales_custom.rdfファイルのAfter Parameter Formトリガーに入っているPL/SQLが実行する内容は、次のとおりです。

  • 実行時にユーザーによって入力されたパラメータ値に基づいて、条件と合致したフィールドをハイライトします。

  • 実行時にユーザーによって入力されたパラメータ値に基づいて、数値書式マスクを変更します。

次のヒントは、この例を参照する際に役立ちます。

  • SRW.APPLY_DEFINITIONビルトイン・プロシージャを使用するたびに、ドキュメント・バッファがフラッシュされるので、そのたびにSRW.ADD_DEFINITIONを使用してXMLレポート定義を新規作成する必要があります。

  • パラメータhilite_profitshilite_costshilite_salesおよびmoney_formatを使用して、XMLレポート定義に入れる内容を決定している点に注意してください。hilite_profitshilite_costsおよびhilite_salesパラメータは、書式例外でも使用されており、これによってハイライトする値が決定します。

  • VARCHAR2列のサイズには上限があるため(4000バイト)、かなり大きなXMLレポート定義の場合は、複数の列にまたがって指定しなければならない場合もあります。その場合は、1つの大きな定義を作成して一度に適用するのではなく、メモリー内に定義をいくつか作成し、別々に適用する必要があります。

function AfterPForm return boolean is
begin
  SRW.ADD_DEFINITION('<report name="vidsales_masks"
  author="Generated" DTDVersion="9.0.2.0.0">');
  IF :MONEY_FORMAT='$NNNN.00' THEN 
    SRW.ADD_DEFINITION('<layout>');
    SRW.ADD_DEFINITION('<section name="main">');
    SRW.ADD_DEFINITION('<field name="F_TOTAL_PROFIT" source="TOTAL_PROFIT"
      formatMask="LNNNNNNNNNNN0D00"/>');
    SRW.ADD_DEFINITION('<field name="F_TOTAL_SALES" source="TOTAL_SALES"
      formatMask="LNNNNNNNNNNN0D00"/>');
    SRW.ADD_DEFINITION('<field name="F_TOTAL_COST" source="TOTAL_COST"
      formatMask="LNNNNNNNNNNN0D00"/>');
    SRW.ADD_DEFINITION('<field name="F_SumTOTAL_PROFITPerCITY" 
      source="SumTOTAL_PROFITPerCITY" formatMask="LNNNNNNNNNNN0D00"/>');
    SRW.ADD_DEFINITION('<field name="F_SumTOTAL_SALESPerCITY" 
      source="SumTOTAL_SALESPerCITY" formatMask="LNNNNNNNNNNN0D00"/>');
    SRW.ADD_DEFINITION('<field name="F_SumTOTAL_COSTPerCITY" 
      source="SumTOTAL_COSTPerCITY" formatMask="LNNNNNNNNNNN0D00"/>');
    SRW.ADD_DEFINITION('</section>');
    SRW.ADD_DEFINITION('</layout>');
  ELSIF :MONEY_FORMAT='$NNNN' THEN 
    SRW.ADD_DEFINITION('<layout>');
    SRW.ADD_DEFINITION('<section name="main">');
    SRW.ADD_DEFINITION('<field name="F_TOTAL_PROFIT" source="TOTAL_PROFIT" 
      formatMask="LNNNNNNNNNNN0"/>');
    SRW.ADD_DEFINITION('<field name="F_TOTAL_SALES" source="TOTAL_SALES" 
      formatMask="LNNNNNNNNNNN0"/>');
    SRW.ADD_DEFINITION('<field name="F_TOTAL_COST" source="TOTAL_COST" 
      formatMask="LNNNNNNNNNNN0"/>');
    SRW.ADD_DEFINITION('<field name="F_SumTOTAL_PROFITPerCITY" 
      source="SumTOTAL_PROFITPerCITY" formatMask="LNNNNNNNNNNN0"/>');
    SRW.ADD_DEFINITION('<field name="F_SumTOTAL_SALESPerCITY" 
      source="SumTOTAL_SALESPerCITY" formatMask="LNNNNNNNNNNN0"/>');
    SRW.ADD_DEFINITION('<field name="F_SumTOTAL_COSTPerCITY" 
      source="SumTOTAL_COSTPerCITY" formatMask="LNNNNNNNNNNN0"/>');
    SRW.ADD_DEFINITION('</section>');
    SRW.ADD_DEFINITION('</layout>');
  END IF;
  SRW.ADD_DEFINITION('</report>');
  SRW.APPLY_DEFINITION;
  SRW.ADD_DEFINITION('<report name="vidsales_hilite_costs" author="Generated" 
    DTDVersion="9.0.2.0.0">');
  IF :HILITE_COSTS <> 'None' THEN 
    SRW.ADD_DEFINITION('<layout>');
    SRW.ADD_DEFINITION('<section name="main">');
    SRW.ADD_DEFINITION('<field name="F_TOTAL_COST" source="TOTAL_COST">');
    SRW.ADD_DEFINITION('<exception textColor="red">');
    SRW.ADD_DEFINITION('<condition source="TOTAL_COST" operator="gt" 
      operand1=":hilite_costs"/>');
    SRW.ADD_DEFINITION('</exception>');
    SRW.ADD_DEFINITION('</field>');
    SRW.ADD_DEFINITION('</section>');
    SRW.ADD_DEFINITION('</layout>');
  END IF;
  SRW.ADD_DEFINITION('</report>');
  SRW.APPLY_DEFINITION;
  SRW.ADD_DEFINITION('<report name="vidsales_hilite_sales" author="Generated" 
    DTDVersion="9.0.2.0.0">');
  IF :HILITE_SALES <> 'None' THEN 
    SRW.ADD_DEFINITION('<layout>');
    SRW.ADD_DEFINITION('<section name="main">');
    SRW.ADD_DEFINITION('<field name="F_TOTAL_SALES" source="TOTAL_SALES">');
    SRW.ADD_DEFINITION('<exception textColor="red">');
    SRW.ADD_DEFINITION('<condition source="TOTAL_SALES" operator="gt" 
      operand1=":hilite_sales"/>');
    SRW.ADD_DEFINITION('</exception>');
    SRW.ADD_DEFINITION('</field>');
    SRW.ADD_DEFINITION('</section>');
    SRW.ADD_DEFINITION('</layout>');
  END IF;
  SRW.ADD_DEFINITION('</report>');
  SRW.APPLY_DEFINITION;
  SRW.ADD_DEFINITION('<report name="vidsales_hilite_profits" author="Generated" 
    DTDVersion="9.0.2.0.0">');
  IF :HILITE_PROFITS <> 'None' THEN 
    SRW.ADD_DEFINITION('<layout>');
    SRW.ADD_DEFINITION('<section name="main">');
    SRW.ADD_DEFINITION('<field name="F_TOTAL_PROFIT" source="TOTAL_PROFIT">');
    SRW.ADD_DEFINITION('<exception textColor="red">');
    SRW.ADD_DEFINITION('<condition source="TOTAL_PROFIT" operator="gt" 
      operand1=":hilite_profits"/>');
    SRW.ADD_DEFINITION('</exception>');
    SRW.ADD_DEFINITION('</field>');
    SRW.ADD_DEFINITION('</section>');
    SRW.ADD_DEFINITION('</layout>');
  END IF;
  SRW.ADD_DEFINITION('</report>');
  SRW.APPLY_DEFINITION;
  return (TRUE);
end;

22.4.2 XMLレポート定義の単独での実行

XMLレポート定義を単独で実行するには、REPORT(またはMODULE)オプションにXMLファイルを指定してリクエストを送信します。次のコマンドラインにより、レポートのemp.xmlを単独で実行するジョブ・リクエストをOracle Reports Servicesに送信します。

rwclient USERID=username/password@my_db
  REPORT=c:\corp\myreports\emp.xml
  DESTYPE=file desname=emp.pdf DESFORMAT=pdf
  SERVER=server_name

Reports Runtimeのコマンドであるrwrunを使用する場合のコマンドラインは、次のとおりです。

rwrun USERID=username/password@my_db
  REPORT=c:\corp\myreports\emp.xml
  DESTYPE=file DESNAME=emp.pdf DESFORMAT=PDF

この方法でXMLレポート定義を実行する場合は、必ずXMLファイルの拡張子を指定します。また、CUSTOMIZEコマンドライン・キーワードを使用して、XMLカスタマイズ・ファイルをこのレポートに適用することもできます。

22.4.3 バッチ変更の実行

更新を必要とするレポートが大量にある場合は、rwconverterCUSTOMIZEコマンドライン・キーワードを使用して、バッチの変更を実行できます。バッチ変更は、多数のレポートに同じ変更を繰り返し実行する必要がある場合に特に便利です(たとえば、フィールドの書式マスクの変更など)。Oracle Reports Builderでレポートを1つずつ開いて手動で変更するかわりに、rwconverterを一度実行するだけで、同じ変更を一度に多数のレポートに適用できます。


注意:

rwconverter.batファイルでは、startキーワードを使用して、rwconverterプロセスが起動されます。startキーワードが指定されている場合、プロセスは非同期モードで起動されます。起動されたrwconverterでは、完了するまで処理が続行されます。大量のrdfのバッチ変換を使用する場合は、すべてのプロセスが同時に起動します。したがって、rwconverterをバッチ・モードで実行する場合は、rwconverter.batファイルを手動で変更してstartキーワードを削除することをお薦めします。


次の例では、2つのXMLレポート定義のtranslate.xmlおよびcustomize.xmlを3つのRDFファイルのinven1.rdfinven2.rdfおよびmanu.rdfに適用し、変更後の定義を新しいファイルのinven1_new.rdfinven2_new.rdfおよびmanu_new.rdfに保存します。

rwconverter username/password@my_db
  STYPE=rdffile SOURCE="(inven1.rdf, inven2.rdf, manu.rdf)" 
  DTYPE=rdffile DEST="(inven1_new.rdf, inven2_new.rdf, manu_new.rdf)" 
  CUSTOMIZE="(d:\apps\trans\translate.xml,d:\apps\custom\customize.xml)"
  BATCH=yes

注意:

この例では、CUSTOMIZEの値に、Windowsプラットフォームに格納されているファイルへのディレクトリ・パスが示されています。UNIXの場合は、そのプラットフォームの標準に従ってディレクトリ・パスを指定してください(つまり円記号(\)のかわりに通常のスラッシュを使用)。