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

前
 
次
 

47 ドメイン値マップの使用

この章では、異なるドメインで同じエンティティを表すために使用される用語をマップする、ドメイン値マップを作成および使用して、あるドメインの特定のフィールドで使用される値を、他のドメインの同じフィールドで使用される値にマップする方法について説明します。この章では、ドメイン値の参照に使用されるXPath関数についても説明します。

この章には次の項が含まれます:

47.1 ドメイン値マップの概要

異なるドメイン間で情報を送信する場合に、各ドメインで同じエンティティを表すのに異なる用語や処理コードを使用している場合があります。たとえば、あるドメインではメッセージ内で完全な都市名(Boston)を使用し、別のドメインでは都市を示すコード(BO)を使用している可能性があります。各ドメインでこれらのデータをいずれかの用語セットに標準化しなくても、ドメイン値マップを使用して、あるドメインで使用されている用語と他のドメインで使用されている用語をマップできます。ドメイン値マップは、実行時にアプリケーションを介して送信されるメッセージ内の実際の値に対して機能します。

通常、各ドメイン値マップでは、1つのフィールドまたはカテゴリのみのマッピングを定義しますが、1つのSOAコンポジットで複数のカテゴリのマッピングが必要になる場合もあります。そのため、1つのSOAコンポジットに複数のドメイン値マップを含めることもできます。たとえば、都市名のマッピングを定義したドメイン値マップと、州名のマッピングを定義したドメイン値マップと、国名のマッピングを定義したドメイン値マップを使用できます。

2つ以上のドメインの間で直接値をマップする方法は、ポイントツーポイント・マッピングと呼ばれます。表47-1に、2つのドメインの間で都市名をポイントツーポイント・マッピングする方法を示します。

表47-1 ポイントツーポイント・マッピング

CityCode CityName

BELG_MN_STLouis

BelgradeStLouis

BELG_NC

BelgradeNorthCarolina

BO

Boston

NP

Northport

KN_USA

KensingtonUSA

KN_CAN

KensingtonCanada


ドメイン値マップの値は静的です。ドメイン値マップの値は、設計時にOracle JDeveloperを使用して指定し、実行時にアプリケーションによってドメイン値マップの値のルックアップが実行されます。Oracle SOAコンポーザを使用して実行時のドメイン値マップを編集する方法の詳細は、第48章「ドメイン値マップでのOracle SOAコンポーザの使用」を参照してください。


注意:

アプリケーション間の各値を動的に統合するために、Oracle SOA Suiteの相互参照機能を使用できます。相互参照の詳細は、第49章「相互参照の使用」を参照してください。


47.1.1 ドメイン値マップ機能

Oracle SOA Suiteのドメイン値マップでは、実行時に実行されるドメイン値マップのルックアップのパフォーマンスおよび結果をより詳細に調整できます。たとえば、修飾情報を指定して、マッピングを補助する追加情報を提供します。また、ドメイン値マップでは、1対多マッピングもサポートされています。

47.1.1.1 修飾子ドメイン

修飾子ドメインには、マッピングを明確にするためだけの情報が含まれます。この追加情報が定義されていないと、マッピングが不明確である場合があります。たとえば、Kensingtonという都市はCanadaUSAの両方にあるため、都市名のマッピングを定義したドメイン値マップにKNKensingtonのマッピングが複数存在する可能性があります。そのため、このマッピングには、どちらのマッピングを使用するかを示す修飾子(USAまたはCanada)が必要です。この例を表47-2に示します。

表47-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


ドメイン値マップには、複数の修飾子ドメインを含めることができます。たとえば、表47-3では、さらに州名でマッピングを修飾しています。

表47-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


修飾子は、マッピングを修飾するときにのみ使用します。そのため、修飾子の値はルックアップできません。

47.1.1.2 修飾子の階層

複数の修飾子ドメインが存在する場合は、修飾子の順序を指定して、実行時のルックアップ時にそれらの修飾子ドメインがどのように使用されるかを指定できます。修飾子の順序は、より正確な一致を定義する際に、その修飾子の役割によって上位から下位に変化します。表47-3の場合は、Stateの一致がより正確な一致を示すため、State修飾子をCountry修飾子より上位の順序に指定することが考えられます。

ドメイン値マップは階層ルックアップをサポートします。ルックアップ時に修飾子の値を指定し、正確な一致が検出されなかった場合は、ルックアップ・メカニズムによって上位順序の修飾子が空の引用符("")に設定され、より一般的な一致の検出が試行されます。これは、一致が検出されるか、可能なかぎりのルックアップが終了して一致が検出されなくなるまで実行されます。図47-1に、(表47-3の値に基づいた)次のルックアップで階層ルックアップが実行される手順を示します。

State=Arkansas, Country=Canada, CityCode=KN_USA

この例では、State修飾子の順序は1で、Country修飾子の順序は2です。図47-1に示すように、ルックアップ・メカニズムでは上位順序の修飾子Stateに正確なルックアップ値Arkansasを設定し、下位順序の修飾子CountryCanada|""を使用します。

図47-1 階層ルックアップの例

図47-1の説明が続きます
「図47-1 階層ルックアップの例」の説明

