ヘッダーをスキップ
Oracle Enterprise Service Bus 開発者ガイド
10g (10.1.3.4.0)
B50869-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

8 相互参照の作成

Oracle Enterprise Service Busの相互参照機能を使用すると、様々なアプリケーションで作成された同等のエンティティのIDを関連付けることができます。たとえば、相互参照を使用して、あるアプリケーションで作成された顧客エンティティ(ネイティブIDはCust_100)を、別のアプリケーションにおける同一顧客のエンティティ(ネイティブIDはCT_001)に関連付けることができます。

この章では、相互参照を作成、移入および使用する方法について説明します。項目は次のとおりです。

相互参照の概要

通常、あるアプリケーションでオブジェクトを作成または更新した場合、その変更内容を別のアプリケーションにも伝播させる必要があります。たとえば、SAPアプリケーションで新規顧客が作成された場合、同じ顧客に関する新規エントリをOracle E-Business Suiteアプリケーション(EBS)でも作成する必要があります。

ただし、統合対象の各アプリケーションでは、同じ情報の表現に異なるエンティティを使用している可能性があります。たとえば、SAPアプリケーションでの新規顧客の場合、CustomerデータベースにはSAP_001などの一意IDとともに新規の1行が挿入されます。この情報がOracle E-Business SuiteアプリケーションとSiebelアプリケーションに伝播するときには、EBS_1001SBL001などの異なるIDとともに新規の1行が挿入される必要があります。このような場合、異なるアプリケーションで同一エンティティを参照するIDとして解釈できるように、各IDを相互にマップするなんらかの機能が必要になります。相互参照表を使用すると、このマッピングを実行できます。表8-1に、様々なアプリケーションの顧客IDに関する情報を含む相互参照表を示します。

表8-1 相互参照表サンプル

SAP EBS SBL

SAP_001

EBS_1001

SBL001

SAP_002

EBS_1002

SBL002


また、あるアプリケーションで顧客情報が更新され、変更内容を他のアプリケーションにも伝播させる必要がある場合も、IDマッピングが必要になります。異なるIDを統合するには、相互参照表の全IDにマップする共通値統合パターンを使用する方法もあります。たとえば、表8-1の相互参照表に、さらにCommonという1列を追加できます。更新後の相互参照表は、表8-2のようになります。

表8-2 Common列が追加された相互参照表

SAP EBS SBL Common

SAP_001

EBS_1001

SBL001

CM001

SAP_002

EBS_1002

SBL002

CM002


図8-1に、共通値統合パターンを使用して様々なアプリケーションのIDをマップする方法を示します。

図8-1 共通値統合パターンの例

図8-1の説明は次にあります。
「図8-1 共通値統合パターンの例」の説明

相互参照表は、メタデータと実際のデータという2つの部分で構成されています。メタデータは相互参照コマンドライン・ユーティリティにより作成され、リポジトリにXMLファイルとして格納されます。実際のデータは、データベースに格納されます。

相互参照表を使用すると、実行時に列の値を参照できます。ただし、相互参照を特定の値の参照に使用する前に、実行時に移入する必要があります。この操作は、相互参照XPath関数を使用して実行できます。XPath関数を使用すると、相互参照の移入、参照の実行および列の値の削除ができます。これらのXPath関数を「式ビルダー」ダイアログ・ボックスで使用して式を作成したり、XSLTマッパー・ダイアログ・ボックスで使用して変換を作成できます。

「式ビルダー」ダイアログ・ボックスは、「ルーティング・ルール」パネルで「式ビルダーの起動」アイコンをクリックすると表示されます。図8-2に、「式ビルダー」ダイアログ・ボックスで相互参照関数を選択する様子を示します。

図8-2 「式ビルダー」ダイアログ・ボックスに相互参照関数が表示されている状態

図8-2の説明は次にあります。
「図8-2 「式ビルダー」ダイアログ・ボックスに相互参照関数が表示されている状態」の説明

XSLTマッパー・ダイアログ・ボックスは、XSLファイルを作成してXMLスキーマ間でデータを変換するときに表示されます。図8-3に、XSLTマッパー・ダイアログ・ボックスで相互参照関数を選択する様子を示します。

