プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Business Intelligence Enterprise Edition XMLスキーマ・リファレンス
12c(12.2.1)
E70039-01
  目次へ移動
目次

前
 
次
 

6 Oracle BIサーバーXML APIについて

この章では、Oracle BIリポジトリのメタデータの汎用的なXMLベースの表現を作成するために使用できる、Oracle BIサーバーのXML APIについて説明します。Oracle BIサーバーXML APIは、メタデータの移行、プログラムによるメタデータの生成と操作、メタデータのパッチ適用およびその他の機能を実行するために使用できます。

Oracle BIサーバーXML APIオブジェクトは、RPDファイルのメタデータ・リポジトリ・オブジェクトに対応します。これらのオブジェクトは、Oracle BIプレゼンテーション・カタログのXMLオブジェクトとは異なります。

この章は、次の項で構成されています。

6.1 Oracle BIサーバーXML APIについて

Oracle BIサーバーXMLのスキーマ・ドキュメント(xudml1.xsd)には、XMLリポジトリ・ファイルの構造の構文が含まれています。このファイルは次の場所にあります:

ORACLE_HOME/bi/bifoundation/server/bin

これはMDS XML出力の生成を可能にするファイルではないことに注意してください。MDS XML出力の生成の詳細は、第1章「Oracle BIサーバーMDS XML APIについて」を参照してください。

XMLメタデータ・オブジェクトの関係を確認する際にこのファイルを表示することができますが、変更はできません。変更すると、エラーが発生し、biserverxmlexecユーティリティがクラッシュする可能性があります。

リポジトリの構造は、主に次のようなオブジェクトのフラット・リストの形式で構成されています。

<?xml version="1.0" encoding="iso-8859-1"?>
<Repository xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <DECLARE>
    <ObjectType {attributes}>
      Contents…
    </ObjectType>
    <ObjectType {attributes}>
      Contents…
    </ObjectType>
    …
  </DECLARE>
</Repository>

階層化された関係も含めて、ほとんどの関係のモデリングは、XMLの階層構造ではなくオブジェクト間の名前参照を使用して構成されます。

XML内で表示されるメタデータ・オブジェクトは特定の順序で出現する必要があります。XMLスキーマ・ドキュメントで設定されている順序は、objectList_t要素で参照できます。

6.1.1 Oracle BIサーバーXML APIを使用したオブジェクトのマージと追加について

Oracle BIサーバーXML APIを完全なリポジトリ・マージに使用しないでください。管理ツールのマージ機能は、オブジェクトのきわめて複雑な比較やデシジョンを処理しますが、このような競合はXMLユーティリティを使用して考慮および解決することはできません。このため、XML APIを使用して、完全なマージを実行することはサポートされていません。これを行うとリポジトリが壊れる可能性があります。

ただし、あるリポジトリから別のリポジトリへオブジェクトを追加するためにXML APIを使用できます。これにはbiserverxmlexecに-Bオプションを使用してベース・リポジトリのパス名を指定します。この方法は、2つの完全に独立したリポジトリがあり、共有の変数やアプリケーション・ロールなど2つのリポジトリ間で共有されたオブジェクトがない場合に機能します。たとえば、CreditとManufacturing部門に独立したリポジトリがある場合、Credit XMLメタデータからオブジェクトを取得して、それをManufacturing XMLメタデータに追加し、次に両方の作業モデルを含む単一のRPDに変換できます。この方法により、あるリポジトリから他のリポジトリへの追加が基本的に可能になります。

追加の操作を実行する前に、共通オブジェクトがないことを確認するスクリプトを作成する必要があります。リポジトリが独立している場合でも、current_date変数など、共通のオブジェクトに同じ名前が付けられている可能性があります。

また、偶発的に競合が発生しないようにアップグレードIDを等化することも可能です。オブジェクトの等化によって、2つのリポジトリにある同じ名前で異なるアップグレードIDのオブジェクトが同じオブジェクトとして扱われます。『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Editionメタデータ・リポジトリ作成者ガイド』のオブジェクトの等化に関する項を参照してください。

6.2 XMLの生成と実行について

Oracle Business Intelligenceでは、XMLを生成および実行する次のようなコマンドライン・ツールが提供されています。

  • biserverxmlgen: 既存のRPDからXMLを生成します。

  • biserverxmlexec: リポジトリ・ファイルを作成または変更するためにオフライン・モードでXMLを実行できます。

  • biserverxmlcli: Oracle BIサーバーに対してXMLを実行します。

新しい内容で既存のリポジトリを更新するためにXMLを実行するとき、オブジェクト全体が置換されるため注意してください。たとえば、PresentationTableオブジェクトの名前属性をname="Facts Revenue"からname="Facts Financial"に変更するには、PresentationTableオブジェクト全体をbiserverxmlexecまたはbiserverxmlcliに送信する必要があります。

さらに、既存のオブジェクトを置換するときに修飾名、UIDおよびIDが正しいことを確認してください。Oracle BIサーバーでは、IDが異なる場合、異なるオブジェクトと仮定されます。

この項の内容は、次のとおりです。

6.2.1 既存RPDからのXMLの生成

biserverxmlgenでは、XMLファイルを既存リポジトリ・ファイル(RPD)から生成できます。このコマンドライン・ユーティリティの場所は次のとおりです。

ORACLE_HOME/user_projects/domains/bi/bitools/bin

biserverxmlgenユーティリティを使用するには、コマンド・プロンプトで次のように実行します。

biserverxmlgen -M -R repository_pathname [-P password]
pathname {-O output_script_pathname | -D directory_name | -Z output_RPD_name}
[-8] [-N] [{-Q | -S | -L | -C}] [-V variable_list_pathname] [-X] [-U output_RPD_password [-B]]

