この章では、Oracle SOA Suiteの相互参照機能を使用して、別のアプリケーションで作成された同等のエンティティの識別子を関連付ける方法を説明します。
項目は次のとおりです。
相互参照を使用すると、別のアプリケーションで作成された同等のエンティティの値を動的にマップできます。
注意: 相互参照機能ではアプリケーション間の値を動的に統合できるのに対し、ドメイン値マップでは設計時に値を指定できます。 ドメイン値マップの詳細は、第46章「ドメイン値マップの使用」を参照してください。 |
あるアプリケーションでオブジェクトを作成または更新した場合は、その変更内容を別のアプリケーションにも伝播させる必要があります。たとえば、SAPアプリケーションで新規顧客が作成された場合、同じ顧客に関する新規エントリをOracle E-Business Suiteアプリケーション(EBS
)でも作成する必要があります。ただし、統合対象の各アプリケーションでは、同じ情報の表現に異なるエンティティを使用している可能性があります。たとえば、SAPアプリケーションでの新規顧客の場合、Customer
データベースにはSAP_001
などの一意IDとともに新規の1行が挿入されます。この情報がOracle E-Business SuiteアプリケーションとSiebelアプリケーションに伝播するときには、EBS_1001
やSBL001
などの異なるIDとともに新規の1行が挿入される必要があります。このような場合、異なるアプリケーションで同一エンティティを参照するIDとして解釈できるように、各IDを相互にマップするなんらかの機能が必要になります。相互参照を使用すると、このマッピングを実行できます。
相互参照は表形式で保存されます。 表47-1に、様々なアプリケーションの顧客IDに関する情報を含む相互参照表を示します。
あるアプリケーションで顧客情報が更新され、変更内容を他のアプリケーションに伝播させる必要がある場合にも、IDマッピングが必要になります。異なるIDを統合するには、相互参照表の全IDにマップする共通値統合パターンを使用する方法があります。 たとえば、表47-1の相互参照表に、さらにCommon
という1列を追加できます。 更新後の相互参照表は、表47-2のようになります。
表47-2 Common列が追加された相互参照表
SAP | EBS | SBL | Common |
---|---|---|---|
SAP_001 |
EBS_1001 |
SBL001 |
CM001 |
SAP_002 |
EBS_1002 |
SBL002 |
CM002 |
図47-1に、共通値統合パターンを使用して様々なアプリケーションのIDをマップする方法を示します。
相互参照表は、メタデータと実際のデータという2つの部分で構成されています。 メタデータはOracle JDeveloperで作成された.xref
ファイルで、XMLファイルとしてメタデータ・サービス(MDS)に格納されています。 実際のデータは、デフォルトでSOAインフラストラクチャ・データベース・スキーマにあるデータベースのXREF_DATA
表に格納されます。
Oracle JDeveloperのSOAコンポジット・アプリケーションで相互参照表を作成し、これを使用して実行時に列の値を参照できます。 ただし、相互参照を使用して特定の値を参照するには、実行時に相互参照を移入する必要があります。この操作は、相互参照XPath関数を使用して実行できます。XPath関数を使用すると、相互参照の移入、参照の実行および列の値の削除ができます。これらのXPath関数を「式ビルダー」ダイアログで使用して式を作成するか、またはXSLTマッパーで使用してトランスフォーメーションを作成できます。
「式ビルダー」ダイアログには、BPELサービス・コンポーネントまたはメディエータ・サービス・コンポーネントのassignアクティビティ、XSLトランスフォーメーションまたはフィルタ機能からアクセスできます。 図47-2に、「式ビルダー」ダイアログで相互参照関数を選択する様子を示します。
XSLTマッパー・ダイアログは、XSLファイルを作成してXMLスキーマ間でデータを変換するときに表示されます。 図47-3に、XSLTマッパー・ダイアログで相互参照関数を選択する様子を示します。
相互参照表はSOAコンポジット・アプリケーションで作成し、トランスフォーメーション中にBPELサービス・コンポーネントまたはメディエータで使用できます。
相互参照表を作成する手順は、次のとおりです。
Oracle JDeveloperで、相互参照を作成するSOAプロジェクトを選択します。
プロジェクトを右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログが表示されます。
「カテゴリ」から「SOA層」を選択し、次に「トランスフォーメーション」を選択します。
「項目」から、「相互参照(XREF)」を選択します。
「OK」をクリックします。
「相互参照(XREF)の作成」ダイアログが表示されます。
「ファイル名」フィールドに、相互参照ファイルの名前を指定します。たとえば、Customer
を指定します。
相互参照名は相互参照表を一意に識別するために使用します。相互参照リポジトリで2つの相互参照表に同じ名前を指定することはできません。 相互参照ファイル名は、相互参照表の名前に拡張子.xref
が付いたものとなります。
「説明」フィールドに、相互参照の説明を入力します。たとえば、Cross reference of Customer identifiers
と入力します。
「エンド・システム」フィールドで、エンド・システム名を入力します。
エンド・システムを相互参照表の相互参照列にマップします。たとえば、最初のエンド・システム名をSAP
、2番目のエンド・システム名をEBS
に変更できます。各エンド・システム名は相互参照内で一意であることが必要です。
「相互参照(XREF)の作成」ダイアログのサンプルは、図47-4に表示されています。
「OK」をクリックします。
図47-5に示すように、相互参照(XREF)エディタが表示されます。このエディタを使用して相互参照を変更できます。
拡張子.xref
の付いたファイルが作成され、「アプリケーション・ナビゲータ」に表示されます。 すべての.xref
ファイルは、例47-1に示すスキーマ定義(XSD)ファイルに基づいています。
例47-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>
相互参照表を使用するには、実行時に相互参照表を移入する必要があります。 データは、デフォルトでSOAインフラストラクチャ・データベース・スキーマにあるXREF_DATA
表に格納されます。xref:populateXRefRow
関数を使用して1つの値を相互参照列に移入するか、またはxref:populateXRefRow1M
関数を使用して複数の値を相互参照列に移入できます。
注意: 次の方法でデータ・ソースを構成することで、データを異なるデータベース・スキーマに格納することもできます。
|
xref:populateXRefRow
関数では、1つの値が相互参照列に移入されます。このxref:populateXRefRow
関数では、移入対象の相互参照値である文字列値が返されます。 たとえば、表47-3に示すOrder表には、EBS、CommonおよびSBLという列があり、各列の値はそれぞれE100
、100
およびSBL_001
です。
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
関数の列移入モード。値ADD
、LINK
またはUPDATE
を指定できます。 表47-4に、これらのモードを示します。
表47-4 xref:populateXRefRow関数のモード
モード | 説明 | 例外の原因 |
---|---|---|
ADD |
参照値と追加対象の値を追加します。 たとえば、 |
次の原因で例外が発生する可能性があります。
|
LINK |
既存の参照値に対応する相互参照値を追加します。たとえば、 |
次の原因で例外が発生する可能性があります。
|
UPDATE |
既存の参照列と値のペアに対応する相互参照値を更新します。たとえば、 |
次の原因で例外が発生する可能性があります。
|
表47-5に、xref:populateXRefRow
関数のモードと各モードの例外条件を示します。
あるエンド・システム内の2つの値を、別のシステム内の1つの値に対応付けることができます。このようなシナリオでは、xref:populateXRefRow1M
関数を使用して相互参照列に値を移入する必要があります。 たとえば、表47-6に示すように、SAP_001
およびSAP_0011
の値でEBSとSBLアプリケーションの1つの値を参照します。SAP
列などの列を移入するには、xref:populateXRefRow1M
関数を使用できます。
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
のいずれかの値を指定できます。 表47-7に、これらのモードを示します。
表47-7 xref:populateXRefRow1M関数のモード
モード | 説明 | 例外の原因 |
---|---|---|
ADD |
参照値と追加対象の値を追加します。たとえば、 |
次の原因で例外が発生する可能性があります。
|
LINK |
既存の参照値に対応する相互参照値を追加します。たとえば、 |
次の原因で例外が発生する可能性があります。
|
表47-8に、xref:populateXRefRow1M
関数のモードと各モードの例外条件を示します。
相互参照表に1列を移入する手順は、次のとおりです。
XSLTマッパー・ウィンドウで、「ソース」および「ターゲット」ペインのツリーを開きます。
ソース要素をターゲット要素にドラッグ・アンド・ドロップします。
「コンポーネント・パレット」で、「拡張」を選択します。
「XREF Functions」を選択します。
ソース・オブジェクトをターゲット・オブジェクトに接続している線に、「populateXRefRow」関数をドラッグ・アンド・ドロップします。
接続線上に「populateXRefRow」アイコンが表示されます。
「populateXRefRow」アイコンをダブルクリックします。
図47-6に示すように、「関数の編集 – populateXRefRow」ダイアログが表示されます。
「関数の編集 – populateXRefRow」ダイアログの各フィールドで、次の値を指定します。
「xrefLocation」フィールドに、相互参照ファイルのロケーションURIを入力します。
「xrefLocation」フィールドの右側にある「参照」をクリックして、相互参照ファイルを選択します。「リソース・パレット」を使用して、MDSおよびMDSの共有ロケーションからもすでにデプロイした相互参照を選択できます。
「referenceColumnName」フィールドに、相互参照列の名前を入力します。
「referenceColumnName」フィールドの右側にある「参照」をクリックして、以前に選択した相互参照に定義されている列から列名を選択できます。
「referenceValue」フィールドでは、値を手動で入力するか、[Ctrl]キーを押しながら[Space]キーを押してXPathビルディング・アシスタントを起動できます。上へ移動および下へ移動するキーを押して、リスト内のオブジェクトを配置し、[Enter]キーを押してそのオブジェクトを選択します。
「columnName」フィールドに、相互参照列の名前を入力します。
「columnName」フィールドの右側にある「参照」をクリックして、以前に選択した相互参照に定義されている列から列名を選択できます。
「value」フィールドでは、値を手動で入力するか、[Ctrl]キーを押しながら[Space]キーを押してXPathビルディング・アシスタントを起動できます。
「mode」フィールドに、相互参照表の列を移入する際のモードを入力します。たとえば、ADD
と入力します。
「参照」をクリックしてモードを選択することもできます。モードを選択できる「移入モードの選択」ダイアログが表示されます。
「OK」をクリックします。
図47-7に、移入後の「関数の編集 – populateXRefRow」ダイアログを示します。
移入後の相互参照表を使用して、値を参照できます。xref:lookupXRef
およびxref:lookupXRef1M
関数を使用すると、1つおよび複数の値の相互参照をそれぞれ参照できます。
xref:lookupXRef
関数を使用すると、参照列の特定の値に対応する値を相互参照列で参照できます。 たとえば、次の関数では、表47-2で説明した相互参照表のCommon
列で、SAP
列のSAP_001
値に対応する値を参照します。
xref:lookupXRef("customers.xref","SAP","SAP_001","Common",true())
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
に設定されると、値が見つからない場合に例外がスローされ、そうでない場合は空の値が返されます。
実行時に、次の原因で例外が発生する可能性があります。
指定した名前の相互参照表が見つからない場合。
指定した列名が見つからない場合。
指定した参照値が空の場合。
複数の値が見つかった場合。
xref:lookupXRef1M
関数を使用すると、参照列の特定の値に対応する複数の値を相互参照列で参照できます。xref:lookupXRef1M
関数では、複数のノードを含んだノードセットが返されます。ノードセット内の各ノードに値が含まれています。
たとえば、次の関数では、表47-6のSAP
列で、EBS
列のEBS_1001
値に対応する複数の値を参照します。
xref:lookupXRef1M("customers.xref","EBS","EBS_1001","SAP",true())
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に設定されていない場合は、空のノードセットが返されます。
例
Siebel、Billing1およびBilling2の3つの列があるOrder表について考えてみます。
1対1マッピングの場合、xref:lookupPopulatedColumns("Order","Siebel","100","false")
メソッドは次の値を返します。
<column name="BILLING1">101</column> <column name="BILLING2">102</column>
この場合は、Billing1
とBilling2
の両方の列が移入されます。
1対多マッピングの場合、xref:lookupPopulatedColumns("Order","Siebel","110","false")
メソッドは次の値を返します。
<column name="BILLING2">111</column> <column name="BILLING2">112</column>
この場合、Billing1
列は移入されません。
次の原因で例外が発生する可能性があります。
指定した名前の相互参照表が見つからない場合。
指定した列名が見つからない場合。
指定した参照値が空の場合。
xref:lookupPopulatedColumns
関数を使用すると、特定の相互参照表、相互参照列および特定の値に対して移入されたすべての列を参照できます。 xref:lookupPopulatedColumns
関数では、各ノードに列名と対応する値が含まれたノードセットが返されます。
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に設定されていない場合は、空のノードセットが返されます。
次の原因で例外が発生する可能性があります。
指定した名前の相互参照表が見つからない場合。
指定した列名が見つからない場合。
指定した参照値が空の場合。
相互参照表列を参照する手順は、次のとおりです。
XSLTマッパー・ダイアログで、「ソース」および「ターゲット」ペインのツリーを開きます。
ソース要素をターゲット要素にドラッグ・アンド・ドロップします。
「コンポーネント・パレット」で、「拡張」を選択します。
「XREF Functions」を選択します。
ソース・オブジェクトをターゲット・オブジェクトに接続している線に、「lookupXRef」関数をドラッグ・アンド・ドロップします。
接続線上に「lookupXRef」アイコンが表示されます。
「lookupXRef」アイコンをダブルクリックします。
図47-8に示すように、「関数の編集 – lookupXRef」ダイアログが表示されます。
「関数の編集 – lookupXRef」ダイアログのフィールドで、次の値を指定します。
「xrefLocation」フィールドに、相互参照ファイルのロケーションURIを入力します。
「xrefLocation」フィールドの右側にある「参照」をクリックして、相互参照ファイルを選択します。「リソース・パレット」を使用して、MDSおよびMDSの共有ロケーションからもすでにデプロイされた相互参照を選択できます。
「referenceColumnName」フィールドに、相互参照列の名前を入力します。
「referenceColumnName」フィールドの右側にある「参照」をクリックして、以前に選択した相互参照に定義されている列から列名を選択できます。
「referenceValue」フィールドでは、値を手動で入力するか、[Ctrl]キーを押しながら[Space]キーを押してXPathビルディング・アシスタントを使用できます。上へ移動および下へ移動するキーを押して、リスト内のオブジェクトを配置し、[Enter]キーを押してそのオブジェクトを選択します。
「columnName」フィールドに、相互参照列の名前を入力します。
「columnName」フィールドの右側にある「参照」をクリックして、以前に選択した相互参照に定義されている列から列名を選択できます。
「needException」フィールドの右側にある「参照」をクリックします。「needException」ダイアログが表示されます。値が見つからない場合は「はい」を選択して例外を発生させ、それ以外の場合は「いいえ」を選択します。
「OK」をクリックします。
図47-9に、移入後の「関数の編集 – lookupXRef」ダイアログを示します。
xref:markForDelete
関数を使用すると、相互参照表の値を削除できます。列の値には、削除済のマークが付きます。この関数では、削除に成功した場合はtrue
、それ以外の場合はfalse
が返されます。
削除マークが付いている列値は、値が存在しないものとして処理されます。したがって、xref:populateXRefRow
関数をADD
モードで使用して同じ列を移入できます。
注意: 削除マークが付いた列値をxref:populateXRefRow 関数のLINKモードで参照値として使用すると、エラーが発生します。 |
相互参照表行には最低2つのマッピングが必要です。1行にマッピングが2つしかない場合、値の1つに削除マークを付けると、他方の列の値も削除されます。
xref:markForDelete
関数の構文は、次のとおりです。
xref:markForDelete(xrefTableName as string, xrefColumnName as string, xrefValueToDelete as string) return as boolean
xrefTableName
: 相互参照表の名前。
xrefColumnName
: 値を削除する列の名前。
xrefValueToDelete
: 削除する値。
次の原因で例外が発生する可能性があります。
指定した名前の相互参照表が見つからない場合。
指定した列名が見つからない場合。
指定した値が空の場合。
指定した値が列内で見つからない場合。
複数の値が見つかった場合。
相互参照表の値を削除する手順は、次のとおりです。
XSLTマッパー・ウィンドウで、「ソース」および「ターゲット」ペインのツリーを開きます。
ソース要素をターゲット要素にドラッグ・アンド・ドロップします。
「コンポーネント・パレット」で、「拡張」を選択します。
「XREF Functions」を選択します。
ソース・オブジェクトをターゲット・オブジェクトに接続している線に、「markForDelete」関数をドラッグ・アンド・ドロップします。
接続線上に「markForDelete」アイコンが表示されます。
「markForDelete」アイコンをダブルクリックします。
図47-10に示すように、「関数の編集 – markForDelete」ダイアログが表示されます。
「関数の編集 – markForDelete」ダイアログの各フィールドで次の値を指定します。
「xrefLocation」フィールドに、相互参照ファイルのロケーションURIを入力します。
「xrefLocation」フィールドの右側にある懐中電灯アイコンをクリックして、相互参照ファイルを選択します。「リソース・パレット」を使用して、MDSおよびMDSの共有ロケーションからもすでにデプロイされた相互参照を選択できます。
「columnName」フィールドに、相互参照表列の名前を入力します。
「columnName」フィールドの右側にある懐中電灯アイコンをクリックして、以前に選択した相互参照に定義されている列から列名を選択できます。
「value」フィールドでは、値を手動で入力するか、[Ctrl]キーを押しながら[Space]キーを押してXPathビルディング・アシスタントを起動できます。上へ移動および下へ移動するキーを押して、リスト内のオブジェクトを配置し、[Enter]キーを押してそのオブジェクトを選択します。
図47-11に、移入後の「関数の編集 – markForDelete」ダイアログを示します。
「OK」をクリックします。
相互参照ユースケースは、Oracle EBS、SAPおよびSiebelインスタンス間の統合シナリオを実装します。このユースケースでは、SAP_01
表で挿入、更新または削除操作を実行すると、EBS
およびSBL
表で対応するデータが挿入または更新されます。 図47-12に、このユースケースの概要を示します。
この項で説明するサンプル・ファイルをダウンロードするには、次のURLを参照してください。
http://www.oracle.com/technology/sample_code/products/mediator
この項では、SOAコンポジット・アプリケーションを作成、構築およびデプロイするための設計時タスクを示します。これらのタスクは、表示されている順番で実行する必要があります。
Oracle Databaseおよびデータベース・アダプタを構成する手順は、次のとおりです。
このユースケースには、SCOTT
データベース・アカウントとパスワードTIGER
が必要です。 SCOTT
アカウントのロックが解除されている必要があります。
SYSDBA
でログインしてから、XrefOrderApp1M/sql
フォルダにあるsetup_user.sql
スクリプトを実行してアカウントのロックを解除できます。
XrefOrderApp1M/sql
フォルダにあるcreate_schema.sql
スクリプトを実行して、このユースケースに必要な表を作成します。
XrefOrderApp1M/sql
フォルダにあるcreate_app_procedure.sql
スクリプトを実行して、この統合に組み込む様々なアプリケーションをシミュレートするプロシージャを作成します。
OH/rcu/integration/soainfra/sql/xref
フォルダにあるcreateschema_xref_oracle.sql
スクリプトを実行し、ランタイムの相互参照データを格納する相互参照表を作成します。
ra.xml
ファイルとweblogic-ra.xml
ファイルを、$BEAHOME/META-INF
から、使用しているコンピュータで新規作成したMETA-INF
ディレクトリにコピーします。
次のとおり、>$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インスタンスをシミュレートするプロシージャに接続します。
ra.xml
ファイルとweblogic-ra.xml
ファイルをRARファイルとしてパッケージ化し、Weblogicコンソールを使用してそのRARファイルをデプロイします。
Weblogicコンソールを使用して、次の値を持つデータ・ソースを作成します。
jndi-name=jdbc/DBConnection1
user=scott
password=tiger
url=jdbc:oracle:thin:@host:port:service
connection-factory factory-class=oracle.jdbc.pool.OracleDataSource
Weblogicコンソールを使用して、次の値を持つデータ・ソースを作成します。
jndi-name=jdbc/xref
user=scott
password=tiger
url=jdbc:oracle:thin:@host:port:service
connection-factory factory-class=oracle.jdbc.pool.OracleDataSource
アプリケーションおよびプロジェクトを作成する手順は、次のとおりです。
Oracle JDeveloperで「ファイル」をクリックし、「新規」を選択します。
「新規ギャラリ」ダイアログが表示されます。
「新規ギャラリ」で「一般」ノードを開き、「アプリケーション」カテゴリを選択します。
「項目」リストで「SOAアプリケーション」を選択し、「OK」をクリックします。
SOAアプリケーションの作成ウィザードが表示されます。
「アプリケーション名」フィールドでXrefCustApp
と入力し、「次へ」をクリックします。
「SOAプロジェクトの名前付け」画面が表示されます。
「プロジェクト名」フィールドにXrefCustApp
と入力し、「次へ」をクリックします。
SOAプロジェクト用のSOA設定の構成画面が表示されます。
「コンポジット・テンプレート」リストで「空のコンポジット」を選択し、「終了」をクリックします。
Oracle JDeveloperの「アプリケーション・ナビゲータ」は新規のアプリケーションやプロジェクトで更新され、「設計」タブには空白のパレットがあります。
「ファイル」メニューから「すべて保存」をクリックします。
ユースケース用のアプリケーションおよびプロジェクトを作成した後は、相互参照表を作成する必要があります。
相互参照表を作成する手順は、次のとおりです。
「アプリケーション・ナビゲータ」で、「XrefCustApp」プロジェクトを右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログで「SOA層」ノードを開き、「トランスフォーメーション」カテゴリを選択します。
「項目」リストで「相互参照(XREF)」を選択し、「OK」をクリックします。
「相互参照(XREF)の作成」ダイアログが表示されます。
「ファイル名」フィールドで、customer.xref
と入力します。
「エンド・システム」フィールドで、SAP_01
およびEBS_i76
と入力します。
「OK」をクリックします。
相互参照エディタが表示されます。
「追加」をクリックします。
新しい行が追加されます。
新しく追加された行にエンド・システム名としてSBL_78
を入力します。
「追加」をクリックし、エンド・システム名としてCommon
を入力します。
図47-13に示すように、相互参照エディタが表示されます。
「ファイル」メニューから、「すべて保存」をクリックして、相互参照エディタを閉じます。
データベース・アダプタ・サービスを作成する手順は、次のとおりです。
「コンポーネント・パレット」で「SOA」を選択します。
「データベース・アダプタ」を選択し、「公開されたサービス」設計領域にドラッグします。
アダプタ構成ウィザードの「ようこそ」ページが表示されます。
「次へ」をクリックします。
「サービス名」ページが表示されます。
「サービス名」フィールドに、SAP
と入力します。
「次へ」をクリックします。
「サービス接続」ページが表示されます。
「アプリケーション接続」フィールドで、「DBConnection1」を選択します。
「JNDI名」フィールドに、eis/DB/DBConnection1
と入力します。
「次へ」をクリックします。
「操作タイプ」ページが表示されます。
「表の新規レコードまたは更新されたレコードをポーリング」を選択し、「次へ」をクリックします。
「表の選択」ページが表示されます。
「表のインポート」をクリックします。
「表のインポート」ダイアログが表示されます。
スキーマから「Scott」を選択します。
「名前フィルタ」フィールドで%SAP%
と入力し、「問合せ」をクリックします。
「選択可能」フィールドにSAP_01
表名が移入されます。
「SAP_01」をダブルクリックします。
「選択済」フィールドにSAP_01が移入されます。
「OK」をクリックします。
ここで「表の選択」ページにSAP_01表が含まれます。
「SAP_01」を選択し、「次へ」をクリックします。
「主キーの定義」ページが表示されます。
「ID」を主キーとして選択し、「次へ」をクリックします。
「リレーションシップ」ページが表示されます。
「次へ」をクリックします。
「属性のフィルタ処理」ページが表示されます。
「次へ」をクリックします。
「読取り後」ページが表示されます。
「[SAP_01]表のフィールドの更新 (論理削除)」を選択し、「次へ」をクリックします。
「論理削除」ページが表示されます。
「論理削除」フィールドで、「LOGICAL_DEL」を選択します。
「読取り値」フィールドで、Y
と入力します。
「未読取り値」フィールドで、N
と入力します。
図47-14は、アダプタ構成ウィザードの「論理削除」ページを示しています。
「次へ」をクリックします。
「ポーリング・オプション」ページが表示されます。
「次へ」をクリックします。
「選択条件の定義」ページが表示されます。
「次へ」をクリックします。
「終了」ページが表示されます。
「終了」をクリックします。
図47-15に示すように、データベース・アダプタ・サービスSAP
が作成されます。
「ファイル」メニューから「すべて保存」をクリックします。
EBSおよびSBLという名前の外部参照を作成する手順は、次のとおりです。
「コンポーネント・パレット」で「SOA」を選択します。
「データベース・アダプタ」を選択し、「外部参照」設計領域にドラッグします。
アダプタ構成ウィザードの「ようこそ」ページが表示されます。
「次へ」をクリックします。
「サービス名」ページが表示されます。
「サービス名」フィールドに、EBS
と入力します
「次へ」をクリックします。
「サービス接続」ページが表示されます。
「アプリケーション接続」フィールドで、「DBConnection1」を選択します。
「JNDI名」フィールドに、eis/DB/DBConnection1
と入力します。
「次へ」をクリックします。
「操作タイプ」ページが表示されます。
「ストアド・プロシージャまたはファンクションの呼出し」を選択し、「次へ」をクリックします。
「ストアド・プロシージャの指定」ページが表示されます。
スキーマから「Scott」を選択します。
「参照」をクリックします。
「ストアド・プロシージャ」ダイアログが表示されます。
図47-16に示すように、「POPULATE_APP_INSTANCE」を選択します。
「OK」をクリックします。
図47-17に示すように、「ストアド・プロシージャの指定」ページが表示されます。
「次へ」をクリックします。
「終了」ページが表示されます。
「終了」をクリックします。
図47-18に、SOAコンポジット・エディタのEBS
参照を示します。
「ファイル」メニューから「すべて保存」をクリックします。
手順2〜手順16を繰り返し、外部参照名SBL
をもう1つ作成します。
このタスクを完了すると、図47-19に示すように、SOAコンポジット・エディタが表示されます。
ファイル・アダプタ参照を作成する手順は、次のとおりです。
「コンポーネント・パレット」から「SOA」を選択します。
「ファイル・アダプタ」を選択し、「外部参照」設計領域にドラッグします。
アダプタ構成ウィザードの「ようこそ」ページが表示されます。
「次へ」をクリックします。
「サービス名」ページが表示されます。
「サービス名」フィールドに、Logger
と入力します。
「次へ」をクリックします。
「操作」ページが表示されます。
「操作タイプ」フィールドで、「Write File」を選択します。
「次へ」をクリックします。
「ファイル構成」ページが表示されます。
「発信ファイルのディレクトリ(物理パス)」フィールドに、ファイルを書き込むディレクトリの名前を入力します。
ファイル・ネーミング規則フィールドで、output.xml
と入力し、「次へ」をクリックします。
「メッセージ」ページが表示されます。
「検索」をクリックします。
「タイプ・チューザ」ダイアログが表示されます。
「タイプ・エクスプローラ」→「プロジェクトのスキーマ・ファイル」→「SCOTT_POPULATE_APP_INSTANCE.xsd」の順に移動し、「OutputParameters」を選択します。
「OK」をクリックします。
「次へ」をクリックします。
「終了」ページが表示されます。
「終了」をクリックします。
図47-20に、SOAコンポジット・エディタのLogger
参照を示します。
「ファイル」メニューから「すべて保存」をクリックします。
メディエータを作成する手順は、次のとおりです。
「コンポーネント・パレット」から「コンポーネント」設計領域にメディエータをドラッグ・アンド・ドロップします。
「メディエータの作成」ダイアログが表示されます。
テンプレートから、「インタフェースを後で定義」を選択します。
「OK」をクリックします。
Mediator1
という名前のメディエータが作成されます。
図47-21に示すように、「SAP」サービスを「Mediator1」に接続します。
「すべて保存」をクリックします。
「コンポーネント・パレット」から「コンポーネント」設計領域にもう1つのメディエータをドラッグ・アンド・ドロップします。
「メディエータの作成」ダイアログが表示されます。
テンプレートから、「WSDLからのインタフェース定義」を選択します。
「SOAPバインディングを持つコンポジット・サービスの作成」の選択を解除します。
「WSDLファイル」フィールドの右側にある「既存のWSDLを検索します。」をクリックします。
Common.wsdl
ファイルに移動して選択します。Common.wsdlファイルは、Samples
フォルダにあります。
「OK」をクリックします。
「OK」をクリックします。
Common
という名前のメディエータが作成されます。
次の操作のルーティング・ルールを指定する必要があります。
挿入
更新
ID更新
削除
挿入操作のルーティング・ルールを作成する手順は、次のとおりです。
Mediator1
メディエータをダブルクリックします。
メディエータ・エディタが表示されます。
「ルーティング・ルール」パネルで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。
「ターゲット・タイプ」ダイアログが表示されます。
「サービス」を選択します。
「ターゲット・サービス」ダイアログが表示されます。
「XrefCustApp」→「メディエータ」→「Common」→「サービス」→「Common」の順に移動します。
「insert」を選択し、「OK」をクリックします。
「フィルタ」アイコンをクリックします。
「式ビルダー」ダイアログが表示されます。
「式」フィールドに次の式を入力します。
$in.Sap01Collection/top:Sap01Collection/top:Sap01/top:operation='INSERT'
「OK」をクリックします。
「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。
「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、SAP_TO_COMMON_INSERT.xsl
と入力します。
「OK」をクリックします。
「SAP_TO_COMMON_INSERT.xsl」タブが表示されます。
「top:SAP01」ソース要素を「inp1:Customer」ターゲット要素にドラッグ・アンド・ドロップします。
「自動マップ・プリファレンス」ダイアログが表示されます。
「自動マップ中」オプションから、「祖先名を考慮した要素の一致」の選択を解除します。
「OK」をクリックします。
図47-22に示すように、トランスフォーメーションが作成されます。
「コンポーネント・パレット」から、「拡張」を選択します。
「XREF Functions」を選択します。
「コンポーネント・パレット」からtop:id要素とinp1:id要素を接続している線まで「populateXRefRow」関数をドラッグ・アンド・ドロップします。
「populateXRefRow」アイコンをダブルクリックします。
「関数の編集 - populateXRefRow」ダイアログが表示されます。
「xrefLocation」フィールドの右側にある「検索」をクリックします。
「SCAリソース・ルックアップ」ダイアログが表示されます。
「customer.xref」を選択し、「OK」をクリックします。
「referenceColumnName」フィールドでSAP_01
と入力するか、または「検索」をクリックして列名を選択します。
「referenceValue」列に、/top:Sap01Collection/top:Sap01/top:id
と入力します。
「columnName」フィールドでCommon
と入力するか、「検索」をクリックして列名を選択します。
「value」フィールドに、oraext:generate-guid()
と入力します。
「mode」フィールドでAdd
と入力するか、「検索」をクリックして、このモードを選択します。
図47-23は、移入後の「関数の編集 – populateXRefRow」ダイアログを示しています。
図47-23 「関数の編集 – populateXRefRow」ダイアログ: XrefCustAppユースケース
「OK」をクリックします。
「ファイル」メニューから、「すべて保存」をクリックして、「SAP_TO_COMMON_INSERT.xsl」タブを閉じます。
図47-24に示すように、「ルーティング・ルール」パネルが表示されます。
更新操作のルーティング・ルールを作成する手順は、次のとおりです。
次のタスクを実行して、update
操作のルーティング・ルールを作成します。
「ルーティング・ルール」パネルで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。
「ターゲット・タイプ」ダイアログが表示されます。
「サービス」を選択します。
「ターゲット・サービス」ダイアログが表示されます。
「XrefCustApp」→「メディエータ」→「Common」→「サービス」→「Common」の順に移動します。
「update」を選択し、「OK」をクリックします。
「フィルタ」アイコンをクリックします。
「式ビルダー」ダイアログが表示されます。
「式」フィールドに次の式を入力します。
$in.Sap01Collection/top:Sap01Collection/top:Sap01/top:operation='UPDATE'
「OK」をクリックします。
「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。
「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、SAP_TO_COMMON_UPDATE.xsl
と入力します。
「OK」をクリックします。
「SAP_TO_COMMON_UPDATE.xsl」タブが表示されます。
「top:Sap01」ソース要素を「inp1:Customer」ターゲット要素にドラッグ・アンド・ドロップします。
「自動マップ・プリファレンス」ダイアログが表示されます。
「OK」をクリックします。
「コンポーネント・パレット」から、「拡張」を選択します。
「XREF Functions」を選択します。
「コンポーネント・パレット」からtop:id要素とinp1:id要素を接続している線まで「lookupXRef」関数をドラッグ・アンド・ドロップします。
「lookupXRef」アイコンをダブルクリックします。
「関数の編集 - lookupXRef」ダイアログが表示されます。
「xrefLocation」フィールドの右側にある「検索」をクリックします。
「SCAリソース・ルックアップ」ダイアログが表示されます。
「customer.xref」を選択し、「OK」をクリックします。
「referenceColumnName」フィールドでSAP_01
と入力するか、または「検索」をクリックして列名を選択します。
「referenceValue」列に、/top:Sap01Collection/top:Sap01/top:id
と入力します。
「columnName」フィールドでCOMMON
と入力するか、「検索」をクリックして列名を選択します。
「needException」フィールドでtrue()
と入力するか、「検索」をクリックして、このモードを選択します。
図47-25は、移入後の「関数の編集 – lookupXRef」ダイアログを示しています。
図47-25 「関数の編集 – lookupXRef」ダイアログ: XrefCustAppユースケース
「OK」をクリックします。
「ファイル」メニューから、「すべて保存」をクリックして、「SAP_TO_COMMON_UPDATE.xsl」タブを閉じます。
図47-26に示すように、「ルーティング・ルール」パネルが表示されます。
ID更新操作のルーティング・ルールを作成する手順は、次のとおりです。
次のタスクを実行して、UpdateID
操作のルーティング・ルールを作成します。
「ルーティング・ルール」パネルで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。
「ターゲット・タイプ」ダイアログが表示されます。
「サービス」を選択します。
「ターゲット・サービス」ダイアログが表示されます。
「XrefCustApp」→「メディエータ」→「Common」→「サービス」→「Common」の順に移動します。
「updateid」を選択し、「OK」をクリックします。
「フィルタ」アイコンをクリックします。
「式ビルダー」ダイアログが表示されます。
「式」フィールドに次の式を入力します。
$in.Sap01Collection/top:Sap01Collection/top:Sap01/top:operation = 'UPDATEID'
「OK」をクリックします。
「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。
「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、SAP_TO_COMMON_UPDATEID.xsl
と入力します。
「OK」をクリックします。
「SAP_TO_COMMON_UPDATEID.xsl」タブが表示されます。
「top:Sap01」ソース要素を「inp1:Customer」ターゲット要素にドラッグ・アンド・ドロップします。
「自動マップ・プリファレンス」ダイアログが表示されます。
「OK」をクリックします。
「コンポーネント・パレット」から、「拡張」を選択します。
「XREF Functions」を選択します。
「コンポーネント・パレット」からtop:id要素とinp1:id要素を接続している線まで「populateXRefRow」関数をドラッグ・アンド・ドロップします。
「populateXRefRow」アイコンをダブルクリックします。
「関数の編集 - populateXRefRow」ダイアログが表示されます。
「xrefLocation」フィールドの右側にある「検索」をクリックします。
「SCAリソース・ルックアップ」ダイアログが表示されます。
「customer.xref」を選択し、「OK」をクリックします。
「referenceColumnName」フィールドでSAP_01
と入力するか、または「検索」をクリックして列名を選択します。
「referenceValue」列に、/top:Sap01Collection/top:Sap01/top:refId
と入力します。
「columnName」フィールドでSAP_01
と入力するか、「検索」をクリックして列名を選択します。
「value」フィールドに、/top:Sap01Collection/top:Sap01/top:Id
と入力します。
「mode」フィールドでUPDATE
と入力するか、「検索」をクリックして、このモードを選択します。
図47-27は、移入後の「関数の編集 – populateXRefRow」ダイアログを示しています。
図47-27 「関数の編集 – populateXRefRow」ダイアログ: XrefCustAppユースケース
「コンポーネント・パレット」からtop:id要素とinp1:id要素を接続している線まで「lookupXRef」関数をドラッグ・アンド・ドロップします。
「lookupXRef」アイコンをダブルクリックします。
「関数の編集 - lookupXRef」ダイアログが表示されます。
「xrefLocation」フィールドの右側にある「検索」をクリックします。
「SCAリソース・ルックアップ」ダイアログが表示されます。
「customer.xref」を選択し、「OK」をクリックします。
「referenceColumnName」フィールドでSAP_01
と入力するか、または「検索」をクリックして列名を選択します。
「referenceValue」列に、次の値を入力します。
xref:populateXRefRow("customer.xref","SAP_
01",/top:Sap01Collection/top:Sap01/top:refId,"SAP_
01",/top:Sap01Collection/top:Sap01/top:id,"UPDATE")
.
「columnName」フィールドでCOMMON
と入力するか、「検索」をクリックして列名を選択します。
「needException」フィールドでfalse()
と入力するか、「検索」をクリックして、このモードを選択します。
図47-28は、移入後の「関数の編集 – lookupXRef」ダイアログを示しています。
図47-28 「関数の編集 – lookupXRef」ダイアログ: XrefCustAppユースケース
「OK」をクリックします。
「すべて保存」をクリックして、「SAP_TO_COMMON_UPDATEID.xsl」ウィンドウを閉じます。
図47-29に示すように、「ルーティング・ルール」パネルが表示されます。
削除操作のルーティング・ルールを作成する手順は、次のとおりです。
「ルーティング・ルール」パネルで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。
「ターゲット・タイプ」ダイアログが表示されます。
「サービス」を選択します。
「ターゲット・サービス」ダイアログが表示されます。
「XrefCustApp」→「メディエータ」→「Common」→「サービス」→「Common」の順に移動します。
「delete」を選択し、「OK」をクリックします。
「フィルタ」アイコンをクリックします。
「式ビルダー」ダイアログが表示されます。
「式」フィールドに次の式を入力します。
$in.Sap01Collection/top:Sap01Collection/top:Sap01/top:operation = 'DELETE'
「OK」をクリックします。
「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。
「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、SAP_TO_COMMON_DELETE
.xslと入力します。
「OK」をクリックします。
「SAP_TO_COMMON_DELETE.xsl」タブが表示されます。
<sources>を右クリックし、「パラメータの追加」を選択します。
「パラメータの追加」ダイアログが表示されます。
「ローカル名」フィールドに、COMMONID
と入力します。
「デフォルト値の設定」を選択します。
「式」を選択します。
「XPath式」フィールドに、xref:lookupXRef("customer.xref","SAP_01",/top:Sap01Collection/top:Sap01/top:id,"COMMON",false())
と入力します。
「OK」をクリックします。
「top:Sap01」ソース要素を「inp1:Customer」ターゲット要素にドラッグ・アンド・ドロップします。
「自動マップ・プリファレンス」ダイアログが表示されます。
「OK」をクリックします。
「top:id」と「inp1:id」を接続している線を削除します。
「COMMONID」を「inp1:id」に接続します。
「inp1:id」を右クリックして「XSLノードの追加」を選択してから、「if」を選択します。
新しいノード「if」
が、「inp1:customer」
と「inp1:id」
の間に挿入されます。
「top:id」を「if」ノードに接続します。
「コンポーネント・パレット」から、「拡張」を選択します。
「XREF Functions」を選択します。
「コンポーネント・パレット」からtop:idノードとifノードを接続している線まで「markForDelete」関数をドラッグ・アンド・ドロップします。
「markForDelete」アイコンをダブルクリックします。
「関数の編集 - markForDelete」ダイアログが表示されます。
「xrefLocation」フィールドの右側にある「検索」をクリックします。
「SCAリソース・ルックアップ」ダイアログが表示されます。
「customer.xref」を選択し、「OK」をクリックします。
「columnName」フィールドでSAP_01
と入力するか、「検索」をクリックして列名を選択します。
「value」フィールドに、/top:Sap01Collection/top:Sap01/top:Id
と入力します。
図47-30は、移入後の「関数の編集 – markForDelete」ダイアログを示しています。
図47-30 「関数の編集 – markForDelete」ダイアログ: XrefCustAppユースケース
「OK」をクリックします。
図47-31に示すように、「SAP_TO_COMMON_DELETE.xsl」が表示されます。
「すべて保存」をクリックし、「SAP_TO_COMMON_DELETE.xsl」タブを閉じます。
図47-32に示すように、「ルーティング・ルール」パネルが表示されます。
Common
メディエータの次の操作のルーティング・ルールを指定する必要があります。
挿入
削除
更新
ID更新
挿入操作のルーティング・ルールを作成する手順は、次のとおりです。
「Common」メディエータをダブルクリックします。
メディエータ・エディタが表示されます。
「ルーティング・ルール」パネルで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。
「ターゲット・タイプ」ダイアログが表示されます。
「サービス」を選択します。
「ターゲット・サービス」ダイアログが表示されます。
「XrefCustApp」→「参照」→「SBL」の順に移動します。
「SBL」を選択し、「OK」をクリックします。
「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。
「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、COMMON_TO_SBL_INSERT.xsl
と入力します。
「OK」をクリックします。
「COMMON_TO_SBL_INSERT.xsl」タブが表示されます。
「inp1:Customers」ソース要素を「db:InputParameters」ターゲット要素にドラッグ・アンド・ドロップします。
「自動マップ・プリファレンス」ダイアログが表示されます。
「OK」をクリックします。
図47-33に示すように、トランスフォーメーションが作成されます。
「ファイル」メニューから、「すべて保存」をクリックして、「COMMON_TO_SBL_INSERT.xsl」タブを閉じます。
「同期リプライ」パネルで、「ターゲット・サービス操作を参照します。」をクリックします。
「ターゲット・タイプ」ダイアログが表示されます。
「サービス」を選択します。
「ターゲット・サービス」ダイアログが表示されます。
「XrefCustApp」→「参照」→「Logger」の順に移動します。
「Write」を選択し、「OK」をクリックします。
「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。
「リプライ・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、SBL_TO_COMMON_INSERT.xsl
と入力します。
「リクエストをリプライ・ペイロードに含める」を選択します。
「OK」をクリックします。
「SBL_TO_COMMON_INSERT.xsl」ウィンドウが表示されます。
「inp1:Customers」ソース要素を「db:X:APP_ID」に接続します。
「コンポーネント・パレット」から接続線上に「populateXRefRow」関数をドラッグ・アンド・ドロップします。
「populateXRefRow」アイコンをダブルクリックします。
「関数の編集 - populateXRefRow」ダイアログが表示されます。
表示されたフィールドに次の情報を入力します。
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"
「OK」をクリックします。
図47-34に示すように、「SBL_TO_COMMON_INSERT.xsl」が表示されます。
「ファイル」メニューから、「すべて保存」をクリックして、「SBL_TO_COMMON_INSERT.xsl」タブを閉じます。
「同期リプライ」パネルで、「値の割当て」アイコンをクリックします。
「値の割当て」ダイアログが表示されます。
「追加」をクリックします。
「値の割当て」ダイアログが表示されます。
「From」セクションで、「式」を選択します。
「式ビルダーの起動」アイコンをクリックします。
「式ビルダー」ダイアログが表示されます。
「式」フィールドに次の式を入力し、「OK」をクリックします。
concat('INSERT-',$in.OutputParameters/db:OutputParameters/db:X_APP_ID,'.xml')
「To」セクションで、「プロパティ」を選択します。
「jca.file.FileName」プロパティを選択し、「OK」をクリックします。
「OK」をクリックします。
図47-35に示すように、insert
操作パネルが表示されます。
「ファイル」メニューから「すべて保存」をクリックします。
手順2〜手順34を繰り返し、その他のターゲット・サービスEBS
およびそのルーティング・ルールを指定します。
図47-36に、SBLおよびEBSターゲット・サービスのinsert操作パネルを示します。
削除操作のルーティング・ルールを作成する手順は、次のとおりです。
次のタスクを実行して、delete
操作のルーティング・ルールを作成します。
「ルーティング・ルール」パネルで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。
「ターゲット・タイプ」ダイアログが表示されます。
「サービス」を選択します。
「ターゲット・サービス」ダイアログが表示されます。
「XrefCustApp」→「参照」→「SBL」の順に移動します。
「SBL」を選択し、「OK」をクリックします。
「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。
「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、COMMON_TO_SBL_DELETE.xsl
と入力します。
「OK」をクリックします。
「COMMON_TO_SBL_DELETE.xsl」タブが表示されます。
「inp1:Customers」ソース要素を「db:InputParameters」ターゲット要素にドラッグ・アンド・ドロップします。
「自動マップ・プリファレンス」ダイアログが表示されます。
「OK」をクリックします。
図47-37に示すように、トランスフォーメーションが作成されます。
「コンポーネント・パレット」からinp1:idとdb:XCUSTOMER_IDを接続している線まで「lookupXRef」関数をドラッグ・アンド・ドロップします。
「lookupXRef」アイコンをダブルクリックします。
「関数の編集 - lookupXRef」ダイアログが表示されます。
表示されたフィールドに次の情報を入力します。
xrefLocation: "customer.xref"
referenceColumnName: "Common"
referenceValue: /inp1:Customers/inp1:Customer/inp1:Id
columnName:"SBL_78"
needException:false()
「OK」をクリックします。
「ファイル」メニューから、「すべて保存」をクリックして、「COMMON_TO_SBL_DELETE.xsl」ウィンドウを閉じます。
「同期リプライ」パネルで、「ターゲット・サービス操作を参照します。」をクリックします。
「ターゲット・タイプ」ダイアログが表示されます。
「サービス」を選択します。
「ターゲット・サービス」ダイアログが表示されます。
「XrefCustApp」→「参照」→「Logger」の順に移動します。
「Write」を選択し、「OK」をクリックします。
「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。
「リプライ・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、SBL_TO_COMMON_DELETE.xsl
と入力します。
「OK」をクリックします。
「SBL_TO_COMMON_DELETE.xsl」ウィンドウが表示されます。
「db:X_APP_ID」ソース要素を「db:X:APP_ID」ターゲットに接続します。
「コンポーネント・パレット」から接続線上に「markForDelete」関数をドラッグ・アンド・ドロップします。
「markForDelete」アイコンをダブルクリックします。
「関数の編集 - markForDelete」ダイアログが表示されます。
表示されたフィールドに次の情報を入力します。
xrefLocation: "customer.xref"
columnName:"SBL_78"
value:/db:OutputParameters/db:X_APP_ID
「OK」をクリックします。
「ファイル」メニューから、「すべて保存」をクリックして、「SBL_TO_COMMON_DELETE.xsl」タブを閉じます。
「同期リプライ」パネルで、「値の割当て」アイコンをクリックします。
「値の割当て」ダイアログが表示されます。
「追加」をクリックします。
「値の割当て」ダイアログが表示されます。
「From」セクションで、「式」を選択します。
「式ビルダーの起動」アイコンをクリックします。
「式ビルダー」ダイアログが表示されます。
「式」フィールドに次の式を入力し、「OK」をクリックします。
concat('DELETE-',$in.OutputParameters/db:OutputParameters/db:X_APP_ID,'.xml')
「To」セクションで、「プロパティ」を選択します。
「jca.file.FileName」プロパティを選択し、「OK」をクリックします。
「OK」をクリックします。
図47-38に示すように、delete操作パネルが表示されます。
「ファイル」メニューから「すべて保存」をクリックします。
手順1〜手順36を繰り返し、その他のターゲット・サービスEBS
やルーティング・ルールを指定します。
図47-39に、SBLおよびEBSターゲット・サービスのdelete
操作パネルを示します。
更新操作のルーティング・ルールを作成する手順は、次のとおりです。
次のタスクを実行して、update
操作のルーティング・ルールを作成します。
「ルーティング・ルール」パネルで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。
「ターゲット・タイプ」ダイアログが表示されます。
「サービス」を選択します。
「ターゲット・サービス」ダイアログが表示されます。
「XrefCustApp」→「参照」→「SBL」の順に移動します。
「SBL」を選択し、「OK」をクリックします。
「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。
「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、COMMON_TO_SBL_UPDATE.xsl
と入力します。
「OK」をクリックします。
「COMMON_TO_SBL_UPDATE.xsl」タブが表示されます。
「inp1:Customers」ソース要素を「db:InputParameters」ターゲット要素にドラッグ・アンド・ドロップします。
「自動マップ・プリファレンス」ダイアログが表示されます。
「OK」をクリックします。
図47-37に示すように、トランスフォーメーションが作成されます。
「コンポーネント・パレット」からinp1:idとdb:XCUSTOMER_IDを接続している線まで「lookupXRef」関数をドラッグ・アンド・ドロップします。
「lookupXRef」アイコンをダブルクリックします。
「関数の編集 - lookupXRef」ダイアログが表示されます。
表示されたフィールドに次の情報を入力します。
xrefLocation: "customer.xref"
referenceColumnName: "Common"
referenceValue: /inp1:Customers/inp1:Customer/inp1:Id
columnName:"SBL_78"
needException:true()
「OK」をクリックします。
「ファイル」メニューから、「すべて保存」をクリックして、「COMMON_TO_SBL_UPDATE.xsl」ウィンドウを閉じます。
「同期リプライ」パネルで、「ターゲット・サービス操作を参照します。」をクリックします。
「ターゲット・タイプ」ダイアログが表示されます。
「サービス」を選択します。
「ターゲット・サービス」ダイアログが表示されます。
「XrefCustApp」→「参照」→「Logger」の順に移動します。
「Write」を選択し、「OK」をクリックします。
「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。
「リプライ・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、SBL_TO_COMMON_UPDATE.xsl
と入力します。
「OK」をクリックします。
「SBL_TO_COMMON_UPDATE.xsl」ウィンドウが表示されます。
「db:X:APP_ID」ソース要素を「db:X:APP_ID」に接続します。
「ファイル」メニューから、「すべて保存」をクリックして、「SBL_TO_COMMON_UPDATE.xsl」タブを閉じます。
「同期リプライ」パネルで、「値の割当て」アイコンをクリックします。
「値の割当て」ダイアログが表示されます。
「追加」をクリックします。
「値の割当て」ダイアログが表示されます。
「From」セクションで、「式」を選択します。
「式ビルダーの起動」アイコンをクリックします。
「式ビルダー」ダイアログが表示されます。
「式」フィールドに次の式を入力し、「OK」をクリックします。
concat('UPDATE-',$in.OutputParameters/db:OutputParameters/db:X_APP_ID,'.xml')
「To」セクションで、「プロパティ」を選択します。
「jca.file.FileName」プロパティを選択し、「OK」をクリックします。
「OK」をクリックします。
図47-40に示すように、update操作パネルが表示されます。
「ファイル」メニューから「すべて保存」をクリックします。
手順1〜手順32を繰り返し、その他のターゲット・サービスEBS
およびそのルーティング・ルールを指定します。
図47-41に、SBL
およびEBS
ターゲット・サービスのupdate
操作パネルを示します。
ID更新操作のルーティング・ルールを作成する手順は、次のとおりです。
次のタスクを実行して、UpdateID操作のルーティング・ルールを作成します。
「ルーティング・ルール」パネルで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。
「ターゲット・タイプ」ダイアログが表示されます。
「サービス」を選択します。
「ターゲット・サービス」ダイアログが表示されます。
「XrefCustApp」→「参照」→「SBL」の順に移動します。
「SBL」を選択し、「OK」をクリックします。
「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。
「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、COMMON_TO_SBL_UPDATEID.xsl
と入力します。
「OK」をクリックします。
「COMMON_TO_SBL_UPDATEID.xsl」タブが表示されます。
「inp1:Customers」ソース要素を「db:InputParameters」ターゲット要素にドラッグ・アンド・ドロップします。
「自動マップ・プリファレンス」ダイアログが表示されます。
「OK」をクリックします。
図47-37に示すように、トランスフォーメーションが作成されます。
「コンポーネント・パレット」からinp1:idとdb:X_CUSTOMER_IDを接続している線まで「lookupXRef」関数をドラッグ・アンド・ドロップします。
「lookupXRef」アイコンをダブルクリックします。
「関数の編集 - lookupXRef」ダイアログが表示されます。
表示されたフィールドに次の情報を入力します。
xrefLocation: "customer.xref"
referenceColumnName: "Common"
referenceValue: /inp1:Customers/inp1:Customer/inp1:Id
columnName:"SBL_78"
needException:false()
「OK」をクリックします。
「ファイル」メニューから、「すべて保存」をクリックして、「COMMON_TO_SBL_UPDATEID.xsl」ウィンドウを閉じます。
「同期リプライ」パネルで、「ターゲット・サービス操作を参照します。」をクリックします。
「ターゲット・タイプ」ダイアログが表示されます。
「サービス」を選択します。
「ターゲット・サービス」ダイアログが表示されます。
「XrefCustApp」→「参照」→「Logger」の順に移動します。
「Write」を選択し、「OK」をクリックします。
「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。
「リプライ・トランスフォーメーション・マップ」ダイアログが表示されます。
「リクエストをリプライ・ペイロードに含める」を選択します。
「OK」をクリックします。
「SBL_TO_COMMON_UPDATEID.xsl」ウィンドウが表示されます。
「inp1:Customers」ソース要素を「db:X:APP_ID」に接続します。
「コンポーネント・パレット」から接続線上に「populateXRefRow」関数をドラッグ・アンド・ドロップします。
「populateXRefRow」アイコンをダブルクリックします。
「関数の編集 - populateXRefRow」ダイアログが表示されます。
表示されたフィールドに次の情報を入力します。
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"
「OK」をクリックします。
「ファイル」メニューから、「すべて保存」をクリックして、「SBL_TO_COMMON_UPDATEID.xsl」タブを閉じます。
「同期リプライ」パネルで、「値の割当て」アイコンをクリックします。
「値の割当て」ダイアログが表示されます。
「追加」をクリックします。
「値の割当て」ダイアログが表示されます。
「From」セクションで、「式」を選択します。
「式ビルダーの起動」アイコンをクリックします。
「式ビルダー」ダイアログが表示されます。
「式」フィールドに次の式を入力し、「OK」をクリックします。
concat('UPDATEID-',$in.OutputParameters/db:OutputParameters/db:X_APP_ID,'.xml')
「To」セクションで、「プロパティ」を選択します。
「jca.file.FileName」プロパティを選択し、「OK」をクリックします。
「OK」をクリックします。
図47-42に示すように、updateid操作パネルが表示されます。
「ファイル」メニューから「すべて保存」をクリックします。
手順1〜手順36を繰り返し、その他のターゲット・サービスEBS
やルーティング・ルールを指定します。
図47-43に、SBLおよびEBSターゲット・サービスのupdateid
操作パネルを示します。
SOAコンポジット・アプリケーションをデプロイするには、Oracle Application Server接続が必要です。 Oracle Application Server接続の作成の詳細は、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』を参照してください。
次の手順で、XrefCustApp
コンポジット・アプリケーションをOracle Application Serverにデプロイします。
アプリケーション・デプロイメント・プロファイルの作成
アプリケーションのOracle Application Serverへのデプロイ
これらの手順の詳細は、第43.2項「Oracle JDeveloperでの単一のSOAコンポジットのデプロイ」を参照してください。
デプロイしたXrefCustApp
アプリケーションは、XrefCustApp/sql
フォルダのinsert_sap_record.sql
ファイルから任意のコマンドを使用することで実行できます。正常に完了すると、レコードがEBSおよびSBL表に挿入および更新され、Logger
参照がoutput.xml
ファイルに出力を書き出します。
実行中のインスタンスの監視には、次のURLにあるOracle Enterprise Managerコンソールを使用できます。
http://hostname:portnumber/em
ここで、hostname
は、Oracle SOA Suiteインフラストラクチャをインストールしたホストです。portnumber
はサービスを実行するポートです。
相互参照ユースケースは、2つのエンド・システム(Oracle EBSインスタンスおよびSAPインスタンス)間の統合シナリオを実装します。このユースケースでは、注文はSAPからEBSに渡されます。SAPでは注文は一意のIDで表されますが、EBSではこの注文がID1とID2の2つの注文に分割されます。 このシナリオはデータベース・アダプタを使用して作成されます。SAP表の更新レコードまたは新規レコードをポーリングすると、SAPインスタンスが作成されます。EBSでは、このインスタンスがプロシージャによってシミュレートされ、表に移入されます。 図47-44に、このユースケースの概要を示します。
この項で説明するサンプル・ファイルをダウンロードするには、次のURLを参照してください。
http://www.oracle.com/technology/sample_code/products/mediator
この項では、SOAコンポジット・アプリケーションを作成、構築およびデプロイするための設計時タスクを示します。これらのタスクは、表示されている順番で実行する必要があります。
Oracle Databaseおよびデータベース・アダプタを構成する手順は、次のとおりです。
このユースケースには、SCOTT
データベース・アカウントとパスワードTIGER
が必要です。 SCOTT
アカウントのロックが解除されている必要があります。
SYSDBA
でログインしてから、XrefOrderApp1M/sql
フォルダにあるsetup_user.sql
スクリプトを実行してアカウントのロックを解除できます。
XrefOrderApp1M/sql
フォルダにあるcreate_schema.sql
スクリプトを実行して、このユースケースに必要な表を作成します。
XrefOrderApp1M/sql
フォルダにあるcreate_app_procedure.sql
スクリプトを実行して、この統合に組み込む様々なアプリケーションをシミュレートするプロシージャを作成します。
OH/rcu/integration/soainfra/sql/xref
フォルダにあるcreateschema_xref_oracle.sql
スクリプトを実行し、ランタイムの相互参照データを格納する相互参照表を作成します。
ra.xml
ファイルとweblogic-ra.xml
ファイルを、$BEAHOME/META-INF
から、使用しているコンピュータで新規作成したMETA-INF
ディレクトリにコピーします。
$BEAHOME/src/oracle/tip/adapter/db/test/deploy/weblogic/META-INF
フォルダにあるweblogic-ra.xml
ファイルを、SOAアプリケーションに使用しているADEラベルから次のように編集します。
次のように、プロパティを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インスタンスをシミュレートするプロシージャに接続します。
ra.xml
ファイルとweblogic-ra.xml
ファイルをRARファイルとしてパッケージ化し、Weblogicコンソールを使用してそのRARファイルをデプロイします。
Weblogicコンソールを使用して、次の値を持つデータ・ソースを作成します。
jndi-name=jdbc/DBConnection1
user=scott
password=tiger
url=jdbc:oracle:thin:@host:port:service
connection-factory factory-class=oracle.jdbc.pool.OracleDataSource
Weblogicコンソールを使用して、次の値を持つデータ・ソースを作成します。
jndi-name=jdbc/xref
user=scott
password=tiger
url=jdbc:oracle:thin:@host:port:service
connection-factory factory-class=oracle.jdbc.pool.OracleDataSource
アプリケーションおよびプロジェクトを作成する手順は、次のとおりです。
Oracle JDeveloperで「ファイル」をクリックし、「新規」を選択します。
「新規ギャラリ」ダイアログが表示されます。
「新規ギャラリ」で「一般」ノードを開き、「アプリケーション」カテゴリを選択します。
「項目」リストで「SOAアプリケーション」を選択し、「OK」をクリックします。
SOAアプリケーションの作成ウィザードが表示されます。
「アプリケーション名」フィールドでXRefOrderApp
と入力し、「次へ」をクリックします。
「プロジェクトの名前付け」画面が表示されます。
「プロジェクト名」フィールドにXRefOrderApp
と入力し、「次へ」をクリックします。
SOA設定の構成画面が表示されます。
「コンポジット・テンプレート」リストで「空のコンポジット」を選択し、「終了」をクリックします。
Oracle JDeveloperの「アプリケーション・ナビゲータ」は新規のアプリケーションやプロジェクトで更新され、「設計」タブには空白のパレットがあります。
「ファイル」メニューから「すべて保存」をクリックします。
ユースケース用のアプリケーションおよびプロジェクトを作成した後は、相互参照表を作成する必要があります。
相互参照表を作成する手順は、次のとおりです。
「アプリケーション・ナビゲータ」で、「XRefOrderApp」プロジェクトを右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログで「SOA層」ノードを開き、「トランスフォーメーション」カテゴリを選択します。
「項目」リストで「相互参照(XREF)」を選択し、「OK」をクリックします。
「相互参照(XREF)の作成」ダイアログが表示されます。
「ファイル名」フィールドにorder.xref
と入力します。
「エンド・システム」フィールドで、SAP_05
およびEBS_i75
と入力します。
「OK」をクリックします。
相互参照エディタが表示されます。
「追加」をクリックします。
新しい行が追加されます。
エンド・システム名としてCOMMONと入力します。
図47-45に示すように、相互参照エディタが表示されます。
「ファイル」メニューから、「すべて保存」をクリックして、相互参照エディタを閉じます。
データベース・アダプタ・サービスを作成する手順は、次のとおりです。
「コンポーネント・パレット」で「SOA」を選択します。
「データベース・アダプタ」を選択し、「公開されたサービス」設計領域にドラッグします。
アダプタ構成ウィザードの「ようこそ」ページが表示されます。
「次へ」をクリックします。
「サービス名」ページが表示されます。
「サービス名」フィールドに、SAP
と入力します。
「次へ」をクリックします。
「サービス接続」ページが表示されます。
「接続」フィールドで、「DBConnection1」を選択します。
「JNDI名」フィールドに、eis/DB/DBConnection1
と入力します。
「次へ」をクリックします。
「操作タイプ」ページが表示されます。
「表の新規レコードまたは更新されたレコードをポーリング」を選択し、「次へ」をクリックします。
「表の選択」ページが表示されます。
「表のインポート」をクリックします。
「表のインポート」ダイアログが表示されます。
スキーマから「Scott」を選択します。
「名前フィルタ」フィールドで%SAP%
と入力し、「問合せ」をクリックします。
「選択可能」フィールドにSAP_05
表名が移入されます。
「SAP_05」をダブルクリックします。
「選択済」フィールドにSAP_05が移入されます。
「OK」をクリックします。
ここで「表の選択」ページにSAP_05表が含まれます。
「SAP_05」を選択し、「次へ」をクリックします。
「主キーの定義」ページが表示されます。
「ID」を主キーとして選択し、「次へ」をクリックします。
「リレーションシップ」ページが表示されます。
「次へ」をクリックします。
「属性のフィルタ処理」ページが表示されます。
「次へ」をクリックします。
「読取り後」ページが表示されます。
「[SAP_05]表のフィールドの更新 (論理削除)」を選択し、「次へ」をクリックします。
「論理削除」ページが表示されます。
「論理削除」フィールドで、「LOGICAL_DEL」を選択します。
「読取り値」フィールドで、Y
と入力します。
「未読取り値」フィールドで、N
と入力します。
図47-14は、アダプタ構成ウィザードの「論理削除」ページを示しています。
「次へ」をクリックします。
「ポーリング・オプション」ページが表示されます。
「次へ」をクリックします。
「選択条件の定義」ページが表示されます。
「次へ」をクリックします。
「詳細オプション」ページが表示されます。
「次へ」をクリックします。
「終了」ページが表示されます。
「終了」をクリックします。
図47-46に示すように、データベース・アダプタ・サービスSAP
が作成されます。
「ファイル」メニューから「すべて保存」をクリックします。
EBSという名前の外部参照を作成する手順は、次のとおりです。
「コンポーネント・パレット」で「SOA」を選択します。
「データベース・アダプタ」を選択し、「外部参照」設計領域にドラッグします。
アダプタ構成ウィザードの「ようこそ」ページが表示されます。
「次へ」をクリックします。
「サービス名」ページが表示されます。
「サービス名」フィールドに、EBS
と入力します
「次へ」をクリックします。
「サービス接続」ページが表示されます。
「接続」フィールドで、「DBConnection1」を選択します。
「JNDI名」フィールドに、eis/DB/DBConnection1
と入力します。
「次へ」をクリックします。
「操作タイプ」ページが表示されます。
「ストアド・プロシージャまたはファンクションの呼出し」を選択し、「次へ」をクリックします。
「ストアド・プロシージャの指定」ページが表示されます。
スキーマから「Scott」を選択します。
「参照」をクリックします。
「ストアド・プロシージャ」ダイアログが表示されます。
図47-47に示すように、「POPULATE_APP_INSTANCE_IM」を選択します。
「OK」をクリックします。
図47-48に示すように、「ストアド・プロシージャの指定」ページが表示されます。
「次へ」をクリックします。
「詳細オプション」ページが表示されます。
「次へ」をクリックします。「終了」ページが表示されます。
「終了」をクリックします。
図47-49に、SOAコンポジット・エディタのEBS
参照を示します。
「ファイル」メニューから「すべて保存」をクリックします。
ファイル・アダプタ参照を作成する手順は、次のとおりです。
「コンポーネント・パレット」から「SOA」を選択します。
「ファイル・アダプタ」を選択し、「外部参照」設計領域にドラッグします。
アダプタ構成ウィザードの「ようこそ」ページが表示されます。
「次へ」をクリックします。
「サービス名」ページが表示されます。
「サービス名」フィールドに、Logger
と入力します。
「次へ」をクリックします。
「アダプタ・インタフェース」ページが表示されます。
「操作およびスキーマから定義(後で指定)」をクリックします。
「操作」ページが表示されます。
「操作タイプ」フィールドで、「Write File」を選択します。
「次へ」をクリックします。
「ファイル構成」ページが表示されます。
「発信ファイルのディレクトリ(物理パス)」フィールドに、ファイルを書き込むディレクトリの名前を入力します。
ファイル・ネーミング規則フィールドで、output.xml
と入力し、「次へ」をクリックします。
「メッセージ」ページが表示されます。
「検索」をクリックします。
「タイプ・チューザ」ダイアログが表示されます。
「タイプ・エクスプローラ」→「プロジェクトのスキーマ・ファイル」→「SCOTT_POPULATE_APP_INSTANCE_1M.xsd」の順に移動し、「OutputParameters」を選択します。
「OK」をクリックします。
「次へ」をクリックします。
「終了」ページが表示されます。
「終了」をクリックします。
図47-50に、SOAコンポジット・エディタのLogger
参照を示します。
「ファイル」メニューから「すべて保存」をクリックします。
メディエータを作成する手順は、次のとおりです。
「コンポーネント・パレット」から「コンポーネント」設計領域にメディエータをドラッグ・アンド・ドロップします。
「メディエータの作成」ダイアログが表示されます。
テンプレートから、「インタフェースを後で定義」を選択します。
「OK」をクリックします。
Mediator2
という名前のメディエータが作成されます。
図47-51に示すように、「SAP」サービスを「Mediator2」に接続します。
「すべて保存」をクリックします。
「コンポーネント・パレット」から「コンポーネント」設計領域にもう1つのメディエータをドラッグ・アンド・ドロップします。
「メディエータの作成」ダイアログが表示されます。
テンプレートから、「WSDLからのインタフェース定義」を選択します。
「SOAPバインディングを持つコンポジット・サービスの作成」の選択を解除します。
「WSDLファイル」フィールドの右側にある「既存のWSDLを検索します。」をクリックします。
Common.wsdl
ファイルに移動して選択します。Common.wsdlファイルは、Samples
フォルダにあります。
「OK」をクリックします。
「OK」をクリックします。
Common
という名前のメディエータが作成されます。
次の操作のルーティング・ルールを指定する必要があります。
挿入
更新
挿入操作のルーティング・ルールを作成する手順は、次のとおりです。
Mediator2
メディエータをダブルクリックします。
メディエータ・エディタが表示されます。
「ルーティング・ルール」パネルで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。
「ターゲット・タイプ」ダイアログが表示されます。
「サービス」を選択します。
「ターゲット・サービス」ダイアログが表示されます。
「XrefOrderApp」→「メディエータ」→「Common」→「サービス」→「Common」の順に移動します。
「insert」を選択し、「OK」をクリックします。
「フィルタ」アイコンをクリックします。
「式ビルダー」ダイアログが表示されます。
「式」フィールドに次の式を入力します。
$in.Sap05Collection/top:Sap05Collection/top:Sap05/top:operation='INSERT'
「OK」をクリックします。
トランスフォーメーションの使用フィールドの横にある「トランスフォーメーション」アイコンをクリックします。
「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、SAP_TO_COMMON_INSERT.xsl
と入力します。
「OK」をクリックします。
「SAP_TO_COMMON_INSERT.xsl」タブが表示されます。
「top:SAP05」ソース要素を「inp1:Order」ターゲット要素にドラッグ・アンド・ドロップします。
「自動マップ・プリファレンス」ダイアログが表示されます。
「自動マップ中」オプションから、「祖先名を考慮した要素の一致」の選択を解除します。
「OK」をクリックします。
図47-52に示すように、トランスフォーメーションが作成されます。
「コンポーネント・パレット」から、「拡張」を選択します。
「XREF Functions」を選択します。
「コンポーネント・パレット」からtop:id要素とinp1:id要素を接続している線まで「populateXRefRow1M」関数をドラッグ・アンド・ドロップします。
「populateXRefRow1M」アイコンをダブルクリックします。
「関数の編集 - populateXRefRow」ダイアログが表示されます。
「xrefLocation」フィールドの右側にある「検索」をクリックします。
「SCAリソース・ルックアップ」ダイアログが表示されます。
「Order.xref」を選択し、「OK」をクリックします。
「referenceColumnName」フィールドでSAP_05
と入力するか、または「検索」をクリックして列名を選択します。
「referenceValue」列に、/top:Sap05Collection/top:Sap05/top:id
と入力します。
「columnName」フィールドでCommon
と入力するか、「検索」をクリックして列名を選択します。
「value」フィールドに、orcl:generate-guid()と入力します。
「mode」フィールドでAdd
と入力するか、「検索」をクリックして、このモードを選択します。
図47-53は、移入後の「関数の編集 – populateXRefRow1M」ダイアログを示しています。
図47-53 「関数の編集 – populateXRefRow1M」ダイアログ: XrefOrderAppユースケース
「OK」をクリックします。
「ファイル」メニューから、「すべて保存」をクリックして、「SAP_TO_COMMON_INSERT.xsl」タブを閉じます。
図47-54に示すように、「ルーティング・ルール」パネルが表示されます。
更新操作のルーティング・ルールを作成する手順は、次のとおりです。
次のタスクを実行して、update
操作のルーティング・ルールを作成します。
「ルーティング・ルール」パネルで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。
「ターゲット・タイプ」ダイアログが表示されます。
「サービス」を選択します。
「ターゲット・サービス」ダイアログが表示されます。
「XrefOrderApp」→「メディエータ」→「Common」→「サービス」→「Common」の順に移動します。
「update」を選択し、「OK」をクリックします。
「フィルタ」アイコンをクリックします。
「式ビルダー」ダイアログが表示されます。
「式」フィールドに次の式を入力します。
$in.Sap05Collection/top:Sap05Collection/top:Sap05/top:operation='UPDATE'
「OK」をクリックします。
「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。
「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、SAP_TO_COMMON_UPDATE.xsl
と入力します。
「OK」をクリックします。
「SAP_TO_COMMON_UPDATE.xsl」タブが表示されます。
「top:Sap05」ソース要素を「inp1:Order」ターゲット要素にドラッグ・アンド・ドロップします。
「自動マップ・プリファレンス」ダイアログが表示されます。
「OK」をクリックします。
「コンポーネント・パレット」から、「拡張」を選択します。
「XREF Functions」を選択します。
「コンポーネント・パレット」からtop:id要素とinp1:id要素を接続している線まで「lookupXRef」関数をドラッグ・アンド・ドロップします。
「lookupXRef」アイコンをダブルクリックします。
「関数の編集 - lookupXRef」ダイアログが表示されます。
「xrefLocation」フィールドの右側にある「検索」をクリックします。
「SCAリソース・ルックアップ」ダイアログが表示されます。
「customer.xref」を選択し、「OK」をクリックします。
「referenceColumnName」フィールドでSAP_05
と入力するか、または「検索」をクリックして列名を選択します。
「referenceValue」列に、/top:Sap05Collection/top:Sap05/top:id
と入力します。
「columnName」フィールドでCOMMON
と入力するか、「検索」をクリックして列名を選択します。
「needException」フィールドでtrue()
と入力するか、「検索」をクリックして、このモードを選択します。
図47-55は、移入後の「関数の編集 – lookupXRef」ダイアログを示しています。
図47-55 「関数の編集 – lookupXRef」ダイアログ: XRefOrderAppユースケース
「OK」をクリックします。
「ファイル」メニューから、「すべて保存」をクリックして、「SAP_TO_COMMON_UPDATE.xsl」タブを閉じます。
図47-56に示すように、「ルーティング・ルール」パネルが表示されます。
Common
メディエータの次の操作のルーティング・ルールを指定する必要があります。
挿入
更新
挿入操作のルーティング・ルールを作成する手順は、次のとおりです。
「Common」メディエータをダブルクリックします。
メディエータ・エディタが表示されます。
「ルーティング・ルール」パネルで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。
「ターゲット・タイプ」ダイアログが表示されます。
「サービス」を選択します。
「ターゲット・サービス」ダイアログが表示されます。
「XrefOrderApp」→「参照」→「EBS」の順に移動します。
「EBS」を選択して、「OK」をクリックします。
「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。
「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、COMMON_TO_EBS_INSERT.xsl
と入力します。
「OK」をクリックします。
「COMMON_TO_EBS_INSERT.xsl」タブが表示されます。
「inp1:Order」ソース要素を「db:InputParameters」ターゲット要素にドラッグ・アンド・ドロップします。
「自動マップ・プリファレンス」ダイアログが表示されます。
右側の「db:X_APP_INSTANCE」
ノードの値をEBS_i75
に設定します。
「OK」をクリックします。
図47-57に示すように、トランスフォーメーションが作成されます。
「ファイル」メニューから、「すべて保存」をクリックして、「COMMON_TO_EBS_INSERT.xsl」ウィンドウを閉じます。
「同期リプライ」パネルで、「ターゲット・サービス操作を参照します。」をクリックします。
「ターゲット・タイプ」ダイアログが表示されます。
「サービス」を選択します。
「ターゲット・サービス」ダイアログが表示されます。
「XrefOrderApp」→「参照」→「Logger」の順に移動します。
「Write」を選択し、「OK」をクリックします。
「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。
「リプライ・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、EBS_TO_COMMON_INSERT.xsl
と入力します。
「リクエストをリプライ・ペイロードに含める」を選択します。
「OK」をクリックします。
「AN EBS_TO_COMMON_INSERT.xsl」ウィンドウが表示されます。
「inp1:Order」ソース要素を「db:X:APP_ID」に接続します。
「コンポーネント・パレット」から接続線上に「populateXRefRow」関数をドラッグ・アンド・ドロップします。
「populateXRefRow」アイコンをダブルクリックします。
「関数の編集 - populateXRefRow」ダイアログが表示されます。
表示されたフィールドに次の情報を入力します。
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"
「OK」をクリックします。
図47-58に示すように、「EBS_TO_COMMON_INSERT.xsl」が表示されます。
「ファイル」メニューから、「すべて保存」をクリックして、「EBS_TO_COMMON_INSERT.xsl」タブを閉じます。
「同期リプライ」パネルで、「値の割当て」アイコンをクリックします。
「値の割当て」ダイアログが表示されます。
「追加」をクリックします。
「値の割当て」ダイアログが表示されます。
「From」セクションで、「式」を選択します。
「式ビルダーの起動」アイコンをクリックします。
「式ビルダー」ダイアログが表示されます。
「式」フィールドに次の式を入力し、「OK」をクリックします。
concat('INSERT-',$in.OutputParameters/db:OutputParameters/db:X_APP_ID,'.xml')
「To」セクションで、「プロパティ」を選択します。
「jca.file.FileName」プロパティを選択し、「OK」をクリックします。
「OK」をクリックします。
図47-59に示すように、insert
操作パネルが表示されます。
「ファイル」メニューから「すべて保存」をクリックします。
更新操作のルーティング・ルールを作成する手順は、次のとおりです。
次のタスクを実行して、update
操作のルーティング・ルールを作成します。
「ルーティング・ルール」パネルで、「新規ルーティング・ルールを作成します。」アイコンをクリックします。
「ターゲット・タイプ」ダイアログが表示されます。
「サービス」を選択します。
「ターゲット・サービス」ダイアログが表示されます。
「XrefOrderApp」→「参照」→「EBS」の順に移動します。
「EBS」を選択して、「OK」をクリックします。
「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。
「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、COMMON_TO_EBS_UPDATE.xsl
と入力します。
「OK」をクリックします。
「COMMON_TO_EBS_UPDATE.xsl」タブが表示されます。
「inp1:Orders」ソース要素を「db:InputParameters」ターゲット要素にドラッグ・アンド・ドロップします。
「自動マップ・プリファレンス」ダイアログが表示されます。
「OK」をクリックします。
図47-37に示すように、トランスフォーメーションが作成されます。
「コンポーネント・パレット」からinp1:idとdb:X_APP_IDを接続している線まで「lookupXRef」関数をドラッグ・アンド・ドロップします。
「lookupXRef」アイコンをダブルクリックします。
「関数の編集 - lookupXRef」ダイアログが表示されます。
表示されたフィールドに次の情報を入力します。
xrefLocation: "order.xref"
referenceColumnName: "Common"
referenceValue: /inp1:Customers/inp1:Order/inp1:Id
columnName:"EBS_i75"
needException:true()
「OK」をクリックします。
「ファイル」メニューから、「すべて保存」をクリックして、「COMMON_TO_EBS_UPDATE.xsl」ウィンドウを閉じます。
「同期リプライ」パネルで、「ターゲット・サービス操作を参照します。」をクリックします。
「ターゲット・タイプ」ダイアログが表示されます。
「サービス」を選択します。
「ターゲット・サービス」ダイアログが表示されます。
「XrefOrderApp」→「参照」→「Logger」の順に移動します。
「Write」を選択し、「OK」をクリックします。
「次を使用して変換」フィールドの横にある「トランスフォーメーション」アイコンをクリックします。
「リプライ・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、EBS_TO_COMMON_UPDATE.xsl
と入力します。
「OK」をクリックします。
「EBS_TO_COMMON_UPDATE.xsl」ウィンドウが表示されます。
「db:X:APP_ID」ソース要素を「db:X:APP_ID」に接続します。
「ファイル」メニューから、「すべて保存」をクリックして、「EBS_TO_COMMON_UPDATE.xsl」タブを閉じます。
「同期リプライ」パネルで、「値の割当て」アイコンをクリックします。
「値の割当て」ダイアログが表示されます。
「追加」をクリックします。
「値の割当て」ダイアログが表示されます。
「From」セクションで、「式」を選択します。
「式ビルダーの起動」アイコンをクリックします。
「式ビルダー」ダイアログが表示されます。
「式」フィールドに次の式を入力し、「OK」をクリックします。
concat('UPDATE-',$in.OutputParameters/db:OutputParameters/db:X_APP_ID,'.xml')
「To」セクションで、「プロパティ」を選択します。
「jca.file.FileName」プロパティを選択し、「OK」をクリックします。
「OK」をクリックします。
図47-60に示すように、update操作パネルが表示されます。
「ファイル」メニューから「すべて保存」をクリックします。
SOAコンポジット・アプリケーションをデプロイするには、Oracle Application Server接続が必要です。 Oracle Application Server接続の作成の詳細は、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』を参照してください。
次の手順で、XrefOrderApp
コンポジット・アプリケーションをOracle Application Serverにデプロイします。
アプリケーション・デプロイメント・プロファイルの作成
アプリケーションのOracle Application Serverへのデプロイ
これらの手順の詳細は、第43.2項「Oracle JDeveloperでの単一のSOAコンポジットのデプロイ」を参照してください。