一致が検出されない場合、ルックアップ・メカニズムでは上位順序の修飾子Stateに値""を設定し、次に上位である修飾子Countryに正確な値Canadaを設定します。一致が検出されない場合、ルックアップ・メカニズムでは以前に上位順序の修飾子であったCountryに値""を設定します。CityCodeKN_USAである一致行が1行検出された場合は、値としてKensingtonが返されます。

表47-4に、これらの手順の要約を示します。

表47-4 ドメイン値マップ・ルックアップ結果

短い値 ルックアップ結果

Arkansas

CANADA|" "

KN_USA

一致なし

" "

CANADA

KN_USA

一致なし

" "

" "

KN_USA

Kensington


47.1.1.3 1対多マッピング

ドメイン値マップでは、1つの値を複数の値にマップできます。たとえば、支払い条件のドメイン値マップには、表47-5に示すように、支払い条件と、値引率、値引期間、正味掛売り期間などの複数の値とのマッピングを格納できます。

表47-5 1対多マッピング・サポート

支払条件 値引率 値引期間 正味掛売り期間

GoldCustomerPaymentTerm

10

20

30

SilverCustomerPaymentTerm

5

20

30

RegularPaymentTerm

2

20

30


47.2 ドメイン値マップの作成

Oracle JDeveloperのSOAコンポジット・アプリケーションで1つ以上のドメイン値マップを作成し、実行時に、そのマップを使用してマップされている値をルックアップできます。ドメイン値マップを作成すると、.dvmの拡張子が付いたファイルがアプリケーション・ファイル構造に作成されます。

47.2.1 ドメイン値マップの作成方法

ドメイン値マップは、Oracle JDeveloperの「ドメイン値マップ(DVM)・ファイルの作成」ダイアログを使用して作成および構成します。このダイアログでは、2つのドメインを定義し、それぞれに1つの値を定義します。完了すると、ドメイン値マップ・エディタが表示され、追加のドメインとそれに対応する値を定義することもできます。

ドメイン値マップを作成する手順は、次のとおりです。

  1. 「アプリケーション・ナビゲータ」で、ドメイン値マップを作成するプロジェクトを右クリックし、「新規」を選択します。

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

  2. 「SOA層」ノードを開き、「トランスフォーメーション」カテゴリを選択します。

  3. 「項目」リストで、「ドメイン値マップ(DVM)」を選択し、「OK」をクリックします。

    「ドメイン値マップ(DVM)・ファイルの作成」ダイアログが表示されます。

  4. 「ファイル名」フィールドに、ドメイン値マップ・ファイルのわかりやすい一意の名前を入力します。ファイル名には、.dvmの拡張子が含まれている必要があります。

  5. 「説明」フィールドに、ドメイン値マップの説明を入力します。このフィールドはオプションです。

  6. 「ドメイン名」フィールドに、各ドメインの名前を入力します。これらの名前はドメイン値マップの列名で、それぞれのドメインにおけるフィールドを表します。


    注意:

    各ドメイン名はドメイン値マップ内では一意の名前にする必要があります。ドメインは、後でさらに追加できます。


  7. 「ドメイン値」フィールドに、各ドメインの対応する値を入力します。たとえば、図47-2に示すように、CityCodeドメインにBOを、CityNameドメインにBostonを入力します。

    図47-2 移入後の「ドメイン値マップ・ファイルの作成」ダイアログ

    図47-2の説明が続きます
    「図47-2 移入後の「ドメイン値マップ・ファイルの作成」ダイアログ」の説明

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

    ドメイン値マップ・エディタが表示され、新しいドメイン値マップが表示されます。

47.2.2 ドメイン値マップ作成時の処理内容

図47-3に示すように、拡張子が.dvmのファイルがプロジェクト・ファイル構造に作成され、「アプリケーション・ナビゲータ」に表示されます。

図47-3 「アプリケーション・ナビゲータ」のドメイン値マップ・ファイル

図47-3の説明が続きます
「図47-3 「アプリケーション・ナビゲータ」のドメイン値マップ・ファイル」の説明

すべての.dvmファイルは、例47-1に示すスキーマ定義(XSD)ファイルに基づいています。

例47-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>

47.3 ドメイン値マップの編集

ドメイン値マップのフレームワークを作成した後は、ドメイン値マップ・エディタを使用して、ドメインとそれに対応するドメイン値をマップに追加できます。

47.3.1 ドメイン値マップへのドメインの追加方法

(ドメイン値マップの列を表す)追加のドメインをマップに定義できます。また、それぞれの新規ドメインに含まれる値を実行時のルックアップに含めるのか、それともマッピングを修飾するためだけに使用するのかを指定できます。

ドメイン値マップにドメインを追加する手順は、次のとおりです。

  1. ドメイン値マップ・エディタでマップ・ファイルを開いていない場合は、「アプリケーション・ナビゲータ」のDVMファイルをダブルクリックします。

  2. 「マップ表」で「追加」をクリックし、「ドメインの追加」を選択します。

    「ドメインの作成」ダイアログが表示されます。

  3. 「名前」フィールドに、列の名前を入力します。

  4. 「修飾子」フィールドで、この列を修飾子として設定する場合は「True」を選択します。そうでない場合は「False」を選択します。


    ヒント:

    修飾子ドメインおよび修飾子の順序の詳細は、第47.1.1.1項「修飾子ドメイン」および第47.1.1.2項「修飾子の階層」を参照してください。


  5. 「修飾子順」フィールドに、修飾子ドメインの優先度を示す数値を入力します。

    このフィールドが有効になるのは、「修飾子」フィールドで「True」を選択した場合のみです。

    図47-4 ドメイン値マップ - 「ドメインの作成」ダイアログ

    図47-4の説明が続きます
    「図47-4 ドメイン値マップ - 「ドメインの作成」ダイアログ」の説明

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

    「マップ表」に新しい列が表示されます。

