この章では、ドメイン値マップを使用して、別のドメインで使用されている用語をマップする方法について説明します。
項目は次のとおりです。
ドメイン値マップは、実行時にインフラストラクチャを通過する実際のデータ値に対して機能します。ドメイン値マップを使用すると、特定のドメインで使用されているある用語を、異なるドメインで使用されている別の用語にマップできます。たとえば、あるドメインでは都市を正式名称(Boston
)で表す場合があるのに対して、別のドメインでは、都市を略称(BO
)で表す場合があります。このような場合は、ドメイン値マップを使用して値を直接マップできます。2つ以上のドメインの間で直接値をマップする方法は、ポイントツーポイント・マッピングと呼ばれます。表44-1に、2つのドメインの間で都市名をポイントツーポイント・マッピングする方法を示します。
表44-1 ポイントツーポイント・マッピング
CityCode | CityName |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
通常、各ドメイン値マップには、複数のアプリケーション間における特定カテゴリのマッピングが保持されます。たとえば、あるドメイン値マップは都市コードのマッピングを保持し、別のドメイン値マップは州コードのマッピングを保持できます。
ドメイン値マップの値は静的です。ドメイン値マップの各値は、設計時にOracle JDeveloperを使用して指定し、実行時に、各値についてドメイン値マップの各列がルックアップされます。
Oracle SOAコンポーザを使用して実行時のドメイン値マップを編集する方法の詳細は、第45章「ドメイン値マップでのOracle SOAコンポーザの使用」を参照してください。
この項では、ドメイン値マップ機能について説明します。
修飾子はマッピングを修飾します。追加情報で修飾されていないときは、マッピングが無効になる場合があります。たとえば、都市コードから都市名のマッピングを含むドメイン値マップにKN
からKensington
へのマッピングが複数あるのは、Kensington
という都市がCanada
とUSA
の両方にあるためです。そのため、このマッピングでは表44-2に示すように、マッピングを有効にする際に使用する修飾子(USA
またはCanada
)が必要です。
表44-2 修飾子サポートの例
Country(修飾子) | CityCode | CityName |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
また、ドメイン値マップには複数の修飾子を指定できます。たとえば、表44-3に示すように、BELG
からBelgrade
へのマッピングは州名で修飾することもできます。
表44-3 複数の修飾子サポートの例
Country(修飾子) | State(修飾子) | CityCode | CityName |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
修飾子は、マッピングを修飾するときにのみ使用します。そのため、修飾子の値はルックアップできません。
修飾子の順序は、実行時のルックアップで最適な一致を検出するために使用します。修飾子の順序は、より正確な一致を定義する際に、その修飾子の役割によって上位から下位に変化します。表44-3では、Stateの一致がより正確な一致を示すため、State修飾子をCountry修飾子より上位の順序に指定できます。
ドメイン値マップは階層ルックアップをサポートします。ルックアップ時に修飾子の値を指定し、正確な一致が検出されなかった場合は、ルックアップ・メカニズムによって上位順序の修飾子が""
に設定され、より一般的な一致の検出が試行されます。この処理は、一致が検出されるか、またはすべての修飾子を""
に設定しても一致が検出されない場合に終了します。図44-1では、表44-3に示した次のルックアップで実行される階層ルックアップについて説明しています。
State=Arkansas, Country=Canada, CityCode=KN_USA
この例では、State
修飾子の値は1
で、Country
修飾子の値は2
です。
図44-1に示すように、ルックアップ・メカニズムでは上位順序の修飾子State
に正確なルックアップ値Arkansas
を設定し、下位順序の修飾子Country
にCanada|""
を使用します。
一致が検出されない場合、ルックアップ・メカニズムでは上位順序の修飾子State
に値""
を設定し、次に上位である修飾子Country
に正確な値Canada
を設定します。
一致が検出されない場合、ルックアップ・メカニズムでは以前に上位順序の修飾子であったCountry
に値""
を設定します。CityCode
がKN_USA
である一致行が1行検出された場合は、値としてKensington
が返されます。
表44-4に、これらの手順の要約を示します。
ドメイン値マップでは、1つの値を複数の値にマップできます。たとえば、支払い条件のドメイン値マップには、表44-5に示すように、支払い条件と、値引率、値引期間、正味掛売り期間などの3つの値とのマッピングを格納できます。
Oracle JDeveloperのSOAコンポジット・アプリケーションで1つ以上のドメイン値マップを作成し、実行時に、そのドメイン値マップを使用して列の各値をルックアップできます。
ドメイン値マップは、Oracle JDeveloperの「ドメイン値マップ(DVM)・ファイルの作成」ダイアログを使用して作成できます。
ドメイン値マップを作成する手順は、次のとおりです。
「アプリケーション・ナビゲータ」で、ドメイン値マップを作成するプロジェクトを右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログが表示されます。
「SOA層」ノードを開き、「トランスフォーメーション」カテゴリを選択します。
「項目」リストで、「ドメイン値マップ(DVM)」を選択し、「OK」をクリックします。
「ドメイン値マップ(DVM)・ファイルの作成」ダイアログが表示されます。
「ファイル名」フィールドに、ドメイン値マップのファイル名を入力します。たとえば、都市名と都市コードのドメイン値マップを識別するためにCityCodes
を指定します。
「説明」フィールドに、ドメイン値マップの説明を入力します。たとえば、Mappings of city names and city codes
と入力します。このフィールドはオプションです。
「ドメイン名」フィールドに、各ドメインの名前を入力します。たとえば、ある「ドメイン名」フィールドにはCityCode
を、別のフィールドにはCityName
を入力します。各ドメイン名はドメイン値マップ内では一意の名前にする必要があります。
注意: ドメイン値マップ・エディタを使用して、後でドメインをドメイン値マップに追加できます。 |
「ドメイン値」フィールドに、各ドメインの対応する値を入力します。たとえば、図44-2に示すように、CityCode
ドメインにBO
を、CityName
ドメインにBoston
を入力します。
「OK」をクリックします。
ドメイン値マップ・エディタが表示されます。
図44-3に示すように、拡張子が.dvm
のファイルが作成され、「アプリケーション・ナビゲータ」に表示されます。
すべての.dvm
ファイルは、例44-1に示すスキーマ定義(XSD)ファイルに基づいています。
例44-1 ドメイン値マップ・ファイルのXSDファイル
<?xml version="1.0" encoding="UTF-8" ?> <!-- Copyright (c) 2006, Oracle. All rights reserved. --> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xmlns.oracle.com/dvm" xmlns:tns="http://xmlns.oracle.com/dvm" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xsd:element name="dvm"> <xsd:annotation> <xsd:documentation>The Top Level Element </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element name="description" minOccurs="0" type="xsd:string"> <xsd:annotation> <xsd:documentation>The DVM Description. This is optional </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="columns"> <xsd:annotation> <xsd:documentation>This element holds DVM's column List. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element name="column" minOccurs="2" maxOccurs="unbounded"> <xsd:annotation> <xsd:documentation>This represents a DVM Column </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:attribute name="name" use="required" type="xsd:string"/> <xsd:attribute name="qualifier" default="false" type="xsd:boolean" use="optional"/> <xsd:attribute name="order" use="optional" type="xsd:positiveInteger"/> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="rows" minOccurs="0"> <xsd:annotation> <xsd:documentation>This represents all the DVM Rows. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element name="row" minOccurs="1" maxOccurs="unbounded"> <xsd:annotation> <xsd:documentation> Each DVM row of values </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element name="cell" minOccurs="2" maxOccurs="unbounded" type="xsd:string"> <xsd:annotation> <xsd:documentation>This is the value for this row and for each column in the same order as defined in Columns. </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attribute name="name" use="required" type="xsd:string"/> </xsd:complexType> </xsd:element> <xsd:annotation> <xsd:documentation>This Schema is used to validate the DVM Document got for creation and update of a DVM. </xsd:documentation> </xsd:annotation> </xsd:schema>
作成したドメイン値マップは、ドメイン値マップ・エディタで編集し、データの表示を調整できます。
ドメイン値マップの列では、値を他のドメインにマップするドメインを定義します。
ドメイン値マップに列を追加する手順は、次のとおりです。
「追加」をクリックします。
「列の追加」を選択します。
DVM列の作成ダイアログが表示されます。
「名前」フィールドに、列の名前を入力します。
「修飾子」フィールドで、この列を修飾子として設定する場合は「True」を選択します。そうでない場合は「False」を選択します。
「修飾子順」フィールドに、修飾子の番号を入力します。このフィールドが有効になるのは、「修飾子」フィールドで「True」を選択した場合のみです。
「OK」をクリックします。
ドメイン値マップを作成した後は、実行時にドメイン値マップのXPath関数を使用して適切な値をルックアップし、アプリケーションにターゲットを移入できます。
dvm:lookupValue
およびdvm:lookupValue1M
のXPath関数を使用すると、実行時に単一の値または複数の値についてドメイン値マップをルックアップできます。
dvm:lookupValue
関数では、ソース列に指定のソース値を含むドメイン値マップでターゲット列の値をルックアップすることにより、文字列が返されます。
例44-2に、dvm:lookupValue
関数の構文の例を示します。
例44-2 dvm:lookupValue関数の構文
dvm:lookupValue(dvmMetadataURI as string, SourceColumnName as string, SourceValue as string, TargetColumnName as string, DefaultValue as string) as string
例44-3に、dvm:lookupValue
関数の使用方法の例を示します。
例44-4に、dvm:lookupValue
関数の構文の別の例を示します。
例44-4 dvm:lookupValue関数の構文
dvm:lookupValue(dvmMetadataURI as string, SourceColumnName as string, SourceValue as string, TargetColumnName as string, DefaultValue as string, (QualifierSourceColumn as string, QualifierSourceValue as string)*) as string
例44-5に、dvm:lookupValue
関数の使用方法の別の例を示します。
引数
dvmMetadataURI
: ドメイン値マップのURI。
SourceColumnName
: ソース列名。
SourceValue
: ソース値(XSLTトランスフォーメーションのソース文書にバインドされるXPath式)。
targetColumnName
: ターゲット列名。
DefaultValue
: 値が見つからない場合は、デフォルト値が返されます。
QualifierSourceColumn
: 修飾子列の名前。
QualifierSourceValue
: 修飾子の値。
dvm:lookupValue1M
関数では、ソース列の値がソース値と等しいドメイン値マップの複数のターゲット列の値を格納する、XML文書フラグメントが返されます。例44-6に詳細を示します。
例44-6 dvm:lookupValue1M関数の構文
dvm:lookupValue1M(dvmMetadataURI as string, SourceColumnName as string, SourceValue as string,(TargetColumnName as string)?)as nodeset
引数
dvmMetadataURI
: ドメイン値マップのURI。
SourceColumnName
: ソース列名。
SourceValue
: ソース値(XSLTトランスフォーメーションのソース文書にバインドされるXPath式)。
TargetColumnName
: ターゲット列名。1つ以上の列名を指定する必要があります。疑問符記号(?
)は複数のターゲット列名を指定できることを示します。
例44-7に、dvm:lookupValue1M
関数の使用方法の例を示します。
例44-7 dvm:lookupValue1M関数の使用方法
dvm:lookupValue1M ('cityMap.dvm','CityCode','BO','CityName', 'CityNickName')
例44-8にその結果を示します。
ドメイン値マップ関数は、BPELプロセス・サービス・コンポーネントまたはOracle Mediatorサービス・コンポーネントによるトランスフォーメーションに使用できます。トランスフォーメーションの実行には、XSLファイルを作成してXMLスキーマ間でデータを変換するときに表示されるXSLTマッパーを使用します。
XSLTマッパーの詳細は、第38章「XSLTマッパーを使用したトランスフォーメーションの作成」を参照してください。
トランスフォーメーションでlookupValue1M関数を使用する手順は、次のとおりです。
「アプリケーション・ナビゲータ」で、XSLファイルをダブルクリックしてXSLTマッパーを開きます。
XSLTマッパーで、「ソース」および「ターゲット」ペインのツリーを開きます。
「コンポーネント・パレット」で、下矢印をクリックして「拡張」を選択します。
図44-4に示すように、「DVM Functions」を選択します。
ソースとターゲットの接続線にlookupValue1Mをドラッグ・アンド・ドロップします。
接続線上に「dvm:lookupValue1M」アイコンが表示されます。
「lookupValue1M」アイコンをダブルクリックします。
図44-5に示すように、「関数の編集 – lookupValue1M」ダイアログが表示されます。
「関数の編集 – lookupValue1M」ダイアログの次のフィールドに値を指定します。
「dvmLocation」フィールドで、ドメイン値マップ・ファイルのロケーションURIを入力するか、「dvmLocation」フィールドの右側にある「参照」をクリックして、ドメイン値マップ・ファイルを選択します。MDS(メタデータ・サービス)およびMDSの共有ロケーションからもすでにデプロイされたドメイン値マップを選択できます。これを実行するには、「リソース・パレット」を選択します。
「sourceColumnName」フィールドに、ソース要素の値に関連付けられているドメイン値マップの列名を入力するか、「参照」をクリックして、以前に選択したドメイン値マップに定義されている列から列名を選択します。
「sourceValue」フィールドでは、値を入力するか、[Ctrl]キーを押しながら[Space]キーを押してXPathビルディング・アシスタントを使用できます。上矢印キーおよび下矢印キーを押して、リスト内のオブジェクトを配置し、[Enter]キーを押してその項目を選択します。
「targetColumnName」フィールドに、ターゲット要素の値に関連付けられているドメイン値マップの列名を入力するか、「参照」をクリックして、以前に選択したドメイン値マップに定義されている列から列名を選択します。
「追加」をクリックして別の列をターゲット列として追加し、列の名前を入力します。
図44-6に、移入後の「関数の編集 - lookupValue1M」ダイアログを示します。
「OK」をクリックします。
XSLTマッパーが、「lookupValue1M」関数アイコンとともに表示されます。
「ファイル」メニューから「すべて保存」を選択します。
デプロイ済のドメイン値マップを選択する方法の詳細は、第41.7.3項「Oracle JDeveloperでのSOAコンポジット・アプリケーション間の共有メタデータのデプロイおよび使用」を参照してください。
「式ビルダー」ダイアログでは、ドメイン値マップ関数を使用してXpath式を作成できます。「式ビルダー」ダイアログには、Oracle Mediatorサービス・コンポーネントのフィルタ式または値の割当て機能からアクセスできます。
値の割当て機能の詳細は、第20.2.2.9項「値の割当て方法」を参照してください。
「式ビルダー」ダイアログでlookupValue関数を使用する手順は、次のとおりです。
「関数」リストから「DVM Functions」を選択します。
dvm:lookupValue関数をダブルクリックして、「式」フィールドに追加します。
lookupValue関数の様々な引数を指定します。例:
dvm:lookupValue('citymap.dvm','CityCodes',$in.Customer/inp1:Customer/Address/Ci ty,'CityNames','NotFound')
図44-7にも示すように、この式では、都市コードと等価の都市名のドメイン値マップがルックアップされます。都市コードの値は実行時に指定された値によって異なります。
このユースケースは、ドメイン値マップの階層ルックアップ機能を示します。階層ルックアップのユースケースは次の手順で構成されます。
ReadOrdersという名前のアダプタ・サービスにより、ファイルがディレクトリから取得されます。
ReadOrdersアダプタ・サービスがファイル・データをProcessOrdersというOracle Mediatorに送信します。
次にProcessOrders Oracle Mediatorはメッセージをアダプタ参照で必要となる構造に変換します。トランスフォーメーション中、Oracle MediatorはCommonドメインの等価値に対するUnitsOfMeasureドメイン値マップをルックアップします。
ProcessOrders Oracle Mediatorは、WriteOrdersという外部参照にメッセージを送信します。
WriteOrders参照は、指定された出力ディレクトリにメッセージを書き込みます。
この項で説明するサンプル・ファイルをダウンロードするには、次のURLを参照してください。
https://soasamples.samplecode.oracle.com/#mediator
この項では、SOAコンポジット・アプリケーションを作成、構築およびデプロイするための設計時タスクを説明します。これらのタスクは、表示されている順番で実行する必要があります。
Oracle Jdeveloperのアプリケーションおよびプロジェクトを作成する手順は、次のとおりです。
Oracle JDeveloperで「ファイル」をクリックし、「新規」を選択します。
「新規ギャラリ」ダイアログが表示されます。
「新規ギャラリ」で「一般」ノードを開き、「アプリケーション」カテゴリを選択します。
「項目」リストで「SOAアプリケーション」を選択し、「OK」をクリックします。
SOAアプリケーションの作成ウィザードが表示されます。
「アプリケーション名」フィールドにHierarchical
と入力し、「次へ」をクリックします。
「プロジェクトの名前付け」ページが表示されます。
「プロジェクト名」フィールドにHierarchicalValue
と入力し、「次へ」をクリックします。
SOA設定の構成ページが表示されます。
「コンポジット・テンプレート」リストで「空のコンポジット」を選択し、「終了」をクリックします。
Oracle JDeveloperの「アプリケーション・ナビゲータ」には新規のアプリケーションやプロジェクトが移入され、SOAコンポジット・エディタには空白のコンポジットがあります。
「ファイル」メニューから「すべて保存」を選択します。
ユースケース用のアプリケーションおよびプロジェクトを作成した後は、ドメイン値マップを作成する必要があります。
ドメイン値マップを作成する手順は、次のとおりです。
「アプリケーション・ナビゲータ」で、「HierarchicalValue」プロジェクトを右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログで「SOA層」ノードを開き、「トランスフォーメーション」カテゴリを選択します。
「項目」リストで、「ドメイン値マップ(DVM)」を選択し、「OK」をクリックします。
「ドメイン値マップ(DVM)・ファイルの作成」ダイアログが表示されます。
「ファイル名」フィールドに、UnitsOfMeasure.dvm
と入力します。
「ドメイン名」フィールドに、Siebel
とCommon
を入力します。
Siebel
ドメインに対応する「ドメイン値」フィールドに、Ea
と入力します。
Common
ドメインに対応する「ドメイン値」フィールドに、Each
と入力します。
「OK」をクリックします。
ドメイン値マップ・エディタが表示されます。
「追加」をクリックし、次に「列の追加」を選択します。
DVM列の作成ダイアログが表示されます。
「名前」フィールドに、TradingPartner
と入力します。
「修飾子」リストから「True」を選択します。
「QualifierOrder」フィールドに1
を入力し、「OK」をクリックします。
ステップ9からステップ12を繰り返して、StandardCode
という名前で修飾子の順序の値が2
の修飾子をもう1つ作成します。
「追加」をクリックし、次に「行の追加」を選択します。
この手順を繰り返し、さらに2行追加します。
ドメイン値マップ表に新たに追加した行に、表44-6に示す情報を入力します。
表44-6 ドメイン値マップ表の各行の情報
Siebel | Common | TradingPartner | StandardCode |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
図44-8に示すように、ドメイン値マップ・エディタが表示されます。
「ファイル」メニューから「すべて保存」を選択して、ドメイン値マップ・エディタを閉じます。
ドメイン値マップを作成した後は、ReadOrdersという名前のファイル・アダプタ・サービスを作成して、ディレクトリからXMLファイルを読み取る必要があります。
注意: Oracle Mediatorは、Oracle Real Application Clusters(Oracle RAC)の計画的停止に対して実行する際、同じファイルを2回処理する可能性があります。これは、ファイル・アダプタがXAに準拠していないアダプタであるためです。したがって、グローバル・トランザクションに組み入れると、各ファイルを1回のみ処理するXAインタフェース仕様に逸脱する可能性があります。 |
ファイル・アダプタ・サービスを作成する手順は、次のとおりです。
「コンポーネント・パレット」から「SOA」を選択します。
「ファイル・アダプタ」を選択し、「公開されたサービス」スイムレーンにドラッグします。
アダプタ構成ウィザードの「ようこそ」ページが開いた場合は、「次へ」をクリックします。
「サービス名」ページが表示されます。
「サービス名」フィールドにReadOrders
と入力し、「次へ」をクリックします。
「操作」ページが表示されます。
「操作タイプ」フィールドで「Read File」を選択し、「次へ」をクリックします。
「ファイル・ディレクトリ」ページが表示されます。
「着信ファイル用のディレクトリ(物理パス)」フィールドに、ファイルの読取り先のディレクトリを入力します。
「次へ」をクリックします。
「ファイルのフィルタ処理」ページが表示されます。
「インクルード・ファイルの名前パターン」フィールドに*.xml
と入力し、「次へ」をクリックします。
「ファイル・ポーリング」ページが表示されます。
「ポーリング頻度」フィールドの値を10秒に変更し、「次へ」をクリックします。
「メッセージ」ページが表示されます。
「検索」をクリックします。
「タイプ・チューザ」ダイアログが表示されます。
「スキーマ・ファイルのインポート」をクリックします。
「スキーマ・ファイルのインポート」ダイアログが表示されます。
「検索」をクリックして、Samples
フォルダに存在するOrder.xsdファイルを選択します。
「OK」をクリックします。
「タイプ・エクスプローラ」→「インポートしたスキーマ」→「Order.xsd」の順にナビゲーション・ツリーを開きます。
「listOfOrder」を選択して、「OK」をクリックします。
「次へ」をクリックします。
「終了」ページが表示されます。
「終了」をクリックします。
「ファイル」メニューから「すべて保存」をクリックします。
図44-9に、SOAコンポジット・エディタのReadOrdersサービスを示します。
ProcessOrdersという名前のOracle Mediatorを作成する手順は、次のとおりです。
「コンポーネント・パレット」から「メディエータ」アイコンをドラッグし、SOAコンポジット・エディタの「コンポーネント」セクションにドロップします。
「メディエータの作成」ダイアログが表示されます。
「名前」フィールドに、ProcessOrders
と入力します。
「テンプレート」リストから、「インタフェースを後で定義」を選択します。
「OK」をクリックします。
ProcessOrdersという名前のOracle Mediatorが作成されます。
図44-10に示すように、SOAコンポジット・エディタで、「ReadOrders」サービスと「ProcessOrders」Oracle Mediatorを接続します。
この操作により、ファイルを入力ディレクトリから読み込む間に、ProcessOrders Oracle Mediatorを起動するファイル・アダプタ・サービスが指定されます。
図44-10 ReadOrdersサービスからProcessOrders Oracle Mediatorへの接続
「ファイル」メニューから「すべて保存」を選択します。
ファイル・アダプタ参照を作成する手順は、次のとおりです。
「コンポーネント・パレット」から「SOA」を選択します。
「ファイル・アダプタ」を選択し、「外部参照」スイムレーンにドラッグします。
アダプタ構成ウィザードの「ようこそ」ページが表示されます。
「次へ」をクリックします。
「サービス名」ページが表示されます。
「サービス名」フィールドに、WriteCommonOrder
と入力します。
「次へ」をクリックします。
「操作」ページが表示されます。
「操作タイプ」フィールドで、「Write File」を選択します。
「次へ」をクリックします。
「ファイル構成」ページが表示されます。
「発信ファイルのディレクトリ(物理パス)」フィールドに、ファイルを書き込むディレクトリの名前を入力します。
ファイル・ネーミング規則フィールドにcommon_order_%SEQ%.xml
と入力して、「次へ」をクリックします。
「メッセージ」ページが表示されます。
「検索」をクリックします。
「タイプ・チューザ」ダイアログが表示されます。
「タイプ・エクスプローラ」→「プロジェクトのスキーマ・ファイル」→「Order.xsd」の順に移動し、「listOfOrder」を選択します。
「OK」をクリックします。
「次へ」をクリックします。
「終了」ページが表示されます。
「終了」をクリックします。
図44-11に、SOAコンポジット・エディタのWriteCommonOrder参照を示します。
「ファイル」メニューから「すべて保存」を選択します。
メッセージが経由するReadOrdersアダプタ・サービスから外部参照へのパスを指定する必要があります。
ルーティング・ルールを指定する手順は、次のとおりです。
図44-12に示すように、「ProcessOrders」Oracle Mediatorを「WriteCommonOrder」参照に接続します。
図44-12 ProcessOrders Oracle Mediator Oracle MediatorからWriteCommonOrder参照への接続
「ProcessOrders」Oracle Mediatorをダブルクリックします。
「次を使用して変換」フィールドの右側にあるアイコンをクリックします。
「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、「OK」をクリックします。
XSLTマッパーに、「listOfOrder_To_listOfOrder.xsl」ファイルが表示されます。
「imp1:listOfOrder」ソース要素を「imp1:listOfOrder」ターゲット要素にドラッグ・アンド・ドロップします。
「自動マップ・プリファレンス」ダイアログが表示されます。
「自動マップ中」オプションから、「祖先名を考慮した要素の一致」の選択を解除します。
「OK」をクリックします。
図44-13に示すように、「listOfOrder_To_listOfOrder.xsl」ファイルが表示されます。
図44-13 imp1:listOfOrderからimp1:listOfOrderへのトランスフォーメーション
「コンポーネント・パレット」で、「拡張」を選択します。
「DVM Functions」をクリックします。
図44-14に示すように、lookupValueをunitsOfMeasure要素の接続線にドラッグ・アンド・ドロップします。
図44-14 imp1:listOfOrderからimp1:listOfOrder.xslへのlookupValue関数の追加
「lookupvalue」アイコンをダブルクリックします。
「関数の編集 - lookupValue」ダイアログが表示されます。
「dvmLocation」フィールドの右側にある「検索」をクリックします。
「SOAリソース・ルックアップ」ダイアログが表示されます。
「UnitsofMeasure.dvm」を選択して、「OK」をクリックします。
「sourceColumnName」フィールドの右側にある「検索」をクリックします。
DVM列の選択ダイアログが表示されます。
「Siebel」を選択して、「OK」をクリックします。
「sourceValue」列に、次の値を入力します。
/imp1:listOfOrder/imp1:order/imp1:baseData/imp1:unitOfMeasure
「targetColumnName」フィールドの右側にある「検索」をクリックします。
DVM列の選択ダイアログが表示されます。
「Common」を選択して、「OK」をクリックします。
「defaultValue」フィールドに"No_Value_Found"
と入力します。
「追加」をクリックします。
「qualifierColumnName」行が追加されます。
「qualifierColumnName」フィールドに"StandardCode"
と入力します。
「追加」をクリックします。
「qualifierValue」行が追加されます。
「qualifierValue」フィールドに、次の値を入力します。
/imp1:listOfOrder/imp1:order/imp1:baseData/imp1:standard
「追加」をクリックして、別の「qualifierColumnName」行を挿入します。
「qualifierColumnName」フィールドに"TradingPartner"
と入力します。
「追加」をクリックして、別の「qualifierValue」行を挿入します。
「qualifierValue」フィールドに、次の値を入力します。
/imp1:listOfOrder/imp1:order/imp1:baseData/imp1:tp
図44-15に示すように、「関数の編集 - lookupValue」ダイアログが表示されます。
図44-15 「関数の編集 - lookupValue関数」ダイアログ: 階層ルックアップ・ユースケース
「OK」をクリックします。
図44-16に示すように、トランスフォーメーションが表示されます。
図44-16 imp1:listOfOrderからimp1:listOfOrderへのトランスフォーメーションの完了
「ファイル」メニューから「すべて保存」を選択して、上部にある「listOfOrder_To_listOfOrder.xsl」ファイルを閉じます。
SOAコンポジット・アプリケーションをデプロイするには、アプリケーション・サーバー接続が必要です。アプリケーション・サーバー接続の作成方法の詳細は、第41.7.1.1.1項「アプリケーション・サーバー接続の作成」を参照してください。
次の手順で、HierarchicalValueコンポジット・アプリケーションをアプリケーション・サーバーにデプロイします。
アプリケーション・デプロイメント・プロファイルの作成
アプリケーション・サーバーへのアプリケーションのデプロイ
これらの手順の詳細は、第41.7.1項「Oracle JDeveloperでの単一のSOAコンポジットのデプロイ」を参照してください。
デプロイしたHierarchicalValueアプリケーションは、入力XMLファイルであるsampleorder.xml
を入力フォルダにコピーすることで実行できます。このファイルはsamples
フォルダにあります。正常終了した場合、common_order_1.xml
という名前のファイルが、指定された出力ディレクトリに作成されます。
実行中のインスタンスの監視には、次のURLにあるOracle Enterprise Manager Fusion Middleware Controlコンソールを使用できます。
http://hostname:port/em
ここで、hostname
は、Oracle SOA Suiteインフラストラクチャをインストールしたホストです。
これらの手順の詳細は、第41.7.1項「Oracle JDeveloperでの単一のSOAコンポジットのデプロイ」を参照してください。
このユースケースは、複数の値をルックアップするために、2つのエンドポイント間でドメイン値マップ・ルックアップを使用する統合シナリオを示します。たとえば、インバウンド値が州の場合、アウトバウンド値は州の略称、言語および首都になります。複数の値ルックアップのユースケースは次の手順で構成されます。
readFileという名前のアダプタ・サービスにより、ファイルがディレクトリから取得されます。
readFileアダプタ・サービスがファイル・データをLookupMultiplevaluesMediatorというOracle Mediatorに送信します。
次にLookupMultiplevaluesMediator Oracle Mediatorはメッセージをアダプタ参照で必要となる構造に変換します。トランスフォーメーション中、Oracle MediatorはLongnameおよびShortnameドメインの等価値に対するmultivalueドメイン値マップをルックアップします。
LookupMultiplevaluesMediator Oracle Mediatorは、writeFileという外部参照にメッセージを送信します。
writeFile参照は、指定された出力ディレクトリにメッセージを書き込みます。
この項で説明するサンプル・ファイルをダウンロードするには、次のURLを参照してください。
https://soasamples.samplecode.oracle.com/#mediator
この項では、SOAコンポジット・アプリケーションを作成、構築およびデプロイするための設計時タスクを説明します。これらのタスクは、表示されている順番で実行します。
Oracle Jdeveloperのアプリケーションおよびプロジェクトを作成する手順は、次のとおりです。
Oracle JDeveloperで「ファイル」をクリックし、「新規」を選択します。
「新規ギャラリ」ダイアログが表示されます。
「新規ギャラリ」で「一般」ノードを開き、「アプリケーション」カテゴリを選択します。
「項目」リストで「SOAアプリケーション」を選択し、「OK」をクリックします。
SOAアプリケーションの作成ウィザードが表示されます。
「アプリケーション名」フィールドにMultivalue
と入力し、「次へ」をクリックします。
「プロジェクトの名前付け」ページが表示されます。
「プロジェクト名」フィールドにMultivalue
と入力し、「次へ」をクリックします。
SOA設定の構成ページが表示されます。
「コンポジット・テンプレート」リストから「空のコンポジット」を選択し、「終了」をクリックします。
Oracle JDeveloperの「アプリケーション・ナビゲータ」には新規のアプリケーションやプロジェクトが移入され、SOAコンポジット・エディタには空白のコンポジットがあります。
「ファイル」メニューから「すべて保存」を選択します。
ユースケース用のアプリケーションおよびプロジェクトを作成した後は、ドメイン値マップを作成する必要があります。
ドメイン値マップを作成する手順は、次のとおりです。
「アプリケーション・ナビゲータ」で、「Multivalue」プロジェクトを右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログで「SOA層」ノードを開き、「トランスフォーメーション」カテゴリを選択します。
「項目」リストで、「ドメイン値マップ(DVM)」を選択し、「OK」をクリックします。
「ドメイン値マップ(DVM)・ファイルの作成」ダイアログが表示されます。
「ファイル名」フィールドに、multivalue.dvm
と入力します。
「ドメイン名」フィールドに、Longname
、Shortname
、Language
およびCapital
を入力します。
Longname
ドメインに対応する「ドメイン値」フィールドに、Karnataka
と入力します。
Shortname
ドメインに対応する「ドメイン値」フィールドに、KA
と入力します。
Language
ドメインに対応する「ドメイン値」フィールドに、Kannada
と入力します。
Capital
ドメインに対応する「ドメイン値」フィールドに、Bangalore
と入力します。
「OK」をクリックします。
ドメイン値マップ・エディタが表示されます。
「追加」をクリックし、次に「行の追加」を選択します。
この手順を繰り返し、さらに2行追加します。
ドメイン値マップ表に新たに追加した行に、表44-7に示す情報を入力します。
表44-7 ドメイン値マップ表の各行の情報
Longname | Shortname | Language | Capital |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
図44-17に示すように、ドメイン値マップ・エディタが表示されます。
「ファイル」メニューから「すべて保存」を選択して、ドメイン値マップ・エディタを閉じます。
ドメイン値マップを作成した後は、readFileという名前のファイル・アダプタ・サービスを作成して、ディレクトリからXMLファイルを読み取る必要があります。
注意: Oracle Mediatorは、Oracle RACの計画的停止に対して実行する際、同じファイルを2回処理する可能性があります。これは、ファイル・アダプタがXAに準拠していないアダプタであるためです。したがって、グローバル・トランザクションに組み入れると、各ファイルを1回のみ処理するXAインタフェース仕様に逸脱する可能性があります。 |
ファイル・アダプタ・サービスを作成する手順は、次のとおりです。
「コンポーネント・パレット」から「SOA」を選択します。
「ファイル・アダプタ」を選択し、「公開されたサービス」スイムレーンにドラッグします。
アダプタ構成ウィザードの「ようこそ」ページが開いた場合は、「次へ」をクリックします。
「サービス名」ページが表示されます。
「サービス名」フィールドにreadFile
と入力し、「次へ」をクリックします。
「アダプタ・インタフェース」ページが表示されます。
「操作およびスキーマから定義(後で指定)」をクリックし、「次へ」をクリックします。
「操作」ページが表示されます。
「操作タイプ」フィールドで「Read File」を選択し、「次へ」をクリックします。
「ファイル・ディレクトリ」ページが表示されます。
「着信ファイル用のディレクトリ(物理パス)」フィールドに、ファイルの読取り先のディレクトリを入力します。
「次へ」をクリックします。
「ファイルのフィルタ処理」ページが表示されます。
「インクルード・ファイルの名前パターン」フィールドに*.xml
と入力し、「次へ」をクリックします。
「ファイル・ポーリング」ページが表示されます。
「ポーリング頻度」フィールドの値を1秒に変更し、「次へ」をクリックします。
「メッセージ」ページが表示されます。
「検索」をクリックします。
「タイプ・チューザ」ダイアログが表示されます。
「スキーマ・ファイルのインポート」をクリックします。
「スキーマ・ファイルのインポート」ダイアログが表示されます。
「検索」をクリックして、Samplesフォルダに存在するinput.xsdファイルを選択します。
「OK」をクリックします。
「タイプ・エクスプローラ」→「インポートしたスキーマ」→「input.xsd」の順にナビゲーション・ツリーを開きます。
「Root-Element」を選択して、「OK」をクリックします。
「次へ」をクリックします。
「終了」ページが表示されます。
「終了」をクリックします。
「ファイル」メニューから「すべて保存」を選択します。
図44-18に、SOAコンポジット・エディタのreadFileサービスを示します。
LookupMultiplevaluesMediator Oracle Mediatorを作成する手順は、次のとおりです。
「コンポーネント・パレット」から「メディエータ」アイコンをドラッグし、SOAコンポジット・エディタの「コンポーネント」セクションにドロップします。
「メディエータの作成」ダイアログが表示されます。
「名前」フィールドに、LookupMultiplevaluesMediator
と入力します。
「テンプレート」リストから、「インタフェースを後で定義」を選択します。
「OK」をクリックします。
LookupMultiplevaluesMediatorという名前のOracle Mediatorが作成されます。
図44-19に示すように、SOAコンポジット・エディタで、「readFile」サービスと「LookupMultiplevaluesMediator」Oracle Mediatorを接続します。
この操作により、ファイルを入力ディレクトリから読み込む間に、LookupMultiplevaluesMediator Oracle Mediatorを起動するファイル・アダプタ・サービスが指定されます。
図44-19 readFileサービスからLookupMultiplevaluesMediator Oracle Mediatorへの接続
「ファイル」メニューから「すべて保存」を選択します。
ファイル・アダプタ参照を作成する手順は、次のとおりです。
「コンポーネント・パレット」から「SOA」を選択します。
「ファイル・アダプタ」を選択し、「外部参照」スイムレーンにドラッグします。
アダプタ構成ウィザードの「ようこそ」ページが表示されます。
「次へ」をクリックします。
「サービス名」ページが表示されます。
「サービス名」フィールドにwriteFile
と入力し、「次へ」をクリックします。
「アダプタ・インタフェース」ページが表示されます。
「操作およびスキーマから定義(後で指定)」をクリックし、「次へ」をクリックします。
「操作」ページが表示されます。
「次へ」をクリックします。
「操作」ページが表示されます。
「操作タイプ」フィールドで、「Write File」を選択します。
「次へ」をクリックします。
「ファイル構成」ページが表示されます。
「発信ファイルのディレクトリ(物理パス)」フィールドに、ファイルを書き込むディレクトリの名前を入力します。
ファイル・ネーミング規則フィールドにmultivalue_%SEQ%.xml
と入力して、「次へ」をクリックします。
「メッセージ」ページが表示されます。
「検索」をクリックします。
「タイプ・チューザ」ダイアログが表示されます。
「タイプ・エクスプローラ」→「プロジェクトのスキーマ・ファイル」→「output.xsd」の順に移動し、「Root-Element」を選択します。
「OK」をクリックします。
「次へ」をクリックします。
「終了」ページが表示されます。
「終了」をクリックします。
図44-20に、SOAコンポジット・エディタのwriteFile参照を示します。
「ファイル」メニューから「すべて保存」を選択します。
メッセージが経由するreadFileアダプタ・サービスから外部参照へのパスを指定する必要があります。
ルーティング・ルールを指定する手順は、次のとおりです。
図44-21に示すように、「LookupMultiplevaluesMediator」Oracle Mediatorを「writeFile」参照に接続します。
図44-21 LookupMultiplevaluesMediator Oracle MediatorからwriteFile参照への接続
「LookupMultiplevaluesMediator」Oracle Mediatorをダブルクリックします。
「次を使用して変換」フィールドの右側にあるアイコンをクリックします。
「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、「OK」をクリックします。
XSLTマッパーに、「Input_To_Output_with_multiple_values_lookup.xsl」ファイルが表示されます。
「imp1:Root-Element」ソース要素を「ns2:Root-Element」ターゲット要素にドラッグ・アンド・ドロップします。
「自動マップ・プリファレンス」ダイアログが表示されます。
「自動マップ中」オプション・リストから、「祖先名を考慮した要素の一致」の選択を解除します。
「OK」をクリックします。
図44-22に示すように、XSLTマッパーに「Input_To_Output_with_multiple_values_lookup.xsl」ファイルが表示されます。
図44-22 imp1:Root-Elementからns2:Root-Elementへのトランスフォーメーション
「コンポーネント・パレット」で、「拡張」を選択します。
「DVM Functions」をクリックします。
図44-23に示すように、lookupValue1Mを中央のパネルにドラッグ・アンド・ドロップします。
図44-23 imp1:Root-Elementからns2:Root-ElementへのlookupValue関数の追加
「lookupvalue1M」アイコンをダブルクリックします。
「関数の編集 - lookupValue1M」ダイアログが表示されます。
「dvmLocation」フィールドの右側にある「検索」をクリックします。
「SOAリソース・ルックアップ」ダイアログが表示されます。
「multivalue.dvm」を選択して、「OK」をクリックします。
「sourceColumnName」フィールドの右側にある「検索」をクリックします。
DVM列の選択ダイアログが表示されます。
「Longname」を選択して、「OK」をクリックします。
「sourceValue」列に、次の値を入力します。
/imp1:Root-Element/imp1:Details/imp1:Longname
「targetColumnName」フィールドの右側にある「検索」をクリックします。
DVM列の選択ダイアログが表示されます。
「Shortname」を選択して、「OK」をクリックします。
「追加」をクリックします。
「targetColumnName」行が追加されます。
「targetColumnName」フィールドに、"Language"
と入力します。
「追加」をクリックして、別の「targetColumnName」行を挿入します。
「targetColumnName」フィールドに、"Capital"
と入力します。
図44-24に示すように、「関数の編集 - lookupValue」ダイアログが表示されます。
図44-24 「関数の編集 - lookupValue関数」ダイアログ: 複数の値ルックアップ・ユースケース
「OK」をクリックします。
図44-25に示すように、トランスフォーメーションが表示されます。
図44-25 imp1:Root-Elementからns2:Root-Elementへのトランスフォーメーションの完了
「ファイル」メニューから「すべて保存」を選択して、「Input_To_Output_with_multiple_values_lookup.xsl」ファイルを閉じます。
SOAコンポジット・アプリケーションをデプロイするには、アプリケーション・サーバー接続が必要です。アプリケーション・サーバー接続の作成方法の詳細は、第41.7.1.1.1項「アプリケーション・サーバー接続の作成」を参照してください。
次の手順で、Multivalueコンポジット・アプリケーションをアプリケーション・サーバーにデプロイします。
アプリケーション・デプロイメント・プロファイルの作成
アプリケーション・サーバーへのアプリケーションのデプロイ
これらの手順の詳細は、第41.7.1項「Oracle JDeveloperでの単一のSOAコンポジットのデプロイ」を参照してください。
デプロイしたMultivalueアプリケーションは、入力XMLファイルであるsampleinput.xml
を入力フォルダにコピーすることで実行できます。このファイルはsamples
フォルダにあります。正常終了した場合、multivalue_1.xml
という名前のファイルが、指定された出力ディレクトリに作成されます。
実行中のインスタンスの監視には、次のURLにあるOracle Enterprise Manager Fusion Middleware Controlコンソールを使用できます。
http://hostname:port/em
ここで、hostname
は、Oracle SOA Suiteインフラストラクチャをインストールしたホストです。
Oracle Enterprise Manager Fusion Middleware ControlコンソールでMultivalueをクリックすると、プロジェクト・ダッシュボードが表示されます。
詳細な実行証跡を表示するには、インスタンス列のインスタンスIDをクリックします。「フローのトレース」ページが表示されます。