ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Business Intelligence Enterprise Editionインテグレーターズ・ガイド
11g リリース1(11.1.1)
B63033-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

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

Oracle Business Intelligenceでは、Oracle BIサーバーXML APIを使用してOracle BIリポジトリ・メタデータの汎用的なXMLベース表現を作成するユーティリティが提供されています。このXMLファイル版のリポジトリは、プログラムによるメタデータの変更に使用されます。Oracle BIサーバーXML APIは、メタデータの移行、プログラムによるメタデータの生成と操作、メタデータのパッチ適用およびその他の機能を実行するために使用できます。

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

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

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

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

ORACLE_HOME/bifoundation/server/bin

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要素で参照できます。

12.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メタデータ・リポジトリ作成者ガイド』のオブジェクトの等化に関する項を参照してください。

12.2 XMLの生成と実行

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

XMLユーティリティを実行する前に、bi-init.cmd (UNIXではbi-init.sh)を実行し、Oracleインスタンスに対して初期化されたコマンド・プロンプトまたはシェル・ウィンドウを起動する必要があります。このユーティリティは次の場所にあります。

ORACLE_INSTANCE/bifoundation/OracleBIApplication/coreapplication/setup

次に、必要なオプションを使用して表示されたシェル・ウィンドウからbiserverxmlgen、biserverxmlexecまたはbiserverxmlcliを実行します。

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

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

この項の構成は、次のとおりです。

12.2.1 既存RPDからのXMLの生成

biserverxmlgenでは、XMLファイルを既存リポジトリ・ファイル(RPD)から生成できます。このユーティリティを使用するには、コマンド・プロンプトで次のように実行します。

biserverxmlgen -R repository_pathname [-P password] -O output_file_pathname [-8]

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

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

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

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

output_file_pathnameは、生成するXML出力ファイルの名前と場所です。出力ファイル名には.xml拡張子を指定することをお薦めします。

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

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

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

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

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

biserverxmlexec -I input_file_pathname [-B base_repository_pathname] [-P password] 
-O output_repository_pathname

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

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

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

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

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

output_repository_pathnameは、生成するRPD出力ファイルの名前と場所です。

次の例は新規リポジトリ・コール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

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

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

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

biserverxmlcli -U user_name [-P user_password] [-R repository_password]
-D data_source_name [-w ssl_pass_phrase |-y] -I XML_file_pathname

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

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_pathnameは、実行するXML入力ファイルの名前と場所です。

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

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

12.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メタデータ・リポジトリ作成者ガイド』を参照してください。

12.3.2 他のシステムからのメタデータの移行

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

12.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

12.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アプリケーションは最初のRPDのXMLをbiserverxmlgenを使用して生成し、XMLをスキャンして、ビジネス・モデル、マッピング・レイヤーおよび物理レイヤーにおけるプレゼンテーション・レイヤー・オブジェクトの依存状態を特定します。次に必要なプレゼンテーション、ビジネス・モデル・オブジェクトおよびマッピング・レイヤー・オブジェクトを作成します(列、サブジェクト・エリアおよび式など)。これは、最初のRPD内のオブジェクトと同一ですが、適切なマップ名が付けられたものです。対応するXMLを準備したら、biserverxmlexecユーティリティを使用してクローンのRPDを生成します。

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

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

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

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

図12-1の説明は図の下のリンクをクリックしてください。
「図12-1 リポジトリ内に存在する対応するプレゼンテーション列がない論理列」の説明

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

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

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

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

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

図12-2の説明
「図12-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="73625" 
    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="72927" 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="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="72927" 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="73625"
    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>

最後にbiserverxmlexecユーティリティを実行して、元のRPDファイルを更新するためにChange.rpdxを実行します。図12-3は、管理ツールで更新されたリポジトリがどのように表示されるかを示しています。

図12-3 新しいプレゼンテーション列で更新された管理ツールのリポジトリ

図12-3の説明は図の下のリンクをクリックしてください。
「図12-3 新しいプレゼンテーション列で更新された管理ツールのリポジトリ」の説明

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

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

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

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

Oracle Business Intelligenceでのテスト環境から本番環境への移行の詳細は、『Oracle Fusion Middleware管理者ガイド』の本番システムへのOracle Business Intelligenceコンポーネントの移行に関する項を参照してください。

例12-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)と比較します。

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

    図12-4 「リポジトリの比較」ダイアログ

    図12-4の説明
    「図12-4 「リポジトリの比較」ダイアログ」の説明

  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="2160747198" id="3029:1158"   uid="2160747199"
      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="2160747204" id="3029:1159" 
      uid="2160747205" 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を使用します。

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

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

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

例12-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>

12.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個あります。表12-1に、その属性を示します。

表12-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を使用して、そのビジネス・モデルに含まれている論理表を参照します。参照されるすべてのサブ要素は、表12-2と同じ共通属性を持ちます。

表12-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;"

12.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="73185"

  • 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"

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

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

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

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

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

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