ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Service Busでのサービスの開発
12c (12.2.1)
E69914-01
  目次へ移動
目次

前
次
 

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.2.1 JDeveloperでの相互参照表の作成方法

相互参照表を作成するときは、表の名前と、データを共有するエンド・システムの名前を指定することのみが必要です。設計時に各システムの値を指定する必要はありません。

JDeveloperで相互参照表を作成するには:

  1. JDeveloperのアプリケーション・ナビゲータで、相互参照を作成するService Busプロジェクトまたはフォルダを右クリックします。
  2. 表示されたメニューで、「新規」をポイントし、「相互参照(XREF)」を選択します。

    「相互参照(XREF)の作成」ダイアログが表示されます。

  3. 「ファイル名」フィールドに、相互参照ファイルの一意の名前を入力します。

    相互参照リポジトリで2つの相互参照表に同じ名前を指定することはできません。ファイル名は、.xref拡張子が付いた相互参照表の名前です。

  4. 必要に応じて、新しいディレクトリの場所および相互参照のための簡単な説明を入力します。

    この場所は、現在のアプリケーションのディレクトリ構造内である必要があります。

  5. 「エンド・システム」フィールドに、最大2つのエンド・システムの名前を入力します。

    エンド・システムを相互参照表の相互参照列にマップします。相互参照表の作成後に、システム名を追加できます。それぞれの名前は表の中で一意である必要があります。

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

    相互参照エディタに新規相互参照表が表示されます。

  7. 相互参照表に新規エンド・システムを追加するには、「エンド・システム」表の上にある「追加」をクリックし、新しく追加された行をダブルクリックして、エンド・システムの名前を入力します。
  8. この相互参照マッピングのためのカスタム・データベース表を作成するには、『Oracle SOA SuiteでのSOAアプリケーションの開発』のカスタム・データベース表の作成方法に関する項を参照してください。

21.3 Oracle Service Busコンソールでの相互参照リソースの操作

Oracle Service Busコンソールを使用している場合、新しい相互参照表を作成するか、最初にJDeveloperで作成した相互参照表を相互参照(XRef)リソースにアップロードできます。

21.3.1 コンソールでの相互参照(XRef)リソースの作成方法

相互参照表を作成するときは、表の名前と、データを共有するエンド・システムの名前を指定することのみが必要です。設計時に各システムの値を指定する必要はありません。

始める前に

「JDeveloperでの相互参照表の作成」に従って、JDeveloperですでに作成済の相互参照ファイルをアップロードする場合は、そのファイルがシステムで使用可能であることを確認してください。

コンソールで相互参照リソースを作成するには:

  1. プロジェクト・ナビゲータで、新しい相互参照マッピングを含めるプロジェクトまたはフォルダを右クリックし、「作成」をポイントして「リソース」を選択します。「その他」をクリックし、「相互参照(XRef)」「OK」の順にクリックします。

    相互参照(XRef)の作成ダイアログが表示されます。

  2. 次のいずれかを行います:
    • 既存の相互参照表をアップロードするには、「ファイルのアップロード」フィールドの横の「参照」をクリックし、JDeveloperで作成したファイルに移動して選択します。

      「リソース名」フィールドに、ファイル拡張子なしのファイル名が自動的に移入されます。この名前は変更可能です。

    • 新しい相互参照表を作成するには、その相互参照リソースの一意の名前を入力します。

  3. 必要に応じて、リソースの簡単な説明を入力します。
  4. 「作成」をクリックします。

    相互参照(XREF)定義エディタに新しい相互参照表が表示されます。

  5. 相互参照(XREF)定義エディタのツールバーで、「保存」をクリックします。
  6. セッションを終了して構成をランタイムにデプロイするには、「アクティブ化」をクリックします。

21.3.2 コンソールでの相互参照リソースの編集方法

Oracle Service Busコンソールを使用している場合、次の手順を使用して相互参照リソースを編集します。