各項目の意味は次のとおりです。

-MはXMLを出力することを指定します。

repository_pathnameは、XMLを生成するリポジトリ・ファイルの名前と場所です。

passwordはリポジトリのパスワードです。

パスワード引数はオプションです。パスワード引数を指定しない場合は、コマンド実行時にパスワードを入力するように求められます。セキュリティ侵害のリスクを最小限にとどめるために、パスワード引数をコマンドラインやスクリプトで指定しないことをお薦めします。パスワード引数のサポートは下位互換性の保持を目的としており、将来のリリースでは削除される予定です。スクリプト上の理由から、標準入力によってパスワードを指定できます。

output_script_pathnameは、生成するXML出力ファイルの名前と場所です。出力ファイル名には.xml拡張子を指定することをお薦めします。デフォルトでは、このファイルにはすべてのオブジェクトのXMLが含まれます。しかし、-Cオプションを使用すると、このファイルには接続プールとその相対変数のXUDMLのみが含まれます。

directory_nameは、XML出力の生成先ディレクトリの名前と場所です。

ouput_RPD_nameはリポジトリ出力ファイルの名前です。この出力ファイルには、接続プール情報が含まれていません。このオプションを指定した場合、オプションで-Xを指定することもできます。このオプションを指定した場合、-U [ouput_RPD_password]を含める必要があります。

生成するXMLファイルでUTF-8を使用するには、-8を指定します。-8を指定しない場合は、生成されるXMLファイルにデフォルトでANSI ISO-8859-1エンコーディングが使用されます。

-Nを指定すると、アップグレードID (uid)なしで出力が生成されます。これらはオブジェクトの内部識別子です。古いアップグレードIDを使用せずに新規リポジトリ・ファイルを作成する場合に使用します。XMLを生成している場合、このオプションを使用しないでください。XMLを生成していない場合、かわりに-Nを使用してください。

次のオプションのいずれかを使用して、セキュリティ・オブジェクト、プレゼンテーション・オブジェクトまたは接続プールの生成を制御できます。オプションを複数指定すると、エラーが発生します。

  • -Qを使用すると、セキュリティ・オブジェクトなしで出力が生成されます。

  • -Sを使用すると、セキュリティ・オブジェクトのみの出力が生成されます。

  • -Lを使用すると、プレゼンテーション・オブジェクトのリストのみが生成されます。

  • -Cを使用すると、接続プールとその接続プールと相対的な変数に対するスクリプトのみが生成されます。

variable_list_pathnameは、必要に応じて-Cとともに使用します。これは、指定した変数の生成に使用される変数リストが含まれるファイル名です。このオプションを指定すると、接続プール、その接続プールと相対的な変数、ファイルからの変数が生成されます。

-Xを使用すると、接続プール情報なしでXUDMLが生成されます。このオプションを指定した場合、オプションで-Z [ouput_RPD_name]オプションを指定できます。

output_rpd_passwordは出力しているリポジトリのパスワードです。-Z [ouput_RPD_name]を指定した場合、このオプションを含める必要があります。

-Bを使用すると、XUDML生成のためにアップグレードID(uid)の重複名が再生成されます。

6.2.2 オフライン・モードでのXMLの実行

biserverxmlexecではオフライン・モードでXMLを実行できます。このユーティリティは、XMLリポジトリ・ファイルからリポジトリ・ファイル(RPD)全体を生成するか、またはXMLファイルで指定された変更を適用することによって、既存のリポジトリ・ファイルを変更できます。入力XMLはOracle BIサーバーXMLスキーマに対して検証されます。RPDとXMLファイルの両方に存在するオブジェクトは、XMLファイルの対応するオブジェクト定義によって上書きされます。XMLファイルでは同じオブジェクトを二度定義できないことに注意してください。

修飾名(qualifiedName)またはアップグレードID (uid)をオブジェクトごとに指定する必要があります。このユーティリティがオブジェクトを解決および特定するとき、uidが最も高い優先度になり、qualifiedNamesがそれに続きます。識別子の属性の詳細は、第6.4項「XMLの汎用的な要素と属性」を参照してください。

biserverxmlexecの場所は次のとおりです。

ORACLE_HOME/user_projects/domains/bi/bitools/bin

biserverxmlexecユーティリティを使用するには、コマンド・プロンプトで次のように実行します。

biserverxmlexec [-P rpd_password] {-I input_script_filename |
-D XML_document_directory | -X cust_directory}
[-S XML_password] [-B base_repository_pathname]
-O output_repository_pathname [-M] [-E] [-C] [-N] [-R]

各項目の意味は次のとおりです。

rpd_passwordはリポジトリ・パスワードです。ベース・リポジトリを指定している場合は、ベース・リポジトリのリポジトリ・パスワードを入力します。ベース・リポジトリを指定していない場合は新しいリポジトリに使用するパスワードを入力します。

パスワード引数はオプションです。パスワード引数を指定しない場合は、コマンド実行時にパスワードを入力するように求められます。セキュリティ侵害のリスクを最小限にとどめるために、パスワード引数をコマンドラインやスクリプトで指定しないことをお薦めします。パスワード引数のサポートは下位互換性の保持を目的としており、将来のリリースでは削除される予定です。スクリプト上の理由から、標準入力によってパスワードを指定できます。

input_script_filehnameは、実行するXML入力ファイルの名前と場所です。

XML_document_directoryは、入力されたXMLドキュメントの場所です。

cust_directoryはOracle BIサーバーのサービス・インスタンスにあるカスタマイズ・フォルダのパスです。このフォルダには複数のアクションXMLグループが含まれています。customization_order.xmlファイルにより、カスタマイズが適用される順序が決定されます。