図8-3 XSLTマッパー・ダイアログ・ボックスに相互参照関数が表示されている状態

図8-3の説明は次にあります。
「図8-3 XSLTマッパー・ダイアログ・ボックスに相互参照関数が表示されている状態」の説明

相互参照コマンドライン・ユーティリティの概要

Oracle Enterprise Service Busには、相互参照管理に使用できるように一連のコマンドライン・ユーティリティが用意されています。名称はそれぞれxreftool、xrefimportおよびxrefexportです。


注意:


これらのコマンドライン・ユーティリティを使用する前に、Oracle SOA Suite Serverを起動する必要があります。

xrefimportおよびxrefexportユーティリティを使用すると、相互参照のメタデータとデータをインポートおよびエクスポートできます。

xreftoolユーティリティを使用すると、相互参照表や列の作成など、相互参照のメタデータを作成できます。ただし、xreftoolコマンドを使用して相互参照表を移入することはできません。xreftoolコマンドを使用して相互参照表を変更および削除することもできます。xreftoolユーティリティを使用する手順は、次のとおりです。

  1. 環境変数としてOC4J_USERNAMEおよびOC4J_PASSWORDという2つの変数を作成します。

  2. コマンド・プロンプトを起動します。

  3. プロンプトから次のコマンドを入力します。

    cd <ORACLE_HOME>\integration\esb\bin
    
  4. プロンプトから次のコマンドを入力します。

    xreftool -shell
    

    このコマンドにより相互参照シェルが起動し、xreftoolコマンドを実行できます。

表8-3に、各種xreftoolコマンドを示します。

表8-3 xreftoolコマンド

機能 コマンド

複数のコマンドの逐次実行

xreftool COMMAND1 ARGS1 COMMAND2 ARGS2

ファイルからのコマンドの実行

xreftool -f FILELOCATION

すべてのxreftoolコマンドの説明の表示

xreftool help


相互参照表の作成、変更および削除

xreftoolユーティリティを使用すると、相互参照表を作成、変更および削除できます。相互参照表を作成するには、相互参照シェルで次のコマンドを使用します。

createTable TableName

たとえば、createTable customersコマンドではcustomersという相互参照表が作成されます。


注意:


表名と列名には、大/小文字区別がありません。

リポジトリに存在する相互参照表の全リストを表示するには、次のxreftoolコマンドを使用します。

listTables

相互参照表の変更

列を追加または削除して、相互参照表を変更できます。表8-4に、相互参照表の変更に使用できる各種xreftoolユーティリティ・コマンドを示します。

表8-4 相互参照表の変更に使用するxreftoolコマンド

機能 コマンド

相互参照表に1列を追加

addColumns XREFTABLENAME COLUMNNAME

addColumns orders sap

相互参照表に複数列を追加

addColumns XREFTABLENAME COLUMNNAME1,COLUMNNAME2, COLUMNNAME3

addColumns orders sap,siebel

1列の削除

1列を削除すると、その列に対応するデータがデータベースから削除されます。

deleteColumn XREFTABLENAME, COLUMNNAME

deleteColumn orders sap

相互参照表の全列の表示

listColumns XREFTABLENAME

listColumns orders


相互参照表の削除

次のコマンドを使用すると相互参照表を削除できます。

deleteTable TABLENAME

次に例を示します。

deleteTable orders

表を削除すると、その表に対応するデータがデータベースから削除されます。

相互参照表の移入

相互参照表を使用する前に、実行時に移入する必要があります。この操作は、XPath拡張関数を使用して実行できます。

xref:populateXRefRow関数

xref:populateXRefRow関数を使用すると、相互参照列に値を移入できます。この関数では、移入対象の相互参照値である文字列値が戻されます。xref:populateXRefRow関数の構文は、次のとおりです。

xref:populateXRefRow(xrefTableName as string, xrefReferenceColumnName as string,
 xrefReferenceValue as string, xrefColumnName as string, xrefValue as string, mode
 as string) as string

