ヘッダーをスキップ
Oracle® Fusion Middleware Oracle SOA Suite開発者ガイド
11g リリース1 (11.1.1.4.0)
B56238-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

46 相互参照の使用

この章では、Oracle SOA Suiteの相互参照機能を使用して、別のアプリケーションで作成された同等のエンティティの識別子を関連付ける方法を説明します。

項目は次のとおりです。

46.1 相互参照の概要

相互参照を使用すると、別のアプリケーションで作成された同等のエンティティの値を動的にマップできます。


注意:

相互参照機能ではアプリケーション間の値を動的に統合できるのに対し、ドメイン値マップでは設計時に値を指定して実行時に値を編集できます。ドメイン値マップの詳細は、第44章「ドメイン値マップの使用」および第45章「ドメイン値マップでのOracle SOAコンポーザの使用」を参照してください。

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

46.2 相互参照表の概要

相互参照は表形式で保存されます。表46-1に、様々なアプリケーションの顧客IDに関する情報を含む相互参照表を示します。

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

SAP EBS SBL

SAP_001

EBS_1001

SBL001

SAP_002

EBS_1002

SBL002


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

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

SAP EBS SBL Common

SAP_001

EBS_1001

SBL001

CM001

SAP_002

EBS_1002

SBL002

CM002


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

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

図46-1の説明が続きます
「図46-1 共通値統合パターンの例」の説明

相互参照表は、メタデータと実際のデータという2つの部分で構成されています。メタデータはOracle JDeveloperで作成された.xrefファイルとして保存され、XMLファイルとしてメタデータ・サービス(MDS)リポジトリに格納されています。実際のデータは、デフォルトでSOAインフラストラクチャ・データベース・スキーマにあるデータベースのXREF_DATA表に格納されます。相互参照エンティティごとにカスタム・データベース表を生成することもできます。データベース表は、相互参照エンティティのメタデータによって異なります。

次の2つの相互参照エンティティを考えてみます。

表46-3 ORDER表

列名 SIEBEL COMMON EBS

Column Value

SBL_101

COM_100

EBS_002

Column Value


COM_110

EBS_012


表46-4 CUSTOMER表

列名 EBS COMMON PORTAL

Column Value

EBS_201

COM_200

P2002


1つの汎用表にすべてのランタイム・データを保存するように選択すると、表46-5に示すように、データはXREF_DATAコード表に保存されます。

表46-5 XREF_DATA表

XREF_TABLE_NAME XREF_COLUMN_NAME ROW_NUMBER VALUE IS_DELETED

ORDER

SIEBEL

100012345

SBL_101

N

ORDER

COMMON

100012345

COM_100

N

ORDER

EBS

100012345

EBS_002

N

ORDER

COMMON

110012345

COM_110

N

ORDER

EBS

110012345

EBS_012

N

CUSTOMER

EBS

200212345

EBS_201

N

CUSTOMER

COMMON

200212345

COM_200

N

CUSTOMER

PORTAL

200212345

P2002

N


このアプローチには、次のメリットがあります。

一方、このアプローチには次のデメリットがあります。

これらの問題を解決するために、相互参照エンティティごとにカスタム・データベース表を生成できます。カスタム・データベース表は、相互参照エンティティのメタデータによって異なります。たとえば、XREF_ORDER表およびXREF_CUSTOMER表には、表46-6および表46-7に示すようなカスタム・データベース表を生成できます。

表46-6 XREF_ORDER表

ROW_ID SIEBEL COMMON EBS

100012345

SBL_101

COM_100

EBS_002

110012345


COM_110

EBS_012


表46-7 XREF_CUSTOMER表

ROW_ID EBS COMMON PORTAL

200212345

EBS_201

COM_200

P2002


このアプローチでは、データ定義言語(DDL)スクリプトを実行してカスタム・データベース表を生成する必要があります。カスタム・データベース表の詳細は、第46.3.3項「カスタム・データベース表の作成方法」を参照してください。

46.3 相互参照表の作成および変更

相互参照表はSOAコンポジット・アプリケーションで作成し、トランスフォーメーション中にBPELプロセス・サービス・コンポーネントまたはOracle Mediatorサービス・コンポーネントで使用できます。

46.3.1 相互参照メタデータの作成方法

相互参照メタデータを作成する手順は、次のとおりです。

  1. Oracle JDeveloperで、相互参照を作成するSOAプロジェクトを選択します。

  2. プロジェクトを右クリックし、「新規」を選択します。

    「新規ギャラリ」ダイアログが表示されます。

  3. 「カテゴリ」セクションから「SOA層」を選択し、次に「トランスフォーメーション」を選択します。

  4. 「項目」セクションから、「相互参照(XREF)」を選択します。

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

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

  6. 「ファイル名」フィールドに、相互参照ファイルの名前を指定します。たとえば、Customerを指定します。

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

  7. 「説明」フィールドに、相互参照の説明を入力します。例:

    Cross reference of Customer identifiers.
    
  8. 「エンド・システム」フィールドで、エンド・システム名を入力します。

    エンド・システムを相互参照表の相互参照列にマップします。たとえば、最初のエンド・システム名をSAP、2番目のエンド・システム名をEBSに変更できます。各エンド・システム名は相互参照内で一意であることが必要です。

    「相互参照(XREF)の作成」ダイアログのサンプルは、図46-2に表示されています。

    図46-2 「相互参照(XREF)の作成」ダイアログ

    図46-2の説明が続きます
    「図46-2 「相互参照(XREF)の作成」ダイアログ」の説明

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

    図46-3に示すように、相互参照エディタが表示されます。このエディタを使用して相互参照を変更できます。

    図46-3 相互参照エディタ

    図46-3の説明が続きます
    「図46-3 相互参照エディタ」の説明

46.3.2 相互参照作成時の処理内容

拡張子.xrefの付いたファイルが作成され、「アプリケーション・ナビゲータ」に表示されます。すべての.xrefファイルは、例46-1に示すスキーマ定義(XSD)ファイルに基づいています。

例46-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="description" type="string" minOccurs="0"
                     maxOccurs="1"/>
            <element name="columns" type="tns:columnsType" minOccurs="0"
                     maxOccurs="1"/>
            <element name="rows" type="tns:rowsType" maxOccurs="1"
                     minOccurs="0"/>
          </sequence>
          <attribute name="name" type="string" use="required"/>
        </complexType>
      </element>
    </sequence>
  </complexType>
  
  <complexType name="columnsType">
    <sequence>
      <element name="column" minOccurs="1" maxOccurs="unbounded">
        <complexType>
          <attribute name="name" type="string" use="required"/>
        </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>
                <attribute name="colName" type="string" use="required"/>
              </complexType>
            </element>
          </sequence>
        </complexType>
      </element>
    </sequence>
  </complexType>
</schema>

46.3.3 カスタム・データベース表の作成方法

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

カスタム・データベース表を作成する手順は、次のとおりです。

  1. 相互参照エディタの「最適化」リストで「はい」を選択します。

    図46-4に示すように、生成するカスタム・データベース表の名前が「表名」フィールドに表示されます。

    図46-4 カスタム・データベース表の生成

    カスタム・データベース表の生成
    「図46-4 カスタム・データベース表の生成」の説明

    「表名」フィールドは編集可能で、カスタム表の名前を変更できます。カスタム・データベース表の名前には、xref_の接頭辞を付けてください。表名にxref_接頭辞を付けないと、表を生成する際に次のエラー・メッセージが表示されます。

    Table name should begin with 'xref_' and cannot be 'xref_data' or 
    'xref_deleted_data' which are reserved table names for XREF runtime.
    
  2. 「表DDLの生成」をクリックします。「XREFの最適化」ダイアログが表示されます。

  3. 同じ名前の表がすでに存在している場合、その表と関連する索引を削除するには、「削除DDLの生成」チェック・ボックスを選択します。このオプションを選択して「実行」をクリックすると、「削除DDLの実行の警告」ダイアログに、次のメッセージが表示されます。

    Running the Drop DDL will remove the table and indexes, do you want to
    continue?
    
  4. 「実行」をクリックします。「表DDLの実行」ダイアログが表示されます。

  5. 「接続」リストから、使用するデータベース接続を選択します。

    使用可能な接続がない場合は、「新規データベース接続を作成します。」をクリックし、図46-5に示すように、「データベース接続の作成」ダイアログを開きます。既存の接続を編集する場合は、その接続を選択して「選択したデータベース接続の編集」をクリックし、「データベース接続の編集」ダイアログを開きます。

    図46-5 「データベース接続の作成」ダイアログ

    「データベース接続の作成」ダイアログ
    「図46-5 「データベース接続の作成」ダイアログ」の説明

  6. 必要な詳細をすべて入力し、「OK」をクリックします。「表DDLの実行」ダイアログの「接続」リストに値が移入されます。

  7. 「表DDLの実行」ダイアログで「OK」をクリックし、DDLスクリプトを実行します。

    「表DDL実行結果」ダイアログに、DDLスクリプトの実行ステータスが表示されます。

カスタム・データベース表では、modeおよびdbtableの2つの追加の属性が、第46.3.2項「相互参照作成時の処理内容」に記載されているスキーマ定義に追加されます。これらの属性は、次のように記述されてtable要素に追加されます。

 <attribute name="mode" type="string" default="generic" />
 <attribute name="dbtable" type="string" default="xref_data"/>

46.3.4 相互参照表へのエンド・システムの追加方法

相互参照表にエンド・システムを追加する手順は、次のとおりです。

  1. 「追加」をクリックします。

    新しい行が追加されます。

  2. 新しく追加した行をダブルクリックします。

  3. エンド・システム名を入力します。たとえば、SBLと入力します。

46.4 相互参照表の移入

Oracle JDeveloperのSOAコンポジット・アプリケーションで相互参照表を作成し、これを使用して実行時に列の値を参照できます。ただし、相互参照を使用して特定の値を参照するには、実行時に相互参照を移入する必要があります。相互参照表は、相互参照XPath関数を使用して移入できます。XPath関数を使用すると、相互参照列の移入、参照の実行および列の値の削除ができます。これらのXPath関数を「式ビルダー」ダイアログで使用して式を作成するか、またはXSLTマッパーで使用してトランスフォーメーションを作成できます。たとえば、xref:populateXRefRow関数を使用して1つの値を相互参照列に移入するか、またはxref:populateXRefRow1M関数を使用して複数の値を相互参照列に移入できます。

「式ビルダー」ダイアログには、BPELプロセス・サービス・コンポーネントまたはOracle Mediatorサービス・コンポーネントのassignアクティビティ、XSLトランスフォーメーションまたはフィルタ機能からアクセスできます。図46-6に、「式ビルダー」ダイアログで相互参照関数を選択する様子を示します。

図46-6 「式ビルダー」ダイアログに相互参照関数が表示されている状態

図46-6の説明が続きます
「図46-6 「式ビルダー」ダイアログに相互参照関数が表示されている状態」の説明

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

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

図46-7の説明が続きます
「図46-7 XSLTマッパー・ダイアログに相互参照関数が表示されている状態」の説明

相互参照表を使用するには、実行時に相互参照表を移入する必要があります。データは、デフォルトでSOAインフラストラクチャ・データベース・スキーマにあるXREF_DATA表に格納されます。xref:populateXRefRow関数を使用して1つの値を相互参照列に移入するか、またはxref:populateXRefRow1M関数を使用して複数の値を相互参照列に移入できます。


注意:

次の方法でデータ・ソースを構成することで、データを異なるデータベース・スキーマに格納することもできます。
  • データ・ソースのJNDI名をjdbc/xrefと指定します。

  • ORACLE_HOME/rcu/integration/soainfra/sql/xref/createschema_xref_oracle.sqlファイルをロードして、このデータ・ソースのXREF_DATA表を作成します。


46.4.1 xref:populateXRefRow関数

xref:populateXRefRow関数では、1つの値が相互参照列に移入されます。このxref:populateXRefRow関数では、移入対象の相互参照値である文字列値が返されます。たとえば、表46-8に示すOrder表には、EBSCommonおよびSBLという列があり、各列の値はそれぞれE100100およびSBL_001です。

表46-8 列に1つの値がある相互参照表

EBS Common SBL

E100

100

SBL_001


例46-2に、xref:populateXRefRow関数の構文を示します。

例46-2 xref:populateXRefRow関数

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

パラメータ

  • xrefLocation: 相互参照表URI。

  • xrefReferenceColumnName: 参照列の名前。

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

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

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

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

表46-9 xref:populateXRefRow関数のモード

モード 説明 例外の原因

ADD

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

たとえば、次のモードを考えてみます。

xref:populateXRefRow("customers.xref"
,"EBS","EBS100", "Common","CM001",
"ADD")

この場合、ESB参照列に参照値EBS100が、Common列に値CM001が追加されます。

次の理由により、例外が発生する可能性があります。

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

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

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

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

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

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

LINK

既存の参照値に対応する相互参照値を追加します。

たとえば、次のモードを考えてみます。