47.3.2 ドメインの編集方法

ドメイン値マップにドメインを追加した後は、名前を変更したり、修飾子ドメインであるかどうかや修飾子の順序を変更できます。

ドメインを編集する手順は、次のとおりです。

  1. ドメイン値マップ・エディタで、変更するドメインの名前を選択します。

  2. 「ドメイン/値の編集」をクリックします。

    「ドメインの編集」ダイアログが表示されます。

    図47-5 ドメイン値マップ - 「ドメインの編集」ダイアログ

    図47-5の説明が続きます
    「図47-5 ドメイン値マップ - 「ドメインの編集」ダイアログ」の説明

  3. ダイアログで任意のフィールドを変更し、「OK」をクリックします。

47.3.3 ドメイン値マップへのドメイン値の追加方法

ドメイン値はドメイン値マップの行に表示され、それぞれのドメインの各行に含まれる値がマップされます。ドメイン値は、ドメイン間のマッピングを完全に定義するために必要なだけ追加できます。

ドメイン値マップにドメイン値を追加する手順は、次のとおりです。

  1. ドメイン値マップ・エディタで、「追加」をクリックし、「ドメイン値の追加」を選択します。

    「マップ表」の既存の行の下に新しい行が表示されます。

  2. 新しい行に各ドメインの値を入力します。

  3. さらに行を作成するには、前述の手順を繰り返します。変更が終了したら、Oracle JDeveloperツールバーの「すべて保存」をクリックします。

47.3.4 ドメイン値の編集方法

ドメイン値マップにドメイン値を追加した後は、必要に応じて値を変更できます。

ドメイン値を変更する手順は、次のとおりです。

  1. ドメイン値マップ・エディタで、変更する値が含まれている行を選択します。

  2. 「ドメイン/値の編集」をクリックします。

    「ドメイン値の編集」ダイアログが表示されます。

    図47-6 ドメイン値マップ - 「ドメイン値の編集」

    図47-6の説明が続きます
    「図47-6 ドメイン値マップ - 「ドメイン値の編集」」の説明

  3. ダイアログで任意のフィールドを変更し、「OK」をクリックします。

47.4 ドメイン値マップ機能の使用

ドメイン値マップを作成した後は、実行時にドメイン値マップのXPath関数を使用して適切な値をルックアップし、アプリケーションにターゲットを移入できます。

47.4.1 ドメイン値マップ関数の理解

dvm:lookupValueおよびdvm:lookupValue1MのXPath関数は、実行時に単一の値または複数の値についてドメイン値マップをルックアップします。

47.4.1.1 dvm:lookupValue

dvm:lookupValue関数では、ソース列に指定のソース値を含むドメイン値マップでターゲット列の値をルックアップすることにより、文字列が返されます。

  • 例47-2に、dvm:lookupValue関数の構文の例を示します。

    例47-2 dvm:lookupValue関数の構文

    dvm:lookupValue(dvmMetadataURI as string, SourceColumnName as string,
     SourceValue as string, TargetColumnName as string, DefaultValue as string) as
     string
    

    例47-3に、dvm:lookupValue関数の使用方法の例を示します。

    例47-3 dvm:lookupValue関数の使用方法

    dvm:lookupValue('cityMap.dvm','CityCodes','BO', 'CityNames',
    'CouldNotBeFound')
    
  • 例47-4に、dvm:lookupValue関数の構文の別の例を示します。

    例47-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
    

    例47-5に、dvm:lookupValue関数の使用方法の別の例を示します。

    例47-5 dvm:lookupValue関数の使用方法

    dvm:lookupValue ('cityMap.dvm','CityCodes','BO','CityNames',
     'CouldNotBeFound', 'State', 'Massachusetts')
    

引数 

  • dvmMetadataURI: ドメイン値マップのURI。

  • SourceColumnName: ソース列名。

  • SourceValue: ソース値(XSLTトランスフォーメーションのソース文書にバインドされるXPath式)。

  • targetColumnName: ターゲット列名。

  • DefaultValue: 値が見つからない場合は、デフォルト値が返されます。

  • QualifierSourceColumn: 修飾子列の名前。

  • QualifierSourceValue: 修飾子の値。

47.4.1.2 dvm:lookupValue1M

dvm:lookupValue1M関数では、ソース列の値がソース値と等しいドメイン値マップの複数のターゲット列の値を格納する、XML文書フラグメントが返されます。例47-6に詳細を示します。

例47-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つ以上の列名を指定する必要があります。疑問符記号(?)は複数のターゲット列名を指定できることを示します。

例47-7に、dvm:lookupValue1M関数の使用方法の例を示します。

例47-7 dvm:lookupValue1M関数の使用方法

dvm:lookupValue1M ('cityMap.dvm','CityCode','BO','CityName',
'CityNickName')

例47-8にその結果を示します。

例47-8 dvm:lookupValue1M関数の結果

<CityName>Boston</CityName>
<CityNickName>BeanTown</CityNickName>