XML_passwordは、XMLドキュメントのセットのパスワードです。XMLドキュメントのセットが[-P rpd_password]に対して指定されたパスワードと異なる場合は、[-S XML_password]を指定するだけで済みます。-Cを指定して、XMLドキュメントのパスワードのチェックを回避できることにも注意してください。

XML_password引数はオプションです。XMLパスワードの引数を渡さない場合、およびXMLドキュメントのセットのパスワードが[-P rpd_password]に対して指定したパスワードと異なる場合、コマンド実行時にXMLパスワードを入力するように求められます(-Cを指定していない場合)。セキュリティ侵害のリスクを最小限にとどめるために、パスワード引数をコマンドラインやスクリプトで指定しないことをお薦めします。パスワード引数のサポートは下位互換性の保持を目的としており、将来のリリースでは削除される予定です。スクリプト上の理由から、標準入力によってパスワードを指定できます。

base_repository_pathnameは、XML入力ファイルを使用して変更する既存のリポジトリ・ファイルです(オプション)。XML入力ファイルから新しいリポジトリ・ファイルを生成する場合はこの引数を指定しないでください。

output_repository_pathnameは、生成するRPD出力ファイルの名前と場所です。新しいRPDを生成するかどうか、または既存のベース・リポジトリを変更するかどうかに関係なく、出力リポジトリを指定する必要があることに注意してください。ベース・リポジトリでXMLファイルを実行した結果として生じた変更内容は、ベース・リポジトリではなく、指定された出力リポジトリに格納されます。

XMLドキュメントを実行するには、-Mを指定します。-D MDS_XML_document_directoryを指定した場合、-M引数は必要ありません。すべてのオブジェクト定義を含む単一のXMLファイルがある場合は、-Mを指定するだけで済みます。

式解析エラーが発生した場合にRPD出力ファイルを作成せずに終了するには、-Eを指定します。

XMLパスワードの入力を求めるプロンプトをスキップするには、-Cを指定します。このオプションを使用すると、出力RPDからすべての接続プールのパスワードが削除されます。

致命的でないエラーをすべて無視するには、-Nを指定します。致命的でないエラーには、未解決のオブジェクト、重複オブジェクト、中途半端な表現などがあります。

リポジトリへの変更を適用する前にXML変換を無効化するには、-Rを指定します。

次の例は新規リポジトリ・コールrp1を作成します。

biserverxmlexec -I testxudml.txt -O rp1.rpd
Give password: my_rpd_password

次の例は、rp1を変更して、rp2に書き込みます。

biserverxmlexec -I testxudml.txt -B rp1.rpd -O rp2.rpd
Give password: my_rpd_password

6.2.3 Oracle BIサーバーに対するXMLの実行

biserverxmlcliによって、Oracle BIサーバーに対してXMLを実行できます。このユーティリティは、biserverxmlexecと似ていますが、オンライン・リポジトリを変更するために使用する点が異なります。オンライン・リポジトリは、既存のリポジトリをナビゲーション領域にロードした、実行中のOracle BIサーバー・インスタンスです。

biserverxmlcliの場所は次のとおりです。

ORACLE_HOME/user_projects/domains/bi/bitools/bin

biserverxmlcliユーティリティを使用するには、コマンド・プロンプトで次のように実行します。

biserverxmlcli -U user_name [-P user_password] -R repository_password
-D data_source_name [-W ssl_pass_phrase | -Y] {-I XML_file_path_name |
-X MDS_documents_Dir} [-M] [-8] [-K] [-N] [-S XUDML_script_password]

各項目の意味は次のとおりです。

user_nameは有効なユーザー名です。このユーザーは、リポジトリの管理権限を所有する必要があります(oracle.bi.server.manageRepositories)。

user_passwordはユーザー・パスワードに対応します。

ユーザー・パスワードの引数はオプションです。ユーザー・パスワードの引数を渡さない場合はコマンドの実行時にユーザー・パスワードを入力するように求められます。セキュリティ侵害のリスクを最小限にとどめるために、パスワード引数をコマンドラインやスクリプトで指定しないことをお薦めします。ユーザー・パスワードの引数は下位互換の目的のみでサポートされているため、今後のリリースで削除されることに注意してください。スクリプト上の理由から、標準入力によってパスワードを指定できます。

repository_passwordはオンライン・リポジトリのリポジトリ・パスワードです。

リポジトリ・パスワードの引数はオプションです。リポジトリ・パスワードの引数を渡さない場合はコマンドの実行時にリポジトリ・パスワードを入力するように求められます。セキュリティ侵害のリスクを最小限にとどめるために、パスワード引数をコマンドラインやスクリプトで指定しないことをお薦めします。リポジトリ・パスワードの引数は下位互換の目的のみでサポートされているため、今後のリリースで削除されることに注意してください。スクリプト上の理由から、標準入力によってパスワードを指定できます。

data_source_nameは、接続先のOracle BIサーバーODBCデータ・ソース名(DSN)です。

ssl_pass_phraseは、ODBC接続がSSLを使用するように構成されている場合の、Oracle BIサーバーのSSLパスフレーズです。

-Yは、秘密鍵ファイルへのSSLパスフレーズです。

XML_file_path_nameは、実行するXML入力ファイルの名前と場所です。

MDS_documents_directoryは、実行する入力ファイルを含むMDS XMLディレクトリの場所です。

-I XML_file_path_nameにあるXMLがMDS XMLタイプである場合、-Mを指定します。

生成するXMLファイルでUTF-8を使用するには、-8を指定します。-8を指定しない場合は、入力XMLファイルにデフォルトでANSI ISO-8859-1エンコーディングが使用されます。

