ヘッダーをスキップ

Oracle XML Publisher管理および開発者ガイド
リリース12
E05659-01
目次へ
目次
前のページへ
前へ
次のページへ
次へ

OracleレポートからXMLパブリッシャ・レポートへの移行

概要

XMLパブリッシャでは、OracleレポートをXMLパブリッシャ・レポートに容易に変換できるユーティリティを提供しています。

Oracleレポートではデータ・モデル(データ抽出ロジック)とレイアウト(表示方法)は単一のRDFファイルに一緒に埋め込まれています。一方、XMLパブリッシャでは、データ・モデルとレイアウトは別々に存在します。そのため、移行は、XMLパブリッシャのレポートに必要な個々のオブジェクトにRDFファイルを変換する2ステップのプロセスになります。

2つのステップを1つのシェル・スクリプトにまとめて、Oracleレポートを変換できます。このスクリプトは、指定されたディレクトリにある複数のOracleレポートを変換できるように修正することも可能です。次の図に、変換フローを示します。

本文の説明内容に関するイメージ

前提条件

移行ユーティリティは、XML形式でOracleレポートを受け入れます。この形式は、Oracle Reports 9i以降でのみサポートされています。Oracle Applications Release 12にアップグレードしている場合、Oracle Reports 10.1.3が含まれています。

OracleレポートのRDFファイルをXML形式に変換するには、Oracleレポート・デザイナまたは$ORACLE_HOME/binの下にあるOracleレポートのRwconverter.exeユーティリティを使用します。

次の例では、Rwconverterユーティリティを実行して、ソース・レポートraxinv.rdfを取得し、それをXMLパブリッシャの変換ユーティリティで処理できるRDF-XML形式に変換します。dtypeは必ずxmlfileとして指定する必要があります。

D:\Oracle_home\BIN>rwconverter batch=yes  source= h:\reports\raxinv.rdf  dest= h:\reports\raxinv.xml  dtype=xmlfile  overwrite=yes

変換プロセス

データ・モデル移行

DataTemplateGenerator APIを使用して、Oracleレポートのデータ・モデルをデータ・テンプレートに移行し、関連するPL/SQLロジックをPL/SQLパッケージ(仕様部と本体)に移行します。

APIは、コマンドラインまたはシェル・スクリプトからコールできます。次の出力ファイルが生成されます。

javaw.exe  oracle.apps.xdo.rdfparser.DataTemplateGenerator H:\report\raxinv.xml

出力ファイル:

レイアウト移行

RTFTemplateGenerator APIを使用して、OracleレポートのレイアウトをXMLパブリッシャのRTFテンプレートに移行します。

RTFテンプレートではPL/SQLがサポートされないため、レポートのフォーマット・トリガー・ロジックはプロセスで移行されません。そのかわりに、すべてのフォーマット・トリガー・コードがログ・ファイルに書き込まれます。その後、対応するPL/SQLロジックをXSLコードとして実装する必要があります。

多くのOracleレポートでは、変換の難しくない単純なif形式ロジックが使用されます。このプロセスを支援するために、結果のRTFテンプレートには、コール対象のフォーマット・トリガー名を保持するMicrosoft Wordのフォーム・フィールドが含まれます。これらのフィールドは、赤で強調表示されます。ログを参照して、元のOracleレポートで使用されている実際のPL/SQLコードを確認できます。

APIは、コマンドラインまたはシェル・スクリプトからコールできます。次の出力ファイルが生成されます。

javaw.exe  oracle.apps.xdo.rdfparser.RTFTemplateGenerator  H:\report\raxinv.xml

出力ファイル:

既知の問題

変換APIには、以下のような既知の問題があります。

バッチ変換

移行対象の3つのコンポーネントを1つのシェル・スクリプトにまとめて、プロセスを完全に自動化できます。さらに、スクリプトは、単一のレポート・ファイルに対してだけでなく、指定されたディレクトリ内のすべてのレポートに対して実行できるように修正することも可能です。

このスクリプトは、ディレクトリ内のすべてのRDFを変換します。次のJavaライブラリが必要です。

次に、注釈付きのサンプル・スクリプトを示します。

#!/bin/sh
#  This script will generate a report for each template in the current directory
# Create a variable to hold the classpath
classpath="DIR/collections.zip:DIR/xmlparserv2-904.zip:JAVA_TOP directory"
if [ $# -eq 0 ]
 then
  for file in  *.rdf
   do
echo "Processing ... $file"
    if test -f $file
    then
# Convert the rdf to xml
       echo yes | $ORACLE_HOME/bin/rwconverter.sh batch=yes  source=$file dest=$file  dtype=xmlfile overwrite=yes; \
# Create a variable to hold the new xml file name, this is just a simple replace
# statement

        xfile="${file//rdf/xml}";
# Generate the data template plus plsql
        echo yes | /local/java/jdk1.5.0_06/bin/java -classpath $classpath oracle.apps.xdo.rdfparser.DataTemplateGenerator $xfile;
# Generate the RTF template
        echo yes | /local/java/jdk1.5.0_06/bin/java –classpath $classpath  oracle.apps.xdo.rdfparser.RTFTemplateGenerator $xfile;

    fi
done

else
  echo usage: $0
  echo this script will generate a data template and supporting plsql and an RTF template in the current directory
fi