47.4.2 トランスフォーメーションでのドメイン値マップ関数の使用方法

ドメイン値マップ関数は、BPELプロセス・サービス・コンポーネントまたはメディエータ・サービス・コンポーネントによるトランスフォーメーションに使用できます。トランスフォーメーションの実行には、XSLファイルを作成してXMLスキーマ間でデータを変換するときに表示されるXSLTマッパーを使用します。

XSLTマッパーの詳細は、第40章「XSLTマッパーを使用したトランスフォーメーションの作成」を参照してください。

トランスフォーメーションでlookupValue1M関数を使用する手順は、次のとおりです。

  1. 「アプリケーション・ナビゲータ」で、XSLファイルをダブルクリックしてXSLTマッパーを開きます。

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

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

  4. 図47-7に示すように、「DVM Functions」を選択します。

    図47-7 「コンポーネント・パレット」のドメイン値マップ関数

    図47-7の説明が続きます
    「図47-7 「コンポーネント・パレット」のドメイン値マップ関数」の説明

  5. ソースとターゲットの接続線にlookupValue1Mをドラッグ・アンド・ドロップします。

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

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

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

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

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

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

    1. 「dvmLocation」フィールドで、ドメイン値マップ・ファイルのロケーションURIを入力するか、「dvmLocation」フィールドの右側にある「参照」をクリックして、ドメイン値マップ・ファイルを選択します。MDS(メタデータ・サービス)およびMDSの共有ロケーションからもすでにデプロイされたドメイン値マップを選択できます。これを実行するには、「リソース・パレット」を選択します。

    2. 「sourceColumnName」フィールドに、ソース要素の値に関連付けられているドメイン値マップの列名を入力するか、「参照」をクリックして、以前に選択したドメイン値マップに定義されている列から列名を選択します。

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

    4. 「targetColumnName」フィールドに、ターゲット要素の値に関連付けられているドメイン値マップの列名を入力するか、「参照」をクリックして、以前に選択したドメイン値マップに定義されている列から列名を選択します。

    5. 「追加」をクリックして別の列をターゲット列として追加し、列の名前を入力します。

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

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

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

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

    XSLTマッパーが、「lookupValue1M」関数アイコンとともに表示されます。

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

デプロイ済のドメイン値マップを選択する方法の詳細は、第43.7.3項「Oracle JDeveloperでのSOAコンポジット・アプリケーション間の共有メタデータのデプロイおよび使用」を参照してください。

47.4.3 XPath式でのドメイン値マップ関数の使用方法

「式ビルダー」ダイアログでは、ドメイン値マップ関数を使用してXpath式を作成できます。「式ビルダー」ダイアログには、Oracle Mediatorサービス・コンポーネントのフィルタ式または値の割当て機能からアクセスできます。

値の割当て機能の詳細は、第20.3.2.10項「値の割当て方法」を参照してください。

「式ビルダー」ダイアログでlookupValue関数を使用する手順は、次のとおりです。

  1. 「関数」リストから「DVM Functions」を選択します。

  2. dvm:lookupValue関数をダブルクリックして、「式」フィールドに追加します。

  3. lookupValue関数の様々な引数を指定します。例:

    dvm:lookupValue('citymap.dvm','CityCodes',$in.Customer/inp1:Customer/Address/Ci
    ty,'CityNames','NotFound')
    

    図47-10にも示すように、この式では、都市コードと等価の都市名のドメイン値マップがルックアップされます。都市コードの値は実行時に指定された値によって異なります。

図47-10 「式ビルダー」ダイアログのドメイン値マップ関数

図47-10の説明が続きます
「図47-10 「式ビルダー」ダイアログのドメイン値マップ関数」の説明

47.4.4 実行時の処理内容

実行時には、BPELプロセス・サービス・コンポーネントまたはメディエータ・サービス・コンポーネントが、ドメイン値マップを使用して適切な値をルックアップします。

47.5 階層ルックアップ用のドメイン値マップ・ユースケースの作成

この項では、SOAコンポジットでドメイン値マップを使用する場合のチュートリアルを紹介します。このユースケースは、ドメイン値マップの階層ルックアップ機能を示します。階層ルックアップのユースケースは次の手順で構成されます。

  1. ReadOrdersという名前のアダプタ・サービスにより、ファイルがディレクトリから取得されます。

  2. ReadOrdersアダプタ・サービスがファイル・データをProcessOrdersというメディエータに送信します。

  3. 次にProcessOrdersメディエータはメッセージをアダプタ参照で必要となる構造に変換します。トランスフォーメーション中、メディエータは、UnitsOfMeasureドメイン値マップのCommonドメインの対応値をルックアップします。

  4. ProcessOrdersメディエータは、WriteOrdersという外部参照にメッセージを送信します。

  5. WriteOrders参照は、指定された出力ディレクトリにメッセージを書き込みます。

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

47.5.1 HierarchicalValueユースケースの作成方法

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

47.5.1.2 タスク2: ドメイン値マップの作成方法

ユースケース用のアプリケーションおよびプロジェクトを作成した後は、ドメイン値マップを作成します。