ディスクに変更を書き込むかわりにXMLの変更をメモリーに格納するには、-Kを指定します。

致命的でないエラーをすべて無視するには、-Nを指定します。致命的でないエラーには、未解決のオブジェクト、重複オブジェクト、中途半端な表現などがあります。

Oracle BIサーバーにロードされたリポジトリで使用されるパスワードと異なる場合、XUDML_script_passwordは入力ファイル・スクリプト・パスワードです。

入力ファイル・スクリプト・パスワードはオプションです。パスワードの引数を渡さない場合はコマンドの実行時にスクリプト・パスワードを入力するように求められます。セキュリティ侵害のリスクを最小限にとどめるために、パスワード引数をコマンドラインやスクリプトで指定しないことをお薦めします。スクリプト・パスワードの引数は下位互換の目的のみでサポートされているため、今後のリリースで削除されることに注意してください。スクリプト上の理由から、標準入力によってパスワードを指定できます。

このオプションを指定しない場合、プログラムではUDMLスクリプト・パスワードがリポジトリ・パスワードと同じであると仮定します。

6.3 Oracle BIサーバーXML APIの使用

この項では、Oracle BIサーバーXML APIの機能に対する様々なユースケースについての情報を提供します。この項の内容は、次のとおりです。

6.3.1 メタデータのバージョンの管理について

Oracle BIサーバーXML APIでは、RPDのバージョンを維持する効率的な方法が提供されています。バージョンごとにRPDファイル全体を保存するのではなく、管理ツールの「比較」ダイアログにある「パッチの作成」機能を使用してXMLパッチ・ファイルを生成できます。パッチ・ファイルは現在と元のバージョン間の変更の差分のみを含みます。変更の格納にパッチ・ファイルを使用することでリポジトリ・ファイル全体の重複するデータを格納する必要がなくなり、ディスク領域を節約できます。このメソッドを使用してバージョンを管理するには、常に元のリポジトリ・ファイルのコピーを保持する必要があります。

管理ツールのパッチ・マージ機能を使用することで、パッチを元のファイルに適用でき、これにはpatchrpdユーティリティを使用するか、または-Bオプションでbiserverxmlexecを実行します。

たとえば、リポジトリ・バージョンのA0、A1およびA2があり、さらに最新バージョンと元のバージョン間の変更を含むA2-0delta.xmlというXMLパッチがある場合、次のコマンドを実行できます。

biserverxmlexec -I A2-0delta.xml -B A0.rpd -O A2reproduced.rpd
Give password: my_password

また、A0とA1間の変更を保存し、次にA1とA2間の変更を保存した場合、2つのコマンドを実行することで、最新の変更を元のファイルに適用できます。

biserverxmlexec -I A1-0delta.xml -B A0.rpd -O A1reproduced.rpd
Give password: my_password

biserverxmlexec -I A2-1delta.xml -B A1reproduced.rpd -O A2reproduced.rpd
Give password: my_password

元のリポジトリ・ファイルを上書きしないように、-Bおよび-O引数に異なる名前を指定していることを確認してください。

パッチ・マージの詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Enterprise Editionメタデータ・リポジトリ作成者ガイド』を参照してください。

6.3.2 他のシステムからのメタデータの移行について

他のビジネス・インテリジェント・システムやレポート作成システムがあり、メタデータをOracle Business Intelligenceに移行する場合は、サード・パーティのメタデータをOracle Business Intelligenceの標準XML書式に変換するアダプタを記述できます。XMLスキーマ・ファイル(xudml1.xsd)は、Oracle Business Intelligenceメタデータの構造を理解する手段となります。互換性のあるXMLメタデータ・ファイルを生成できたら、biserverxmlexecユーティリティを使用して対応するRPDファイルを作成できます。

6.3.3 実行中のOracle BIサーバーに対するメタデータ・パッチの適用

管理ツールを使用して、オフライン・モードのリポジトリに変更を加えている場合は、XMLパッチ機能でオンライン・リポジトリに変更を加えることができ、サーバーを再起動したり、変更を手動で適用する必要もありません。

これには、管理ツールで新しいバージョンのリポジトリを開いて、実行中のバージョンと比較し、「パッチの作成」機能を使用してXMLパッチ・ファイルを作成します。biserverxmlcliユーティリティを使用して実行中のOracle BIサーバーにパッチを適用します。例:

biserverxmlcli -U my_user -D my_server_dsn -I my_xml_file_pathname
Give user password: my_password
Give repository password: my_repos_password

6.3.4 プログラムによるメタデータの操作について

Oracle BIサーバーXML APIを使用することで、Oracle BIリポジトリ・メタデータを変更するカスタム・アプリケーションを開発できます。このために、biserverxmlgenユーティリティを使用してRPDファイルからXMLを生成し、汎用的なXMLパーサーでXMLを解析できます。Oracle BIのXMLユーティリティはコマンドライン・ユーティリティであるため、バッチ・ファイルやスクリプトから、またはコード内からプロセスとして起動できます。プログラムでXMLを変更し、biserverxmlexecユーティリティを使用して変更を含んだ新しいRPDを生成できます。

たとえば、クローニング・アプリケーション・フレームワーク(CAF)は、特定のアプリケーション用に開発されたコンテンツをOracle BIサーバーXML APIを使用して複製するため、そのコンテンツを他のアプリケーションでも使用できます。CAFアプリケーションは、アプリケーション間でコンテンツを再利用することを目的としているため、再度開発する必要がありません。