パラメータ

  • xrefTableName: 相互参照表の名称。

  • xrefReferenceColumnName: 参照列の名称。

  • xrefReferenceValue: 参照列名に対応する値。

  • xrefColumnName: 移入される列の名称。

  • xrefValue: 列に移入される値。

  • mode: xref:populateXRefRow関数の列移入モード。値ADDLINKまたはUPDATEを指定できます。表8-5に、この3つのモードを示します。

表8-5 xref:populateXRefRow関数のモード

モード 説明 例外の原因

ADD

参照値と追加対象の値を追加します。

たとえば、xref:populateXRefRow("customers","SAP","SAP_100", "Common","CM001","ADD")では、SAP参照列に参照値SAP_100が、Common列に値CM001が追加されます。

例外は次の原因で発生する可能性があります。

  • 指定の相互参照表が見つからない場合。

  • 指定の列が見つからない場合。

  • 提供された値が空の場合。

  • 追加される値が、対象表の対象列で一意でない場合。

  • 対象行の列に値が含まれている場合。

  • 参照値が存在する場合。

LINK

既存の参照値に対応する相互参照値を追加します。たとえば、xref:populateXRefRow("customers","SAP","SAP_100", "Common","CM001","Link")では、Common列の値CM001が、SAP列の値SAP_100にリンクされます。

例外は次の原因で発生する可能性があります。

  • 指定の相互参照表が見つからない場合。

  • 指定の列が見つからない場合。

  • 提供された値が空の場合。

  • 参照値が見つからない場合。

  • リンク対象の値が対象表の対象列に存在する場合。

UPDATE

既存の参照列と値のペアに対応する相互参照値を更新します。たとえば、xref:populateXRefRow("customers","SAP","SAP_100", "SAP","SAP_1001","Update")では、SAP列の値SAP_100が値SAP_1001に更新されます。

例外は次の原因で発生する可能性があります。

  • 指定の相互参照表が見つからない場合。

  • 指定の列が見つからない場合。

  • 提供された値が空の場合。

  • 更新対象の列に複数の値が見つかった場合。

  • 参照値が見つからない場合。

  • 対象行の列に値がない場合。



注意:


modeパラメータ値には大/小文字区別があり、表8-5のように大文字のみで指定する必要があります。

表8-6に、xref:populateXRefRow関数のモードと各モードの例外条件を示します。

表8-6 xref:populateXRefRow関数のモードと結果

モード 参照値 追加される値 結果

ADD

なし

あり

あり

なし

なし

あり

成功

例外

例外

LINK

なし

あり

あり

なし

なし

あり

例外

成功

例外

UPDATE

なし

あり

あり

なし

なし

あり

例外

例外

成功


xref:populateXRefRow関数の使用方法

xref:populateXRefRow関数を変換に使用すると、次の手順で相互参照表の列を移入できます。

  1. XSLTマッパー・ダイアログ・ボックスで、「ソース」ペインと「ターゲット」ペインのツリーを開きます。

  2. ソース要素をターゲット要素にドラッグ・アンド・ドロップします。

  3. 「コンポーネント・パレット」で、下矢印をクリックして「Advanced Functions」を選択します。

  4. ソース・オブジェクトをターゲット・オブジェクトに接続している線に、「populateXRefRow」をドラッグ・アンド・ドロップします。

    接続線上に「populateXRefRow」アイコンが表示されます。

  5. 「populateXRefRow」アイコンをダブルクリックします。

    図8-4のように、「関数の編集 – populateXRefRow」ダイアログ・ボックスが表示されます。

    図8-4 「関数の編集 – populateXRefRow」ダイアログ・ボックス

    図8-4の説明は次にあります。
    「図8-4 「関数の編集 – populateXRefRow」ダイアログ・ボックス」の説明

  6. 「関数の編集 – populateXRefRow」ダイアログ・ボックスの各フィールドで次の値を指定します。

    1. 「tableName」フィールドに、相互参照表の名称を入力します。

    2. 「referenceColumnName」フィールドに、相互参照列の名称を入力します。

    3. 「referenceValue」フィールドでは、値を手動で入力するか、[Ctrl]を押しながら[Space]を押してXPathビルディング・アシスタントを起動できます。[↑]および[↓]キーを押して、リスト内でオブジェクトを探し、[Enter]を押してそのオブジェクトを選択します。

    4. 「columnName」フィールドに、相互参照列の名称を入力します。

    5. 「value」フィールドでは、値を手動で入力するか、[Ctrl]を押しながら[Space]を押してXPathビルディング・アシスタントを起動できます。

    6. 「mode」フィールドに、相互参照表の列を移入する際のモード(ADDなど)を入力します。

  7. 「OK」をクリックします。

    図8-5に、移入後の「関数の編集 – populateXRefRow」ダイアログ・ボックスを示します。

    図8-5 移入後の「関数の編集 – populateXRefRow」ダイアログ・ボックス

    図8-5の説明は次にあります。
    「図8-5 移入後の「関数の編集 – populateXRefRow」ダイアログ・ボックス」の説明