ドメイン値マップを作成する手順は、次のとおりです。

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

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

  3. 「項目」リストで、「ドメイン値マップ(DVM)」を選択し、「OK」をクリックします。

    「ドメイン値マップ(DVM)・ファイルの作成」ダイアログが表示されます。

  4. 「ファイル名」フィールドに、UnitsOfMeasure.dvmと入力します。

  5. 「ドメイン名」フィールドに、SiebelCommonを入力します。

  6. Siebelドメインに対応する「ドメイン値」フィールドに、Eaと入力します。

  7. Commonドメインに対応する「ドメイン値」フィールドに、Eachと入力します。

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

    ドメイン値マップ・エディタが表示されます。

  9. 「追加」をクリックし、次に「列の追加」を選択します。

    DVM列の作成ダイアログが表示されます。

  10. 「名前」フィールドに、TradingPartnerと入力します。

  11. 「修飾子」リストから「True」を選択します。

  12. 「QualifierOrder」フィールドに1を入力し、「OK」をクリックします。

  13. ステップ9からステップ12を繰り返して、StandardCodeという名前で修飾子の順序の値が2の修飾子をもう1つ作成します。

  14. 「追加」をクリックし、「ドメイン値の追加」を選択します。

    この手順を繰り返し、さらに2行追加します。

  15. ドメイン値マップ表に新たに追加した行に、表47-6に示す情報を入力します。

    表47-6 ドメイン値マップ表の各行の情報

    Siebel Common TradingPartner StandardCode

    EC

    Each


    OAG

    E-RN

    Each

    A.C.Networks

    RN

    EO

    Each

    ABC Inc

    RN


    図47-11に示すように、ドメイン値マップ・エディタが表示されます。

    図47-11 UnitsOfMeasureのドメイン値マップ

    図47-11の説明が続きます
    「図47-11 UnitsOfMeasureのドメイン値マップ」の説明

  16. 「ファイル」メニューから「すべて保存」を選択して、ドメイン値マップ・エディタを閉じます。

47.5.1.3 タスク3: ファイル・アダプタ・サービスの作成方法

ドメイン値マップを作成した後は、ディレクトリからXMLファイルを読み取るReadOrdersという名前のファイル・アダプタ・サービスを作成します。


注意:

Oracle Mediatorは、Oracle Real Application Clusters(Oracle RAC)の計画的停止に対して実行する際、同じファイルを2回処理する可能性があります。これは、ファイル・アダプタがXAに準拠していないアダプタであるためです。したがって、グローバル・トランザクションに組み入れると、各ファイルを1回のみ処理するXAインタフェース仕様に逸脱する可能性があります。


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

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

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

  3. アダプタ構成ウィザードの「ようこそ」ページが開いた場合は、「次へ」をクリックします。

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

  4. 「サービス名」フィールドにReadOrdersと入力し、「次へ」をクリックします。

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

  5. 「操作タイプ」フィールドで「Read File」を選択し、「次へ」をクリックします。

    「ファイル・ディレクトリ」ページが表示されます。

  6. 「着信ファイル用のディレクトリ(物理パス)」フィールドに、ファイルの読取り先のディレクトリを入力します。

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

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

  8. 「インクルード・ファイルの名前パターン」フィールドに*.xmlと入力し、「次へ」をクリックします。

    「ファイル・ポーリング」ページが表示されます。

  9. 「ポーリング頻度」フィールドの値を10に変更し、「次へ」をクリックします。

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

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

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

  11. 「スキーマ・ファイルのインポート」をクリックします。

    「スキーマ・ファイルのインポート」ダイアログが表示されます。

  12. 「検索」をクリックして、Samplesフォルダに存在するOrder.xsdファイルを選択します。

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

  14. 「タイプ・エクスプローラ」→「インポートしたスキーマ」→「Order.xsd」の順にナビゲーション・ツリーを開きます。

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

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

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

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

  18. 「ファイル」メニューから「すべて保存」をクリックします。

    図47-12に、SOAコンポジット・エディタのReadOrdersサービスを示します。

    図47-12 SOAコンポジット・エディタのReadOrdersサービス

    図47-12の説明が続きます
    「図47-12 SOAコンポジット・エディタのReadOrdersサービス」の説明

47.5.1.4 タスク4: ProcessOrdersメディエータ・コンポーネントの作成方法

ProcessOrdersという名前のメディエータを作成する手順は、次のとおりです。

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

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

  2. 「名前」フィールドに、ProcessOrdersと入力します。

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

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

    ProcessOrdersという名前のメディエータが作成されます。

  5. 図47-13に示すように、SOAコンポジット・エディタで、「ReadOrders」サービスと「ProcessOrders」Oracle Mediatorを接続します。

    この操作により、ファイルを入力ディレクトリから読み込む間に、ProcessOrdersメディエータを起動するファイル・アダプタ・サービスが指定されます。

    図47-13 ReadOrdersサービスからProcessOrdersメディエータへの接続

    図47-13の説明が続きます
    「図47-13 ReadOrdersサービスからProcessOrdersメディエータへの接続」の説明

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

47.5.1.5 タスク5: ファイル・アダプタ参照の作成方法

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    図47-14 SOAコンポジット・エディタのWriteCommonOrder参照

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

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

47.5.1.6 タスク6: ルーティング・ルールの指定方法

メッセージが経由するReadOrdersアダプタ・サービスから外部参照へのパスを指定する必要があります。

