この章では、ドメイン値マップを使用して、別のドメインで使用されている用語をマップする方法について説明します。
項目は次のとおりです。
ドメイン値マップは、実行時にインフラストラクチャを通過する実際のデータ値に対して機能します。 ドメイン値マップを使用すると、特定のドメインで使用されているある用語を、異なるドメインで使用されている別の用語にマップできます。たとえば、あるドメインでは都市を正式名称(Boston
)で表す場合があるのに対して、別のドメインでは、都市を略称(BO
)で表す場合があります。 このような場合は、ドメイン値マップを使用して値を直接マップできます。2つ以上のドメインの間で直接値をマップする方法は、ポイントツーポイント・マッピングと呼ばれます。 表46-1に、2つのドメインの間で都市名をポイントツーポイント・マッピングする方法を示します。
表46-1 ポイントツーポイント・マッピング
CityCode | CityName |
---|---|
BELG_MN_STLouis |
BelgradeStLouis |
BELG_NC |
BelgradeNorthCarolina |
BO |
Boston |
NP |
Northport |
KN_USA |
KensingtonUSA |
KN_CAN |
KensingtonCanada |
通常、各ドメイン値マップには、複数のアプリケーション間における特定カテゴリのマッピングが保持されます。たとえば、あるドメイン値マップは都市コードのマッピングを保持し、別のドメイン値マップは州コードのマッピングを保持できます。
ドメイン値マップの値は静的です。 ドメイン値マップの各値は、設計時にOracle JDeveloperを使用して指定し、実行時に、各値についてドメイン値マップの各列がルックアップされます。
ドメイン値マップ機能は、次の機能で構成されています。
修飾子はマッピングを修飾します。追加情報で修飾されていないときは、マッピングが無効になる場合があります。 たとえば、都市コードから都市名のマッピングを含むドメイン値マップにKNからKensingtonへのマッピングが複数あるのは、Kensingtonという都市がUSAのみでなくカナダにもあるためです。 そのため、このマッピングでは表46-2に示すように、マッピングを有効にする際に使用する修飾子(USAまたはCanada)が必要です。
表46-2 修飾子サポートの例
Country(修飾子) | CityCode | CityName |
---|---|---|
USA |
BO |
Boston |
USA |
BELG_NC |
Belgrade |
USA |
BELG_MN_Streams |
Belgrade |
USA |
NP |
Northport |
USA |
KN |
Kensington |
Canada |
KN |
Kensington |
また、ドメイン値マップには複数の修飾子を指定できます。 たとえば、表46-3に示すように、BELG
からBelgrade
へのマッピングは州名で修飾することもできます。
表46-3 複数の修飾子サポートの例
Country(修飾子) | State(修飾子) | CityCode | CityName |
---|---|---|---|
USA |
Massachusetts |
BO |
Boston |
USA |
North Carolina |
BELG |
Belgrade |
USA |
Minnesota |
BELG |
Belgrade |
USA |
Alabama |
NP |
Northport |
USA |
Kansas |
KN |
Kensington |
Canada |
Prince Edward Island |
KN |
Kensington |
修飾子は、マッピングを修飾するときにのみ使用します。 そのため、修飾子の値はルックアップできません。
修飾子の順序は、実行時のルックアップで最適な一致を検出するために使用します。修飾子の順序は、より正確な一致を定義する際に、その修飾子の役割によって上位から下位に変化します。 表46-3では、Stateの一致がより正確な一致を示すため、State修飾子をCountry修飾子より上位の順序に指定できます。
ドメイン値マップは階層ルックアップをサポートします。 ルックアップ時に修飾子の値を指定し、正確な一致が検出されなかった場合は、ルックアップ・メカニズムによって上位順序の修飾子が""
に設定され、より一般的な一致の検出が試行されます。 この処理は、一致が検出されるか、またはすべての修飾子を""
に設定しても一致が検出されない場合に終了します。 図46-1では、表46-3に示した次のルックアップで実行される階層ルックアップについて説明しています。
State=Arkansas, Country=Canada, CityCode=KN_USA
この例では、State
修飾子の値は1
で、Country
修飾子の値は2
です。
図46-1に示すように、ルックアップ・メカニズムでは上位順序の修飾子STATE
に正確なルックアップ値Arkansas
を設定し、下位順序の修飾子Country
にCanada|""
を使用します。
一致が検出されない場合、ルックアップ・メカニズムでは上位順序の修飾子STATE
に値""
を設定し、次に上位である修飾子Country
に正確な値Canada
を設定します。
一致が検出されない場合、ルックアップ・メカニズムでは以前に上位順序の修飾子であったCountry
に値""
を設定します。CityCode
がKN_USA
である一致行が1行検出された場合は、値としてKensington
が返されます。
表46-4に、これらの手順の要約を示します。
ドメイン値マップでは、1つの値を複数の値にマップできます。 たとえば、支払い条件のドメイン値マップには、表46-5に示すように、支払い条件と、値引率、値引期間、総支払期間などの3つの値とのマッピングを格納できます。
Oracle JDeveloperのSOAコンポジット・アプリケーションで1つ以上のドメイン値マップを作成し、実行時に、そのドメイン値マップを使用して列の各値をルックアップできます。
ドメイン値マップは、Oracle JDeveloperの「ドメイン値マップ(DVM)・ファイルの作成」ダイアログを使用して作成できます。
ドメイン値マップを作成する手順は、次のとおりです。
「アプリケーション・ナビゲータ」で、ドメイン値マップを作成するプロジェクトを右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログが表示されます。
「SOA層」ノードを開き、「トランスフォーメーション」カテゴリを選択します。
「項目」リストで、「ドメイン値マップ(DVM)」を選択し、「OK」をクリックします。
「ドメイン値マップ(DVM)・ファイルの作成」ダイアログが表示されます。
「ファイル名」フィールドに、ドメイン値マップのファイル名を入力します。たとえば、都市名と都市コードのドメイン値マップを識別するためにCityCodes
を指定します。
「説明」フィールドに、ドメイン値マップの説明を入力します。たとえば、Mappings of city names and city codes
と入力します。このフィールドはオプションです。
「ドメイン名」フィールドに、各ドメインの名前を入力します。 たとえば、ある「ドメイン名」フィールドにはCityCode
を、別のフィールドにはCityName
を入力します。各ドメイン名はドメイン値マップ内では一意の名前にする必要があります。
注意: ドメイン値マップ・エディタを使用して、後でドメインをドメイン値マップに追加できます。 |
「ドメイン値」フィールドに、各ドメインの対応する値を入力します。 たとえば、図46-2に示すように、CityCode
ドメインにBO
を、CityName
ドメインにBoston
を入力します。
「OK」をクリックします。
図46-3に示すように、ドメイン値マップ・エディタが表示されます。
図46-4に示すように、拡張子が.dvm
のファイルが作成され、「アプリケーション・ナビゲータ」に表示されます。
すべての.dvm
ファイルは、次のスキーマ定義(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
関数では、ソース列に指定のソース値を含むドメイン値マップでターゲット列の値をルックアップすることにより、文字列が返されます。
使用方法1
dvm:lookupValue(dvmMetadataURI as string, SourceColumnName as string, SourceValue as string, TargetColumnName as string, DefaultValue as string) as string
例:
dvm:lookupValue('cityMap.dvm','CityCodes','BO', 'CityNames','CouldNotBeFound')
使用方法2
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
例:
dvm:lookupValue ('cityMap.dvm','CityCodes','BO','CityNames', 'CouldNotBeFound', 'State', 'Massachusetts')
引数
dvmMetadataURI
: ドメイン値マップのURIです。
SourceColumnName
: ソース列名です。
SourceValue
: ソース値(XSLTトランスフォーメーションのソース文書にバインドされるXPath式)です。
TargetColumnName
: ターゲット列名です。
DefaultValue
: 値が見つからない場合は、デフォルト値が返されます。
QualifierSourceColumn
: 修飾子列の名前です。
QualifierSourceValue
: 修飾子の値です。
dvm:lookupValue1M
関数では、ソース列の値がソース値と等しいドメイン値マップの複数のターゲット列の値を格納する、XMLドキュメント・フラグメントが返されます。
dvm:lookupValue1M(dvmMetadataURI as string, SourceColumnName as string, SourceValue as string,(TargetColumnName as string)?)as nodeset
引数
dvmMetadataURI
: ドメイン値マップのURIです。
SourceColumnName
: ソース列名です。
SourceValue
: ソース値(XSLTトランスフォーメーションのソース文書にバインドされるXPath式)です。
TargetColumnName
: ターゲット列名です。1つ以上の列名を指定する必要があります。疑問符記号(?
)は複数のターゲット列名を指定できることを示します。
例
dvm:lookupValue1M ('cityMap.dvm','CityCode','BO','CityName','CityNickName')
結果は次のとおりです。
<CityName>Boston</CityName> <CityNickName>BeanTown</CityNickName>
ドメイン値マップ関数は、BPELサービス・コンポーネントまたはメディエータ・サービス・コンポーネントによるトランスフォーメーションに使用できます。トランスフォーメーションの実行には、XSLファイルを作成してXMLスキーマ間でデータを変換するときに表示されるXSLTマッパー・ウィンドウを使用します。
XSLTマッパーの詳細は、第45章「XSLTマッパーを使用したトランスフォーメーションの作成」を参照してください。
トランスフォーメーションでlookupValue1M関数を使用する手順は、次のとおりです。
「アプリケーション・ナビゲータ」で、XSLファイルをダブルクリックしてXSLTマッパー・ウィンドウを開きます。
XSLTマッパー・ウィンドウで、「ソース」および「ターゲット」ペインのツリーを開きます。
「コンポーネント・パレット」で、下矢印をクリックして「拡張」を選択します。
図46-5に示すように、「DVM Functions」を選択します。
ソースとターゲットの接続線にlookupValue1Mをドラッグ・アンド・ドロップします。
接続線上に「dvm:lookupValue1M」
アイコンが表示されます。
「lookupValue1M」アイコンをダブルクリックします。
図46-6に示すように、「関数の編集 – lookupValue1M」ダイアログが表示されます。
「関数の編集 – lookupValue1M」ダイアログの次のフィールドに値を指定します。
「dvmLocation」フィールドで、ドメイン値マップ・ファイルのロケーションURIを入力するか、「dvmLocation」フィールドの右側にある「参照」をクリックして、ドメイン値マップ・ファイルを選択します。 MDSおよびMDSの共有ロケーションからもすでにデプロイされたドメイン値マップを選択できます。これを実行するには、「リソース・パレット」を選択します。
「sourceColumnName」フィールドに、ソース要素の値に関連付けられているドメイン値マップの列名を入力するか、「参照」をクリックして、以前に選択したドメイン値マップに定義されている列から列名を選択します。
「sourceValue」フィールドでは、値を入力するか、[Ctrl]キーを押しながら[Space]キーを押してXPathビルディング・アシスタントを使用できます。 上矢印キーおよび下矢印キーを押して、リスト内のオブジェクトを配置し、[Enter]キーを押してその項目を選択します。
「targetColumnName」フィールドに、ターゲット要素の値に関連付けられているドメイン値マップの列名を入力するか、「参照」をクリックして、以前に選択したドメイン値マップに定義されている列から列名を選択します。
「追加」をクリックして別の列をターゲット列として追加し、列の名前を入力します。
図46-7に、移入後の「関数の編集 - lookupValue1M」ダイアログを示します。
「OK」をクリックします。
XSLTマッパー・ウィンドウが、「lookupValue1M」関数アイコンとともに表示されます。
「ファイル」メニューから「すべて保存」をクリックします。
「式ビルダー」ダイアログでは、ドメイン値マップ関数を使用してXpath式を作成できます。 「式ビルダー」ダイアログには、メディエータ・サービス・コンポーネントのフィルタ式または値の割当て機能からアクセスできます。
値の割当て機能の詳細は、第19.2.2.8項「値の割当て」を参照してください。
「式ビルダー」ダイアログでlookupValue関数を使用する手順は、次のとおりです。
「関数」リストから「DVM Functions」を選択します。
dvm:lookupValue関数をダブルクリックして、「式」フィールドに追加します。
lookupValue関数の様々な引数を指定します。次に例を示します。
dvm:lookupValue('citymap.dvm','CityCodes',$in.Customer/inp1:Customer/Address/Ci ty,'CityNames','NotFound')
図46-8にも示すように、この式では、都市コードと等価の都市名のドメイン値マップがルックアップされます。 都市コードの値は実行時に指定された値によって異なります。
このユースケースは、ドメイン値マップの階層ルックアップ機能を示します。 階層ルックアップのユースケースは次の手順で構成されます。
ReadOrders
という名前のアダプタ・サービスにより、ファイルがディレクトリから取り出されます。
ReadOrders
アダプタ・サービスがファイル・データをProcessOrders
メディエータに送信します。
次にProcessOrders
メディエータはメッセージをアダプタ参照で必要となる構造に変換します。 トランスフォーメーション中、メディエータはCommon
ドメインの等価値に対するUnitsOfMeasure
ドメイン値マップをルックアップします。
ProcessOrders
メディエータは、外部参照のWriteOrders
にメッセージを送信します。
WriteOrders
参照は、指定された出力ディレクトリにメッセージを書き込みます。
この項で説明するサンプル・ファイルをダウンロードするには、次のURLを参照してください。
http://www.oracle.com/technology/sample_code/products/mediator
この項では、SOAコンポジット・アプリケーションを作成、構築およびデプロイするための設計時タスクを説明します。 これらのタスクは、表示されている順番で実行する必要があります。
ユースケース用のアプリケーションおよびプロジェクトを作成する手順は、次のとおりです。
Oracle JDeveloperで「ファイル」をクリックし、「新規」を選択します。
「新規ギャラリ」ダイアログが表示されます。
「新規ギャラリ」で「一般」ノードを開き、「アプリケーション」カテゴリを選択します。
「項目」リストで「SOAアプリケーション」を選択し、「OK」をクリックします。
SOAアプリケーションの作成ウィザードが表示されます。
「アプリケーション名」フィールドにHierarchical
と入力し、「次へ」をクリックします。
「SOAプロジェクトの名前付け」画面が表示されます。
「プロジェクト名」フィールドにHierarchicalValue
と入力し、「次へ」をクリックします。
SOAプロジェクト用のSOA設定の構成画面が表示されます。
「コンポジット・テンプレート」リストで「空のコンポジット」を選択し、「終了」をクリックします。
Oracle JDeveloperの「アプリケーション・ナビゲータ」には新規のアプリケーションやプロジェクトが移入され、「設計」タブには空白のパレットがあります。
「ファイル」メニューから「すべて保存」をクリックします。
ユースケース用のアプリケーションおよびプロジェクトを作成した後は、ドメイン値マップを作成する必要があります。
ドメイン値マップを作成する手順は、次のとおりです。
「アプリケーション・ナビゲータ」で、「HierarchicalValue」プロジェクトを右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログで「SOA層」ノードを開き、「トランスフォーメーション」カテゴリを選択します。
「項目」リストで、「ドメイン値マップ(DVM)」を選択し、「OK」をクリックします。
「ドメイン値マップ(DVM)・ファイルの作成」ダイアログが表示されます。
「ファイル名」フィールドに、UnitsOfMeasure.dvm
と入力します。
「ドメイン名」フィールドに、Siebel
とCommon
を入力します。
Siebelドメインに対応する「ドメイン値」フィールドに、Ea
と入力します。
Commonドメインに対応する「ドメイン値」フィールドに、Each
と入力します。
「OK」をクリックします。
ドメイン値マップ・エディタが表示されます。
「追加」をクリックし、次に「列の追加」を選択します。
DVM列の作成ダイアログが表示されます。
「名前」フィールドに、TradingPartner
と入力します。
「修飾子」リストから「True」を選択します。
「QualifierOrder」フィールドに1
を入力し、「OK」をクリックします。
「追加」をクリックし、次に「行の追加」を選択します。
この手順を繰り返し、さらに2行追加します。
ドメイン値マップ表に新たに追加した行に、次の情報を入力します。
Siebel | Common | TradingPartner | StandardCode |
---|---|---|---|
EC | Each | OAG | |
E-RN | Each | A.C.Networks | RN |
EO | Each | ABC Inc | RN |
図46-9に示すように、ドメイン値マップ・エディタが表示されます。
「ファイル」メニューから「すべて保存」をクリックして、ドメイン値マップ・エディタを閉じます。
ドメイン値マップを作成した後は、ReadOrders
という名前のファイル・アダプタ・サービスを作成して、ディレクトリからXMLファイルを読み取る必要があります。
注意: Oracle Mediatorは、Oracle RACの計画的停止に対して実行する際、同じファイルを2回処理する可能性があります。 これは、ファイル・アダプタがXAに準拠していないアダプタであるためです。 このため、グローバル・トランザクションに組み入れると、各ファイルを1回のみ処理するXAインタフェース仕様に逸脱する可能性があります。 |
ファイル・アダプタ・サービスを作成する手順は、次のとおりです。
「コンポーネント・パレット」から「SOA」を選択します。
「ファイル・アダプタ」を選択し、「公開されたサービス」設計領域にドラッグします。
アダプタ構成ウィザードの「ようこそ」ページが開いた場合は、「次へ」をクリックします。
「サービス名」ページが表示されます。
「サービス名」フィールドにReadOrders
と入力し、「次へ」をクリックします。
「操作」ページが表示されます。
「操作タイプ」フィールドで「Read File」を選択し、「次へ」をクリックします。
「ファイル・ディレクトリ」ページが表示されます。
「着信ファイル用のディレクトリ(物理パス)」フィールドに、ファイルの読取り先のディレクトリを入力します。
「次へ」をクリックします。
「ファイルのフィルタ処理」ページが表示されます。
「インクルード・ファイルの名前パターン」フィールドに*.xml
と入力し、「次へ」をクリックします。
「ファイル・ポーリング」ページが表示されます。
「ポーリング頻度」フィールドの値を10秒に変更し、「次へ」をクリックします。
「メッセージ」ページが表示されます。
「検索」をクリックします。
「タイプ・チューザ」ダイアログが表示されます。
「スキーマ・ファイルのインポート」をクリックします。
「スキーマ・ファイルのインポート」ダイアログが表示されます。
「検索」をクリックして、Samples
フォルダに存在するOrder.xsdファイルを選択します。
「OK」をクリックします。
「タイプ・エクスプローラ」→「インポートしたスキーマ」→「Order.xsd」の順にナビゲーション・ツリーを開きます。
「listOfOrder」を選択し、「OK」をクリックします。
「次へ」をクリックします。
「終了」ページが表示されます。
「終了」をクリックします。
「ファイル」メニューから「すべて保存」をクリックします。
図46-10に、SOAコンポジット・エディタのReadOrders
サービスを示します。
ProcessOrdersという名前のメディエータを作成する手順は、次のとおりです。
メディエータを「コンポーネント・パレット」から「コンポーネント」設計領域にドラッグ・アンド・ドロップします。
「メディエータの作成」ダイアログが表示されます。
「名前」フィールドにProcessOrders
と入力します。
「テンプレート」リストから、「インタフェースを後で定義」を選択します。
「OK」をクリックします。
ProcessOrders
という名前のメディエータが作成されます。
図46-11に示すように、SOAコンポジット・エディタで、「ReadOrders」
サービスと「ProcessOrders」
メディエータを接続します。
この操作により、ファイルを入力ディレクトリから読み込む間に、ProcessOrders
メディエータを起動するファイル・アダプタ・サービスが指定されます。
「ファイル」メニューから「すべて保存」をクリックします。
ファイル・アダプタ参照を作成する手順は、次のとおりです。
「コンポーネント・パレット」から「SOA」を選択します。
「ファイル・アダプタ」を選択し、「外部参照」設計領域にドラッグします。
アダプタ構成ウィザードの「ようこそ」ページが表示されます。
「次へ」をクリックします。
「サービス名」ページが表示されます。
「サービス名」フィールドに、WriteCommonOrder
と入力します。
「次へ」をクリックします。
「操作」ページが表示されます。
「操作タイプ」フィールドで、「Write File」を選択します。
「次へ」をクリックします。
「ファイル構成」ページが表示されます。
「発信ファイルのディレクトリ(物理パス)」フィールドに、ファイルを書き込むディレクトリの名前を入力します。
ファイル・ネーミング規則フィールドにcommon_order_%SEQ%.xml
と入力して、「次へ」をクリックします。
「メッセージ」ページが表示されます。
「検索」をクリックします。
「タイプ・チューザ」ダイアログが表示されます。
「タイプ・エクスプローラ」→「プロジェクトのスキーマ・ファイル」→「Order.xsd」の順に移動し、「listOfOrder」を選択します。
「OK」をクリックします。
「次へ」をクリックします。
「終了」ページが表示されます。
「終了」をクリックします。
図46-12に、SOAコンポジット・エディタのWriteCommonOrder
参照を示します。
「ファイル」メニューから「すべて保存」をクリックします。
メッセージが経由するReadOrders
アダプタ・サービスから外部参照へのパスを指定する必要があります。
ルーティング・ルールを指定する手順は、次のとおりです。
図46-13に示すように、「ProcessOrders」メディエータを「WriteCommonOrder」参照に接続します。
図46-13 ProcessOrdersメディエータからWriteCommonOrder参照への接続
「ProcessOrders」メディエータをダブルクリックします。
「次を使用して変換」フィールドの右側にあるアイコンをクリックします。
「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、「OK」をクリックします。
「listOfOrder_To_listOfOrder.xsl」タブが表示されます。
「imp1:listOfOrder」ソース要素を「imp1:listOfOrder」ターゲット要素にドラッグ・アンド・ドロップします。
「自動マップ・プリファレンス」ダイアログが表示されます。
「自動マップ中」オプションから、「祖先名を考慮した要素の一致」の選択を解除します。
「OK」をクリックします。
図46-14に示すように、listOfOrder_To_listOfOrder.xsl
タブが表示されます。
図46-14 imp1:listOfOrderからimp1:listOfOrderへのトランスフォーメーション
「コンポーネント・パレット」で、「拡張」を選択します。
「DVM Functions」をクリックします。
図46-15に示すように、lookupValueをunitsOfMeasure
要素の接続線にドラッグ・アンド・ドロップします。
図46-15 imp1:listOfOrderからimp1:listOfOrder.xslへのlookupValue関数の追加
「lookupvalue」アイコンをダブルクリックします。
「関数の編集 - lookupValue」ダイアログが表示されます。
「dvmLocation」フィールドの右側にある「検索」をクリックします。
「SCAリソース・ルックアップ」ダイアログが表示されます。
「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
と入力します。
図46-16に示すように、「関数の編集 - lookupValue」ダイアログが表示されます。
図46-16 「関数の編集 - lookupValue関数」ダイアログ: 階層ルックアップ・ユースケース
「OK」をクリックします。
図46-17に示すように、トランスフォーメーションが表示されます。
図46-17 imp1:listOfOrderからimp1:listOfOrderへのトランスフォーメーションの完了
「ファイル」メニューから「すべて保存」をクリックして、「listOfOrder_To_listOfOrder.xsl」タブを閉じます。
SOAコンポジット・アプリケーションをデプロイするには、Oracle Application Server接続が必要です。 Oracle Application Server接続の作成の詳細は、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』を参照してください。
次の手順で、HierarchicalValue
コンポジット・アプリケーションをOracle Application Serverにデプロイします。
アプリケーション・デプロイメント・プロファイルの作成
アプリケーションのOracle Application Serverへのデプロイ
これらの手順の詳細は、第43.2項「Oracle JDeveloperでの単一のSOAコンポジットのデプロイ」を参照してください。
デプロイしたHierarchicalValue
アプリケーションは、入力XMLファイルであるsampleorder.xml
を入力フォルダにコピーすることで実行できます。このファイルはsamples
フォルダにあります。正常終了した場合、common_order_1.xml
という名前のファイルが、指定された出力ディレクトリに作成されます。
実行中のインスタンスを監視する場合は、次のURLにあるOracle Enterprise Managerコンソールを使用できます。
http://hostname:port/em
ここで、hostname
は、Oracle SOA Suiteインフラストラクチャをインストールしたホストです。
これらの手順の詳細は、第43.2項「Oracle JDeveloperでの単一のSOAコンポジットのデプロイ」を参照してください。
このユースケースは、複数の値をルックアップするために、2つのエンドポイント間でDVMルックアップを使用する統合シナリオを示します。 たとえば、インバウンドが州の場合、アウトバウンドは州の略称、言語および首都になります。 複数の値ルックアップのユースケースは次の手順で構成されます。
readFile
という名前のアダプタ・サービスにより、ファイルがディレクトリから取り出されます。
readFile
アダプタ・サービスがファイル・データをLookupMultiplevaluesMediator
メディエータに送信します。
次にLookupMultiplevaluesMediator
メディエータはメッセージをアダプタ参照で必要となる構造に変換します。トランスフォーメーション中、メディエータはLongname
およびShortname
ドメインの等価値に対するmultivalue
ドメイン値マップをルックアップします。
LookupMultiplevaluesMediator
メディエータは、外部参照のwriteFile
にメッセージを送信します。
writeFile
参照は、指定された出力ディレクトリにメッセージを書き込みます。
この項で説明するサンプル・ファイルをダウンロードするには、次のURLを参照してください。
http://www.oracle.com/technology/sample_code/products/mediator
この項では、SOAコンポジット・アプリケーションを作成、構築およびデプロイするための設計時タスクを説明します。これらのタスクは、表示されている順番で実行する必要があります。
ユースケース用のアプリケーションおよびプロジェクトを作成する手順は、次のとおりです。
Oracle JDeveloperで「ファイル」をクリックし、「新規」を選択します。
「新規ギャラリ」ダイアログが表示されます。
「新規ギャラリ」で「一般」ノードを開き、「アプリケーション」カテゴリを選択します。
「項目」リストで「SOAアプリケーション」を選択し、「OK」をクリックします。
SOAアプリケーションの作成ウィザードが表示されます。
「アプリケーション名」フィールドにMultivalue
と入力し、「次へ」をクリックします。
「プロジェクトの名前付け」画面が表示されます。
「プロジェクト名」フィールドにMultivalue
と入力し、「次へ」をクリックします。
SOA設定の構成画面が表示されます。
「コンポジット・テンプレート」リストで「空のコンポジット」を選択し、「終了」をクリックします。
Oracle JDeveloperの「アプリケーション・ナビゲータ」には新規のアプリケーションやプロジェクトが移入され、「設計」タブには空白のパレットがあります。
「ファイル」メニューから「すべて保存」をクリックします。
ユースケース用のアプリケーションおよびプロジェクトを作成した後は、ドメイン値マップを作成する必要があります。
ドメイン値マップを作成する手順は、次のとおりです。
「アプリケーション・ナビゲータ」で、「Multivalue」プロジェクトを右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログで「SOA層」ノードを開き、「トランスフォーメーション」カテゴリを選択します。
「項目」リストで、「ドメイン値マップ(DVM)」を選択し、「OK」をクリックします。
「ドメイン値マップ(DVM)・ファイルの作成」ダイアログが表示されます。
「ファイル名」フィールドに、multivalue.dvm
と入力します。
「ドメイン名」フィールドに、Longname
、Shortname
、Language
およびCapital
を入力します。
Longnameドメインに対応する「ドメイン値」フィールドに、Karnataka
と入力します。
Shortnameドメインに対応する「ドメイン値」フィールドに、KA
と入力します。
Languageドメインに対応する「ドメイン値」フィールドに、Kannada
と入力します。
Capitalドメインに対応する「ドメイン値」フィールドに、Bangalore
と入力します。
「OK」をクリックします。
ドメイン値マップ・エディタが表示されます。
「追加」をクリックし、次に「行の追加」を選択します。
この手順を繰り返し、さらに2行追加します。
ドメイン値マップ表に新たに追加した行に、次の情報を入力します。
Longname | Shortname | Language | Capital |
---|---|---|---|
Karnataka | KA | Kannada | Bangalore |
Tamilnadu | TN | Tamil | Chennai |
Andhrapradesh | AP | Telugu | Hyderbad |
Kerala | KL | Malayalam | Trivandram |
図46-18に示すように、ドメイン値マップ・エディタが表示されます。
「ファイル」メニューから「すべて保存」をクリックして、ドメイン値マップ・エディタを閉じます。
ドメイン値マップを作成した後は、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」をクリックします。
「次へ」をクリックします。
「終了」ページが表示されます。
「終了」をクリックします。
「ファイル」メニューから「すべて保存」をクリックします。
図46-19に、SOAコンポジット・エディタのreadFile
サービスを示します。
LookupMultiplevaluesMediatorという名前のメディエータを作成する手順は、次のとおりです。
メディエータを「コンポーネント・パレット」から「コンポーネント」設計領域にドラッグ・アンド・ドロップします。
「メディエータの作成」ダイアログが表示されます。
「名前」フィールドに、LookupMultiplevaluesMediator
と入力します。
「テンプレート」リストから、「インタフェースを後で定義」を選択します。
「OK」をクリックします。
LookupMultiplevaluesMediator
という名前のメディエータが作成されます。
図46-20に示すように、SOAコンポジット・エディタで、「readFile」
サービスと「LookupMultiplevaluesMediator」
メディエータを接続します。
この操作により、ファイルを入力ディレクトリから読み込む間に、LookupMultiplevaluesMediator
メディエータを起動するファイル・アダプタ・サービスが指定されます。
図46-20 readFileサービスからLookupMultiplevaluesMediatorメディエータへの接続
「ファイル」メニューから「すべて保存」をクリックします。
ファイル・アダプタ参照を作成する手順は、次のとおりです。
「コンポーネント・パレット」から「SOA」を選択します。
「ファイル・アダプタ」を選択し、「外部参照」設計領域にドラッグします。
アダプタ構成ウィザードの「ようこそ」ページが表示されます。
「次へ」をクリックします。
「サービス名」ページが表示されます。
「サービス名」フィールドにwriteFile
と入力し、「次へ」をクリックします。
「アダプタ・インタフェース」ページが表示されます。
「操作およびスキーマから定義(後で指定)」をクリックし、「次へ」をクリックします。
「操作」ページが表示されます。
「次へ」をクリックします。
「操作」ページが表示されます。
「操作タイプ」フィールドで、「Write File」を選択します。
「次へ」をクリックします。
「ファイル構成」ページが表示されます。
「発信ファイルのディレクトリ(物理パス)」フィールドに、ファイルを書き込むディレクトリの名前を入力します。
ファイル・ネーミング規則フィールドにmultivalue_%SEQ%.xml
と入力して、「次へ」をクリックします。
「メッセージ」ページが表示されます。
「検索」をクリックします。
「タイプ・チューザ」ダイアログが表示されます。
「タイプ・エクスプローラ」→「プロジェクトのスキーマ・ファイル」→「output.xsd」の順に移動し、「Root-Element」を選択します。
「OK」をクリックします。
「次へ」をクリックします。
「終了」ページが表示されます。
「終了」をクリックします。
図46-21に、SOAコンポジット・エディタのwriteFile
参照を示します。
「ファイル」メニューから「すべて保存」をクリックします。
メッセージが経由するreadFile
アダプタ・サービスから外部参照へのパスを指定する必要があります。
ルーティング・ルールを指定する手順は、次のとおりです。
図46-22に示すように、「LookupMultiplevaluesMediator」
メディエータを「writeFile」参照に接続します。
図46-22 LookupMultiplevaluesMediatorメディエータからwriteFile参照への接続
「LookupMultiplevaluesMediator」メディエータをダブルクリックします。
「次を使用して変換」フィールドの右側にあるアイコンをクリックします。
「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。
「新規マッパー・ファイルの作成」を選択し、「OK」をクリックします。
「Input_To_Output_with_multiple_values_lookup.xsl」タブが表示されます。
「imp1:Root-Element」ソース要素を「ns2:Root-Element」ターゲット要素にドラッグ・アンド・ドロップします。
「自動マップ・プリファレンス」ダイアログが表示されます。
「自動マップ中」オプションから、「祖先名を考慮した要素の一致」の選択を解除します。
「OK」をクリックします。
図46-23に示すように、「Input_To_Output_with_multiple_values_lookup.xsl」タブが表示されます。
図46-23 imp1:Root-Elementからns2:Root-Elementへのトランスフォーメーション
「コンポーネント・パレット」で、「拡張」を選択します。
「DVM Functions」をクリックします。
図46-24に示すように、lookupValue1Mを中央のスイムレーンにドラッグ・アンド・ドロップします。
図46-24 imp1:Root-Elementからns2:Root-ElementへのlookupValue関数の追加
「lookupvalue1M」アイコンをダブルクリックします。
「関数の編集 - lookupValue1M」ダイアログが表示されます。
「dvmLocation」フィールドの右側にある「検索」をクリックします。
「SCAリソース・ルックアップ」ダイアログが表示されます。
「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"
と入力します。
図46-25に示すように、「関数の編集 - lookupValue」ダイアログが表示されます。
図46-25 「関数の編集 - lookupValue関数」ダイアログ: 複数の値ルックアップ・ユースケース
「OK」をクリックします。
図46-26に示すように、トランスフォーメーションが表示されます。
図46-26 imp1:Root-Elementからns2:Root-Elementへのトランスフォーメーションの完了
「ファイル」メニューから、「すべて保存」をクリックして、「Input_To_Output_with_multiple_values_lookup.xsl」タブを閉じます。
SOAコンポジット・アプリケーションをデプロイするには、Oracle Application Server接続が必要です。 Oracle Application Server接続の作成の詳細は、『Oracle Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド』を参照してください。
次の手順で、Multivalue
コンポジット・アプリケーションをOracle Application Serverにデプロイします。
アプリケーション・デプロイメント・プロファイルの作成
アプリケーションのOracle Application Serverへのデプロイ
これらの手順の詳細は、第43.2項「Oracle JDeveloperでの単一のSOAコンポジットのデプロイ」を参照してください。
デプロイしたMultivalue
アプリケーションは、入力XMLファイルであるsampleinput.xml
を入力フォルダにコピーすることで実行できます。このファイルはsamples
フォルダにあります。 正常終了した場合、multivalue_1.xml
という名前のファイルが、指定された出力ディレクトリに作成されます。
実行中のインスタンスを監視する場合は、次のURLにあるOracle Enterprise Managerコンソールを使用できます。
http://hostname:port/em
ここで、hostname
は、Oracle SOA Suiteインフラストラクチャをインストールしたホストです。
Oracle Enterprise ManagerコンソールでMultivalue
をクリックすると、プロジェクト・ダッシュボードが表示されます。
詳細な実行証跡を表示するには、インスタンス列のインスタンスIDをクリックします。「フローのトレース」ページが表示されます。