CAFユーザーは、プレゼンテーション・レイヤー・オブジェクトと論理ディメンション階層を、あるRPDから他のRPDの対応する名前にマップできます。CAFアプリケーションは、biserverxmlgenユーティリティを使用して最初のRPDのXMLを生成し、このXMLをスキャンして、ビジネス・モデルとマッピング・レイヤーおよび物理レイヤーにおけるプレゼンテーション・レイヤー・オブジェクトの依存関係を特定します。次に、(列、サブジェクト・エリアおよび式など)必要なプレゼンテーション、ビジネス・モデルおよびマッピング・レイヤー・オブジェクトを作成します。これは最初のRPDのオブジェクトと同一ですが、マップされた適切な名前が付けられています。対応するXMLを準備したら、biserverxmlexecユーティリティを使用してクローンRPDを生成します。

6.3.4.1 XMLを使用してプログラムでリポジトリ・オブジェクトを作成する例

この例では、Billed Qtyというプレゼンテーション列をSample Smallサブジェクト・エリアのFacts Revenueプレゼンテーション・テーブルに追加する方法を示します。ビジネス・モデルがベースにしている論理列はすでに存在し、"Sample Small"."F0 Rev Base Measures"."2-01 Billed Qty (Sum All)"という名前が付けられています。

図6-1は、この例の完成した状態を示しています。

図6-1 リポジトリ内に存在する対応するプレゼンテーション列がない論理列

図6-1の説明が続きます
「図6-1 リポジトリ内に存在する対応するプレゼンテーション列がない論理列」の説明

プログラムでプレゼンテーション列を追加するには、2つのメタデータの変更が必要です。

  1. <PresentationColumn>オブジェクトを新しいBilled Qtyプレゼンテーション列に作成する必要があります。これは、マップする2-01 Bill Qty (Sum All)論理列と、属しているFacts Revenueプレゼンテーション表を参照する必要があります。

  2. <PresentationTable name="Facts Revenue">オブジェクトが新しいBilled Qtyプレゼンテーション列オブジェクトを参照するように更新する必要があります。

図6-2は、新しいプレゼンテーション列を作成した後に管理ツールでどのように表示されるかを示しています。

図6-2 新しいプレゼンテーション列に相当する管理ツール

図6-2の説明が続きます
「図6-2 新しいプレゼンテーション列に相当する管理ツール」の説明

メタデータを更新するために、最初にChange.rpdxというXMLファイルを作成します。このファイルには必要なメタデータの変更をXML形式で記述します。次のコードを追加します。

<?xml version="1.0" encoding="iso-8859-1"?>
<Repository xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <DECLARE>
    <PresentationColumn name="Billed Qty" parentName="&quot;Sample Small&quot;..
    &quot;Facts Revenue&quot;" parentId="4008:2143"
    parentUid="80cab573-07d0-0000-714b-e31d00000000"
    hasDispName="false"
    overrideLogicalName="true">
      <Description>
        <![CDATA[This presentation column was added using the XML metadata API.]]>
      </Description>
      <RefLogicalColumn uid="946" id="2006:106" qualifiedName="&quot;Sample 
      Small&quot;.&quot;F0 Rev Base Measures&quot;.&quot;2-01 Billed Qty (Sum 
      All)&quot;"/>
    </PresentationColumn>
  </DECLARE>
</Repository>

このコードは、プレゼンテーション列を追加します。このプレゼンテーション列は、自身が属する親のプレゼンテーション表(Facts Revenue)と、マップ先の論理列("2-01 Billed Qty (Sum All)")を参照します。新しいプレゼンテーション列には修飾名が与えられますが、idおよびuidは指定されません。これらは、Oracle BIサーバーによって変更済RPDファイルがロードされるときに自動的に作成されます。

プレゼンテーション列オブジェクトの追加に加えて、既存プレゼンテーション・テーブル・オブジェクトから新しいオブジェクトへの参照を追加する必要があります。これには、biserverxmlgenを使用して現在のリポジトリのXMLバージョンを生成し、プレゼンテーション表の名前(Facts Revenue)でXMLを検索します。次のプレゼンテーション表のコードをクリップボードにコピーします。

    <PresentationTable name="Facts Revenue" parentName="&quot;Sample Small&quot;.
    &quot;&quot;" parentId="4004:2137" parentUid="73609" id="4008:2143"
    uid="73625"
    hasDispName="false">
      <Description>
        <![CDATA[This folder contains several types of aggregation metrics
        leveraging single revenue fact column. It also contains aggregations
        metrics based on Forecast physical table]]>
      </Description>
      <Aliases>
      <Alias name="F1 Revenue"/>
      </Aliases>
      <Columns>
        <RefPresentationColumn uid="80cbbe7b-07d6-0000-714b-e31d00000000"
        id="4010:1707" qualifiedName="&quot;Sample Small&quot;
        ..&quot;Facts Revenue&quot;.&quot;Revenue&quot;"/>
      </Columns>
    </PresentationTable>

Facts Revenueプレゼンテーション・テーブルのコードをChange.rpdxファイルに貼り付けて、これを参照する適切なプレゼンテーション列を追加します。最終的なChange.rpdxファイルは次のようになり、キー・メタデータの変更は太字で示しています。