ルーティング・ルールを指定する手順は、次のとおりです。

  1. 図47-15に示すように、「ProcessOrders」Oracle Mediatorを「WriteCommonOrder」参照に接続します。

    図47-15 ProcessOrdersメディエータからWriteCommonOrder参照への接続

    図47-15の説明が続きます
    「図47-15 ProcessOrdersメディエータからWriteCommonOrder参照への接続」の説明

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

  3. 「次を使用して変換」フィールドの右側にあるアイコンをクリックします。

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

  4. 「新規マッパー・ファイルの作成」を選択し、「OK」をクリックします。

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

  5. 「imp1:listOfOrder」ソース要素を「imp1:listOfOrder」ターゲット要素にドラッグ・アンド・ドロップします。

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

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

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

    図47-16に示すように、「listOfOrder_To_listOfOrder.xsl」ファイルが表示されます。

    図47-16 imp1:listOfOrderからimp1:listOfOrderへのトランスフォーメーション

    図47-16の説明が続きます
    「図47-16 imp1:listOfOrderからimp1:listOfOrderへのトランスフォーメーション」の説明

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

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

  10. 図47-17に示すように、lookupValueunitsOfMeasure要素の接続線にドラッグ・アンド・ドロップします。

    図47-17 imp1:listOfOrderからimp1:listOfOrder.xslへのlookupValue関数の追加

    図47-17の説明が続きます
    「図47-17 imp1:listOfOrderからimp1:listOfOrder.xslへのlookupValue関数の追加」の説明

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

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

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

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

  13. 「UnitsofMeasure.dvm」を選択して、「OK」をクリックします。

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

    DVM列の選択ダイアログが表示されます。

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

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

    /imp1:listOfOrder/imp1:order/imp1:baseData/imp1:unitOfMeasure

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

    DVM列の選択ダイアログが表示されます。

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

  19. 「defaultValue」フィールドに"No_Value_Found"と入力します。

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

    「qualifierColumnName」行が追加されます。

  21. 「qualifierColumnName」フィールドに"StandardCode"と入力します。

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

    「qualifierValue」行が追加されます。

  23. 「qualifierValue」フィールドに、次の値を入力します。

    /imp1:listOfOrder/imp1:order/imp1:baseData/imp1:standard

  24. 「追加」をクリックして、別の「qualifierColumnName」行を挿入します。

  25. 「qualifierColumnName」フィールドに"TradingPartner"と入力します。

  26. 「追加」をクリックして、別の「qualifierValue」行を挿入します。

  27. 「qualifierValue」フィールドに、次の値を入力します。

    /imp1:listOfOrder/imp1:order/imp1:baseData/imp1:tp

    図47-18に示すように、「関数の編集 - lookupValue」ダイアログが表示されます。

    図47-18 「関数の編集 - lookupValue関数」ダイアログ: 階層ルックアップ・ユースケース

    図47-18の説明が続きます
    「図47-18 「関数の編集 - lookupValue関数」ダイアログ: 階層ルックアップ・ユースケース」の説明

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

    図47-19に示すように、トランスフォーメーションが表示されます。

    図47-19 imp1:listOfOrderからimp1:listOfOrderへのトランスフォーメーションの完了

    図47-19の説明が続きます
    「図47-19 imp1:listOfOrderからimp1:listOfOrderへのトランスフォーメーションの完了」の説明

  29. 「ファイル」メニューから「すべて保存」を選択して、上部にある「listOfOrder_To_listOfOrder.xsl」ファイルを閉じます。

47.5.1.7 タスク7: アプリケーション・サーバー接続の構成方法

SOAコンポジット・アプリケーションをデプロイするには、アプリケーション・サーバー接続が必要です。アプリケーション・サーバー接続の作成方法の詳細は、第43.7.1.1.1項「アプリケーション・サーバー接続の作成」を参照してください。

47.5.1.8 タスク8: コンポジット・アプリケーションのデプロイ方法

次の手順で、HierarchicalValueコンポジット・アプリケーションをアプリケーション・サーバーにデプロイします。

  • アプリケーション・デプロイメント・プロファイルの作成

  • アプリケーション・サーバーへのアプリケーションのデプロイ

これらの手順の詳細は、第43.7.1項「Oracle JDeveloperでの単一のSOAコンポジットのデプロイ」を参照してください。

47.5.2 HierarchicalValueアプリケーションの実行方法と監視方法

デプロイしたHierarchicalValueアプリケーションは、入力XMLファイルであるsampleorder.xmlを入力フォルダにコピーすることで実行できます。このファイルはsamplesフォルダにあります。正常終了した場合、common_order_1.xmlという名前のファイルが、指定された出力ディレクトリに作成されます。

実行中のインスタンスの監視には、次のURLにあるOracle Enterprise Manager Fusion Middleware Controlを使用できます。

http://hostname:port/em

ここで、hostnameは、Oracle SOA Suiteインフラストラクチャをインストールしたホストです。

これらの手順の詳細は、第43.7.1項「Oracle JDeveloperでの単一のSOAコンポジットのデプロイ」を参照してください。

47.6 複数の値のドメイン値マップ・ユースケースの作成

