21 相互参照でのデータのマッピング
この章では、相互参照の概要と、Service Busサービスでそれらを使用して外部システム間で同様のオブジェクトの識別子をマップする方法について説明します。また、Service Busプロジェクト内で相互参照を作成する方法についても説明します。
この章の内容は次のとおりです。
相互参照の詳細は、『Oracle SOA SuiteでのSOAアプリケーションの開発』の相互参照の操作に関する項を参照してください。
21.1 相互参照の概要
相互参照表は、複数のアプリケーションにわたる同等のオブジェクトを表す識別子をマップし、異なる外部アプリケーションで作成された同様のオブジェクトを関連付けます。
たとえば、相互参照を使用して、複数の顧客管理システムで作成されたレコードの顧客IDをマップできます。相互参照はドメイン値マップ(DVM)と似ていますが、相互参照は実行中に更新できるため、システム間で値を動的に統合できます。実行時に更新された相互参照データは、データベースに保持されます。
相互参照は、複数のOracle SOA Suiteコンポーネント間で使用できます。Service Busでは、JDeveloperとOracle Service Busコンソールの両方で相互参照表を作成できます。
21.1.1 相互参照データベース表
すべての相互参照マッピングは、表の形式で格納されます。JDeveloperでService Busプロジェクトの相互参照表を作成する場合、表のメタデータ(つまり、値ではなくキー)のみを定義します。相互参照表はすべてデータベース(デフォルトではXREF_DATA
表)に格納されます。相互参照表は、カスタムにすることも汎用(デフォルト)にすることもできます。汎用表は、インストール中に作成される単一のデータベース表にすべて格納されます(XREF_DATA
)。カスタム表はそれぞれ、作成した個別のデータベース表に格納されます。Service Busは、標準SOA Suiteデータ・ソースjdbc/SOADataSource
を使用してデータベース表にアクセスします。次の要件で独自のデータ・ソースを作成できます。
-
データ・ソースには
jdbc/xref
という名前を付ける必要があり、それ以外の場合、ランタイムによってデフォルト・スキーマが使用されます。 -
データ・ソースはXAが有効化されている必要があります。
カスタム・データベース表の作成手順は、『Oracle SOA SuiteでのSOAアプリケーションの開発』のカスタム・データベース表の作成方法に関する項を参照してください。
21.1.2 相互参照関数
Service Busメッセージ・フローでは、一連のXRef関数を使用して、XQuery式およびXSLT変換から相互参照表を参照し、受信メッセージ内の情報に基づいて実行時に相互参照エントリをルックアップ、移入および更新できます。これらの関数を使用して、相互参照表を最初に作成したときに定義したキーの値を移入します。
JDeveloper内のXRef関数には、XSLTマッパー、XQuery Mapperおよび式エディタからアクセスできます。Oracle Service Busコンソールでは、これらの関数には式および条件の各エディタから使用できます。Service Bus XRef関数の詳細は、「相互参照関数」を参照してください。
21.1.3 実行時の相互参照データの管理
Fusion Middleware Controlは、実行時の相互参照データの管理に役立つ機能を提供します。詳細および手順は、Oracle SOA SuiteおよびOracle Business Process Management Suiteの管理の相互参照の管理に関する項を参照してください。
21.2 JDeveloperでの相互参照表の作成
JDeveloperでService Busプロジェクト内に相互参照表を作成し、パイプラインおよび分割-結合のXQuery式でそれらを使用して外部システム間でオブジェクトをマップできます。
相互参照表を作成するときは、表の名前と、データを共有するエンド・システムの名前を指定することのみが必要です。設計時に各システムの値を指定する必要はありません。
21.3 Oracle Service Busコンソールでの相互参照リソースの操作
Oracle Service Busコンソールを使用している場合、新しい相互参照表を作成するか、最初にJDeveloperで作成した相互参照表を相互参照(XRef)リソースにアップロードできます。
21.3.1 コンソールでの相互参照(XRef)リソースの作成方法
相互参照表を作成するときは、表の名前と、データを共有するエンド・システムの名前を指定することのみが必要です。設計時に各システムの値を指定する必要はありません。
始める前に
「JDeveloperでの相互参照表の作成」に従って、JDeveloperですでに作成済の相互参照ファイルをアップロードする場合は、そのファイルがシステムで使用可能であることを確認してください。
コンソールで相互参照リソースを作成するには:
21.3.2 コンソールでの相互参照リソースの編集方法
Oracle Service Busコンソールを使用している場合、次の手順を使用して相互参照リソースを編集します。
コンソールで相互参照リソースを編集するには:
-
プロジェクト・ナビゲータで、編集する相互参照が含まれているプロジェクトおよびフォルダを開きます。
-
相互参照の名前を右クリックし、「開く」を選択します。
-
ソース・ファイルを変更するには、次のように実行します。
-
ツールバーの「ソースの編集」をクリックします。
「ソースの編集」ダイアログが表示されます。
-
アップロードする新しい相互参照ファイルを参照して選択するには、「参照」をクリックします。
-
ファイルのコンテンツを変更するには、ダイアログの「コンテンツ」セクションでコードを直接更新します。
-
「保存」をクリックします。
-
-
相互参照表にエンド・システムを追加するには、「エンド・システム」表の上にある「追加」をクリックし、表示される新しい行にシステムの名前を入力します。
-
相互参照(XREF)定義エディタのツールバーで、「保存」をクリックします。
-
セッションを終了して構成をランタイムにデプロイするには、「アクティブ化」をクリックします。
21.3.3 コンソールでのカスタム・データベース表の作成方法
前述したように、すべての実行時データはデフォルトでXREF_DATA
表に格納されます。カスタム・データベース表を作成する場合は、次のステップを実行します。
ノート:
JDeveloperで相互参照表を作成する場合は、相互参照エディタからカスタム・データベース作成スクリプトを直接実行できます。Oracle Service Busコンソールを使用する場合は、カスタム・データベース表を手動で作成します。詳細は、『Oracle SOA SuiteでのSOAアプリケーションの開発』のカスタム・データベース表の作成方法に関する項を参照してください。
コンソールでカスタム・データベース表を作成するには:
21.4 相互参照リソースの削除
削除するリソースを参照しているリソースがある場合、そのリソースを削除する前にそれらの参照を削除します。
リソースは他のリソースによって参照されていても削除できますが、その場合、削除されたリソースへの未解決の参照が原因で、競合が発生する可能性があります。
21.4.1 相互参照リソースの削除方法
相互参照を削除する前に、参照および依存性を確認してください。Oracle Service Busコンソールの相互参照(XREF)定義エディタで相互参照リソースを開き、右上の「ツール」アイコンをクリックし、「参照」を選択してそこに参照があるかどうかを確認します。JDeveloperでは、XQueryリソースを右クリックして、「依存性の参照」を選択します。
相互参照リソースを削除するには:
- アプリケーション・ナビゲータまたはプロジェクト・ナビゲータで、削除するリソースが含まれているプロジェクトおよびフォルダを開きます。
- リソースの名前を右クリックし、「削除」を選択します。
- JDeveloperを使用している場合、確認ダイアログに変換のための参照の数が表示されます。「使用方法の表示」をクリックして参照に関する情報を表示し、リソースを削除することを確定するため「はい」をクリックします。
- Oracle Service Busコンソールを使用している場合は、「アクティブ化」をクリックして、セッションを終了し、実行時用に構成をデプロイします。
21.5 Oracle Service Busでの相互参照表への移入
相互参照を使用して特定の値をルックアップする前に、実行時にそれに移入する必要があります。Service Busで提供されている相互参照XPath関数を使用して相互参照表に移入します。
XPath関数により、相互参照列に移入し、ルックアップを実行し、列値を削除できます。これらのXPath関数は、式ビルダーで使用して式を作成したり、XSLTマッパーで使用して変換を作成できます。「式ビルダー」ダイアログには、いくつかのパイプライン・アクティビティおよび分割-結合操作からアクセスできます。
Service Busによって提供されるXRef関数の詳細は、「相互参照関数」を参照してください。Oracle Service Bus Console式エディタおよび条件エディタの一般情報と手順については、「エディタ・ワークスペースのテキスト・フィールドでの式の構築」を参照してください。
JDeveloperでの相互参照データの管理の詳細、例および手順は、『Oracle SOA SuiteでのSOAアプリケーションの開発』の次のトピックを参照してください。これらのトピックの情報は、Oracle Service Busコンソールで作業する場合にも役立ちます。