<?xml version="1.0" encoding="iso-8859-1"?>
<Repository xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <DECLARE>
    <PresentationTable name="Facts Revenue" parentName="&quot;Sample Small&quot;.
    &quot;&quot;"
    parentId="4004:2137" parentUid="80cab573-07d0-0000-714b-e31d00000000"
    id="4008:12457" uid="80cab839-0fa8-0000-714b-e31d00000000"
    hasDispName="false">
      <Description>
        <![CDATA[This folder contains several types of aggregation metrics
        leveraging single revenue fact column. It also contains aggregations
        metrics based on Forecast physical table]]>
      </Description>
      <Aliases>
      <Alias name="F1 Revenue"/>
      </Aliases>
      <Columns>
        <RefPresentationColumn uid="80cb981e-0faa-0000-714b-e31d00000000"
        id="4010:1707" qualifiedName="&quot;Sample Small&quot;..&quot;
        Facts Revenue&quot;.&quot;Revenue&quot;"/>
        <RefPresentationColumn qualifiedName="&quot;Sample Small&quot;.
        .&quot;Facts Revenue&quot;.&quot;Billed Qty&quot;"/>
      </Columns>
    </PresentationTable>
    <PresentationColumn name="Billed Qty" parentName="&quot;Sample Small&quot;.
    .&quot;Facts Revenue&quot;" parentId="4008:2143"     parentUid="80cab573-07d0-0000-714b-e31d00000000"
    hasDispName="false" overrideLogicalName="true">
      <Description>
        <![CDATA[This presentation column was added using the XML metadata API.]]>
      </Description>
      <RefLogicalColumn uid="80cbbe7b-07d6-0000-714b-e31d00000000"
      id="2006:106" qualifiedName="&quot;SampleSmall&quot;.&quot;
      F0 Rev Base Measures&quot;.&quot;2-01 Billed Qty (Sum All)&quot;"/>
    </PresentationColumn>
  </DECLARE>
</Repository>

最後にbiserverxmlexecユーティリティを実行して、元のRPDファイルを更新するためにChange.rpdxを実行します。

6.3.5 テスト環境から本番環境への移行

テスト環境から本番環境へ移行する場合、通常はデータ・ソースの接続プール設定を更新する必要があります。Oracle BIサーバーXML APIを使用すると、リポジトリのこの設定をプログラムから更新できます。

このタスクを行うには、まず管理ツールでテスト・リポジトリを開き、データ・ソースの接続プール設定を手動で更新し、リポジトリを別の名前で保存する必要があります。次に、管理ツールを使用して元のリポジトリと新しいリポジトリを比較し、変更を含んだXMLパッチを作成できます。最後に、biserverxmlexecまたはbiserverxmlcliを使用して、テスト・リポジトリに対して変更を実行できます。

例6-1では、シナリオの例を使用してこれらのタスクを実行する方法を手順ごとに説明しています。

例6-1 接続プールのテストの値から本番の値への更新

この例では、2つの接続プールのテストの値をプログラムによって本番の値に更新する方法を示します。

次の表は、テストおよび本番環境における、2つのデータ・ソースの例に対する2つの値の例を示しています。

環境 データ・ソース・タイプ データ・ソース名 ユーザー名 パスワード
テスト リレーショナル orcl_test user_test password_test
テスト XML VALUEOF(ORACLE_HOME)/XML_data/Forecast なし なし
本番 リレーショナル orcl_prod user_prod password_prod
本番 XML VALUEOF(ORACLE_HOME)/fcast_data/Forecast なし なし

接続プールのテストの値をプログラムによって本番の値に更新する手順は、次のとおりです。

  1. 管理ツールでテスト・リポジトリ(SampleApp_test.rpdなど)を開きます。

  2. 物理レイヤーで、変更が必要なリレーショナル・ソースの接続プールを開きます。

  3. データ・ソース名」、「ユーザー名」および「パスワード」の値を本番値に更新します。「OK」をクリックします。

  4. 変更が必要なXMLソースの接続プールを開きます。

  5. データ・ソース名」の値を本番値に更新します。「OK」をクリックします。

  6. ファイル」を選択し、「名前を付けて保存」を選択します。リポジトリを新しい名前(例、SampleApp_prod.rpd)で保存します。

  7. ファイル」を選択し、「比較」を選択します。

  8. 元のリポジトリ・ファイル(SampleApp_test.rpd)を選択し、現在開いているリポジトリ・ファイル(SampleApp_prod.rpd)と比較します。

    「リポジトリの比較」ダイアログには、変更した2つの接続プールが示されます。

  9. パッチの作成」をクリックし、作成するパッチの名前(例、SampleApp_diff.xml)を入力し、「保存」をクリックします。

    結果のXMLパッチ・ファイルは次のようになります。

    <?xml version="1.0" encoding="UTF-8" ?>
    <Repository xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <DECLARE>
    <ConnectionPool name="SampleApp_XML" parentName="&quot;1 - Sample App Xml 
      Data&quot;" parentId="3023:84"
      parentUid="80ca62be-0bcf-0000-714b-e31d00000000" id="3029:1158"
      uid="80ca62c4-0bcf-0000-714b-e31d00000000"
      password="D7EDED84BC624A917F5B462A4DCA05CDCE256EEEEEDC97D5AC4D07C3A079829F"
      timeout="300" maxConnDiff="10" maxConn="10"
      dataSource="VALUEOF(BI_EE_HOME)/fcast_data/Forecast" type="Default"
      reqQualifedTableName="false" isSharedLogin="false"
      isConcurrentQueriesInConnection="false" isCloseAfterEveryRequest="true"
      xmlRefreshInterval="4294967295" outputType="xml" bulkInsertBufferSize="0"
      transactionBoundary="0" xmlaUseSession="false" multiThreaded="false"
      supportParams="false" isSiebelJDBSecured="false">
      <Description></Description>
    </ConnectionPool>
    <ConnectionPool name="SampleApp_Relational" parentName="&quot;1 - Sample App 
      Data&quot;" parentId="3023:85"
      parentUid="80cc60c9-0bcf-0000-714b-e31d00000000" id="3029:1159" 
      uid="80ca62bf-0bd5-0000-714b-e31d00000000" user="user_prod"
      password="D7EDED84BC624A917F5B462A4DCA05CDCE256EEEEEDC97D5A1
      50C61FBEB9092AF80FAEC9819DD51771A41425D03FB466B55BB9F03BCF6439"   timeout="4294967295" maxConnDiff="10" maxConn="10" dataSource="orcl_prod"
      type="OCI10G" reqQualifedTableName="false" isSharedLogin="true"
      isConcurrentQueriesInConnection="false" isCloseAfterEveryRequest="false"
      outputType="xml" bulkInsertBufferSize="131072" tempTablePrefix="TT"
      transactionBoundary="1000" xmlaUseSession="false" isSiebelJDBSecured="false">
      <Description></Description>
    </ConnectionPool>
    </DECLARE>
    </Repository>
    
  10. パッチの作成後、テスト・リポジトリで引き続き名前などの変更が行われる場合があります。パッチ・コードのparentNamesや他の属性に影響する可能性があります。このような状況が発生した場合は、この項の手順に従ってパッチを再生成してください。

  11. biserverxmlexecによって、生成済XMLパッチ・ファイルをテスト・バージョンのリポジトリに対して実行し、接続プールの設定をプログラムで更新できます。例:

    biserverxmlexec -I SampleApp_diff.xml -B SampleApp_test.rpd 
    -O SampleApp_prod.rpd
    Give password: my_rpd_password
    

    Oracle BIサーバーにロードされたリポジトリに対してXMLパッチ・ファイルを実行するには、biserverxmlcliを使用します。