xref:populateXRefRow1M関数

通常、あるシステム内の2つの値を別のシステム内の1つの値に対応付けることができます。たとえば、表8-7のように、SAP_001およびSAP_0011の値でEBSとSBLアプリケーションの1つの値を参照します。

表8-7 複数の列値を含む相互参照表

SAP EBS SBL

SAP_001

SAP_0011

EBS_1001

SBL001

SAP_002

EBS_1002

SBL002


相互参照表の1列に複数の値を移入するには、xref:populateXRefRow1M関数を使用します。xref:populateXRefRow1M関数の構文は、次のとおりです。

xref:populateXRefRow1M(xrefTableName as string, xrefReferenceColumnName as string,
 xrefReferenceValue as string, xrefColumnName as string, xrefValue as string, mode
 as string) as string

パラメータ

  • xrefTableName: 相互参照表の名称。

  • xrefReferenceColumnName: 参照列の名称。

  • xrefReferenceValue: 参照列名に対応する値。

  • xrefColumnName: 移入される列の名称。

  • xrefValue: 列に移入される値。

  • mode: xref:populateXRefRow関数の列移入モード。値ADDまたはLINKのいずれかを指定できます。表8-8に、この2つのモードを示します。

表8-8 xref:populateXRefRow1M関数のモード

モード 説明 例外の原因

ADD

参照値と追加対象の値を追加します。たとえば、xref:populateXRefRow1M("customers","SAP","SAP_100", "Common","CM002","ADD")では、参照列SAPに参照値SAP_100が、Common列に値CM002が追加されます。

例外は次の原因で発生する可能性があります。

  • 指定の相互参照表が見つからない場合。

  • 指定の列が見つからない場合。

  • 提供された値が空の場合。

  • 追加される値が、対象表の対象列で一意でない場合。

  • 参照値が存在する場合。

LINK

既存の参照値に対応する相互参照値を追加します。たとえば、xref:populateXRefRow1M("customers","SAP","SAP_100", "Common","CM001","Link")では、Common列の値CM001が、SAP列の値SAP_100にリンクされます。

例外は次の原因で発生する可能性があります。

  • 指定の相互参照表が見つからない場合。

  • 指定の列が見つからない場合。

  • 提供された値が空の場合。

  • 参照値が見つからない場合。

  • 追加される値が、対象表の列で一意でない場合。


表8-9に、xref:populateXRefRow1M関数のモードと各モードの例外条件を示します。

表8-9 xref:populateXRefRow1M関数のモードと結果

モード 参照値 追加される値 結果

ADD

なし

あり

あり

なし

なし

あり

成功

例外

例外

LINK

なし

あり

あり

なし

なし

あり

例外

成功

例外


xref:populateXRefRow1M関数を使用する際の設計時ステップは、「xref:populateXRefRow関数の使用方法」で説明したxref:populateXRefRow関数に類似しています。

相互参照表の参照

移入後の相互参照表を使用して、値を参照できます。この操作は、XPath拡張関数を使用して実行できます。

xref:lookupXRef関数

xref:lookupXRef関数を使用すると、参照列の特定の値に対応する値を相互参照列で参照できます。たとえば、次の関数では、表8-2で説明した相互参照表のCommon列で、SAP列のSAP_001値に対応する値を参照します。

xref:lookupXRef("customers","SAP","SAP_001", "Common", true())