この項では、ルックアップ用の複数の値を持つドメイン値マップを作成する方法のチュートリアルを紹介します。このユースケースは、複数の値をルックアップするために、2つのエンドポイント間でドメイン値マップ・ルックアップを使用する統合シナリオを示します。たとえば、インバウンド値が州の場合、アウトバウンド値は州の略称、言語および首都になります。複数の値ルックアップのユースケースは次の手順で構成されます。

  1. readFileという名前のアダプタ・サービスにより、ファイルがディレクトリから取得されます。

  2. readFileアダプタ・サービスがファイル・データをLookupMultiplevaluesMediatorというOracle Mediatorに送信します。

  3. 次にLookupMultiplevaluesMediator Oracle Mediatorはメッセージをアダプタ参照で必要となる構造に変換します。トランスフォーメーション中、Oracle MediatorはLongnameおよびShortnameドメインの等価値に対するmultivalueドメイン値マップをルックアップします。

  4. LookupMultiplevaluesMediator Oracle Mediatorは、writeFileという外部参照にメッセージを送信します。

  5. writeFile参照は、指定された出力ディレクトリにメッセージを書き込みます。

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

47.6.1 Multivalueユースケースの作成方法

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

47.6.1.2 タスク2: ドメイン値マップの作成方法

ユースケース用のアプリケーションおよびプロジェクトを作成した後は、ドメイン値マップを作成します。

ドメイン値マップを作成する手順は、次のとおりです。

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

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

  3. 「項目」リストで、「ドメイン値マップ(DVM)」を選択し、「OK」をクリックします。

    「ドメイン値マップ(DVM)・ファイルの作成」ダイアログが表示されます。

  4. 「ファイル名」フィールドに、multivalue.dvmと入力します。

  5. 「ドメイン名」フィールドに、LongnameShortnameLanguageおよびCapitalを入力します。

  6. Longnameドメインに対応する「ドメイン値」フィールドに、Karnatakaと入力します。

  7. Shortnameドメインに対応する「ドメイン値」フィールドに、KAと入力します。

  8. Languageドメインに対応する「ドメイン値」フィールドに、Kannadaと入力します。

  9. Capitalドメインに対応する「ドメイン値」フィールドに、Bangaloreと入力します。

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

    ドメイン値マップ・エディタが表示されます。

  11. 「追加」をクリックし、次に「行の追加」を選択します。

    この手順を繰り返し、さらに2行追加します。

  12. ドメイン値マップ表に新たに追加した行に、表47-7に示す情報を入力します。

    表47-7 ドメイン値マップ表の各行の情報

    Longname Shortname Language Capital

    Karnataka

    KA

    Kannada

    Bangalore

    Tamilnadu

    TN

    Tamil

    Chennai

    Andhrapradesh

    AP

    Telugu

    Hyderbad

    Kerala

    KL

    Malayalam

    Trivandram


    図47-20に示すように、ドメイン値マップ・エディタが表示されます。

    図47-20 Multivalueのドメイン値マップ

    図47-20の説明が続きます
    「図47-20 Multivalueのドメイン値マップ」の説明

  13. 「ファイル」メニューから「すべて保存」を選択して、ドメイン値マップ・エディタを閉じます。

47.6.1.3 タスク3: ファイル・アダプタ・サービスの作成方法

ドメイン値マップを作成した後は、ディレクトリからXMLファイルを読み取るreadFileという名前のファイル・アダプタ・サービスを作成します。


注意:

メディエータは、Oracle RACの計画的停止に対して実行する際、同じファイルを2回処理する可能性があります。これは、ファイル・アダプタがXAに準拠していないアダプタであるためです。したがって、グローバル・トランザクションに組み入れると、各ファイルを1回のみ処理するXAインタフェース仕様に逸脱する可能性があります。


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

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

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

  3. アダプタ構成ウィザードの「ようこそ」ページが開いた場合は、「次へ」をクリックします。

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

  4. 「サービス名」フィールドにreadFileと入力し、「次へ」をクリックします。

    「アダプタ・インタフェース」ページが表示されます。

  5. 「操作およびスキーマから定義(後で指定)」をクリックし、「次へ」をクリックします。

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

  6. 「操作タイプ」フィールドで「Read File」を選択し、「次へ」をクリックします。

    「ファイル・ディレクトリ」ページが表示されます。

  7. 「着信ファイル用のディレクトリ(物理パス)」フィールドに、ファイルの読取り先のディレクトリを入力します。

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

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

  9. 「インクルード・ファイルの名前パターン」フィールドに*.xmlと入力し、「次へ」をクリックします。

    「ファイル・ポーリング」ページが表示されます。

  10. 「ポーリング頻度」フィールドの値を1に変更し、「次へ」をクリックします。

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

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

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

  12. 「スキーマ・ファイルのインポート」をクリックします。

    「スキーマ・ファイルのインポート」ダイアログが表示されます。

  13. 「検索」をクリックして、Samplesフォルダに存在するinput.xsdファイルを選択します。

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

  15. 「タイプ・エクスプローラ」→「インポートしたスキーマ」→「input.xsd」の順にナビゲーション・ツリーを開きます。

  16. 「Root-Element」を選択して、「OK」をクリックします。

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

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

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

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

    図47-21に、SOAコンポジット・エディタのreadFileサービスを示します。

    図47-21 SOAコンポジット・エディタのreadFileサービス

    図47-21の説明が続きます
    「図47-21 SOAコンポジット・エディタのreadFileサービス」の説明

47.6.1.4 タスク4: LookupMultiplevaluesMediatorメディエータの作成方法