コンソールで相互参照リソースを編集するには:

  1. プロジェクト・ナビゲータで、編集する相互参照が含まれているプロジェクトおよびフォルダを開きます。

  2. 相互参照の名前を右クリックし、「開く」を選択します。

  3. ソース・ファイルを変更するには、次のように実行します。

    1. ツールバーの「ソースの編集」をクリックします。

      「ソースの編集」ダイアログが表示されます。

    2. アップロードする新しい相互参照ファイルを参照して選択するには、「参照」をクリックします。

    3. ファイルのコンテンツを変更するには、ダイアログの「コンテンツ」セクションでコードを直接更新します。

    4. 「保存」をクリックします。

  4. 相互参照表にエンド・システムを追加するには、「エンド・システム」表の上にある「追加」をクリックし、表示される新しい行にシステムの名前を入力します。

  5. 相互参照(XREF)定義エディタのツールバーで、「保存」をクリックします。

  6. セッションを終了して構成をランタイムにデプロイするには、「アクティブ化」をクリックします。

21.3.3 コンソールでのカスタム・データベース表の作成方法

前述したように、すべての実行時データはデフォルトでXREF_DATA表に格納されます。カスタム・データベース表を作成する場合は、次の手順を実行します。

注意:

JDeveloperで相互参照表を作成する場合は、相互参照エディタからカスタム・データベース作成スクリプトを直接実行できます。Oracle Service Busコンソールを使用する場合は、カスタム・データベース表を手動で作成します。詳細は、『Oracle SOA SuiteでのSOAアプリケーションの開発』のカスタム・データベース表の作成方法に関する項を参照してください。

コンソールでカスタム・データベース表を作成するには:

  1. 相互参照(XRef)定義エディタで、「最適化の有効化」を選択します。
  2. 「表名」フィールドに、データベース表のカスタム名を入力します。

    このカスタム・データベース表名には、xref_という接頭辞を付け、XREF_DATAXREF_DELETED_DATAにはできません。

  3. 「保存」をクリックします。
  4. 次の構文を使用してOracle Fusion Middlewareデータベースのsoainfraスキーマでカスタム表を作成します。
    CREATE TABLE TABLE_NAME (
        ROW_ID VARCHAR2(48) NOT NULL,
        SYSTEM1 VARCHAR2(100),
        SYSTEM2 VARCHAR2(100),
        SYSTEM3 VARCHAR2(100),
        LAST_MODIFIED TIMESTAMP NOT NULL
    );
    

    ここでTABLE_NAMEは、カスタム表に対して手順2で指定した名前であり、SYSTEM1SYSTEM2およびSYSTEM3は、相互参照されるエンド・システムの名前です。

21.4 相互参照リソースの削除

削除するリソースを参照しているリソースがある場合、そのリソースを削除する前にそれらの参照を削除します。リソースは他のリソースによって参照されていても削除できますが、その場合、削除されたリソースへの未解決の参照が原因で、競合が発生する可能性があります。

21.4.1 相互参照リソースの削除方法

相互参照を削除する前に、参照および依存性を確認してください。Oracle Service Busコンソールの相互参照(XREF)定義エディタで相互参照リソースを開き、右上の「ツール」アイコンをクリックし、「参照」を選択してそこに参照があるかどうかを確認します。JDeveloperでは、XQueryリソースを右クリックして、「依存性の参照」を選択します。

相互参照リソースを削除するには:

  1. アプリケーション・ナビゲータまたはプロジェクト・ナビゲータで、削除するリソースが含まれているプロジェクトおよびフォルダを開きます。
  2. リソースの名前を右クリックし、「削除」を選択します。
  3. JDeveloperを使用している場合、確認ダイアログに変換のための参照の数が表示されます。「使用方法の表示」をクリックして参照に関する情報を表示し、リソースを削除することを確定するため「はい」をクリックします。
  4. 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コンソールで作業する場合にも役立ちます。

  • 相互参照表への移入に関する項

  • 相互参照表のルックアップに関する項

  • 相互参照表値の削除に関する項