xref:lookupXRefRow関数の構文は、次のとおりです。

xref:lookupXRef(xrefTableName as string, xrefReferenceColumnName as string,
 xrefReferenceValue as string, xrefColumnName as string, needAnException as
 boolean) as string

パラメータ

  • xrefTableName: 相互参照表の名称。

  • xrefReferenceColumnName: 参照列の名称。

  • xrefReferenceValue: 参照列名に対応する値。

  • xrefColumnName: 値が参照される列の名称。

  • needAnException: trueまたはfalseを指定します。

    needAnExceptionパラメータをtrueに設定した場合、表で参照される値が見つからなければ例外がスローされます。needAnExceptionパラメータをfalseに設定した場合、表で参照される値が見つからなければ空の値が戻されます。

例外の原因

次の原因で例外が発生する可能性があります。

  • 指定した名称の相互参照表が見つからない場合

  • 指定した列名が見つからない場合

  • 指定した参照値が空の場合

  • 複数の値が見つかった場合

xref:lookupXRef関数の使用方法

xref:lookupXRef関数を使用すると、変換中に次の手順で相互参照表の列を参照できます。

  1. XSLTマッパー・ダイアログ・ボックスで、「ソース」ペインと「ターゲット」ペインのツリーを開きます。

  2. ソース要素をターゲット要素にドラッグ・アンド・ドロップします。

  3. 「コンポーネント・パレット」で、下矢印をクリックして「Advanced Functions」を選択します。

  4. ソース・オブジェクトをターゲット・オブジェクトに接続している線に、「lookupXRef」をドラッグ・アンド・ドロップします。

    接続線上に「lookupXRef」アイコンが表示されます。

  5. 「lookupXRef」アイコンをダブルクリックします。

    図8-6のように、「関数の編集 – lookupXRef」ダイアログ・ボックスが表示されます。

    図8-6 「関数の編集 – lookupXRef」ダイアログ・ボックス

    図8-6の説明は次にあります。
    「図8-6 「関数の編集 – lookupXRef」ダイアログ・ボックス」の説明

  6. 「関数の編集 – lookupXRef」ダイアログ・ボックスの各フィールドで次の値を指定します。

    1. 「tableName」フィールドに、相互参照表の名称を入力します。

    2. 「referenceColumnName」フィールドに、相互参照列の名称を入力します。

    3. 「referenceValue」フィールドでは、値を手動で入力するか、[Ctrl]を押しながら[Space]を押してXPathビルディング・アシスタントを起動できます。[↑]および[↓]キーを押して、リスト内でオブジェクトを探し、[Enter]を押してそのオブジェクトを選択します。

    4. 「columnName」フィールドに、相互参照列の名称を入力します。

    5. 「needAnException」フィールドで、値が見つからない場合に例外を発生させるにはYes、それ以外の場合はNoを入力します。

  7. 「OK」をクリックします。

    図8-7に、移入後の「関数の編集 – lookupXRef」ダイアログ・ボックスを示します。

    図8-7 移入後の「関数の編集 – lookupXRef」ダイアログ・ボックス

    図8-7の説明は次にあります。
    「図8-7 移入後の「関数の編集 – lookupXRef」ダイアログ・ボックス」の説明

xref:lookupXRef1M関数

xref:lookupXRef1M関数を使用すると、参照列の特定の値に対応する複数の値を相互参照列で参照できます。この関数では、複数のノードを含むノードセットが戻されます。ノードセット内の各ノードに値が含まれています。

たとえば、次の関数では、表8-7SAP列で、EBS列のEBS_1001値に対応する複数の値を参照します。

xref:lookupXRef1M("customers","EBS","EBS_1001", "Common", true())

xref:lookupXRefRow1M関数の構文は、次のとおりです。

xref:lookupXRef1M(xrefTableName as string, xrefReferenceColumnName as string,
 xrefReferenceValue as string, xrefColumnName as string, needAnException as
 boolean) as node-set