xref:populateXRefRow("customers.xref"
,"Common","CM001","SBL","SBL_
001","LINK") 

この場合、Common列の値CM001が、SBL列の値SBL_001にリンクされます。

次の理由により、例外が発生する可能性があります。

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

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

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

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

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

UPDATE

既存の参照列と値のペアに対応する相互参照値を更新します。

たとえば、次のモードを考えてみます。

xref:populateXRefRow("customers.xref"
,"SBL","SBL_001", "SBL","SBL_
1001","UPDATE")

この場合、SBL列の値SBL_001が値SBL_1001に更新されます。

次の理由により、例外が発生する可能性があります。

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

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

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

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

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

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



注意:

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

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

表46-10 xref:populateXRefRow関数のモードと結果

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

ADD

なし

あり

あり

なし

なし

あり

成功

例外

例外

LINK

なし

あり

あり

なし

なし

あり

例外

成功

例外

UPDATE

なし

あり

あり

なし

なし

あり

例外

例外

成功


46.4.2 xref:populateXRefRow1M関数

あるエンド・システム内の2つの値を、別のシステム内の1つの値に対応付けることができます。このようなシナリオでは、xref:populateXRefRow1M関数を使用して相互参照列に値を移入する必要があります。たとえば、表46-11に示すように、SAP_001およびSAP_0011の値でEBSおよびSBLアプリケーションの1つの値を参照します。SAPなどの列を移入するには、xref:populateXRefRow1M関数を使用できます。

表46-11 列に複数の値がある相互参照表

SAP EBS SBL

SAP_001

SAP_0011

EBS_1001

SBL001

SAP_002

EBS_1002

SBL002


例46-3に、xref:populateXRefRow1M関数の構文を示します。

例46-3 xref:populateXRefRow1M関数

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

パラメータ

  • xrefLocation: 相互参照URI。

  • xrefReferenceColumnName: 参照列の名前。

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

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

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

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

表46-12 xref:populateXRefRow1M関数のモード

モード 説明 例外の原因

ADD

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

たとえば、次のモードを考えてみます。

xref:populateXRefRow1M("customers.xref","
EBS","EBS_1002", "SAP","SAP_0011","ADD")

この場合、EBS参照列に参照値EBS_1002が、SAP列に値SAP_0011が追加されます。

次の理由により、例外が発生する可能性があります。

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

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

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

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

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

LINK

既存の参照値に対応する相互参照値を追加します。

たとえば、次のモードを考えてみます。

xref:populateXRefRow1M("customers.xref","
EBS","EBS_1002", "SAP","SAP_002","LINK") 

この場合、SAP列の値SAP_002が、EBS列の値EBS_1002にリンクされます。

次の理由により、例外が発生する可能性があります。

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

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

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

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

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


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

表46-13 xref:populateXRefRow1M関数のモードと結果

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

ADD

なし

あり

あり

なし

なし

あり

成功

例外

例外

LINK

なし

あり

あり

なし

なし

あり

例外

成功

例外


46.4.3 相互参照表の列の移入方法

相互参照表に1列を移入する手順は、次のとおりです。

  1. XSLTマッパーで、「ソース」および「ターゲット」ペインのツリーを開きます。

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

  3. 「コンポーネント・パレット」で、「拡張」を選択します。

  4. 「XREF Functions」を選択します。

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

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

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

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

    図46-8 「関数の編集 – populateXRefRow」ダイアログ

    図46-8の説明が続きます
    「図46-8 「関数の編集 – populateXRefRow」ダイアログ」の説明

  7. 「関数の編集 – populateXRefRow」ダイアログの各フィールドで、次の値を指定します。

    1. 「xrefLocation」フィールドに、相互参照ファイルのロケーションURIを入力します。

      「xrefLocation」フィールドの右側にある「参照」をクリックして、相互参照ファイルを選択します。「リソース・パレット」を使用して、MDSおよびMDSの共有ロケーションからもすでにデプロイした相互参照を選択できます。

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

      「referenceColumnName」フィールドの右側にある「参照」をクリックして、以前に選択した相互参照に定義されている列から列名を選択できます。

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

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

      「columnName」フィールドの右側にある「参照」をクリックして、以前に選択した相互参照に定義されている列から列名を選択できます。

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

    6. 「mode」フィールドに、相互参照表の列を移入する際のモードを入力します。たとえば、ADDと入力します。

      「参照」をクリックしてモードを選択することもできます。モードを選択できる「移入モードの選択」ダイアログが表示されます。

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

    図46-9に、移入後の「関数の編集 – populateXRefRow」ダイアログを示します。

    図46-9 移入後の「関数の編集 – populateXRefRow」ダイアログ

    図46-9の説明が続きます
    「図46-9 移入後の「関数の編集 – populateXRefRow」ダイアログ」の説明

46.5 相互参照表の参照

移入後の相互参照表を使用して、値を参照できます。xref:lookupXRefおよびxref:lookupXRef1M関数を使用すると、1つおよび複数の値の相互参照をそれぞれ参照できます。

46.5.1 xref:lookupXRef関数

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

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

例46-4に、xref:lookupXRef関数の構文を示します。

例46-4 xref:lookupXRef関数

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

パラメータ

  • xrefLocation: 相互参照URI。

  • xrefReferenceColumnName: 参照列の名前。

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

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

  • needAnException: 値がtrueに設定されると、値が見つからない場合に例外がスローされます。trueに設定されていない場合は、空の値が返されます。

例外の原因

実行時に、次の理由により例外が発生する可能性があります。

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

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

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

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

46.5.2 xref:lookupXRef1M関数

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

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

xref:lookupXRef1M("customers.xref","EBS","EBS_1001","SAP",true())

例46-5に、xref:lookupXRefRow1M関数の構文を示します。

例46-5 xref:lookupXRefRow1M関数

xref:lookupXRef1M(xrefLocation as String, xrefReferenceColumnName as String,
 xrefReferenceValue as String, xrefColumnName as String, needAnException as
 boolean) as node-set

パラメータ

  • xrefLocation: 相互参照URI。

  • xrefReferenceColumnName: 参照列の名前。

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

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

  • needAnException: 値がtrueに設定されると、参照値が見つからない場合に例外がスローされます。trueに設定されていない場合は、空のノードセットが返されます。

xref:lookupXRefRow1M関数の例

表46-14に示すように、SiebelBilling1およびBilling2の3つの列があるOrder表について考えてみます。

表46-14 Order表

Siebel Billing1 Billing2

100

101

102

110


111

112


1対1マッピングの場合、xref:lookupPopulatedColumns("Order","Siebel","100","false")メソッドは、例46-6に示す値を返します。

例46-6 xref:lookupPopulatedColumnsメソッド

<column name="BILLING1">101</column>
<column name="BILLING2">102</column>

この場合は、Billing1Billing2の両方の列が移入されます。

1対多マッピングの場合、xref:lookupPopulatedColumns("Order","Siebel","110","false")メソッドは、例46-7に示す値を返します。

例46-7 xref:lookupPopulatedColumns

<column name="BILLING2">111</column>
<column name="BILLING2">112</column>

この場合、Billing1列は移入されません。

例外の原因

次の理由により、例外が発生する可能性があります。

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

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

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

46.5.3 xref:lookupPopulatedColumns関数

xref:lookupPopulatedColumns関数を使用すると、特定の相互参照表、相互参照列および値に対して移入されたすべての列を参照できます。xref:lookupPopulatedColumns関数では、各ノードに列名と対応する値が含まれたノードセットが返されます。

例46-8に、xref:LookupPopulatedColumns関数の構文を示します。

例46-8 xref:LookupPopulatedColumns関数

xref:LookupPopulatedColumns(xrefTableName as String,xrefColumnName as
 String,xrefValue as String,needAnException as boolean)as node-set

パラメータ

  • xrefTableName: 参照表の名前。

  • xrefColumnName: 参照列の名前。

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

  • needAnException: 値がtrueに設定されると、参照列に値が見つからない場合に例外がスローされます。trueに設定されていない場合は、空のノードセットが返されます。

例外の原因

次の理由により、例外が発生する可能性があります。

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

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

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

46.5.4 相互参照表の値の参照方法

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

  1. XSLTマッパーで、「ソース」および「ターゲット」ペインのツリーを開きます。

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

  3. 「コンポーネント・パレット」で、「拡張」を選択します。

  4. 「XREF Functions」を選択します。

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

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

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

    図46-10に示すように、「関数の編集 – lookupXRef」ダイアログが表示されます。

    図46-10 「関数の編集 – lookupXRef」ダイアログ

    図46-10の説明が続きます
    「図46-10 「関数の編集 – lookupXRef」ダイアログ」の説明

  7. 「関数の編集 – lookupXRef」ダイアログのフィールドで、次の値を指定します。

    1. 「xrefLocation」フィールドに、相互参照ファイルのロケーションURIを入力します。

      「xrefLocation」フィールドの右側にある「参照」をクリックして、相互参照ファイルを選択します。「リソース・パレット」を使用して、MDSおよびMDSの共有ロケーションからもすでにデプロイされた相互参照を選択できます。

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

      「referenceColumnName」フィールドの右側にある「参照」をクリックして、以前に選択した相互参照に定義されている列から列名を選択できます。

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

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

      「columnName」フィールドの右側にある「参照」をクリックして、以前に選択した相互参照に定義されている列から列名を選択できます。

    5. 「needException」フィールドの右側にある「参照」をクリックします。「needException」ダイアログが表示されます。値が見つからない場合に例外が発生するように指定するには、「はい」を選択します。それ以外の場合は「いいえ」を選択します。

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

    図46-11に、移入後の「関数の編集 – lookupXRef」ダイアログを示します。

    図46-11 移入後の「関数の編集 – lookupXRef」ダイアログ

    図46-11の説明が続きます
    「図46-11 移入後の「関数の編集 – lookupXRef」ダイアログ」の説明

46.6 相互参照表の値の削除

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

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


注意:

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

相互参照表行には最低2つのマッピングが必要です。1行に存在するマッピングが2つのみの場合、一方の値に削除マークを付けると、他方の列の値も削除されます。

例46-9に、xref:markForDelete関数の構文を示します。

例46-9 xref:markForDelete関数

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

パラメータ

例外の原因

次の理由により、例外が発生する可能性があります。

46.6.1 相互参照表の値の削除方法

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

  1. XSLTマッパーで、「ソース」および「ターゲット」ペインのツリーを開きます。

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

  3. 「コンポーネント・パレット」で、「拡張」を選択します。

  4. 「XREF Functions」を選択します。

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

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

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

    図46-12に示すように、「関数の編集 – markForDelete」ダイアログが表示されます。

    図46-12 「関数の編集 – markForDelete」ダイアログ

    図46-12の説明が続きます
    「図46-12 「関数の編集 – markForDelete」ダイアログ」の説明

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

    1. 「xrefLocation」フィールドに、相互参照ファイルのロケーションURIを入力します。

      「xrefLocation」フィールドの右側にある「検索」アイコンをクリックして、相互参照ファイルを選択します。「リソース・パレット」を使用して、MDSおよびMDSの共有ロケーションからもすでにデプロイされた相互参照を選択できます。

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

      「columnName」フィールドの右側にある「検索」アイコンをクリックして、以前に選択した相互参照に定義されている列から列名を選択できます。

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

    図46-13に、移入後の「関数の編集 – markForDelete」ダイアログを示します。

    図46-13 移入後の「関数の編集 – markForDelete」ダイアログ

    図46-13の説明が続きます
    「図46-13 移入後の「関数の編集 – markForDelete」ダイアログ」の説明

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

46.7 相互参照ユースケースの作成および実行

この相互参照ユースケースは、Oracle EBS、SAPおよびSiebelインスタンス間の統合シナリオを実装します。このユースケースでは、SAP_01表で挿入、更新または削除操作を実行すると、EBSおよびSBL表で対応するデータが挿入または更新されます。図46-14に、このユースケースの概要を示します。

図46-14 SOAコンポジット・エディタのXrefCustAppユースケース

図46-14の説明が続きます
「図46-14 SOAコンポジット・エディタのXrefCustAppユースケース」の説明

この項で説明するサンプル・ファイルをダウンロードするには、次のURLを参照してください。

https://soasamples.samplecode.oracle.com/#mediator

46.7.1 ユース-ケースの作成方法

この項では、SOAコンポジット・アプリケーションを作成、構築およびデプロイするための設計時タスクを示します。これらのタスクは、表示されている順番で実行する必要があります。

46.7.1.1 タスク1: Oracle Databaseおよびデータベース・アダプタの構成方法

Oracle Databaseおよびデータベース・アダプタを構成する手順は、次のとおりです。

  1. このユースケースには、SCOTTデータベース・アカウントとパスワードTIGERが必要です。SCOTTアカウントのロックが解除されている必要があります。

    SYSDBAでログインしてから、XrefOrderApp1M/sqlディレクトリにあるsetup_user.sqlスクリプトを実行してアカウントのロックを解除できます。

  2. XrefOrderApp1M/sqlディレクトリにあるcreate_schema.sqlスクリプトを実行して、このユースケースに必要な表を作成します。

  3. XrefOrderApp1M/sqlディレクトリにあるcreate_app_procedure.sqlスクリプトを実行して、この統合に組み込む様々なアプリケーションをシミュレートするプロシージャを作成します。

  4. OH/rcu/integration/soainfra/sql/xref/ディレクトリにあるcreateschema_xref_oracle.sqlスクリプトを実行し、ランタイムの相互参照データを格納する相互参照表を作成します。

  5. ra.xmlファイルとweblogic-ra.xmlファイルを、$BEAHOME/META-INFから、使用しているコンピュータで新規作成したMETA-INFディレクトリにコピーします。

  6. 次のとおり、$BEAHOME/META-INFディレクトリにあるweblogic-ra.xmlファイルを編集します。

    • 次のように、プロパティをxADataSourceNameに変更します。

      <property>
       <name>xADataSourceName</name>
       <value>jdbc/DBConnection1</value>
      </property>
      
    • jndi-nameを次のように変更します。

      <jndi-name> eis/DB/DBConnection1</jndi-name>
      

    このサンプルではeis/DB/DBConnection1を使用して新規メッセージのSAP表をポーリングし、Oracle EBSおよびSiebelインスタンスをシミュレートするプロシージャに接続します。

  7. ra.xmlファイルとweblogic-ra.xmlファイルをRARファイルとしてパッケージ化し、Oracle WebLogic Server管理コンソールを使用してそのRARファイルをデプロイします。

  8. Oracle WebLogic Server管理コンソールを使用して、次の値を持つデータ・ソースを作成します。

    • jndi-name=jdbc/DBConnection1

    • user=scott

    • password=tiger

    • url=jdbc:oracle:thin:@host:port:service

    • connection-factory factory-class=oracle.jdbc.pool.OracleDataSource

  9. Oracle WebLogic Server管理コンソールを使用して、次の値を持つデータ・ソースを作成します。

    • jndi-name=jdbc/xref

    • user=scott

    • password=tiger

    • url=jdbc:oracle:thin:@host:port:service

    • connection-factory factory-class=oracle.jdbc.pool.OracleDataSource

46.7.1.2 タスク2: Oracle JDeveloperのアプリケーションおよびプロジェクトの作成方法

Oracle JDeveloperのアプリケーションおよびプロジェクトを作成する手順は、次のとおりです。

  1. Oracle JDeveloperで「ファイル」をクリックし、「新規」を選択します。

    「新規ギャラリ」ダイアログが表示されます。

  2. 「新規ギャラリ」で「一般」ノードを開き、「アプリケーション」カテゴリを選択します。

  3. 「項目」リストで「SOAアプリケーション」を選択し、「OK」をクリックします。

    SOAアプリケーションの作成ウィザードが表示されます。

  4. 「アプリケーション名」フィールドでXrefCustAppと入力し、「次へ」をクリックします。

    「SOAプロジェクトの名前付け」ページが表示されます。

  5. 「プロジェクト名」フィールドにXrefCustAppと入力し、「次へ」をクリックします。

    SOA設定の構成ページが表示されます。

  6. 「コンポジット・テンプレート」リストから「空のコンポジット」を選択し、「終了」をクリックします。

    Oracle JDeveloperの「アプリケーション・ナビゲータ」は新規のアプリケーションやプロジェクトで更新され、「SOAコンポジット・エディタ」には空白のコンポジットがあります。

  7. 「ファイル」メニューから「すべて保存」を選択します。

46.7.1.3 タスク3: 相互参照の作成方法

ユースケース用のアプリケーションおよびプロジェクトを作成した後は、相互参照表を作成する必要があります。

相互参照表を作成する手順は、次のとおりです。

  1. 「アプリケーション・ナビゲータ」で、「XrefCustApp」プロジェクトを右クリックし、「新規」を選択します。

  2. 「新規ギャラリ」ダイアログで「SOA層」ノードを開き、「トランスフォーメーション」カテゴリを選択します。

  3. 「項目」リストで「相互参照(XREF)」を選択し、「OK」をクリックします。

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

  4. 「ファイル名」フィールドで、customer.xrefと入力します。

  5. 「エンド・システム」フィールドで、SAP_01およびEBS_i76と入力します。

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

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

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

    新しい行が追加されます。

  8. 新しく追加された行にエンド・システム名としてSBL_78を入力します。

  9. 「追加」をクリックし、エンド・システム名としてCommonを入力します。

    図46-15に示すように、相互参照エディタが表示されます。

    図46-15 顧客の相互参照

    図46-15の説明が続きます
    「図46-15 顧客の相互参照」の説明

  10. 「ファイル」メニューから、「すべて保存」を選択して、相互参照エディタを閉じます。

46.7.1.4 タスク4: データベース・アダプタ・サービスの作成方法

データベース・アダプタ・サービスを作成する手順は、次のとおりです。

  1. 「コンポーネント・パレット」で「SOA」を選択します。

  2. 「データベース・アダプタ」を選択し、「公開されたサービス」スイムレーンにドラッグします。

    アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  3. 「次へ」をクリックします。

    「サービス名」ページが表示されます。

  4. 「サービス名」フィールドに、SAPと入力します。

  5. 「次へ」をクリックします。

    「サービス接続」ページが表示されます。

  6. 「アプリケーション接続」フィールドで、「DBConnection1」を選択します。

  7. 「JNDI名」フィールドに、eis/DB/DBConnection1と入力します。

  8. 「次へ」をクリックします。

    「操作タイプ」ページが表示されます。

  9. 「表の新規レコードまたは更新されたレコードをポーリング」を選択し、「次へ」をクリックします。

    「表の選択」ページが表示されます。

  10. 「表のインポート」をクリックします。

    「表のインポート」ダイアログが表示されます。

  11. 「スキーマ」から「Scott」を選択します。

  12. 「名前フィルタ」フィールドで%SAP%と入力し、「問合せ」をクリックします。

    「選択可能」フィールドにSAP_01表名が移入されます。

  13. 「SAP_01」をダブルクリックします。

    「選択済」フィールドに「SAP_01」が移入されます。

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

    ここで「表の選択」ページに「SAP_01」表が含まれます。

  15. 「SAP_01」を選択し、「次へ」をクリックします。

    「主キーの定義」ページが表示されます。

  16. 「ID」を主キーとして選択し、「次へ」をクリックします。

    「リレーションシップ」ページが表示されます。

  17. 「次へ」をクリックします。

    「属性のフィルタ処理」ページが表示されます。

  18. 「次へ」をクリックします。

    「読取り後」ページが表示されます。

  19. 「[SAP_01]表のフィールドの更新 (論理削除)」を選択し、「次へ」をクリックします。

    「論理削除」ページが表示されます。

  20. 「論理削除」フィールドで、「LOGICAL_DEL」を選択します。

  21. 「読取り値」フィールドで、Yと入力します。

  22. 「未読取り値」フィールドで、Nと入力します。

    図46-16は、アダプタ構成ウィザードの「論理削除」ページを示しています。

    図46-16 「論理削除」ページ: アダプタ構成ウィザード

    図46-16の説明が続きます
    「図46-16 「論理削除」ページ: アダプタ構成ウィザード」の説明

  23. 「次へ」をクリックします。

    「ポーリング・オプション」ページが表示されます。

  24. 「次へ」をクリックします。

    「選択条件の定義」ページが表示されます。

  25. 「次へ」をクリックします。

    「終了」ページが表示されます。

  26. 「終了」をクリックします。

    図46-17に示すように、SAPという名前のデータベース・アダプタ・サービスが作成されます。

    図46-17 SOAコンポジット・エディタのSAPデータベース・アダプタ・サービス

    図46-17の説明が続きます
    「図46-17 SOAコンポジット・エディタのSAPデータベース・アダプタ・サービス」の説明

  27. 「ファイル」メニューから「すべて保存」を選択します。

46.7.1.5 タスク5: EBSおよびSBL外部参照の作成方法

EBSおよびSBL外部参照を作成する手順は、次のとおりです。

  1. 「コンポーネント・パレット」で「SOA」を選択します。

  2. 「データベース・アダプタ」を選択し、「外部参照」スイムレーンにドラッグします。

    アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  3. 「次へ」をクリックします。

    「サービス名」ページが表示されます。

  4. 「サービス名」フィールドに、EBSと入力します

  5. 「次へ」をクリックします。

    「サービス接続」ページが表示されます。

  6. 「アプリケーション接続」フィールドで、「DBConnection1」を選択します。

  7. 「JNDI名」フィールドに、eis/DB/DBConnection1と入力します。

  8. 「次へ」をクリックします。

    「操作タイプ」ページが表示されます。

  9. 「ストアド・プロシージャまたはファンクションの呼出し」を選択し、「次へ」をクリックします。

    「ストアド・プロシージャの指定」ページが表示されます。

  10. 「スキーマ」から「Scott」を選択します。

  11. 「参照」をクリックします。

    「ストアド・プロシージャ」ダイアログが表示されます。

  12. 図46-18に示すように、「POPULATE_APP_INSTANCE」を選択します。

    図46-18 「ストアド・プロシージャ」ダイアログ

    図46-18の説明が続きます
    「図46-18 「ストアド・プロシージャ」ダイアログ」の説明

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

    図46-19に示すように、「ストアド・プロシージャの指定」ページが表示されます。

    図46-19 アダプタ構成ウィザードの「ストアド・プロシージャの指定」ページ

    図46-19の説明が続きます
    「図46-19 アダプタ構成ウィザードの「ストアド・プロシージャの指定」ページ」の説明

  14. 「次へ」をクリックします。

    「終了」ページが表示されます。

  15. 「終了」をクリックします。

    図46-20に、SOAコンポジット・エディタのEBS参照を示します。

    図46-20 SOAコンポジット・エディタのEBS参照

    図46-20の説明が続きます
    「図46-20 SOAコンポジット・エディタのEBS参照」の説明

  16. 「ファイル」メニューから「すべて保存」を選択します。

  17. ステップ2からステップ16を繰り返し、SBLという名前の外部参照をもう1つ作成します。

    このタスクを完了すると、図46-21に示すように、SOAコンポジット・エディタが表示されます。

    図46-21 SOAコンポジット・エディタのSBL参照

    図46-21の説明が続きます
    「図46-21 SOAコンポジット・エディタのSBL参照」の説明

46.7.1.6 タスク6: Loggerファイル・アダプタ外部参照の作成方法

Loggerファイル・アダプタ外部参照を作成する手順は、次のとおりです。

  1. 「コンポーネント・パレット」から「SOA」を選択します。

  2. 「ファイル・アダプタ」を選択し、「外部参照」スイムレーンにドラッグします。

    アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  3. 「次へ」をクリックします。

    「サービス名」ページが表示されます。

  4. 「サービス名」フィールドに、Loggerと入力します。

  5. 「次へ」をクリックします。

    「操作」ページが表示されます。

  6. 「操作タイプ」フィールドで、「Write File」を選択します。

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

    「ファイル構成」ページが表示されます。

  8. 「発信ファイルのディレクトリ(物理パス)」フィールドに、ファイルを書き込むディレクトリの名前を入力します。

  9. ファイル・ネーミング規則フィールドで、output.xmlと入力し、「次へ」をクリックします。

    「メッセージ」ページが表示されます。

  10. 「検索」をクリックします。

    「タイプ・チューザ」ダイアログが表示されます。

  11. 「タイプ・エクスプローラ」→「プロジェクトのスキーマ・ファイル」→「SCOTT_POPULATE_APP_INSTANCE.xsd」の順に移動し、「OutputParameters」を選択します。

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

  13. 「次へ」をクリックします。

    「終了」ページが表示されます。

  14. 「終了」をクリックします。

    図46-22に、SOAコンポジット・エディタのLogger参照を示します。

    図46-22 SOAコンポジット・エディタのLogger参照

    図46-22の説明が続きます
    「図46-22 SOAコンポジット・エディタのLogger参照」の説明

  15. 「ファイル」メニューから「すべて保存」を選択します。

46.7.1.7 タスク7: Oracle Mediatorサービス・コンポーネントの作成方法

Oracle Mediatorサービス・コンポーネントを作成する手順は、次のとおりです。

  1. 「コンポーネント・パレット」から「メディエータ」アイコンをドラッグし、SOAコンポジット・エディタの「コンポーネント」セクションにドロップします。

    「メディエータの作成」ダイアログが表示されます。

  2. 「テンプレート」リストから、「インタフェースを後で定義」を選択します。

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

    Mediator1という名前のOracle Mediatorが作成されます。

  4. 図46-23に示すように、「SAP」サービスを「Mediator1」に接続します。

    図46-23 SAPサービスのMediator1への接続

    図46-23の説明が続きます
    「図46-23 SAPサービスのMediator1への接続」の説明

  5. 「ファイル」メニューから「すべて保存」を選択します。

  6. 「コンポーネント・パレット」から別の「メディエータ」アイコンをドラッグし、SOAコンポジット・エディタの「コンポーネント」セクションにドロップします。

    「メディエータの作成」ダイアログが表示されます。

  7. 「テンプレート」リストから、「WSDLからのインタフェース定義」を選択します。

  8. 「SOAPバインディングを持つコンポジット・サービスの作成」の選択を解除します。

  9. 「WSDLファイル」フィールドの右側にある「既存のWSDLを検索します。」をクリックします。

  10. Common.wsdlファイルに移動して選択します。Common.wsdlファイルは、Samplesフォルダにあります。

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

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

    Commonという名前のOracle Mediatorが作成されます。

46.7.1.8 タスク8: Oracle Mediatorサービス・コンポーネントのルーティング・ルールの指定方法

次の操作のルーティング・ルールを指定する必要があります。

  • 挿入

  • 更新

  • ID更新

  • 削除

挿入操作のルーティング・ルールを作成する手順は、次のとおりです。

  1. 「Mediator1」Oracle Mediatorをダブルクリックします。

    メディエータ・エディタが表示されます。

  2. 「ルーティング・ルール」セクションで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。

    「ターゲット・タイプ」ダイアログが表示されます。

  3. 「サービス」を選択します。

    「ターゲット・サービス」ダイアログが表示されます。

  4. 「XrefCustApp」「メディエータ」「Common」「サービス」「Common」の順に移動します。

  5. 「insert」を選択し、「OK」をクリックします。

  6. 「フィルタ」アイコンをクリックします。

    「式ビルダー」ダイアログが表示されます。

  7. 「式」フィールドに、次の式を入力します。

    $in.Sap01Collection/top:Sap01Collection/top:Sap01/top:operation='INSERT'
    
  8. 「OK」をクリックします。

  9. 「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。

    「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。

  10. 「新規マッパー・ファイルの作成」を選択し、SAP_TO_COMMON_INSERT.xslと入力します。

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

    XSLTマッパーに、「SAP_TO_COMMON_INSERT.xsl」ファイルが表示されます。

  12. 「top:SAP01」ソース要素を「inp1:Customer」ターゲット要素にドラッグ・アンド・ドロップします。

    「自動マップ・プリファレンス」ダイアログが表示されます。

  13. 「自動マップ中」オプションから、「祖先名を考慮した要素の一致」の選択を解除します。

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

    図46-24に示すように、トランスフォーメーションが作成されます。

    図46-24 SAP_TO_COMMON_INSERT.xslトランスフォーメーション

    図46-24の説明が続きます
    「図46-24 SAP_TO_COMMON_INSERT.xslトランスフォーメーション」の説明

  15. 「コンポーネント・パレット」から、「拡張」を選択します。

  16. 「XREF Functions」を選択します。

  17. 「コンポーネント・パレット」からtop:id要素とinp1:id要素を接続している線まで「populateXRefRow」関数をドラッグ・アンド・ドロップします。

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

    「関数の編集 - populateXRefRow」ダイアログが表示されます。

  19. 「xrefLocation」フィールドの右側にある「検索」をクリックします。

    「SOAリソース・ルックアップ」ダイアログが表示されます。

  20. 「customer.xref」を選択し、「OK」をクリックします。

  21. 「referenceColumnName」フィールドで"SAP_01"と入力するか、または「検索」をクリックして列名を選択します。

  22. 「referenceValue」列に、/top:Sap01Collection/top:Sap01/top:idと入力します。

  23. 「columnName」フィールドで"Common"と入力するか、「検索」をクリックして列名を選択します。

  24. 「value」フィールドに、oraext:generate-guid()と入力します。

  25. 「mode」フィールドで"Add"と入力するか、「検索」をクリックして、このモードを選択します。

    図46-25は、移入後の「関数の編集 – populateXRefRow」ダイアログを示しています。

    図46-25 「関数の編集 – populateXRefRow」ダイアログ: XrefCustAppユースケース

    図46-25の説明が続きます
    「図46-25 「関数の編集 – populateXRefRow」ダイアログ: XrefCustAppユースケース」の説明

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

  27. 「ファイル」メニューから、「すべて保存」を選択して、「SAP_TO_COMMON_INSERT.xsl」ファイルを閉じます。

    図46-26に示すように、「ルーティング・ルール」セクションが表示されます。

    図46-26 挿入操作を行う「ルーティング・ルール」セクション

    図46-26の説明が続きます
    「図46-26 挿入操作を行う「ルーティング・ルール」セクション」の説明

更新操作のルーティング・ルールを作成する手順は、次のとおりです。

  1. 「ルーティング・ルール」セクションで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。

    「ターゲット・タイプ」ダイアログが表示されます。

  2. 「サービス」を選択します。

    「ターゲット・サービス」ダイアログが表示されます。

  3. 「XrefCustApp」「メディエータ」「Common」「サービス」「Common」の順に移動します。

  4. 「update」を選択し、「OK」をクリックします。

  5. 「フィルタ」アイコンをクリックします。

    「式ビルダー」ダイアログが表示されます。

  6. 「式」フィールドに、次の式を入力します。

    $in.Sap01Collection/top:Sap01Collection/top:Sap01/top:operation='UPDATE'
    
  7. 「OK」をクリックします。

  8. 「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。

    「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。

  9. 「新規マッパー・ファイルの作成」を選択し、SAP_TO_COMMON_UPDATE.xslと入力します。

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

    「SAP_TO_COMMON_UPDATE.xsl」ファイルが表示されます。

  11. 「top:Sap01」ソース要素を「inp1:Customer」ターゲット要素にドラッグ・アンド・ドロップします。

    「自動マップ・プリファレンス」ダイアログが表示されます。

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

  13. 「コンポーネント・パレット」から、「拡張」を選択します。

  14. 「XREF Functions」を選択します。

  15. 「コンポーネント・パレット」からtop:id要素とinp1:id要素を接続している線まで「lookupXRef」関数をドラッグ・アンド・ドロップします。

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

    「関数の編集 - lookupXRef」ダイアログが表示されます。

  17. 「xrefLocation」フィールドの右側にある「検索」をクリックします。

    「SOAリソース・ルックアップ」ダイアログが表示されます。

  18. 「customer.xref」を選択し、「OK」をクリックします。

  19. 「referenceColumnName」フィールドで"SAP_01"と入力するか、または「検索」をクリックして列名を選択します。

  20. 「referenceValue」列に、/top:Sap01Collection/top:Sap01/top:idと入力します。

  21. 「columnName」フィールドで"COMMON"と入力するか、「検索」をクリックして列名を選択します。

  22. 「needException」フィールドでtrue()と入力するか、「検索」をクリックして、このモードを選択します。

    図46-27は、移入後の「関数の編集 – lookupXRef」ダイアログを示しています。

    図46-27 「関数の編集 – lookupXRef」ダイアログ: XrefCustAppユースケース

    図46-27の説明が続きます
    「図46-27 「関数の編集 – lookupXRef」ダイアログ: XrefCustAppユースケース」の説明

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

  24. 「ファイル」メニューから、「すべて保存」を選択して、「SAP_TO_COMMON_UPDATE.xsl」ファイルを閉じます。

    図46-28に示すように、「ルーティング・ルール」セクションが表示されます。

    図46-28 挿入操作と更新操作

    図46-28の説明が続きます
    「図46-28 挿入操作と更新操作」の説明

ID更新操作のルーティング・ルールを作成する手順は、次のとおりです。

次のタスクを実行して、updateID操作のルーティング・ルールを作成します。

  1. 「ルーティング・ルール」セクションで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。

    「ターゲット・タイプ」ダイアログが表示されます。

  2. 「サービス」を選択します。

    「ターゲット・サービス」ダイアログが表示されます。

  3. 「XrefCustApp」「メディエータ」「Common」「サービス」「Common」の順に移動します。

  4. 「updateid」を選択し、「OK」をクリックします。

  5. 「フィルタ」アイコンをクリックします。

    「式ビルダー」ダイアログが表示されます。

  6. 「式」フィールドに、次の式を入力します。

    $in.Sap01Collection/top:Sap01Collection/top:Sap01/top:operation = 'UPDATEID'
    
  7. 「OK」をクリックします。

  8. 「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。

    「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。

  9. 「新規マッパー・ファイルの作成」を選択し、SAP_TO_COMMON_UPDATEID.xslと入力します。

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

    「SAP_TO_COMMON_UPDATEID.xsl」ファイルが表示されます。

  11. 「top:Sap01」ソース要素を「inp1:Customer」ターゲット要素にドラッグ・アンド・ドロップします。

    「自動マップ・プリファレンス」ダイアログが表示されます。

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

  13. 「コンポーネント・パレット」から、「拡張」を選択します。

  14. 「XREF Functions」を選択します。

  15. 「コンポーネント・パレット」からtop:id要素とinp1:id要素を接続している線まで「populateXRefRow」関数をドラッグ・アンド・ドロップします。

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

    「関数の編集 - populateXRefRow」ダイアログが表示されます。

  17. 「xrefLocation」フィールドの右側にある「検索」をクリックします。

    「SOAリソース・ルックアップ」ダイアログが表示されます。

  18. 「customer.xref」を選択し、「OK」をクリックします。

  19. 「referenceColumnName」フィールドで"SAP_01"と入力するか、または「検索」をクリックして列名を選択します。

  20. 「referenceValue」列に、/top:Sap01Collection/top:Sap01/top:refIdと入力します。

  21. 「columnName」フィールドで"SAP_01"と入力するか、「検索」をクリックして列名を選択します。

  22. 「value」フィールドに、/top:Sap01Collection/top:Sap01/top:Idと入力します。

  23. 「mode」フィールドで"UPDATE"と入力するか、「検索」をクリックして、このモードを選択します。

    図46-29は、移入後の「関数の編集 – populateXRefRow」ダイアログを示しています。

    図46-29 「関数の編集 – populateXRefRow」ダイアログ: XrefCustAppユースケース

    図46-29の説明が続きます
    「図46-29 「関数の編集 – populateXRefRow」ダイアログ: XrefCustAppユースケース」の説明

  24. 「コンポーネント・パレット」からtop:id要素とinp1:id要素を接続している線まで「lookupXRef」関数をドラッグ・アンド・ドロップします。

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

    「関数の編集 - lookupXRef」ダイアログが表示されます。

  26. 「xrefLocation」フィールドの右側にある「検索」をクリックします。

    「SOAリソース・ルックアップ」ダイアログが表示されます。

  27. 「customer.xref」を選択し、「OK」をクリックします。

  28. 「referenceColumnName」フィールドで"SAP_01"と入力するか、または「検索」をクリックして列名を選択します。

  29. 「referenceValue」列に、次の値を入力します。

    xref:populateXRefRow("customer.xref","SAP_
    01",/top:Sap01Collection/top:Sap01/top:refId,"SAP_
    01",/top:Sap01Collection/top:Sap01/top:id,"UPDATE").
    
  30. 「columnName」フィールドで"COMMON"と入力するか、「検索」をクリックして列名を選択します。

  31. 「needException」フィールドでfalse()と入力するか、「検索」をクリックして、このモードを選択します。

    図46-30は、移入後の「関数の編集 – lookupXRef」ダイアログを示しています。

    図46-30 「関数の編集 – lookupXRef」ダイアログ: XrefCustAppユースケース

    図46-30の説明が続きます
    「図46-30 「関数の編集 – lookupXRef」ダイアログ: XrefCustAppユースケース」の説明

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

  33. 「ファイル」メニューから、「すべて保存」を選択して、「SAP_TO_COMMON_UPDATEID.xsl」ファイルを閉じます。

    図46-31に示すように、「ルーティング・ルール」セクションが表示されます。

    図46-31 挿入操作、更新操作およびID更新操作

    図46-31の説明が続きます
    「図46-31 挿入操作、更新操作およびID更新操作」の説明

削除操作のルーティング・ルールを作成する手順は、次のとおりです。

  1. 「ルーティング・ルール」セクションで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。

    「ターゲット・タイプ」ダイアログが表示されます。

  2. 「サービス」を選択します。

    「ターゲット・サービス」ダイアログが表示されます。

  3. 「XrefCustApp」「メディエータ」「Common」「サービス」「Common」の順に移動します。

  4. 「delete」を選択し、「OK」をクリックします。

  5. 「フィルタ」アイコンをクリックします。

    「式ビルダー」ダイアログが表示されます。

  6. 「式」フィールドに、次の式を入力します。

    $in.Sap01Collection/top:Sap01Collection/top:Sap01/top:operation = 'DELETE'
    
  7. 「OK」をクリックします。

  8. 「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。

    「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。

  9. 「新規マッパー・ファイルの作成」を選択し、SAP_TO_COMMON_DELETE.xslと入力します。

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

    「SAP_TO_COMMON_DELETE.xsl」ファイルが表示されます。

  11. <sources>を右クリックし、「パラメータの追加」を選択します。

    「パラメータの追加」ダイアログが表示されます。

  12. 「ローカル名」フィールドに、COMMONIDと入力します。

  13. 「デフォルト値の設定」を選択します。

  14. 「式」を選択します。

  15. 「XPath式」フィールドに、次の式を入力します。

    xref:lookupXRef("customer.xref","SAP_
    01",/top:Sap01Collection/top:Sap01/top:id,"COMMON",false()).
    
  16. 「OK」をクリックします。

  17. 「top:Sap01」ソース要素を「inp1:Customer」ターゲット要素にドラッグ・アンド・ドロップします。

    「自動マップ・プリファレンス」ダイアログが表示されます。

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

  19. 「top:id」「inp1:id」を接続している線を削除します。

  20. 「COMMONID」「inp1:id」に接続します。

  21. 「inp1:id」を右クリックして「XSLノードの追加」を選択してから、「if」を選択します。

    新しいノード「if」が、「inp1:customer」「inp1:id」の間に挿入されます。

  22. 「top:id」「if」ノードに接続します。

  23. 「コンポーネント・パレット」から、「拡張」を選択します。

  24. 「XREF Functions」を選択します。

  25. 「コンポーネント・パレット」からtop:idノードとifノードを接続している線まで「markForDelete」関数をドラッグ・アンド・ドロップします。

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

    「関数の編集 - markForDelete」ダイアログが表示されます。

  27. 「xrefLocation」フィールドの右側にある「検索」をクリックします。

    「SOAリソース・ルックアップ」ダイアログが表示されます。

  28. 「customer.xref」を選択し、「OK」をクリックします。

  29. 「columnName」フィールドで"SAP_01"と入力するか、「検索」をクリックして列名を選択します。

  30. 「value」フィールドに、/top:Sap01Collection/top:Sap01/top:Idと入力します。

    図46-32は、移入後の「関数の編集 – markForDelete」ダイアログを示しています。

    図46-32 「関数の編集 – markForDelete」ダイアログ: XrefCustAppユースケース

    図46-32の説明が続きます
    「図46-32 「関数の編集 – markForDelete」ダイアログ: XrefCustAppユースケース」の説明

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

    図46-33に示すように、「SAP_TO_COMMON_DELETE.xsl」ファイルが表示されます。

    図46-33 SAP_TO_COMMON_DELETE.xsl

    図46-33の説明が続きます
    「図46-33 SAP_TO_COMMON_DELETE.xsl」の説明

  32. 「ファイル」メニューから、「すべて保存」を選択して、「SAP_TO_COMMON_DELETE.xsl」ファイルを閉じます。

    図46-34に示すように、「ルーティング・ルール」セクションが表示されます。

    図46-34 挿入操作、更新操作、ID更新操作および削除操作

    図46-34の説明が続きます
    「図46-34 挿入操作、更新操作、ID更新操作および削除操作」の説明

46.7.1.9 タスク9: 「Common」Oracle Mediatorのルーティング・ルールの指定方法

「Common」Oracle Mediatorの次の操作についてルーティング・ルールを指定する必要があります。

  • 挿入

  • 削除

  • 更新

  • ID更新

挿入操作のルーティング・ルールを作成する手順は、次のとおりです。

  1. 「Common」Oracle Mediatorをダブルクリックします。

    メディエータ・エディタが表示されます。

  2. 「ルーティング・ルール」セクションで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。

    「ターゲット・タイプ」ダイアログが表示されます。

  3. 「サービス」を選択します。

    「ターゲット・サービス」ダイアログが表示されます。

  4. 「XrefCustApp」「参照」「SBL」の順に移動します。

  5. 「SBL」を選択し、「OK」をクリックします。

  6. 「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。

    「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。

  7. 「新規マッパー・ファイルの作成」を選択し、COMMON_TO_SBL_INSERT.xslと入力します。

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

    「COMMON_TO_SBL_INSERT.xsl」ファイルが表示されます。

  9. 「inp1:Customers」ソース要素を「db:InputParameters」ターゲット要素にドラッグ・アンド・ドロップします。

    「自動マップ・プリファレンス」ダイアログが表示されます。

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

    図46-35に示すように、トランスフォーメーションが作成されます。

    図46-35 COMMON_TO_SBL_INSERT.xslトランスフォーメーション

    図46-35の説明が続きます
    「図46-35 COMMON_TO_SBL_INSERT.xslトランスフォーメーション」の説明

  11. 「ファイル」メニューから、「すべて保存」を選択して、「COMMON_TO_SBL_INSERT.xsl」ファイルを閉じます。

  12. 「同期リプライ」セクションで、「ターゲット・サービス操作を参照します。」をクリックします。

    「ターゲット・タイプ」ダイアログが表示されます。

  13. 「サービス」を選択します。

    「ターゲット・サービス」ダイアログが表示されます。

  14. 「XrefCustApp」「参照」「Logger」の順に移動します。

  15. 「Write」を選択し、「OK」をクリックします。

  16. 「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。

    「リプライ・トランスフォーメーション・マップ」ダイアログが表示されます。

  17. 「新規マッパー・ファイルの作成」を選択し、SBL_TO_COMMON_INSERT.xslと入力します。

  18. 「リクエストをリプライ・ペイロードに含める」を選択します。

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

    「SBL_TO_COMMON_INSERT.xsl」ファイルが表示されます。

  20. 「inp1:Customers」ソース要素を「db:X:APP_ID」に接続します。

  21. 「コンポーネント・パレット」から接続線上に「populateXRefRow」関数をドラッグ・アンド・ドロップします。

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

    「関数の編集 - populateXRefRow」ダイアログが表示されます。

  23. 表示されたフィールドに次の情報を入力します。

    • xrefLocation: "customer.xref"

    • referenceColumnName: "Common"

    • referenceValue: $initial.Customers/inp1:Customers/inp1:Customer/inp1:Id

    • columnName: "SBL_78"

    • value: /db:OutputParameters/db:X_APP_ID

    • mode: "LINK"

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

    図46-36に示すように、「SBL_TO_COMMON_INSERT.xsl」ファイルが表示されます。

    図46-36 SBL_TO_COMMON_INSERT.xslトランスフォーメーション

    図46-36の説明が続きます
    「図46-36 SBL_TO_COMMON_INSERT.xslトランスフォーメーション」の説明

  25. 「ファイル」メニューから、「すべて保存」を選択して、「SBL_TO_COMMON_INSERT.xsl」ファイルを閉じます。

  26. 「同期リプライ」セクションで、「値の割当て」アイコンをクリックします。

    「値の割当て」ダイアログが表示されます。

  27. 「追加」をクリックします。

    「値の割当て」ダイアログが表示されます。

  28. 「From」セクションで、「式」を選択します。

  29. 「式ビルダーの起動」アイコンをクリックします。

    「式ビルダー」ダイアログが表示されます。

  30. 「式」フィールドに次の式を入力し、「OK」をクリックします。

    concat('INSERT-',$in.OutputParameters/db:OutputParameters/db:X_APP_ID,'.xml')
    
  31. 「To」セクションで、「プロパティ」を選択します。

  32. 「jca.file.FileName」プロパティを選択し、「OK」をクリックします。

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

    図46-37に示すように、「insert」操作セクションが表示されます。

    図46-37 SBLターゲット・サービスで行う挿入操作

    図46-37の説明が続きます
    「図46-37 SBLターゲット・サービスで行う挿入操作」の説明

  34. 「ファイル」メニューから「すべて保存」を選択します。

  35. ステップ2からステップ34を繰り返し、EBSというもう1つのターゲット・サービスおよびそのルーティング・ルールを指定します。

    図46-38に、SBLおよびEBSターゲット・サービスの「insert」操作セクションを示します。

    図46-38 SBLターゲット・サービスとEBSターゲット・サービスで行う挿入操作

    図46-38の説明が続きます
    「図46-38 SBLターゲット・サービスとEBSターゲット・サービスで行う挿入操作」の説明

削除操作のルーティング・ルールを作成する手順は、次のとおりです。

次のタスクを実行して、削除操作のルーティング・ルールを作成します。

  1. 「ルーティング・ルール」セクションで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。

    「ターゲット・タイプ」ダイアログが表示されます。

  2. 「サービス」を選択します。

    「ターゲット・サービス」ダイアログが表示されます。

  3. 「XrefCustApp」「参照」「SBL」の順に移動します。

  4. 「SBL」を選択し、「OK」をクリックします。

  5. 「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。

    「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。

  6. 「新規マッパー・ファイルの作成」を選択し、COMMON_TO_SBL_DELETE.xslと入力します。

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

    「COMMON_TO_SBL_DELETE.xsl」ファイルが表示されます。

  8. 「inp1:Customers」ソース要素を「db:InputParameters」ターゲット要素にドラッグ・アンド・ドロップします。

    「自動マップ・プリファレンス」ダイアログが表示されます。

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

    図46-39に示すように、トランスフォーメーションが作成されます。

    図46-39 COMMON_TO_SBL_DELETE.xslトランスフォーメーション

    図46-39の説明が続きます
    「図46-39 COMMON_TO_SBL_DELETE.xslトランスフォーメーション」の説明

  10. 「コンポーネント・パレット」からinp1:iddb:XCUSTOMER_IDを接続している線まで「lookupXRef」関数をドラッグ・アンド・ドロップします。

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

    「関数の編集 - lookupXRef」ダイアログが表示されます。

  12. 表示されたフィールドに次の情報を入力します。

    • xrefLocation: "customer.xref"

    • referenceColumnName: "Common"

    • referenceValue: /inp1:Customers/inp1:Customer/inp1:Id

    • columnName: "SBL_78"

    • needException: false()

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

  14. 「ファイル」メニューから、「すべて保存」を選択して、「COMMON_TO_SBL_DELETE.xsl」ファイルを閉じます。

  15. 「同期リプライ」セクションで、「ターゲット・サービス操作を参照します。」をクリックします。

    「ターゲット・タイプ」ダイアログが表示されます。

  16. 「サービス」を選択します。

    「ターゲット・サービス」ダイアログが表示されます。

  17. 「XrefCustApp」「参照」「Logger」の順に移動します。

  18. 「Write」を選択し、「OK」をクリックします。

  19. 「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。

    「リプライ・トランスフォーメーション・マップ」ダイアログが表示されます。

  20. 「新規マッパー・ファイルの作成」を選択し、SBL_TO_COMMON_DELETE.xslと入力します。

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

    「SBL_TO_COMMON_DELETE.xsl」ファイルが表示されます。

  22. 「db:X_APP_ID」ソース要素を「db:X:APP_ID」ターゲットに接続します。

  23. 「コンポーネント・パレット」から接続線上に「markForDelete」関数をドラッグ・アンド・ドロップします。

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

    「関数の編集 - markForDelete」ダイアログが表示されます。

  25. 表示されたフィールドに次の情報を入力します。

    • xrefLocation: "customer.xref"

    • columnName: "SBL_78"

    • value: /db:OutputParameters/db:X_APP_ID

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

  27. 「ファイル」メニューから、「すべて保存」を選択して、「SBL_TO_COMMON_DELETE.xsl」ファイルを閉じます。

  28. 「同期リプライ」セクションで、「値の割当て」アイコンをクリックします。

    「値の割当て」ダイアログが表示されます。

  29. 「追加」をクリックします。

    「値の割当て」ダイアログが表示されます。

  30. 「From」セクションで、「式」を選択します。

  31. 「式ビルダーの起動」アイコンをクリックします。

    「式ビルダー」ダイアログが表示されます。

  32. 「式」フィールドに次の式を入力し、「OK」をクリックします。

    concat('DELETE-',$in.OutputParameters/db:OutputParameters/db:X_APP_ID,'.xml')
    
  33. 「To」セクションで、「プロパティ」を選択します。

  34. 「jca.file.FileName」プロパティを選択し、「OK」をクリックします。

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

    図46-40に示すように、「delete」操作セクションが表示されます。

    図46-40 SBLターゲット・サービスで行う削除操作

    図46-40の説明が続きます
    「図46-40 SBLターゲット・サービスで行う削除操作」の説明

  36. 「ファイル」メニューから「すべて保存」を選択します。

  37. ステップ1からステップ36を繰り返し、EBSというもう1つのターゲット・サービスおよびルーティング・ルールを指定します。

    図46-41に、SBLおよびEBSターゲット・サービスの「delete」操作セクションを示します。

    図46-41 SBLターゲット・サービスとEBSターゲット・サービスで行う削除操作

    図46-41の説明が続きます
    「図46-41 SBLターゲット・サービスとEBSターゲット・サービスで行う削除操作」の説明

更新操作のルーティング・ルールを作成する手順は、次のとおりです。

次のタスクを実行して、更新操作のルーティング・ルールを作成します。

  1. 「ルーティング・ルール」セクションで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。

    「ターゲット・タイプ」ダイアログが表示されます。

  2. 「サービス」を選択します。

    「ターゲット・サービス」ダイアログが表示されます。

  3. 「XrefCustApp」「参照」「SBL」の順に移動します。

  4. 「SBL」を選択し、「OK」をクリックします。

  5. 「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。

    「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。

  6. 「新規マッパー・ファイルの作成」を選択し、COMMON_TO_SBL_UPDATE.xslと入力します。

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

    「COMMON_TO_SBL_UPDATE.xsl」ファイルが表示されます。

  8. 「inp1:Customers」ソース要素を「db:InputParameters」ターゲット要素にドラッグ・アンド・ドロップします。

    「自動マップ・プリファレンス」ダイアログが表示されます。

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

    図46-39に示すように、トランスフォーメーションが作成されます。

  10. 「コンポーネント・パレット」からinp1:iddb:XCUSTOMER_IDを接続している線まで「lookupXRef」関数をドラッグ・アンド・ドロップします。

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

    「関数の編集 - lookupXRef」ダイアログが表示されます。

  12. 表示されたフィールドに次の情報を入力します。

    • xrefLocation: "customer.xref"

    • referenceColumnName: "Common"

    • referenceValue: /inp1:Customers/inp1:Customer/inp1:Id

    • columnName: "SBL_78"

    • needException: true()

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

  14. 「ファイル」メニューから、「すべて保存」を選択して、「COMMON_TO_SBL_UPDATE.xsl」ファイルを閉じます。

  15. 「同期リプライ」セクションで、「ターゲット・サービス操作を参照します。」をクリックします。

    「ターゲット・タイプ」ダイアログが表示されます。

  16. 「サービス」を選択します。

    「ターゲット・サービス」ダイアログが表示されます。

  17. 「XrefCustApp」「参照」「Logger」の順に移動します。

  18. 「Write」を選択し、「OK」をクリックします。

  19. 「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。

    「リプライ・トランスフォーメーション・マップ」ダイアログが表示されます。

  20. 「新規マッパー・ファイルの作成」を選択し、SBL_TO_COMMON_UPDATE.xslと入力します。

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

    「SBL_TO_COMMON_UPDATE.xsl」ファイルが表示されます。

  22. 「db:X:APP_ID」ソース要素を「db:X:APP_ID」に接続します。

  23. 「ファイル」メニューから、「すべて保存」を選択して、「SBL_TO_COMMON_UPDATE.xsl」ファイルを閉じます。

  24. 「同期リプライ」セクションで、「値の割当て」アイコンをクリックします。

    「値の割当て」ダイアログが表示されます。

  25. 「追加」をクリックします。

    「値の割当て」ダイアログが表示されます。

  26. 「From」セクションで、「式」を選択します。

  27. 「式ビルダーの起動」アイコンをクリックします。

    「式ビルダー」ダイアログが表示されます。

  28. 「式」フィールドに次の式を入力し、「OK」をクリックします。

    concat('UPDATE-',$in.OutputParameters/db:OutputParameters/db:X_APP_ID,'.xml')
    
  29. 「To」セクションで、「プロパティ」を選択します。

  30. 「jca.file.FileName」プロパティを選択し、「OK」をクリックします。

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

    図46-42に示すように、「update」操作セクションが表示されます。

    図46-42 SBLターゲット・サービスで行う更新操作

    図46-42の説明が続きます
    「図46-42 SBLターゲット・サービスで行う更新操作」の説明

  32. 「ファイル」メニューから「すべて保存」を選択します。

  33. ステップ1からステップ32を繰り返し、EBSというもう1つのターゲット・サービスおよびそのルーティング・ルールを指定します。

    図46-43に、SBLおよびEBSターゲット・サービスの「update」操作セクションを示します。

    図46-43 SBLターゲット・サービスとEBSターゲット・サービスで行う更新操作

    図46-43の説明が続きます
    「図46-43 SBLターゲット・サービスとEBSターゲット・サービスで行う更新操作」の説明

ID更新操作のルーティング・ルールを作成する手順は、次のとおりです。

次のタスクを実行して、ID更新操作のルーティング・ルールを作成します。

  1. 「ルーティング・ルール」セクションで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。

    「ターゲット・タイプ」ダイアログが表示されます。

  2. 「サービス」を選択します。

    「ターゲット・サービス」ダイアログが表示されます。

  3. 「XrefCustApp」「参照」「SBL」の順に移動します。

  4. 「SBL」を選択し、「OK」をクリックします。

  5. 「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。

    「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。

  6. 「新規マッパー・ファイルの作成」を選択し、COMMON_TO_SBL_UPDATEID.xslと入力します。

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

    「COMMON_TO_SBL_UPDATEID.xsl」ファイルが表示されます。

  8. 「inp1:Customers」ソース要素を「db:InputParameters」ターゲット要素にドラッグ・アンド・ドロップします。

    「自動マップ・プリファレンス」ダイアログが表示されます。

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

    図46-39に示すように、トランスフォーメーションが作成されます。

  10. 「コンポーネント・パレット」からinp1:iddb:X_CUSTOMER_IDを接続している線まで「lookupXRef」関数をドラッグ・アンド・ドロップします。

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

    「関数の編集 - lookupXRef」ダイアログが表示されます。

  12. 表示されたフィールドに次の情報を入力します。

    • xrefLocation: customer.xref

    • referenceColumnName: Common

    • referenceValue: /inp1:Customers/inp1:Customer/inp1:Id

    • columnName: SBL_78

    • needException: false()

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

  14. 「ファイル」メニューから、「すべて保存」を選択して、「COMMON_TO_SBL_UPDATEID.xsl」ファイルを閉じます。

  15. 「同期リプライ」セクションで、「ターゲット・サービス操作を参照します。」をクリックします。

    「ターゲット・タイプ」ダイアログが表示されます。

  16. 「サービス」を選択します。

    「ターゲット・サービス」ダイアログが表示されます。

  17. 「XrefCustApp」「参照」「Logger」の順に移動します。

  18. 「Write」を選択し、「OK」をクリックします。

  19. 「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。

    「リプライ・トランスフォーメーション・マップ」ダイアログが表示されます。

  20. 「リクエストをリプライ・ペイロードに含める」を選択します。

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

    「SBL_TO_COMMON_UPDATEID.xsl」ファイルが表示されます。

  22. 「inp1:Customers」ソース要素を「db:X:APP_ID」に接続します。

  23. 「コンポーネント・パレット」から接続線上に「populateXRefRow」関数をドラッグ・アンド・ドロップします。

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

    「関数の編集 - populateXRefRow」ダイアログが表示されます。

  25. 表示されたフィールドに次の情報を入力します。

    • xrefLocation: customer.xref

    • referenceColumnName: Common

    • referenceValue: $initial.Customers/inp1:Customers/inp1:Customer/inp1:Id

    • columnName: SBL_78

    • value: /db:OutputParameters/db:X_APP_ID

    • mode: UPDATE

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

  27. 「ファイル」メニューから、「すべて保存」を選択して、「SBL_TO_COMMON_UPDATEID.xsl」ファイルを閉じます。

  28. 「同期リプライ」セクションで、「値の割当て」アイコンをクリックします。

    「値の割当て」ダイアログが表示されます。

  29. 「追加」をクリックします。

    「値の割当て」ダイアログが表示されます。

  30. 「From」セクションで、「式」を選択します。

  31. 「式ビルダーの起動」アイコンをクリックします。

    「式ビルダー」ダイアログが表示されます。

  32. 「式」フィールドに次の式を入力し、「OK」をクリックします。

    concat('UPDATEID-',$in.OutputParameters/db:OutputParameters/db:X_APP_ID,'.xml')
    
  33. 「To」セクションで、「プロパティ」を選択します。

  34. 「jca.file.FileName」プロパティを選択し、「OK」をクリックします。

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

    図46-44に示すように、「updateid」操作セクションが表示されます。

    図46-44 SBLターゲット・サービスで行うID更新操作

    図46-44の説明が続きます
    「図46-44 SBLターゲット・サービスで行うID更新操作」の説明

  36. 「ファイル」メニューから「すべて保存」を選択します。

  37. ステップ1からステップ36を繰り返し、EBSというもう1つのターゲット・サービスおよびルーティング・ルールを指定します。

    図46-45に、SBLおよびEBSターゲット・サービスの「updateid」操作セクションを示します。

    図46-45 SBLターゲット・サービスとEBSターゲット・サービスで行うID更新操作

    図46-45の説明が続きます
    「図46-45 SBLターゲット・サービスとEBSターゲット・サービスで行うID更新操作」の説明

46.7.1.10 タスク10: アプリケーション・サーバー接続の構成方法

SOAコンポジット・アプリケーションをデプロイするには、アプリケーション・サーバー接続が必要です。アプリケーション・サーバー接続の作成方法の詳細は、第41.7.1.1.1項「アプリケーション・サーバー接続の作成」を参照してください。

46.7.1.11 タスク11: コンポジット・アプリケーションのデプロイ方法

次の手順で、XrefCustAppコンポジット・アプリケーションをデプロイします。

  • アプリケーション・デプロイメント・プロファイルの作成

  • アプリケーション・サーバーへのアプリケーションのデプロイ

これらの手順の詳細は、第41.7.1項「Oracle JDeveloperでの単一のSOAコンポジットのデプロイ」を参照してください。

46.7.2 XrefCustAppアプリケーションの実行方法と監視方法

デプロイしたXrefCustAppアプリケーションは、XrefCustApp/sqlフォルダのinsert_sap_record.sqlファイルから任意のコマンドを使用することで実行できます。正常に完了すると、レコードがEBSおよびSBL表に挿入および更新され、Logger参照がoutput.xmlファイルに出力を書き出します。

実行中のインスタンスの監視には、次のURLにあるOracle Enterprise Manager Fusion Middleware Controlコンソールを使用できます。

http://hostname:port_number/em

ここで、hostnameは、Oracle SOA Suiteインフラストラクチャをインストールしたホストです。port_numberはサービスを実行するポートです。

46.8 1M関数の相互参照の作成および実行

相互参照ユースケースは、2つのエンド・システム(Oracle EBSインスタンスおよびSAPインスタンス)間の統合シナリオを実装します。このユースケースでは、注文はSAPからEBSに渡されます。SAPでは注文は一意のIDで表されますが、EBSではこの注文がID1とID2の2つの注文に分割されます。このシナリオはデータベース・アダプタを使用して作成されます。SAP表の更新レコードまたは新規レコードをポーリングすると、SAPインスタンスが作成されます。EBSでは、このインスタンスがプロシージャによってシミュレートされ、表に移入されます。図46-46に、このユースケースの概要を示します。

図46-46 SOAコンポジット・エディタのXrefOrderAppユースケース

図46-46の説明が続きます
「図46-46 SOAコンポジット・エディタのXrefOrderAppユースケース」の説明

この項で説明するサンプル・ファイルをダウンロードするには、次のURLを参照してください。

https://soasamples.samplecode.oracle.com/#mediator

46.8.1 ユース-ケースの作成方法

この項では、SOAコンポジット・アプリケーションを作成、構築およびデプロイするための設計時タスクを説明します。これらのタスクは、表示されている順番で実行する必要があります。

46.8.1.1 タスク1: Oracle Databaseおよびデータベース・アダプタの構成方法

Oracle Databaseおよびデータベース・アダプタを構成する手順は、次のとおりです。

  1. このユースケースには、SCOTTデータベース・アカウントとパスワードTIGERが必要です。SCOTTアカウントのロックが解除されている必要があります。

    SYSDBAでログインしてから、XrefOrderApp1M/sqlフォルダにあるsetup_user.sqlスクリプトを実行してアカウントのロックを解除できます。

  2. XrefOrderApp1M/sqlフォルダにあるcreate_schema.sqlスクリプトを実行して、このユースケースに必要な表を作成します。

  3. XrefOrderApp1M/sqlフォルダにあるcreate_app_procedure.sqlスクリプトを実行して、この統合に組み込む様々なアプリケーションをシミュレートするプロシージャを作成します。

  4. Oracle_Home/rcu/integration/soainfra/sql/xref/フォルダにあるcreateschema_xref_oracle.sqlスクリプトを実行し、ランタイムの相互参照データを格納する相互参照表を作成します。

  5. ra.xmlファイルとweblogic-ra.xmlファイルを、$BEAHOME/META-INFから、使用しているコンピュータで新規作成したMETA-INFディレクトリにコピーします。

  6. weblogic-ra.xmlファイルを編集します。このファイルは、SOAアプリケーションの$BEAHOME/src/oracle/tip/adapter/db/test/deploy/weblogic/META-INFフォルダにあります。

    • 次のように、プロパティをxADataSourceNameに変更します。

      <property>
       <name>xADataSourceName</name>
       <value>jdbc/DBConnection1</value>
      </property>
      
    • jndi-nameを次のように変更します。

      <jndi-name> eis/DB/DBConnection1</jndi-name>
      

    このサンプルではeis/DB/DBConnection1を使用して新規メッセージのSAP表をポーリングし、Oracle EBSおよびSiebelインスタンスをシミュレートするプロシージャに接続します。

  7. ra.xmlファイルとweblogic-ra.xmlファイルをRARファイルとしてパッケージ化し、Oracle WebLogic Server管理コンソールを使用してそのRARファイルをデプロイします。

  8. Oracle WebLogic Server管理コンソールを使用して、次の値を持つデータ・ソースを作成します。

    • jndi-name=jdbc/DBConnection1

    • user=scott

    • password=tiger

    • url=jdbc:oracle:thin:@host:port:service

    • connection-factory factory-class=oracle.jdbc.pool.OracleDataSource

  9. Oracle WebLogic Server管理コンソールを使用して、次の値を持つデータ・ソースを作成します。

    • jndi-name=jdbc/xref

    • user=scott

    • password=tiger

    • url=jdbc:oracle:thin:@host:port:service

    • connection-factory factory-class=oracle.jdbc.pool.OracleDataSource

46.8.1.2 タスク2: Oracle JDeveloperのアプリケーションおよびプロジェクトの作成方法

Oracle JDeveloperのアプリケーションおよびプロジェクトを作成する手順は、次のとおりです。

  1. Oracle JDeveloperで「ファイル」をクリックし、「新規」を選択します。

    「新規ギャラリ」ダイアログが表示されます。

  2. 「新規ギャラリ」で「一般」ノードを開き、「アプリケーション」カテゴリを選択します。

  3. 「項目」リストで「SOAアプリケーション」を選択し、「OK」をクリックします。

    SOAアプリケーションの作成ウィザードが表示されます。

  4. 「アプリケーション名」フィールドでXRefOrderAppと入力し、「次へ」をクリックします。

    「プロジェクトの名前付け」ページが表示されます。

  5. 「プロジェクト名」フィールドにXRefOrderAppと入力し、「次へ」をクリックします。

    SOA設定の構成ページが表示されます。

  6. 「コンポジット・テンプレート」リストで「空のコンポジット」を選択し、「終了」をクリックします。

    Oracle JDeveloperの「アプリケーション・ナビゲータ」は新規のアプリケーションやプロジェクトで更新され、「SOAコンポジット・エディタ」には空白のプロジェクトがあります。

  7. 「ファイル」メニューから「すべて保存」を選択します。

46.8.1.3 タスク3: 相互参照の作成方法

ユースケース用のアプリケーションおよびプロジェクトを作成した後は、相互参照表を作成する必要があります。

相互参照表を作成する手順は、次のとおりです。

  1. 「アプリケーション・ナビゲータ」で、「XRefOrderApp」プロジェクトを右クリックし、「新規」を選択します。

  2. 「新規ギャラリ」ダイアログで「SOA層」ノードを開き、「トランスフォーメーション」カテゴリを選択します。

  3. 「項目」リストで「相互参照(XREF)」を選択し、「OK」をクリックします。

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

  4. 「ファイル名」フィールドにorder.xrefと入力します。

  5. 「エンド・システム」フィールドで、SAP_05およびEBS_i75と入力します。

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

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

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

    新しい行が追加されます。

  8. 「エンド・システム」名としてCOMMONを入力します。

    図46-47に示すように、相互参照エディタが表示されます。

    図46-47 顧客の相互参照

    図46-47の説明が続きます
    「図46-47 顧客の相互参照」の説明

  9. 「ファイル」メニューから、「すべて保存」を選択して、相互参照エディタを閉じます。

46.8.1.4 タスク4: データベース・アダプタ・サービスの作成方法

データベース・アダプタ・サービスを作成する手順は、次のとおりです。

  1. 「コンポーネント・パレット」で「SOA」を選択します。

  2. 「データベース・アダプタ」を選択し、「公開されたサービス」スイムレーンにドラッグします。

    アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  3. 「次へ」をクリックします。

    「サービス名」ページが表示されます。

  4. 「サービス名」フィールドに、SAPと入力します。

  5. 「次へ」をクリックします。

    「サービス接続」ページが表示されます。

  6. 「接続」フィールドで、「DBConnection1」を選択します。

  7. 「JNDI名」フィールドに、eis/DB/DBConnection1と入力します。

  8. 「次へ」をクリックします。

    「操作タイプ」ページが表示されます。

  9. 「表の新規レコードまたは更新されたレコードをポーリング」を選択し、「次へ」をクリックします。

    「表の選択」ページが表示されます。

  10. 「表のインポート」をクリックします。

    「表のインポート」ダイアログが表示されます。

  11. 「スキーマ」から「Scott」を選択します。

  12. 「名前フィルタ」フィールドで%SAP%と入力し、「問合せ」をクリックします。

    「選択可能」フィールドに「SAP_05」表名が移入されます。

  13. 「SAP_05」をダブルクリックします。

    「選択済」フィールドに「SAP_05」が移入されます。

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

    ここで「表の選択」ページに「SAP_05」表が含まれます。

  15. 「SAP_05」を選択し、「次へ」をクリックします。

    「主キーの定義」ページが表示されます。

  16. 「ID」を主キーとして選択し、「次へ」をクリックします。

    「リレーションシップ」ページが表示されます。

  17. 「次へ」をクリックします。

    「属性のフィルタ処理」ページが表示されます。

  18. 「次へ」をクリックします。

    「読取り後」ページが表示されます。

  19. 「[SAP_05]表のフィールドの更新 (論理削除)」を選択し、「次へ」をクリックします。

    「論理削除」ページが表示されます。

  20. 「論理削除」フィールドで、「LOGICAL_DEL」を選択します。

  21. 「読取り値」フィールドで、Yと入力します。

  22. 「未読取り値」フィールドで、Nと入力します。

    図46-16は、アダプタ構成ウィザードの「論理削除」ページを示しています。

  23. 「次へ」をクリックします。

    「ポーリング・オプション」ページが表示されます。

  24. 「次へ」をクリックします。

    「選択条件の定義」ページが表示されます。

  25. 「次へ」をクリックします。

    「詳細オプション」ページが表示されます。

  26. 「次へ」をクリックします。

    「終了」ページが表示されます。

  27. 「終了」をクリックします。

    図46-48に示すように、SAPという名前のデータベース・アダプタ・サービスが作成されます。

    図46-48 SOAコンポジット・エディタのSAPデータベース・アダプタ・サービス

    図46-48の説明が続きます
    「図46-48 SOAコンポジット・エディタのSAPデータベース・アダプタ・サービス」の説明

  28. 「ファイル」メニューから「すべて保存」を選択します。

46.8.1.5 タスク5: EBS外部参照の作成方法

EBS外部参照を作成する手順は、次のとおりです。

  1. 「コンポーネント・パレット」で「SOA」を選択します。

  2. 「データベース・アダプタ」を選択し、「外部参照」スイムレーンにドラッグします。

    アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  3. 「次へ」をクリックします。

    「サービス名」ページが表示されます。

  4. 「サービス名」フィールドに、EBSと入力します

  5. 「次へ」をクリックします。

    「サービス接続」ページが表示されます。

  6. 「接続」フィールドで、「DBConnection1」を選択します。

  7. 「JNDI名」フィールドに、eis/DB/DBConnection1と入力します。

  8. 「次へ」をクリックします。

    「操作タイプ」ページが表示されます。

  9. 「ストアド・プロシージャまたはファンクションの呼出し」を選択し、「次へ」をクリックします。

    「ストアド・プロシージャの指定」ページが表示されます。

  10. 「スキーマ」から「Scott」を選択します。

  11. 「参照」をクリックします。

    「ストアド・プロシージャ」ダイアログが表示されます。

  12. 図46-49に示すように、「POPULATE_APP_INSTANCE_IM」を選択します。

    図46-49 「ストアド・プロシージャ」ダイアログ

    図46-49の説明が続きます
    「図46-49 「ストアド・プロシージャ」ダイアログ」の説明

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

    図46-50に示すように、「ストアド・プロシージャの指定」ページが表示されます。

    図46-50 アダプタ構成ウィザードの「ストアド・プロシージャの指定」ページ

    図46-50の説明が続きます
    「図46-50 アダプタ構成ウィザードの「ストアド・プロシージャの指定」ページ」の説明

  14. 「次へ」をクリックします。

    「詳細オプション」ページが表示されます。

  15. 「次へ」をクリックします。「終了」ページが表示されます。

  16. 「終了」をクリックします。

    図46-51に、SOAコンポジット・エディタのEBS参照を示します。

    図46-51 SOAコンポジット・エディタのEBS参照

    図46-51の説明が続きます
    「図46-51 SOAコンポジット・エディタのEBS参照」の説明

  17. 「ファイル」メニューから「すべて保存」を選択します。

46.8.1.6 タスク6: Loggerファイル・アダプタ外部参照の作成方法

Loggerファイル・アダプタ外部参照を作成する手順は、次のとおりです。

  1. 「コンポーネント・パレット」から「SOA」を選択します。

  2. 「ファイル・アダプタ」を選択し、「外部参照」スイムレーンにドラッグします。

    アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  3. 「次へ」をクリックします。

    「サービス名」ページが表示されます。

  4. 「サービス名」フィールドに、Loggerと入力します。

  5. 「次へ」をクリックします。

    「アダプタ・インタフェース」ページが表示されます。

  6. 「操作およびスキーマから定義(後で指定)」をクリックします。

    「操作」ページが表示されます。

  7. 「操作タイプ」フィールドで、「Write File」を選択します。

  8. 「次へ」をクリックします。

    「ファイル構成」ページが表示されます。

  9. 「発信ファイルのディレクトリ(物理パス)」フィールドに、ファイルを書き込むディレクトリの名前を入力します。

  10. ファイル・ネーミング規則フィールドで、output.xmlと入力し、「次へ」をクリックします。

    「メッセージ」ページが表示されます。

  11. 「検索」をクリックします。

    「タイプ・チューザ」ダイアログが表示されます。

  12. 「タイプ・エクスプローラ」→「プロジェクトのスキーマ・ファイル」→「SCOTT_POPULATE_APP_INSTANCE_1M.xsd」の順に移動し、「OutputParameters」を選択します。

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

  14. 「次へ」をクリックします。

    「終了」ページが表示されます。

  15. 「終了」をクリックします。

    図46-52に、SOAコンポジット・エディタのLogger参照を示します。

    図46-52 SOAコンポジット・エディタのLogger参照

    図46-52の説明が続きます
    「図46-52 SOAコンポジット・エディタのLogger参照」の説明

  16. 「ファイル」メニューから「すべて保存」を選択します。

46.8.1.7 タスク7: Oracle Mediatorサービス・コンポーネントの作成方法

Oracle Mediatorサービス・コンポーネントを作成する手順は、次のとおりです。

  1. 「コンポーネント・パレット」から「メディエータ」アイコンをドラッグし、「コンポーネント」スイムレーンにドロップします。

    「メディエータの作成」ダイアログが表示されます。

  2. 「テンプレート」リストから、「インタフェースを後で定義」を選択します。

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

    Mediator2という名前のOracle Mediatorが作成されます。

  4. 図46-53に示すように、「SAP」サービスを「Mediator2」に接続します。

    図46-53 SAPサービスのMediator2への接続

    図46-53の説明が続きます
    「図46-53 SAPサービスのMediator2への接続」の説明

  5. 「ファイル」メニューから「すべて保存」を選択します。

  6. 「コンポーネント・パレット」から「メディエータ」アイコンをドラッグし、SOAコンポジット・エディタの「コンポーネント」セクションにドロップします。

    「メディエータの作成」ダイアログが表示されます。

  7. 「テンプレート」リストから、「WSDLからのインタフェース定義」を選択します。

  8. 「SOAPバインディングを持つコンポジット・サービスの作成」の選択を解除します。

  9. 「WSDLファイル」フィールドの右側にある「既存のWSDLを検索します。」をクリックします。

  10. Common.wsdlファイルに移動して選択します。Common.wsdlファイルは、Samplesフォルダにあります。

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

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

    Commonという名前のOracle Mediatorが作成されます。

46.8.1.8 タスク8: Oracle Mediatorコンポーネントのルーティング・ルールの指定方法

次の操作のルーティング・ルールを指定する必要があります。

  • 挿入

  • 更新

挿入操作のルーティング・ルールを作成する手順は、次のとおりです。

  1. 「Mediator2」Oracle Mediatorをダブルクリックします。

    メディエータ・エディタが表示されます。

  2. 「ルーティング・ルール」セクションで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。

    「ターゲット・タイプ」ダイアログが表示されます。

  3. 「サービス」を選択します。

    「ターゲット・サービス」ダイアログが表示されます。

  4. 「XrefOrderApp」「メディエータ」「Common」「サービス」「Common」の順に移動します。

  5. 「insert」を選択し、「OK」をクリックします。

  6. 「フィルタ」アイコンをクリックします。

    「式ビルダー」ダイアログが表示されます。

  7. 「式」フィールドに、次の式を入力します。

    $in.Sap05Collection/top:Sap05Collection/top:Sap05/top:operation='INSERT'
    
  8. 「OK」をクリックします。

  9. トランスフォーメーションの使用フィールドの横にある「トランスフォーメーション」アイコンをクリックします。

    「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。

  10. 「新規マッパー・ファイルの作成」を選択し、SAP_TO_COMMON_INSERT.xslと入力します。

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

    「SAP_TO_COMMON_INSERT.xsl」ファイルが表示されます。

  12. 「top:SAP05」ソース要素を「inp1:Order」ターゲット要素にドラッグ・アンド・ドロップします。

    「自動マップ・プリファレンス」ダイアログが表示されます。

  13. 「自動マップ中」オプション・リストから、「祖先名を考慮した要素の一致」の選択を解除します。

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

    図46-54に示すように、トランスフォーメーションが作成されます。

    図46-54 SAP_TO_COMMON_INSERT.xslトランスフォーメーション

    図46-54の説明が続きます
    「図46-54 SAP_TO_COMMON_INSERT.xslトランスフォーメーション」の説明

  15. 「コンポーネント・パレット」から、「拡張」を選択します。

  16. 「XREF Functions」を選択します。

  17. 「コンポーネント・パレット」からtop:id要素とinp1:id要素を接続している線まで「populateXRefRow1M」関数をドラッグ・アンド・ドロップします。

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

    「関数の編集 - populateXRefRow」ダイアログが表示されます。

  19. 「xrefLocation」フィールドの右側にある「検索」をクリックします。

    「SOAリソース・ルックアップ」ダイアログが表示されます。

  20. 「Order.xref」を選択し、「OK」をクリックします。

  21. 「referenceColumnName」フィールドで"SAP_05"と入力するか、または「検索」をクリックして列名を選択します。

  22. 「referenceValue」列に、/top:Sap05Collection/top:Sap05/top:idと入力します。

  23. 「columnName」フィールドで"Common"と入力するか、「検索」をクリックして列名を選択します。

  24. 「value」フィールドに、orcl:generate-guid()と入力します。

  25. 「mode」フィールドで"Add"と入力するか、「検索」をクリックして、このモードを選択します。

    図46-55は、移入後の「関数の編集 – populateXRefRow1M」ダイアログを示しています。

    図46-55 「関数の編集 – populateXRefRow1M」ダイアログ: XrefOrderAppユースケース

    図46-55の説明が続きます
    「図46-55 「関数の編集 – populateXRefRow1M」ダイアログ: XrefOrderAppユースケース」の説明

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

  27. 「ファイル」メニューから、「すべて保存」を選択して、「SAP_TO_COMMON_INSERT.xsl」ファイルを閉じます。

    図46-56に示すように、「ルーティング・ルール」セクションが表示されます。

    図46-56 挿入操作を行う「ルーティング・ルール」セクション

    図46-56の説明が続きます
    「図46-56 挿入操作を行う「ルーティング・ルール」セクション」の説明

更新操作のルーティング・ルールを作成する手順は、次のとおりです。

次のタスクを実行して、更新操作のルーティング・ルールを作成します。

  1. 「ルーティング・ルール」セクションで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。

    「ターゲット・タイプ」ダイアログが表示されます。

  2. 「サービス」を選択します。

    「ターゲット・サービス」ダイアログが表示されます。

  3. 「XrefOrderApp」「メディエータ」「Common」「サービス」「Common」の順に移動します。

  4. 「update」を選択し、「OK」をクリックします。

  5. 「フィルタ」アイコンをクリックします。

    「式ビルダー」ダイアログが表示されます。

  6. 「式」フィールドに、次の式を入力します。

    $in.Sap05Collection/top:Sap05Collection/top:Sap05/top:operation='UPDATE'
    
  7. 「OK」をクリックします。

  8. 「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。

    「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。

  9. 「新規マッパー・ファイルの作成」を選択し、SAP_TO_COMMON_UPDATE.xslと入力します。

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

    「SAP_TO_COMMON_UPDATE.xsl」ファイルが表示されます。

  11. 「top:Sap05」ソース要素を「inp1:Order」ターゲット要素にドラッグ・アンド・ドロップします。

    「自動マップ・プリファレンス」ダイアログが表示されます。

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

  13. 「コンポーネント・パレット」から、「拡張」を選択します。

  14. 「XREF Functions」を選択します。

  15. 「コンポーネント・パレット」からtop:id要素とinp1:id要素を接続している線まで「lookupXRef」関数をドラッグ・アンド・ドロップします。

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

    「関数の編集 - lookupXRef」ダイアログが表示されます。

  17. 「xrefLocation」フィールドの右側にある「検索」をクリックします。

    「SOAリソース・ルックアップ」ダイアログが表示されます。

  18. 「customer.xref」を選択し、「OK」をクリックします。

  19. 「referenceColumnName」フィールドで"SAP_05"と入力するか、または「検索」をクリックして列名を選択します。

  20. 「referenceValue」列に、/top:Sap05Collection/top:Sap05/top:idと入力します。

  21. 「columnName」フィールドで"COMMON"と入力するか、「検索」をクリックして列名を選択します。

  22. 「needException」フィールドでtrue()と入力するか、「検索」をクリックして、このモードを選択します。

    図46-57は、移入後の「関数の編集 – lookupXRef」ダイアログを示しています。

    図46-57 「関数の編集 – lookupXRef」ダイアログ: XRefOrderAppユースケース

    図46-57の説明が続きます
    「図46-57 「関数の編集 – lookupXRef」ダイアログ: XRefOrderAppユースケース」の説明

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

  24. 「ファイル」メニューから、「すべて保存」を選択して、「SAP_TO_COMMON_UPDATE.xsl」ファイルを閉じます。

    図46-58に示すように、「ルーティング・ルール」セクションが表示されます。

    図46-58 挿入操作と更新操作

    図46-58の説明が続きます
    「図46-58 挿入操作と更新操作」の説明

46.8.1.9 タスク9: 「Common」Oracle Mediatorのルーティング・ルールの指定方法

「Common」Oracle Mediatorの次の操作についてルーティング・ルールを指定する必要があります。

  • 挿入

  • 更新

挿入操作のルーティング・ルールを作成する手順は、次のとおりです。

  1. 「Common」Oracle Mediatorをダブルクリックします。

    メディエータ・エディタが表示されます。

  2. 「ルーティング・ルール」セクションで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。

    「ターゲット・タイプ」ダイアログが表示されます。

  3. 「サービス」を選択します。

    「ターゲット・サービス」ダイアログが表示されます。

  4. 「XrefOrderApp」「参照」「EBS」の順に移動します。

  5. 「EBS」を選択して、「OK」をクリックします。

  6. 「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。

    「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。

  7. 「新規マッパー・ファイルの作成」を選択し、COMMON_TO_EBS_INSERT.xslと入力します。

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

    「COMMON_TO_EBS_INSERT.xsl」ファイルが表示されます。

  9. 「inp1:Order」ソース要素を「db:InputParameters」ターゲット要素にドラッグ・アンド・ドロップします。

    「自動マップ・プリファレンス」ダイアログが表示されます。

  10. 右側の「db:X_APP_INSTANCE」ノードの値をEBS_i75に設定します。

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

    図46-59に示すように、トランスフォーメーションが作成されます。

    図46-59 COMMON_TO_EBS_INSERT.xslトランスフォーメーション

    図46-59の説明が続きます
    「図46-59 COMMON_TO_EBS_INSERT.xslトランスフォーメーション」の説明

  11. 「ファイル」メニューから、「すべて保存」を選択して、「COMMON_TO_EBS_INSERT.xsl」ファイルを閉じます。

  12. 「同期リプライ」セクションで、「ターゲット・サービス操作を参照します。」をクリックします。

    「ターゲット・タイプ」ダイアログが表示されます。

  13. 「サービス」を選択します。

    「ターゲット・サービス」ダイアログが表示されます。

  14. 「XrefOrderApp」「参照」「Logger」の順に移動します。

  15. 「Write」を選択し、「OK」をクリックします。

  16. 「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。

    「リプライ・トランスフォーメーション・マップ」ダイアログが表示されます。

  17. 「新規マッパー・ファイルの作成」を選択し、EBS_TO_COMMON_INSERT.xslと入力します。

  18. 「リクエストをリプライ・ペイロードに含める」を選択します。

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

    「EBS_TO_COMMON_INSERT.xsl」ファイルが表示されます。

  20. 「inp1:Order」ソース要素を「db:X:APP_ID」に接続します。

  21. 「コンポーネント・パレット」から接続線上に「populateXRefRow」関数をドラッグ・アンド・ドロップします。

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

    「関数の編集 - populateXRefRow」ダイアログが表示されます。

  23. 表示されたフィールドに次の情報を入力します。

    • xrefLocation: order.xref

    • referenceColumnName: Common

    • referenceValue: $initial.Customers/inp1:Customers/inp1:Order/inp1:Id

    • columnName: EBS_75

    • value: /db:OutputParameters/db:X_APP_ID

    • mode: LINK

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

    図46-60に示すように、「EBS_TO_COMMON_INSERT.xsl」ファイルが表示されます。

    図46-60 EBS_TO_COMMON_INSERT.xslトランスフォーメーション

    図46-60の説明が続きます
    「図46-60 EBS_TO_COMMON_INSERT.xslトランスフォーメーション」の説明

  25. 「ファイル」メニューから、「すべて保存」を選択して、「EBS_TO_COMMON_INSERT.xsl」ファイルを閉じます。

  26. 「同期リプライ」セクションで、「値の割当て」アイコンをクリックします。

    「値の割当て」ダイアログが表示されます。

  27. 「追加」をクリックします。

    「値の割当て」ダイアログが表示されます。

  28. 「From」セクションで、「式」を選択します。

  29. 「式ビルダーの起動」アイコンをクリックします。

    「式ビルダー」ダイアログが表示されます。

  30. 「式」フィールドに次の式を入力し、「OK」をクリックします。

    concat('INSERT-',$in.OutputParameters/db:OutputParameters/db:X_APP_ID,'.xml')
    
  31. 「To」セクションで、「プロパティ」を選択します。

  32. 「jca.file.FileName」プロパティを選択し、「OK」をクリックします。

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

    図46-61に示すように、「insert」操作セクションが表示されます。

    図46-61 EBSターゲット・サービスで行う挿入操作

    図46-61の説明が続きます
    「図46-61 EBSターゲット・サービスで行う挿入操作」の説明

  34. 「ファイル」メニューから「すべて保存」を選択します。

更新操作のルーティング・ルールを作成する手順は、次のとおりです。

次のタスクを実行して、更新操作のルーティング・ルールを作成します。

  1. 「ルーティング・ルール」セクションで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。

    「ターゲット・タイプ」ダイアログが表示されます。

  2. 「サービス」を選択します。

    「ターゲット・サービス」ダイアログが表示されます。

  3. 「XrefOrderApp」「参照」「EBS」の順に移動します。

  4. 「EBS」を選択して、「OK」をクリックします。

  5. 「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。

    「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。

  6. 「新規マッパー・ファイルの作成」を選択し、COMMON_TO_EBS_UPDATE.xslと入力します。

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

    「COMMON_TO_EBS_UPDATE.xsl」ファイルが表示されます。

  8. 「inp1:Orders」ソース要素を「db:InputParameters」ターゲット要素にドラッグ・アンド・ドロップします。

    「自動マップ・プリファレンス」ダイアログが表示されます。

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

    図46-39に示すように、トランスフォーメーションが作成されます。

  10. 「コンポーネント・パレット」からinp1:iddb:X_APP_IDを接続している線まで「lookupXRef」関数をドラッグ・アンド・ドロップします。

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

    「関数の編集 - lookupXRef」ダイアログが表示されます。

  12. 表示されたフィールドに次の情報を入力します。

    • xrefLocation: order.xref

    • referenceColumnName: Common

    • referenceValue: /inp1:Customers/inp1:Order/inp1:Id

    • columnName: EBS_i75

    • needException: true()

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

  14. 「ファイル」メニューから、「すべて保存」を選択して、「COMMON_TO_EBS_UPDATE.xsl」ファイルを閉じます。

  15. 「同期リプライ」セクションで、「ターゲット・サービス操作を参照します。」をクリックします。

    「ターゲット・タイプ」ダイアログが表示されます。

  16. 「サービス」を選択します。

    「ターゲット・サービス」ダイアログが表示されます。

  17. 「XrefOrderApp」「参照」「Logger」の順に移動します。

  18. 「Write」を選択し、「OK」をクリックします。

  19. 「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。

    「リプライ・トランスフォーメーション・マップ」ダイアログが表示されます。

  20. 「新規マッパー・ファイルの作成」を選択し、EBS_TO_COMMON_UPDATE.xslと入力します。

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

    「EBS_TO_COMMON_UPDATE.xsl」ファイルが表示されます。

  22. 「db:X:APP_ID」ソース要素を「db:X:APP_ID」に接続します。

  23. 「ファイル」メニューから、「すべて保存」を選択して、「EBS_TO_COMMON_UPDATE.xsl」ファイルを閉じます。

  24. 「同期リプライ」セクションで、「値の割当て」アイコンをクリックします。

    「値の割当て」ダイアログが表示されます。

  25. 「追加」をクリックします。

    「値の割当て」ダイアログが表示されます。

  26. 「From」セクションで、「式」を選択します。

  27. 「式ビルダーの起動」アイコンをクリックします。

    「式ビルダー」ダイアログが表示されます。

  28. 「式」フィールドに次の式を入力し、「OK」をクリックします。

    concat('UPDATE-',$in.OutputParameters/db:OutputParameters/db:X_APP_ID,'.xml')
    
  29. 「To」セクションで、「プロパティ」を選択します。

  30. 「jca.file.FileName」プロパティを選択し、「OK」をクリックします。

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

    図46-62に示すように、「update」操作セクションが表示されます。

    図46-62 EBSターゲット・サービスで行う更新操作

    図46-62の説明が続きます
    「図46-62 EBSターゲット・サービスで行う更新操作」の説明

  32. 「ファイル」メニューから「すべて保存」を選択します。

46.8.1.10 タスク10: アプリケーション・サーバー接続の構成方法

SOAコンポジット・アプリケーションをデプロイするには、アプリケーション・サーバー接続が必要です。アプリケーション・サーバー接続の作成方法の詳細は、第41.7.1.1.1項「アプリケーション・サーバー接続の作成」を参照してください。

46.8.1.11 タスク11: コンポジット・アプリケーションのデプロイ方法

次の手順で、XrefOrderAppコンポジット・アプリケーションをアプリケーション・サーバーにデプロイします。

  • アプリケーション・デプロイメント・プロファイルの作成

  • アプリケーション・サーバーへのアプリケーションのデプロイ

これらの手順の詳細は、第41.7.1項「Oracle JDeveloperでの単一のSOAコンポジットのデプロイ」を参照してください。