6.3.6 XSLを使用したXMLファイルの変換

生成したXMLファイルの変換を実行するには、XSLファイルを使用します。たとえば、オブジェクトIDやUIDが競合しないように削除する場合にXSLを使用します。

例6-2は、モデルとして独自の変換に使用可能なXSLスクリプトの例を示しています。このスクリプトの例は、リポジトリ内のすべての論理表を無効にします。

例6-2 XSLスクリプトの例

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
xmlns:xalan="http://xml.apache.org/xslt"
xmlns:fn="http://www.w3.org/2003/11/xpath-functions">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
cdata-section-elements="Description Expr Value" xalan:indent-amount="4"/>
<xsl:strip-space elements="*"/>

<xsl:template match="/Repository/DECLARE">
  <xsl:element name="Repository">
    <xsl:element name="DECLARE">
      <xsl:for-each select="./*">
        <xsl:call-template name="objectmatch"/>
      </xsl:for-each>
    </xsl:element>
  </xsl:element>
</xsl:template>

<!-- The 'objectmatch' template is matched for every metadata object -->
<xsl:template name="objectmatch">
  <xsl:choose>
    <!-- We copy every object except for Logical Table Sources. We call the
    'ltsmatch' template for LTSs -->
    <xsl:when test="name() = 'LogicalTableSource'">
      <xsl:call-template name="ltsmatch"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:copy-of select=".">
        <xsl:apply-templates/>
      </xsl:copy-of>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

<!-- The 'ltsmatch' template gets matched for every logical table source. -->
<xsl:template name="ltsmatch">
  <xsl:element name="LogicalTableSource">
    <xsl:for-each select="./@*">
      <!-- We call the 'ltspropmatch' template to process specific attributes on
      the LTS -->
      <xsl:call-template name="ltspropmatch"/>
    </xsl:for-each>
    <xsl:for-each select="./*">
      <xsl:call-template name="objectmatch"/>
    </xsl:for-each>
  </xsl:element>
</xsl:template>

<xsl:template name="ltspropmatch">
  <xsl:choose>
    <!-- When we encounter the 'isActive' property, we set it to false. -->
    <xsl:when test="name() = 'isActive'">
      <xsl:attribute name="isActive">
        <xsl:text>false</xsl:text>
      </xsl:attribute>
    </xsl:when>
    <xsl:otherwise>
      <xsl:copy-of select=".">
        <xsl:apply-templates/>
      </xsl:copy-of>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

</xsl:stylesheet>

6.3.7 コマンドライン・ツールを使用した権限の設定

コマンドライン・ツールbiserverxmlexecおよびbiserverxmlcliを使用すると、様々なプレゼンテーション・オブジェクトおよびマーケティング・オブジェクトに対する権限を設定できます。

目的の機能を実現するには、biserverxmlexecおよびbiserverxmlcliへの入力となるXMLファイルで、SetPermission要素を適切なロール、ユーザーおよびオブジェクト・サブ要素と一緒に作成します。その後、選択したコマンドライン・ユーティリティを実行します。XMLを実行すると、SetPermission要素で指定した権限が出力レポジトリに生成されます。

SetPermission要素の例を含め、詳細は、第10.2.11項「XML要素: SetPermission」を参照してください。

6.4 XMLの汎用的な要素と属性

この項では、Description、nameおよびidなど、汎用的な共通要素と属性について説明します。Oracle BIサーバーのXMLスキーマ(.xsd file)では、これらの要素と属性は、object_tおよびref_t要素に定義します。

共通要素はDescription要素のみです。この要素は、特定のオブジェクトを説明するテキスト文字列を保持できます。例:

<Description>
   <![CDATA[ Generated by Time Series Wizard ]]> 
</Description>

object_tで定義される共通属性は11個あります。表6-1に、これらの属性を示します。

表6-1 object_tの共通XML属性

属性名 説明

name

オブジェクトの名前。

parentName

オブジェクトの親の修飾名。parent1.parent2.parent3などの形式で定義します。

parentId

オブジェクトの親のグローバル一意識別子。type_id:parent_object_idの形式で定義します。

parentUid

オブジェクトの親の内部識別子。修飾名のかわりにこの属性を使用してオブジェクトを参照すると、より速くアクセスできます。

id

オブジェクトのグローバル一意識別子。type_id:object_idの形式で定義します。

uid