パラメータ

  • xrefTableName: 相互参照表の名称。

  • xrefReferenceColumnName: 参照列の名称。

  • xrefReferenceValue: 参照列名に対応する値。

  • xrefColumnName: 値が参照される列の名称。

  • needAnException: trueまたはfalseを指定します。

    needAnExceptionパラメータをtrueに設定した場合、表で参照される値が見つからなければ例外がスローされます。needAnExceptionパラメータをfalseに設定した場合、表で参照される値が見つからなければ空の値が戻されます。

例外の原因

次の原因で例外が発生する可能性があります。

  • 指定した名称の相互参照表が見つからない場合

  • 指定した列名が見つからない場合

  • 指定した参照値が空の場合

xref:lookupXRef1M関数を使用する際の設計時ステップは、「xref:lookupXRef関数の使用方法」で説明したxref:lookupXRef関数に類似しています。

相互参照表の値の削除

xref:markForDelete関数を使用すると、相互参照表の値を削除できます。列の値には、削除済のマークが付きます。この関数では、削除に成功した場合はtrue、それ以外の場合はfalseが戻されます。

相互参照表の行には、2つ以上のマッピングが必要です。そのため、1行にマッピングが2つしかない場合、値の1つに削除マークを付けると、他方の列の値も削除されます。

削除マークが付いている列値は、値が存在しないものとして処理されます。したがって、xref:populateXRefRow関数をADDモードで使用して同じ列を移入できます。

ただし、削除マークが付いた列値をxref:populateXRefRow関数のLINKモードで参照値として使用すると、エラーが発生します。

xref:markForDelete関数の構文は、次のとおりです。

xref:markForDelete(xrefTableName as string, xrefColumnName as string,
xrefValueToDelete as string) return as boolean

パラメータ

例外の原因

例外は次の原因で発生する可能性があります。

相互参照表の列から値を削除する手順は、次のとおりです。

  1. XSLTマッパー・ダイアログ・ボックスで、「ソース」ペインと「ターゲット」ペインのツリーを開きます。

  2. ソース要素をターゲット要素にドラッグ・アンド・ドロップします。

  3. 「コンポーネント・パレット」で、下矢印をクリックして「Advanced Functions」を選択します。

  4. ソース・オブジェクトをターゲット・オブジェクトに接続している線に、「markForDelete」をドラッグ・アンド・ドロップします。

    接続線上に「markForDelete」アイコンが表示されます。

  5. 「markForDelete」アイコンをダブルクリックします。

    図8-8のように、「関数の編集 – markForDelete」ダイアログ・ボックスが表示されます。

    図8-8 「関数の編集 – markForDelete」ダイアログ・ボックス

    図8-8の説明は次にあります。
    「図8-8 「関数の編集 – markForDelete」ダイアログ・ボックス」の説明

  6. 「関数の編集 – markForDelete」ダイアログ・ボックスの各フィールドで次の値を指定します。

    1. 「tableName」フィールドに、相互参照表の名称を入力します。

    2. 「columnName」フィールドに、列の名称を入力します。

    3. 「value」フィールドでは、値を手動で入力するか、[Ctrl]を押しながら[Space]を押してXPathビルディング・アシスタントを起動できます。[↑]および[↓]キーを押して、リスト内でオブジェクトを探し、[Enter]を押してそのオブジェクトを選択します。

    図8-9に、移入後の「関数の編集 – markForDelete」ダイアログ・ボックスを示します。

    図8-9 移入後の「関数の編集 – markForDelete」ダイアログ・ボックス

    図8-9の説明は次にあります。
    「図8-9 移入後の「関数の編集 – markForDelete」ダイアログ・ボックス」の説明

  7. 「OK」をクリックします。

相互参照のインポートおよびエクスポート

xrefimportおよびxrefexportユーティリティを使用して、相互参照表をインポートおよびエクスポートできます。ただし、xrefimportおよびxrefexportユーティリティを使用する前に、次の環境変数を作成する必要があります。


注意:


OC4J_USERNAMEおよびOC4J_PASSWORD環境変数を事前に作成していない場合は、この2つの環境変数も作成する必要があります。

以降の各項では、相互参照表のインポート方法とエクスポート方法について説明します。

相互参照表のエクスポート

