ヘッダーをスキップ
Oracle SOA Suite開発者ガイド
10g(10.1.3.1.0)
B31839-01
  目次へ
目次
索引へ
索引

前へ
前へ
 
次へ
次へ
 

7.4 assignアクティビティの使用

BPELでのデータ操作の起点はassignアクティビティです。assignアクティビティはXPath標準に基づいています。図7-10に示すように、assignアクティビティは、XML変数間でデータをコピーしたり、式の値を計算して変数に格納する際に使用します。

図7-10 コピー操作の「Assign」ダイアログ

図7-10の説明は次にあります。
「図7-10 コピー操作の「Assign」ダイアログ」の説明

アクティビティでのコピー要素は、割当てのソースおよびターゲット(コピー元とコピー先)を指定します。ソースとターゲットには互換性のあるタイプを指定する必要があります。

XPath問合せ、式および関数を使用して、次のようにデータを操作できます。

これらの関数の詳細は、『Oracle BPEL Process Manager開発者ガイド』を参照してください。

BPELのassignアクティビティやXPathコア関数では、複雑なデータ操作の実行が困難な可能性があります。ただし、XSLTやJavaを使用して、あるいはWebサービスとして、複雑なデータ操作やトランスフォーメーションを実行できます。XSLTの場合、Oracle BPEL Process Managerには、これらのトランスフォーメーションを実行するXPath関数が組み込まれています。トランスフォーメーションについては、次の項およびマニュアルを参照してください。

7.4.1 assignアクティビティの使用方法

図7-10に示すように、assignアクティビティでコピー操作を使用して、どのデータをどの変数にコピーするかを指定します。SOA Order Bookingアプリケーションでは、BPELプロセスが「InitializeRequest」assignアクティビティ(「CreditService」スコープ内)を使用して、creditcardtype変数の値をccType変数にコピーし、creditcardnumber変数の値をccNum変数の値にコピーします。変数名ccTypeccNumは、「CreditValidatingService」パートナ・リンクのWSDLに指定されます。

assignアクティビティを使用して変数をコピーする手順は、次のとおりです。

  1. 「Assign」アクティビティを「Scope」アクティビティ内部にドラッグ・アンド・ドロップします。

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

  3. 「Assign」ダイアログの「一般」タブを使用して、「Assign」アクティビティの名前を入力します。

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

  5. 「コピー操作」タブをクリックします。

  6. 「作成」リストから「コピー操作」を選択します。

  7. 図7-8に示すように、「コピー操作の作成」ダイアログを使用して、特定の変数の内容を別の変数にコピーします。この「Assign」アクティビティは、クライアントの発注を入力として取得し、価格の見積りについてRapid Manufacturer Webサービスに連絡します。

    図7-11 「コピー操作」ダイアログ

    図7-11の説明は次にあります。
    「図7-11 「コピー操作」ダイアログ」の説明

    1. 「From」側の「変数」で、クライアントの入力変数名(BPELプロセスWSDLファイルに定義されている)が見つかるまでツリーを開きます。

    2. 「To」側の「変数」で、Webサービスが使用する入力変数名(WebサービスWSDLのメッセージ・タイプ定義に定義されている)が見つかるまでツリーを開きます。

  8. 「コピー操作の作成」ウィンドウと「Assign」ウィンドウを閉じます。

  9. ファイルを保存します。

7.4.2 assignアクティビティ使用時の処理内容

例7-4に、SOA Order Bookingアプリケーションの「InitializeRequest」assignアクティビティのソース・コードを示します。

例7-4 「InitializeRequest」assignアクティビティのソース・コード

<scope name="CreditService">
  <variables>
    <variable name="validateRequest"
              messageType="ns6:CreditCardValidationRequestMessage"/>
    <variable name="validateResponse"
              messageType="ns6:CreditCardValidationResponseMessage"/>
   </variables>
     <sequence name="Sequence_5">
       <assign name="InitializeRequest">
         <copy>
           <from variable="customerServiceResponse"
                 query="/ns3:findCustomerByIdResponse/ns3:return/ns3:creditcardtype"
                 part="parameters"/>
           <to variable="validateRequest" part="CreditCard"
               query="/ns21:CreditCard/ccType"/>
         </copy>
         <copy>
           <from variable="customerServiceResponse"
                 query="/ns3:findCustomerByIdResponse/ns3:return/ns3:creditcardnumber"
                 part="parameters"/>
           <to variable="validateRequest" part="CreditCard"
               query="/ns21:CreditCard/ccNum"/>
         </copy>
       </assign