オブジェクトの内部識別子。修飾名のかわりにこの属性を使用してオブジェクトを参照すると、より速くアクセスできます。

iconIndex

管理ツールのオブジェクトのアイコンに対する索引番号。

isDefaultReadable

trueに設定されている場合は、このオブジェクトがデフォルトで読取り可能であることを示します。

isDefaultReadWriteable

trueに設定されている場合は、このオブジェクトがデフォルトで読取りおよび書込み可能であることを示します。

isDefaultDeletable

trueに設定されている場合は、このオブジェクトがデフォルトで削除可能であることを示します。

isDefaultGrantable

trueに設定されている場合は、このオブジェクトがデフォルトで許可可能であることを示します。

isDefaultAll

trueに設定されている場合は、このオブジェクトがデフォルトで読取り、書込み、削除および許可可能であることを示します。


object_tに定義する共通属性に加えて、追加の共通属性はref_tに定義します。これらのオブジェクトは、あるオブジェクトが他の1つ以上のオブジェクトを参照する場合に使用します。たとえば、ビジネス・モデル・オブジェクトは、サブ要素のRefLogicalTableを使用して、そのビジネス・モデルに含まれている論理表を参照します。参照されるすべてのサブ要素は、表6-2に示す同一の共通属性を持ちます。

表6-2 ref_tの共通XML属性

属性名 説明

id

オブジェクトのグローバル一意識別子。type_id:object_idの形式で定義します。

uid

オブジェクトの内部識別子。修飾名のかわりにこの属性を使用してオブジェクトを参照すると、より速くアクセスできます。

qualifiedName

オブジェクトの完全修飾名。たとえば、論理列のqualifiedName属性は、次のようになります。

qualifiedName="&quot;Sample Sales&quot;.&quot;F3 
Rolling Measures&quot;.&quot;1-22L Revenue (All Hist 
Sum)&quot;"

6.4.1 オブジェクトの識別子について

Oracle BIサーバーのXMLメタデータ・オブジェクトには、3種類の識別子を指定でき、それぞれをオブジェクトの参照に使用できます。オブジェクトの識別子は次のとおりです。

  • 完全修飾名(qualifiedName)。新規オブジェクトの作成時にXMLで必ず指定する必要のある参照は、この識別子のみです。他の識別子(uidおよびid)は、Oracle BIサーバーがRPDファイルを開くときに自動的に生成されます。完全修飾名はファイル内で一意にする必要がありますが、名前(最後のピリオドの後ろのテキスト)を一意にする必要があるのは親のスコープ内のみです。

    完全修飾名は、各オブジェクトの名前が管理ツールに表示されるため、XMLリポジトリ・ファイルで特定のオブジェクトを検索する場合に最適な識別子です。例:

    qualifiedName="&quot;Sample Sales&quot;.&quot;H0 Time&quot;.&quot;Month&quot;"
    

    プレゼンテーション・オブジェクトの修飾名では、サブジェクト・エリアからプレゼンテーション表名までを使用します。この構文が使用されるのは、通常、カタログから表までを記述するプレゼンテーション・スキーマのような構造が存在しないためです。例:

    qualifiedName="&quot;Sample Small&quot;..&quot;Facts Revenue&quot;.&quot;Billed 
    Qty&quot;"
    

    データベースに物理カタログと物理スキーマがない場合は、物理レイヤー・オブジェクトに同様の表記規則を使用します。

  • uidこの識別子はUpgradeIDとも呼ばれる32ビットの数値で、リポジトリ全体で一意です。uidは、オブジェクトの存続期間にOracle BIサーバーによって作成されます。XMLで新規オブジェクトを作成する場合はこれを空欄にできます。これは、サーバーがRPDファイルをロードするときに自動的に生成するためです。オブジェクトを変更する際には、uidを変更しないようにしてください。

    uidは、比較およびマージ・アルゴリズムで使用されます。また、XMLメタデータの分析やリバース・エンジニアリングを行うとき、関係のトレースにも役立ちます。

    例: uid="80ca62be-0bcf-0000-714b-e31d00000000"

  • idこの識別子はVoidIDとも呼ばれ、オブジェクトの存続期間にOracle BIサーバーによって作成されます。これは、このオブジェクト・タイプを使用するとuidより高いパフォーマンスを実現できる状況で使用されます。

    idはuidと同様に、XMLで新規オブジェクトを作成するときに空欄にできます。これは、サーバーがRPDファイルをロードするときに自動的に生成するためです。オブジェクトを変更する際には、idを変更しないようにしてください。

    idは、タイプと、タイプ内の一意の番号(2000:123456など)の2つの情報を含む構造体です。論理列などのオブジェクト・タイプごとに、特定の番号(2000など)が関連付けられています。このため、同じタイプの2つのオブジェクトは、idの最初の部分の番号が同じになります。

    idの2番目の部分の一意の番号は、そのタイプにランダムに割り当てられた番号です。これは、タイプ内で一意である必要がありますが、異なるオブジェクト・タイプ間で一意である必要はありません。たとえば、有効なidとして2000:123456と2001:123456がリポジトリ内に存在する可能性があります。

    idは通常、Oracle BIサーバーによって作成されますが、一意性を確保できる場合は必要に応じて手動で作成できます。

    例: id="4010:1720"

6.4.2 リポジトリ・オブジェクトの命名要件について

すべてのリポジトリ・オブジェクト名は、次の要件に従う必要があります。

  • 名前は128文字以下にする必要があります。

  • 名前の先頭と末尾にスペースを使用することはできません。

  • 名前に一重引用符、二重引用符およびアスタリスクを含めることはできません。

リポジトリ・オブジェクト名には、複数バイトの文字を含めることができます。