xrefexportユーティリティを使用すると、相互参照表のメタデータを値とともにエクスポートできます。エクスポートしたデータは、XMLファイルに格納されます。このXMLファイルのベースとなるスキーマの定義は、「相互参照用スキーマ定義(XSD)ファイル」を参照してください。エクスポートする表に値のない列が含まれている場合、エクスポートされたXMLファイルでは、欠落している列値が空のcell要素で置換されます。

相互参照表をエクスポートするには、次のコマンドを使用します。

xrefexport -file FILENAME -table TABLENAME

FILENAMEおよびTABLENAMEパラメータは必須です。FILENAMEパラメータでは、データのエクスポート先ファイルの場所を指定します。TABLENAMEパラメータでは、エクスポートする相互参照表の名称を指定します。

相互参照表のインポート

xrefimportユーティリティを使用すると、XMLファイルから相互参照表のメタデータをインポートできます。インポートするXMLファイルは、スキーマに基づく必要があります。スキーマの定義は、「相互参照用スキーマ定義(XSD)ファイル」を参照してください。

相互参照メタデータをインポートするには、次のコマンドを使用します。

xrefimport -file FILENAME [-mode <ignore | overwrite>] [ -generate <columnName>]

次のリストに、xrefimport関数の各種パラメータを示します。

  • FILENAME: FILENAMEパラメータでは、データのインポート元ファイルの場所を指定します。

  • mode: modeパラメータでは、既存データとの競合の処理方法を指定します。modeパラメータでは、値ignoreまたはoverwriteを指定できます。値ignoreは、既存のデータをリポジトリに保持する必要があることを示します。値overwriteは、既存のデータをXMLファイル内のデータで上書きする必要があることを示します。modeパラメータはオプションであり、競合が存在する場合にのみ使用されます。デフォルト値はignoreです。

  • generate: generateパラメータを使用すると、メタデータのインポート中に1列を自動的に作成できます。たとえば、generate SAPでは、メタデータのインポート中にSAP列が自動的に作成されます。

相互参照用スキーマ定義(XSD)ファイル

例8-1に、相互参照XSDファイルを示します。インポートされた相互参照XMLファイルはすべて、このスキーマ定義ファイルと照合して検証されます。スキーマ定義ファイル内の関数は、すべて次のネームスペースに存在する必要があります。

http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions

例8-1 相互参照XSDファイル

<?xml version="1.0" encoding="UTF-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://xmlns.oracle.com/xref"
        xmlns:tns="http://xmlns.oracle.com/xref" elementFormDefault="qualified">
  <element name="xref" type="tns:xrefType"/>
  <complexType name="xrefType">
    <sequence>
      <element name="table">
        <complexType>
          <sequence>
            <element name="columns" type="tns:columnsType" minOccurs="0"
                     maxOccurs="1"/>
            <element name="rows" type="tns:rowsType" maxOccurs="1"
                     minOccurs="0"/>
          </sequence>
          <attribute name="name" use="required">
            <simpleType>
             <restriction base="string">
              <minLength value="1"/>
             </restriction>
            </simpleType>
          </attribute>
        </complexType>
      </element>
    </sequence>
  </complexType>

  <complexType name="columnsType">
    <sequence>
      <element name="column" minOccurs="1" maxOccurs="unbounded">
        <complexType>
          <attribute name="name" use="required">
            <simpleType>
             <restriction base="string">
               <minLength value="1"/>
             </restriction>
            </simpleType>
          </attribute>
        </complexType>
      </element>
    </sequence>
  </complexType>

  <complexType name="rowsType">
    <sequence>
      <element name="row" minOccurs="1" maxOccurs="unbounded">
        <complexType>
          <sequence>
            <element name="cell" minOccurs="1" maxOccurs="unbounded">
              <complexType>
                <simpleContent>
                  <extension base="string">
                    <attribute name="colName" use="required">
                      <simpleType>
                        <restriction base="string">
                           <minLength value="1"/>
                        </restriction>
                      </simpleType>
                    </attribute>
                  </extension>
                </simpleContent>
              </complexType>
            </element>
          </sequence>
        </complexType>
      </element>
    </sequence>
  </complexType>
</schema>