LookupMultiplevaluesMediatorメディエータを作成する手順は、次のとおりです。 

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

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

  2. 「名前」フィールドに、LookupMultiplevaluesMediatorと入力します。

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

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

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

  5. 図47-22に示すように、SOAコンポジット・エディタで、「readFile」サービスと「LookupMultiplevaluesMediator」Oracle Mediatorを接続します。

    この操作により、ファイルを入力ディレクトリから読み込む間に、LookupMultiplevaluesMediator Oracle Mediatorを起動するファイル・アダプタ・サービスが指定されます。

    図47-22 readFileサービスからLookupMultiplevaluesMediatorメディエータへの接続

    図47-22の説明が続きます
    「図47-22 readFileサービスからLookupMultiplevaluesMediatorメディエータへの接続」の説明

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

47.6.1.5 タスク5: ファイル・アダプタ参照の作成方法

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

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

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

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

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

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

  4. 「サービス名」フィールドにwriteFileと入力し、「次へ」をクリックします。

    「アダプタ・インタフェース」ページが表示されます。

  5. 「操作およびスキーマから定義(後で指定)」をクリックし、「次へ」をクリックします。

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

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

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

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

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

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

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

  10. 「ファイル・ネーミング規則」フィールドにmultivalue_%SEQ%.xmlと入力して、「次へ」をクリックします。

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

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

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

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

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

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

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

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

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

    図47-23 SOAコンポジット・エディタのwriteFile参照

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

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

47.6.1.6 タスク6: ルーティング・ルールの指定方法

メッセージが経由するreadFileアダプタ・サービスから外部参照へのパスを指定する必要があります。

ルーティング・ルールを指定する手順は、次のとおりです。

  1. 図47-24に示すように、「LookupMultiplevaluesMediator」メディエータを「writeFile」参照に接続します。

    図47-24 LookupMultiplevaluesMediatorメディエータからwriteFile参照への接続

    図47-24の説明が続きます
    「図47-24 LookupMultiplevaluesMediatorメディエータからwriteFile参照への接続」の説明

  2. 「LookupMultiplevaluesMediator」メディエータをダブルクリックします。

  3. 「次を使用して変換」フィールドの右側にあるアイコンをクリックします。

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

  4. 「新規マッパー・ファイルの作成」を選択し、「OK」をクリックします。

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

  5. 「imp1:Root-Element」ソース要素を「ns2:Root-Element」ターゲット要素にドラッグ・アンド・ドロップします。

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

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

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

    図47-25に示すように、XSLTマッパーに「Input_To_Output_with_multiple_values_lookup.xsl」ファイルが表示されます。

    図47-25 imp1:Root-Elementからns2:Root-Elementへのトランスフォーメーション

    図47-25の説明が続きます
    「図47-25 imp1:Root-Elementからns2:Root-Elementへのトランスフォーメーション」の説明

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

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

  10. 図47-26に示すように、lookupValue1Mを中央のパネルにドラッグ・アンド・ドロップします。

    図47-26 imp1:Root-Elementからns2:Root-ElementへのlookupValue関数の追加

    図47-26の説明が続きます
    「図47-26 imp1:Root-Elementからns2:Root-ElementへのlookupValue関数の追加」の説明

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

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

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

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

  13. 「multivalue.dvm」を選択して、「OK」をクリックします。

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

    DVM列の選択ダイアログが表示されます。

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

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

    /imp1:Root-Element/imp1:Details/imp1:Longname

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

    DVM列の選択ダイアログが表示されます。

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

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

    「targetColumnName」行が追加されます。

  20. 「targetColumnName」フィールドに、"Language"と入力します。

  21. 「追加」をクリックして、別の「targetColumnName」行を挿入します。

  22. 「targetColumnName」フィールドに、"Capital"と入力します。

    図47-27に示すように、「関数の編集 - lookupValue」ダイアログが表示されます。

    図47-27 「関数の編集 - lookupValue関数」ダイアログ: 複数の値ルックアップ・ユースケース

    図47-27の説明が続きます
    「図47-27 「関数の編集 - lookupValue関数」ダイアログ: 複数の値ルックアップ・ユースケース」の説明

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

    図47-28に示すように、トランスフォーメーションが表示されます。

    図47-28 imp1:Root-Elementからns2:Root-Elementへのトランスフォーメーションの完了

    図47-28の説明が続きます
    「図47-28 imp1:Root-Elementからns2:Root-Elementへのトランスフォーメーションの完了」の説明

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

47.6.1.7 タスク7: アプリケーション・サーバー接続の構成方法

SOAコンポジット・アプリケーションをデプロイするには、アプリケーション・サーバー接続が必要です。アプリケーション・サーバー接続の作成方法の詳細は、第43.7.1.1.1項「アプリケーション・サーバー接続の作成」を参照してください。

47.6.1.8 タスク8: コンポジット・アプリケーションのデプロイ方法

次の手順で、Multivalueコンポジット・アプリケーションをアプリケーション・サーバーにデプロイします。

  • アプリケーション・デプロイメント・プロファイルの作成

  • アプリケーション・サーバーへのアプリケーションのデプロイ

これらの手順の詳細は、第43.7.1項「Oracle JDeveloperでの単一のSOAコンポジットのデプロイ」を参照してください。

47.6.2 Multivalueアプリケーションの実行方法と監視方法

デプロイした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をクリックします。「フローのトレース」ページが表示されます。