ヘッダーをスキップ
Oracle BPEL Process Manager開発者ガイド
10g(10.1.3.1.0)
B31874-03
  目次
目次
索引
索引

戻る
戻る
次へ
次へ
 

5 非同期Webサービスの起動

この章では、非同期Webサービスのコール方法について説明します。非同期メッセージ形式は、サービス(融資処理など)でクライアント・リクエストの処理に時間がかかる環境で非常に役に立ちます。また、非同期サービスは、同期サービスよりも優れた耐障害性を持ち、かつスケーラブルなアーキテクチャも提供します。

この章の内容は次のとおりです。

5.1 非同期Webサービスのユースケース

United Loanは、クライアントの融資申請を処理して融資提案を返す非同期Webサービスを公開します。このユースケースでは、BPELプロセスとこの非同期融資申請承認Webサービスを統合する方法について説明します。

このユースケースでは、非同期サービスからの情報をリクエストし、レスポンスを受け取るための基本的な設計概念について説明します。この例のUnited Loanの非同期サービスは、別のBPELプロセスです。しかし、適切に設計されたWebサービスであれば、同じBPELコールで対話できます。対象のWebサービスのWSDLファイルに、必要な情報をリクエストして受け取るために必要な情報が含まれます。

このBPELプロセスが非同期融資処理Webサービスと対話する方法の概要を図5-1に示します。

図5-1 非同期サービスの起動

図bpmdg005.gifの説明が続きます
図bpmdg005.gifの説明

非同期Webサービス(BPELプロセスのreceiveアクティビティとreplyアクティビティの間にある点線の枠内)では、次のアクションが実行されます。

  1. assignアクティビティ(LoanAppの準備)により、融資申請が準備されます。

  2. invokeアクティビティ(サービスの開始)により、融資申請が開始されます。この申請の内容は、request変数に格納されます。このrequest変数は、非同期融資処理Webサービスに送信されます。

    融資申請が開始されると、このリクエストを開始するクライアントとパートナ・リンクに一意の相関IDも、融資処理Webサービスに送信されます。相関IDにより、適切な融資提案レスポンスが、対応する融資申請のリクエスト元に確実に返されます。

  3. 融資処理Webサービスは次に、適切なレスポンスをreceiveアクティビティ(コールバックの待機)に送信します。このアクティビティは相関IDで追跡されています。

  4. assignアクティビティ(提案の読取り)により、融資申請提案が読み取られます。

この後の各項で、図5-1に示す非同期機能の詳細を説明します。


関連項目:

BPELプロセス以外の非同期Webサービスの例は、次のサンプル・ファイルを参照してください。
  • SOA_Oracle_Home¥bpel¥samples¥interop¥axis¥BPELCallingAsyncAXIS


5.2 非同期コールバックの概念の概要

この項では、融資申請承認WebサービスのLoanService.wsdlファイル(コールされるWebサービス)、およびクライアントのLoanBroker.bpelファイルとbpel.xmlデプロイメント・ディスクリプタ・ファイルでの非同期機能の定義方法を説明します。内容は次のとおりです。


関連項目:

この章では、次のファイルを例として使用しています。
  • SOA_Oracle_Home¥bpel¥samples¥utils¥AsyncLoanService¥LoanService.wsdl

  • SOA_Oracle_Home¥bpel¥samples¥tutorials¥105.AsyncCompositeLoanBroker¥bpel¥LoanBroker.bpel

  • SOA_Oracle_Home¥bpel¥samples¥tutorials¥105.AsyncCompositeLoanBroker¥bpel¥bpel.xml


5.2.1 非同期サービスのpartnerLinkType

WebサービスのLoanService.wsdlファイルの次のセクションを使用して、WebサービスをBPELプロセスと連携させることができます。


関連項目:

「PartnerLink」

LoanService.wsdlファイルのportTypeセクション

LoanService.wsdlファイルのportTypeセクションは、非同期サービスに使用するポートを定義しています。

非同期サービスにはポート・タイプが2つ定義されます。各ポート・タイプは一方向の操作を実行します。1つのポート・タイプが非同期プロセスを開始し、もう1つのポート・タイプがクライアントをコールバックして非同期レスポンスを返します。この例では、portType LoanServiceがクライアントの融資申請を受け取り、portType LoanServiceCallbackが融資提案レスポンスをクライアントに非同期にコールバックします。

 <!-- portType implemented by the LoanService BPEL process -->
    <portType name="LoanService">
        <operation name="initiate">
            <input message="tns:LoanServiceRequestMessage"/>
        </operation>
    </portType>

    <!-- portType implemented by the requester of LoanService BPEL process
         for asynchronous callback purposes
         -->
    <portType name="LoanServiceCallback">
        <operation name="onResult">
            <input message="tns:LoanServiceResultMessage"/>
        </operation>
    </portType>

LoanService.wsdlファイルのpartnerLinkTypeセクション

LoanService.wsdlファイルのpartnerLinkTypeセクションは、BPELプロセスと融資申請承認Webサービスの間の対話について次のような特性を定義しています。

  • それぞれが果たすロール(操作)

  • 対話のコンテキスト内でメッセージを受信するためにそれぞれが提供するportType

非同期サービスのパートナ・リンク・タイプには、Webサービス・プロバイダに対するロールとクライアント・リクエスタに対するロールの2つのロールがあります。

この対話では、LoanServiceProviderロールおよびLoanService portTypeは、クライアント・リクエスト・メッセージに使用され、LoanServiceRequesterロールおよびLoanServiceCallback portTypeはレスポンス・メッセージをクライアントに非同期に返す(コールバックする)ために使用されます。

<!-- the LoanService partnerLinkType binds the service and
         requestor portType into an asynchronous conversation.
         -->
    <plnk:partnerLinkType name="LoanService">
        <plnk:role name="LoanServiceProvider">
            <plnk:portType name="tns:LoanService"/>
        </plnk:role>
        <plnk:role name="LoanServiceRequester">
            <plnk:portType name="tns:LoanServiceCallback"/>
        </plnk:role>
    </plnk:partnerLinkType>

2つのポート・タイプ(invokeアクティビティのportType="services:LoanService"receiveアクティビティのportType="services:LoanServiceCallback")は、この1つの非同期BPELプロセスに結合されます。基本的に、ポート・タイプは実行される一連の操作です。このBPELプロセスの場合、実行する操作は2つ(invokeアクティビティのinitiatereceiveアクティビティのonResult)あります。

5.2.2 BPELプロセスからのサービスのコール

サービスをBPELからコールするには、プロセスとWebサービスの連携方法を次のファイルで定義する必要があります。

.bpelファイルのpartnerLinksセクション

LoanBroker.bpelファイルのpartnerLinksセクションを見てみます。プロセスが相互作用するサービスはパートナ・リンクとして設計されます。各パートナ・リンクは、partnerLinkTypeによって定義されます。

各パートナ・リンクには名前が付けられています。この名前は、そのパートナ・リンクによるすべてのサービス相互作用に使用されます。これは、レスポンスを、同じタイプの同時リクエストに対する異なるパートナ・リンクに相関する場合に重要です。

非同期プロセスは、クライアントへのコールバックに2番目のパートナ・リンクを使用します。この例では、2番目のパートナ・リンクLoanServiceが融資申請承認Webサービスによって使用されます。

  <!-- This process invokes the asynchronous LoanService. -->

    <partnerLink name="LoanService"
             partnerLinkType="services:LoanService"
             myRole="LoanServiceRequester"
             partnerRole="LoanServiceProvider"/>
  </partnerLinks>

属性myRoleは、クライアントのロールを示します。属性partnerRoleは、この対話におけるパートナのロールを示します。非同期プロセスでは、各partnerLinkTypemyRole属性とpartnerRole属性があります。

デプロイメント・ディスクリプタ・ファイル

samples¥tutorials¥105.AsyncCompositeLoanBrokerbpel.xmlデプロイメント・ディスクリプタ・ファイルを開きます。融資申請承認Webサービスが表示されます。このproperties id情報が、2番目のパートナ・リンク・タイプの作成時に、ファイルに追加されます。

<?xml version="1.0"?>
<bpel-process id="LoanBroker" src="LoanBroker.bpel"
 wsdlLocation="LoanBroker.wsdl">
   <properties id="LoanService">
      <property name="wsdlLocation">
 http://hslattertest-pc:9700/orabpel/default/UnitedLoan/UnitedLoan?wsdl</property>
   </properties>

5.2.3 invokeアクティビティとreceiveアクティビティの動作

LoanBroker.bpelファイルのvariablesおよびsequenceセクションを見てみます。特に注目すべき2つの領域は、invokeアクティビティとreceiveアクティビティです。

  • invokeアクティビティは同期Webサービスを起動(第4章「同期Webサービスの起動」を参照)、または非同期サービスを開始します。

    invokeアクティビティにはvariableセクションで定義されたrequestグローバル入力変数が含まれます。requestグローバル入力変数は融資申請承認Webサービスで使用されます。この変数には、最初の融資申込書の内容が格納されます。

  • 融資申請承認Webサービスからの非同期コールバックを待機するreceiveアクティビティ。receiveアクティビティにはvariablesセクションで定義されたresponseグローバル出力変数が含まれます。この変数には、融資提案レスポンスが格納されます。receiveアクティビティは、サービスからのコールバック・メッセージを非同期に待機します。BPELプロセスは、コールバック・メッセージの到着を待機中、デハイドレートされるか、または圧縮されて格納されます。

  <variables>

    <variable name="request"
               messageType="services:LoanServiceRequestMessage"/>
    <variable name="response"
               messageType="services:LoanServiceResultMessage"/>
  </variables>

 <sequence>


    <!-- initialize the input of LoanService -->
    <assign>
    <!--  initiate the remote process -->
    <invoke name="invoke" partnerLink="LoanService"
        portType="services:LoanService"
        operation="initiate" inputVariable="request"/>

    <!--  receive the result of the remote process -->
    <receive name="receive_invoke" partnerLink="LoanService"
        portType="services:LoanServiceCallback"
        operation="onResult" variable="response"/>

invokeアクティビティによって非同期サービスが開始されると、WS-Addressing(「WS-Addressing」で説明)を使用して、クライアント・リクエストに対して一意の相関IDも送信されます。複数のプロセスがサービス・コールバックを待機している可能性があるため、Oracle BPEL Serverでは、どのBPELプロセス・インスタンスが融資申請承認Webサービスからのコールバック・メッセージを待機しているかを把握する必要があります。相関IDにより、Oracle BPEL Serverは、レスポンスを適切なリクエスト・インスタンスと関連付けることができます。


関連項目:

invokeアクティビティおよびreceiveアクティビティの作成手順は、次の項を参照してください。

createInstance属性による新しいインスタンスの起動

LoanBroker.bpelファイルのsequenceセクションの最初のreceiveアクティビティに、createInstance属性があります。この最初のreceiveアクティビティでは、createInstance要素はyesに設定されています。これにより、新しいBPELプロセス・インスタンスが起動されます。対話のためには、少なくとも1つのインスタンスが起動している必要があります。このため、2番目のreceiveアクティビティではcreateInstance変数をnoに設定します。

createInstance属性のソース・コードは次のとおりです。

    <!-- receive input from requestor -->
    <receive name="receiveInput" partnerLink="client"
             portType="tns:LoanBroker"
             operation="initiate" variable="input"
             createInstance="yes"/>

5.2.4 相関方法による複数のアクティブなBPELプロセス・インスタンスの管理

ある時点でアクティブなインスタンスは多数存在する可能性があるため、Oracle BPEL ServerはWebサービス・レスポンスに、対応する適切なBPELプロセス・インスタンスを指示する必要があります。次の相関方法を使用すると、非同期メッセージを特定して、非同期コールバックが適切なクライアントを確実に検出できるようにすることができます。

5.2.4.1 WS-Addressing

Web Services Addressing(WS-Addressing)は公開されている仕様であり、Oracle BPEL Process Managerでサポートされるデフォルトの相関方法です。WS-Addressingを使用するために、.bpelファイルおよび.wsdlファイルを編集する必要はありません。WS-Addressingは、非同期メッセージの相関にSimple Object Access Protocol(SOAP)ヘッダーを使用します。メッセージは、使用されるトランスポートまたはアプリケーションに依存しません。図5-2に概要を示します。

図5-2 WS-Addressingヘッダーを持つコールバック

図bpmdg020.gifの説明が続きます
図bpmdg020.gifの説明

図5-2は、レスポンスが正しい宛先に送信されるように、メッセージがWSヘッダーとともに渡される方法を示しています。

この章の例では、相関にWS-Addressingを使用しています。メッセージの表示には、TCPトンネリングを使用できます。TCPトンネリングについては、「プログラム間で交換されるメッセージのTCPトンネリングによる表示」で説明します。

WS-Addressingは、通常は通信プロトコルおよびメッセージ・システムで提供される次の情報を定義します。この情報は、トランスポートまたはアプリケーションに依存せずに処理されます。

  • エンドポイントの位置(リプライ先アドレス): リプライ先アドレスは、BPELクライアントがコールバック・メッセージをリスニングしている位置を指定します。

  • 対話ID: TCPトンネリングを使用して、BPELプロセス・フローとWebサービスの間で交換されたSOAPメッセージ(相関IDを含むメッセージなど)を表示します。BPELプロセス・フローの通信先のサービスに対して送受信される正確なSOAPメッセージを確認できます。

    BPELプロセス・フローとWebサービスの間にソフトウェア・リスナーを挿入します。BPELプロセス・フローはリスナー(TCPトンネル)と通信します。リスナーはメッセージをWebサービスに転送し、表示します。Webサービスからのレスポンスはトンネルに返され、トンネルはレスポンスを表示して、BPELプロセスに返します。

プログラム間で交換されるメッセージのTCPトンネリングによる表示

プログラムとサービスの間で交換されるメッセージは、TCPトンネリングにより表示できます。これは、WebサービスとBPELプロセスにおいて、BPELプロセス・フローとWebサービスの間で交換される正確なSOAPメッセージを表示する場合に、特に役立ちます。

SOAPメッセージを監視するには、フローとサービスの間にソフトウェア・リスナーを挿入します。フローはリスナー(TCPトンネル)と通信し、リスナーはサービスへのメッセージの転送、およびメッセージの表示を行います。同様に、サービスからのレスポンスはトンネルに返され、トンネルはレスポンスを表示してフローに返します。

Oracle BPEL ServerとWebサービスの間で交換されたすべてのメッセージを表示する場合、該当するすべてのメッセージがサービスとの間で1回のリクエスト/リプライのやり取りで交換されるため、同期サービスに対して必要なTCPトンネルは1つのみです。非同期サービスの場合、2つのトンネル(サービスの起動用に1つ、フローのコールバック・ポート用に1つ)を設定する必要があります。

5.2.4.1.1 同期サービス用のTCPリスナーの設定

Oracle BPEL Process Managerプロセスで開始される同期サービス用のTCPリスナーを設定するには、次の手順に従います。

  1. 1234などのポートでリスニングを行い、9700などのポートで送信を行うTCPリスナーを起動します(この例で使用しているポート9700は、Oracle BPEL Process Manager for Developersインストール後のデフォルト・ポートです)。Oracle BPEL Process ManagerをOracle Application Server SOAインストール・タイプの一部としてインストールした場合は、以降の手順のポート番号を適切なポート番号に置き換えてください。たとえば、オペレーティング・システムのコマンド・プロンプトから次のコマンドを実行すると、Oracle BPEL Process ManagerにバンドルされているApache Axisに付属のTCPトンネルを使用できます。

    prompt> obsetenv
    prompt> java -classpath %OB_CLASSPATH% orabpel.apache.axis.utils.tcpmon 1234
     localhost 9700
    
    
  2. フローに対するlocationプロパティをbpel.xmlデプロイメント・ディスクリプタ・ファイルに追加し、サービスのエンドポイントをオーバーライドします。たとえば、LoanFlowデモ・サンプルとこれがコールするCreditRatingServiceの間で交換されるメッセージを表示するには、SOA_Oracle_Home¥bpel¥samples¥demos¥LoanDemo¥LoanFlow¥bpel.xmlのLoanFlowデプロイメント・デスクリプタでCreditRatingServiceの位置の定義を次のように変更します。

    <partnerLinkBinding name="creditRatingService">
        <property name="wsdlLocation">
           http://localhost:9700/orabpel/default/CreditRatingService/
             CreditRatingService?wsdl
        </property>
        <property name="location">
           http://localhost:1234/orabpel/default/CreditRatingService
        </property>
    </partnerLinkBinding>
    
    
  3. オペレーティング・システムのコマンド・プロンプトで、LoanDemoをコンパイルしてデプロイします。

    prompt> cd SOA_Oracle_Home¥bpel¥samples¥demos¥LoanDemo
    prompt> ant
    
    

    CreditRatingServiceもBPELプロセスなので、Axisや.NETなど別のツール・キットからBPELプロセスをWebサービスとして起動するために渡されるSOAPメッセージを同じ手順で表示できます。


関連項目:

次のディレクトリにあるTCPモニター・ツール
SOA_Oracle_Home¥bpel¥bin¥obtunnel.bat

5.2.4.1.2 非同期サービス用のTCPリスナーの設定

非同期サービスからのコールバックのSOAPメッセージを表示するTCPリスナーを設定するには、次の手順に従います。

  1. 9710などのポートでリスニングを行い、Oracle BPEL Process Managerポートで送信を行うTCPリスナーを起動します(たとえば、9700はOracle BPEL Process Manager for Developersのインストール後のデフォルト・ポートです)。

  2. Oracle BPEL Process Managerが実行するローカルSOAPコールの最適化をオフにして、コールバック・ポートの変更による影響を確認します。

    1. Oracle BPEL Controlの右上にある「BPELドメインの管理」をクリックします。

    2. 下にスクロールしてoptSoapShortcutプロパティを見つけます。

    3. 値をtrueからfalseに変更します。

  3. 次の場所にあるOracle BPEL Admin Consoleにアクセスします。

    http://localhost:port/BPELAdmin
    
    
  4. 「構成」タブで、下方向にスクロールしてSoapServerUrlプロパティを見つけます。

  5. このプロパティをhttp://localhost:9710に変更します。

  6. 「適用」ボタンをクリックします。

  7. Oracle BPEL Serverを再起動してこれらの変更を初期値として設定し、非同期Webサービスを起動するいずれかのフロー(LoanFlowデモンストレーションなど)を開始します。これを同期TCPトンネリング構成と組み合せると、UnitedLoanサービス開始リクエストを最初のTCPトンネル経由で送信できます。

    非同期サービスからのコールバックは、TCPリスナーに「UnitedLoanサービス・コールバック」などと表示されます。

Oracle JDeveloperを使用する場合は、組込みパケット・モニターを使用して、同期サービスと非同期サービスの両方についてSOAPメッセージを表示することもできます。


関連項目:

  • WS-Addressingの完全な詳細は、Web Services Addressing(WS-Addressing)仕様(http://www.oracle.com/technology/bpelでアクセス可能)を参照してください。

  • この項で使用したLoanFlowデモについては、SOA_Oracle_Home/bpel/samples/demos/LoanDemoを参照してください。


5.2.4.2 相関セットによる非同期メッセージ本体の内容の調整

相関セットは、メッセージ本体の内容に基づいて非同期メッセージの相関を可能にするBPELメカニズムです。この方法を使用するには、.bpelファイルに相関セットを定義します。この方法は、WS-Addressingをサポートしないサービス用、または対話がA > B > AではなくA > B > C > Aという形式の場合など、一定の高度な対話パターン用に設計されています。


関連項目:

次の相関セットの例を参照してください。

5.2.5 receiveアクティビティに応じたreplyアクティビティによるメッセージの送信

replyアクティビティを使用すると、ビジネス・プロセスはreceiveアクティビティによって受け取ったメッセージのリプライとしてメッセージを送信できます。receiveとreplyを組み合せると、プロセスに対するWSDL portTypeでのリクエスト/レスポンス操作となります。

  <reply partnerLink="ncname" portType="qname" operation="ncname"
         variable="ncname"? faultName="qname"?
         standard-attributes>
    standard-elements
    <correlations>?
       <correlation set="ncname" initiate="yes|no"?>+
    </correlations>
  </reply>

関連項目:


5.2.6 デハイドレーション・ポイントによる長期間実行される非同期プロセスの保持

非同期コールバックの待機中、長期間にわたる非同期プロセスとその現在の状態の情報をデータベース内に自動的に保存するには、データベースをデハイドレーション・ストアとして使用します。データベースにプロセスを格納することにより、プロセスを維持し、システムの停止やネットワークの問題が発生した場合の状態や信頼性の低下を防ぎます。この機能により、BPELプロセスの信頼性とスケーラビリティの両方が向上します。また、クラスタリングおよびフェイルオーバーのサポートにもこの機能を使用できます。

このポイントは、invokeアクティビティとreceiveアクティビティの間に挿入します。融資申請承認Webサービスのデハイドレーション・ポイントの例は、図5-1を参照してください。

5.3 非同期サービスのコール

非同期機能をBPELプロセスに追加するには、この項のタスクを実行します。

5.3.1 手順1: 非同期サービスのパートナ・リンクの追加

融資申請承認Webサービスに、LoanServiceという名前のパートナ・リンクを作成する方法について説明します。

  1. アプリケーション・ナビゲータ「LoanBroker.bpel」をダブルクリックします。

  2. 「ダイアグラム」ウィンドウで、BPELプロセス(「サービス」の下)の右側または左側を右クリックします。

  3. 「パートナ・リンクの作成」を選択します。

    「パートナ・リンクの作成」ウィンドウが表示されます。

  4. 次の詳細を入力して、2つ目のパートナ・タイプを作成し、融資申請承認Webサービスを選択します。

    • 名前: パートナ・リンクの名前を入力します。

    • プロセス: BPELプロセス名です。

    • WSDLファイル: 使用するWSDLファイルの名前を入力します。このフィールドの上にある「サービス・エクスプローラ」アイコンをクリックして、適切なWSDLを検索します。

    • パートナ・リンク・タイプ: BPELプロセスと連携する外部サービスです。リストから選択します。

    • パートナ・ロール: 外部ソースのロールです(プロバイダなど)。リストから選択します。

    • マイ・ロール: この連携におけるBPELプロセスのロールです(リクエスタなど)。リストから選択します。

    図async1.gifの説明が続きます
    図async1.gifの説明

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

    融資申請承認Webサービス(United Loan)の新しいパートナ・リンクが.bpelファイルの「ダイアグラム」ウィンドウの「サービス」領域に表示されます。


    関連項目:


5.3.2 手順2: invokeアクティビティの追加

次の手順に従って、invokeアクティビティとrequestという名前のグローバル入力変数を作成します。このアクティビティは、融資申請承認Webサービス(United Loan)を使用して、非同期BPELプロセス・アクティビティを開始します。融資申請承認Webサービスは、request入力変数を使用してクライアントからの融資申請を受け取ります。

  1. コンポーネント・パレットinvokeアクティビティをreceiveアクティビティの下にドラッグします。

  2. .bpelファイルの「ダイアグラム」ウィンドウで、BPELプロセスの右側または左側を右クリックして、メニューから「表示」「変数」を選択します。

    「変数」ウィンドウが表示されます。

  3. 「変数」ウィンドウのナビゲーション・ツリーで2番目の「変数」フォルダを選択して「作成」をクリックします。

    「変数の作成」ダイアログ・ボックスが表示されます。

  4. 変数名を入力し、表示されたオプションから「メッセージ・タイプ」を選択します。

    • 単純型: このオプションでは、XMLスキーマの単純型(文字型やブール型など)を選択できます。

    • メッセージ・タイプ: このオプションでは、パートナ・リンクまたは現在のBPELプロセスのプロジェクトWSDLファイルに対するWSDLメッセージ・ファイル定義を選択できます(レスポンス・メッセージやリクエスト・メッセージなど)。メッセージ・タイプと関連付けられている変数をinvokereceiveまたはreplyアクティビティの入力変数または出力変数として指定できます。

      メッセージ・タイプを表示するには、「メッセージ・タイプ」オプションを選択し、懐中電灯アイコンを選択して「タイプの選択」ウィンドウを表示します。ここから、「メッセージ・タイプ」ナビゲーション・ウィンドウを開いて「メッセージ・タイプ」「パートナ・リンク」「Loan Service」「United Loan」「メッセージ・タイプ」「LoanServiceRequest Message」を選択します。

    • 要素: このオプションでは、現在のBPELプロセスのプロジェクト・スキーマ・ファイルまたはプロジェクトWSDLファイルのXMLスキーマ要素、またはパートナ・リンクのXMLスキーマ要素を選択できます。

    図async6.gifの説明が続きます
    図async6.gifの説明

  5. 「OK」「閉じる」をクリックします。

  6. invokeアクティビティをダブルクリックし、「起動」ウィンドウを表示します。

  7. 「起動」ウィンドウで、「パートナ・リンク」リストから「LoanService」パートナ・リンクを、「操作」リストから「initiate」を選択します。

  8. 「入力変数」フィールドの右側の2番目のアイコンをクリックして、手順4で作成した入力変数を選択します。

    「変数の選択」ウィンドウが表示され、変数の選択が可能になります。

    出力変数はreceive操作で返されるため、指定していません。invokeアクティビティとグローバル入力変数が作成されます。


    関連項目:


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

5.3.3 手順3: receiveアクティビティの追加

次の手順に従って、receiveアクティビティとresponseという名前のグローバル出力変数を作成します。このアクティビティは、融資申請承認Webサービスのコールバック処理を待機します。融資申請承認Webサービスは、この出力変数を使用して、融資提案結果をクライアントに送信します。

  1. コンポーネント・パレットreceiveアクティビティを、「手順2: invokeアクティビティの追加」で作成したinvokeアクティビティの直後にドラッグします。

  2. 前の手順25と同様の手順で、「変数の作成」ウィンドウを開き、受信情報を格納する変数を作成します。

    図createglobvar2.gifの説明が続きます
    図createglobvar2.gifの説明

  3. receiveアクティビティをダブルクリックし、名前をreceive_invokeに変更します。

  4. 「パートナ・リンク」リストから「LoanService」を、「操作」リストから「onResult」を選択します。「インスタンスの作成」チェック・ボックスは選択しないでください。

  5. 前の手順25で作成した変数を選択します。

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

    receiveアクティビティと出力変数が作成されます。LoanBroker.bpelファイル内の最初のreceiveアクティビティが最初のBPELプロセス・インスタンスを作成したため、2つ目のインスタンスを作成する必要はありません。

5.3.4 手順4: その他のアクティビティの実行

非同期固有のタスクに加え、次のタスクを実行する必要があります。

  • クライアントの融資申込書のinput変数ペイロードを融資申請承認Webサービスのrequest変数ペイロードにコピーする、データ操作用の最初のassignアクティビティを、invokeアクティビティの前に作成します。

  • 受け取るクライアントのoutput変数に融資申請承認Webサービスの融資申請結果のresponse変数ペイロードをコピーする、データ操作用の2番目のassignアクティビティを、receiveアクティビティの後ろに作成します。


関連項目:

assignアクティビティの作成および定義の詳細は、次のドキュメントを参照してください。
  • 『Oracle BPEL Process Managerクイック・スタート・ガイド』

  • 『Oracle BPEL Process Manager Order Bookingチュートリアル』


5.4 非同期サービスでの相関セットの使用

このチュートリアルでは、Oracle JDeveloperを使用して非同期サービスで相関セットを使用する方法について説明します。相関セットでは、メッセージ本体の内容に基づいて非同期メッセージを関係付けることができます。相関セットは、連携が単純なinvokeとreceiveアクティビティでない場合に定義します。この例では、invokeアクティビティが関連付けられていないreceiveアクティビティを3つ含むプロセスに相関セットを使用する方法を示します。

この項の内容は次のとおりです。

5.4.1 手順1: プロジェクトの作成

  1. Designerウィンドウの「アプリケーション・ナビゲータ」セクションでアプリケーションを右クリックします。

  2. 「新規プロジェクト」を選択します。

  3. 「項目」ウィンドウで「BPELプロセス・プロジェクト」をダブルクリックして、「BPELプロジェクト作成ウィザード」ウィンドウを表示します。

  4. 「名前」フィールドに適切な名前を入力します(この例ではMyCorrelationSetを使用)。

  5. 「テンプレート」リストで「非同期BPELプロセス」を選択します。

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

5.4.2 手順2: パートナ・リンクとファイル・アダプタ・サービスの構成

次に、アダプタ・サービスを使用する3つのパートナ・リンクを作成します。

この項の内容は次のとおりです。

5.4.2.1 初期パートナ・リンクとファイル・アダプタ・サービスの作成

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

  2. 最初のPartnerLinkアクティビティを、Designerウィンドウの右側にあるヘッダー「サービス」の下の任意の場所にドラッグ・アンド・ドロップします。

  3. 「名前」フィールドにFirstReceivePLと入力します。

  4. 一番上の3番目のアイコン(「アダプタ・サービスの定義」アイコン)をクリックします。これにより、「アダプタ構成ウィザード」が起動されます。

    図adapter_service.gifの説明が続きます
    図adapter_service.gifの説明

  5. 「ようこそ」ウィンドウで「次へ」をクリックします。

  6. 「アダプタ・タイプ」ウィンドウで「ファイル・アダプタ」を選択し、「次へ」をクリックします。

  7. 「サービス名」ウィンドウの「サービス名」フィールドにFirstReceiveと入力し、「次へ」をクリックします。

  8. 「操作」ウィンドウの「操作タイプ」から「Read File」を選択し、「次へ」をクリックします。「操作名」フィールドには、Readが自動的に入力されます。

  9. 「ディレクトリ名は物理パスとして指定されます」を選択します。

  10. 「着信ファイル用のディレクトリ(物理パス)」フィールドの横にある「参照」をクリックします。

  11. ファイルの読取り元のディレクトリを選択します(この例ではC:¥files¥receiveprocess¥FirstInputDirを選択)。

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

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

  14. 「ファイルのフィルタ処理」ウィンドウで、適切なファイル・フィルタ処理パラメータを入力します。

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

  16. 「ファイル・ポーリング」ウィンドウで、適切なファイル・ポーリング・パラメータを入力します。

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

  18. 「メッセージ」ウィンドウの「スキーマの場所」フィールドの横にある「参照」をクリックして、「タイプの選択」ウィンドウを表示します。

  19. 適切なXSDスキーマ・ファイルを選択します。この例では、スキーマとしてBook1_4.xsdを、スキーマ要素としてLoanApplを選択しています。

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

    「スキーマの場所」フィールドと「スキーマ要素」フィールドに値が入力されます(この例ではそれぞれBook1_4.xsdLoanAppl)。

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

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

    「パートナ・リンク」ウィンドウが再び表示されます。その他すべてのフィールドには値が自動的に入力されます。このウィンドウには次が表示されます。

    フィールド
    名前 FirstReceive
    WSDLファイル file:/c:OraJDev/jdev/mywork/myapplication/MyCorrelationSet/bpel/FirstReceive.wsdl

    c:/OraJDevは、この例で使用しているOracle JDeveloperホームディレクトリ

    パートナ・リンク・タイプ Read_plt
    パートナ・ロール 未指定のまま
    マイ・ロール Read_role

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

5.4.2.2 2番目のパートナ・リンクとファイル・アダプタ・サービスの作成

  1. 2番目のPartnerLinkアクティビティをFirstReceivePLパートナ・リンク・アクティビティの下にドラッグ・アンド・ドロップします。

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

  3. 一番上の3番目のアイコン(「アダプタ・サービスの定義」アイコン)をクリックします。

  4. 「ようこそ」ウィンドウで「次へ」をクリックします。

  5. 「アダプタ・タイプ」ウィンドウで「ファイル・アダプタ」を選択し、「次へ」をクリックします。

  6. 「サービス名」ウィンドウの「サービス名」フィールドにSecondFileReadと入力し、「次へ」をクリックします。この名前は、手順7で入力した名前とは異なる必要があります。

  7. 「操作」ウィンドウで「操作タイプ」として「Read File」を選択します。

  8. 「操作名」フィールドの名前をRead1に変更します。

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

  10. 「ディレクトリ名は物理パスとして指定されます」を選択します。

  11. 「着信ファイル用のディレクトリ(物理パス)」フィールドの横にある「参照」をクリックします。

  12. ファイルの読取り元のディレクトリを選択します(この例ではC:¥files¥receiveprocess¥SecondInputDirを入力)。

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

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

  15. 「ファイルのフィルタ処理」ウィンドウで、適切なファイル・フィルタ処理パラメータを入力します。

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

  17. 「ファイル・ポーリング」ウィンドウで、適切なファイル・ポーリング・パラメータを入力します。

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

  19. 「メッセージ」ウィンドウの「スキーマの場所」フィールドの横にある「参照」をクリックして、「タイプの選択」ウィンドウを表示します。

  20. 適切なXSDスキーマ・ファイルを選択します。この例では、スキーマとしてBook1_5.xsdを、スキーマ要素としてLoanAppResponseを選択しています。

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

    「スキーマの場所」フィールドと「スキーマ要素」フィールドに値が入力されます(この例ではそれぞれBook1_5.xsdLoanAppResponse)。

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

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

    「パートナ・リンク」ウィンドウが再び表示されます。その他すべてのフィールドには値が自動的に入力されます。このウィンドウには次が表示されます。

    フィールド
    名前 SecondReceive
    WSDLファイル file:/c:OraJDev/jdev/mywork/myapplication/MyCorrelationSet/bpel/SecondFileRead.wsdl

    c:/OraJDevは、この例で使用しているOracle JDeveloperホームディレクトリ

    パートナ・リンク・タイプ Read1_plt
    パートナ・ロール 未指定のまま
    マイ・ロール Read1_role

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

5.4.2.3 3番目のパートナ・リンクとファイル・アダプタ・サービスの作成

  1. 3番目のPartnerLinkアクティビティをSecondReceivePLパートナ・リンク・アクティビティの下にドラッグ・アンド・ドロップします。

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

  3. 一番上の3番目のアイコン(「アダプタ・サービスの定義」アイコン)をクリックします。

  4. 「ようこそ」ウィンドウで「次へ」をクリックします。

  5. 「アダプタ・タイプ」ウィンドウで「ファイル・アダプタ」を選択し、「次へ」をクリックします。

  6. 「サービス名」ウィンドウの「サービス名」フィールドにThirdFileReadと入力し、「次へ」をクリックします。この名前は、手順7および手順6で入力した名前とは異なる必要があります。

  7. 「操作」ウィンドウで「操作タイプ」として「Read File」を選択します。

  8. 「操作名」フィールドの名前をRead2に変更します。この名前は一意である必要があります。

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

  10. 「ディレクトリ名は物理パスとして指定されます」を選択します。

  11. 「着信ファイル用のディレクトリ(物理パス)」フィールドの横にある「参照」をクリックします。

  12. ファイルの読取り元のディレクトリを選択します(この例ではC:¥files¥receiveprocess¥ThirdInputDirを入力)。

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

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

  15. 「ファイルのフィルタ処理」ウィンドウで、適切なファイル・フィルタ処理パラメータを入力します。

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

  17. 「ファイル・ポーリング」ウィンドウで、適切なファイル・ポーリング・パラメータを入力します。

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

  19. 「メッセージ」ウィンドウの「スキーマの場所」フィールドの横にある「参照」をクリックして、「タイプの選択」ウィンドウを表示します。

  20. 適切なXSDスキーマ・ファイルを選択します。この例では、スキーマとしてBook1_6.xsdを、スキーマ要素としてCustResponseを選択します。

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

    「スキーマの場所」フィールドと「スキーマ要素」フィールドに値が入力されます(この例ではそれぞれBook1_6.xsdCustResponse)。

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

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

    「パートナ・リンク」ウィンドウが再び表示されます。その他すべてのフィールドには値が自動的に入力されます。このウィンドウには次が表示されます。

    フィールド
    名前 ThirdReceive
    WSDLファイル file:/c:OraJDev/jdev/mywork/myapplication/MyCorrelationSet/bpel/ThirdFileRead.wsdl

    c:/OraJDevは、この例で使用しているOracle JDeveloperホームディレクトリ

    パートナ・リンク・タイプ Read2_plt
    パートナ・ロール 未指定のまま
    マイ・ロール Read2_role

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

    完成したDesignerウィンドウは次のようになります。

    図cs_pl.gifの説明が続きます
    図cs_pl.gifの説明

5.4.3 手順3: 3つのreceiveアクティビティの作成

次に、3つのreceiveアクティビティ(各パートナ・リンクにつき1つずつ)を作成します。receiveアクティビティでは、情報の送信元のパートナ・リンクを指定します。

この項の内容は次のとおりです。

5.4.3.1 最初のreceiveアクティビティの作成

  1. 「コンポーネント・パレット」セクションの「プロセス・アクティビティ」リストから、ReceiveアクティビティをDesignerウィンドウにドラッグ・アンド・ドロップします。

  2. Receiveアイコンをダブルクリックし、Receiveウィンドウを表示します。

  3. 次の詳細を入力して、最初のパートナ・リンク(FirstReceivePL)を最初のreceiveアクティビティと関連付けます。

    フィールド
    名前 receiveFirst
    パートナ・リンク FirstReceivePL
    インスタンスの作成 このチェック・ボックスを選択

    「操作」Read)フィールドには自動的に入力が行われます。

  4. 「変数」フィールドの右側にある最初のアイコンをクリックします。これは、変数を自動作成するアイコンです。

  5. 表示された「変数の作成」ウィンドウで「OK」をクリックします。

    receiveFirst_Read_InputVariableという名前の変数が「変数」フィールドに自動的に作成されます。

  6. 手順3で説明したように、「インスタンスの作成」チェック・ボックスが選択されていることを確認します。

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

5.4.3.2 2番目のreceiveアクティビティの作成

  1. 「コンポーネント・パレット」セクションの2番目のReceiveアクティビティをreceiveFirst receiveアクティビティの下にドラッグ・アンド・ドロップします。

  2. Receiveアイコンをダブルクリックし、Receiveウィンドウを表示します。

  3. 次の詳細を入力して、2番目のパートナ・リンク(SecondReceivePL)を2番目のreceiveアクティビティと関連付けます。

    フィールド
    名前 receiveSecond
    パートナ・リンク SecondReceivePL
    インスタンスの作成 このチェック・ボックスは非選択

    「操作」Read1)フィールドには自動的に入力が行われます。

  4. 「変数」フィールドの右側にある最初のアイコンをクリックします。

  5. 表示された「変数の作成」ウィンドウで「OK」をクリックします。

    receiveSecond_Read1_InputVariableという名前の変数が「変数」フィールドに自動的に作成されます。

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

5.4.3.3 3番目のreceiveアクティビティの作成

  1. 「コンポーネント・パレット」セクションの3番目のReceiveアクティビティをreceiveSecond receiveアクティビティの下にドラッグ・アンド・ドロップします。

  2. Receiveアイコンをダブルクリックし、Receiveウィンドウを表示します。

  3. 次の詳細を入力して、3番目のパートナ・リンク(ThirdReceivePL)を3番目のreceiveアクティビティと関連付けます。

    フィールド
    名前 receiveThird
    パートナ・リンク ThirdReceivePL
    インスタンスの作成 このチェック・ボックスは非選択

    「操作」Read2)フィールドには自動的に入力が行われます。

  4. 「変数」フィールドの右側にある最初のアイコンをクリックします。

  5. 表示された「変数の作成」ウィンドウで「OK」をクリックします。

    receiveThird_Read2_InputVariableという名前の変数が「変数」フィールドに自動的に作成されます。

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

    各receiveアクティビティが、特定のパートナ・リンクに関連付けられました。

5.4.4 手順4: 相関セットの作成

次に、相関セットを作成します。相関トークンのセットは、相関グループのすべてのメッセージで共有されるプロパティのセットです。

この項の内容は次のとおりです。

5.4.4.1 最初の相関セットの作成

  1. Oracle JDeveloperの「構造」ウィンドウで、「相関セット」を右クリックして「すべての子ノードを開く」を選択します。

  2. 「相関セット」を右クリックして、「相関セットの作成」を選択します。

  3. 「相関セットの作成」ウィンドウの「名前」フィールドにCorrelationSet1と入力します。

  4. 「プロパティ」セクションで「追加」をクリックして、「プロパティの選択」ウィンドウを表示します。

  5. 「プロパティ」を選択し、「作成」(上の最初のアイコン)をクリックして「CorrelationSetプロパティの作成」ウィンドウを表示します。

  6. 「名前」フィールドにNameCorrと入力し、「タイプ」フィールドの右側にある懐中電灯アイコンをクリックします。

  7. 「タイプの選択」ウィンドウで「string」を選択し、「OK」をクリックします。

  8. 「OK」をクリックして、「CorrelationSetプロパティの作成」ウィンドウ、「プロパティの選択」ウィンドウおよび「相関セットの作成」ウィンドウを閉じます。

5.4.4.2 2番目の相関セットの作成

  1. Oracle JDeveloperの「構造」ウィンドウの「相関セット」セクションに戻ります。

  2. 「相関セット」を右クリックして、「相関セットの作成」を選択します。

  3. 「相関セットの作成」ウィンドウの「名前」フィールドにCorrelationSet2と入力します。

  4. 「プロパティ」セクションで「追加」をクリックして、「プロパティの選択」ウィンドウを表示します。

  5. 「プロパティ」を選択し、「作成」をクリックして「CorrelationSetプロパティの作成」ウィンドウを表示します。

  6. 「名前」フィールドにIDCorrと入力し、「タイプ」フィールドの右側にある懐中電灯アイコンをクリックします。

  7. 「タイプの選択」ウィンドウで「long」を選択し、「OK」をクリックします。

  8. 「OK」をクリックして、「CorrelationSetプロパティの作成」ウィンドウ、「プロパティの選択」ウィンドウおよび「相関セットの作成」ウィンドウを閉じます。

5.4.5 手順5: 相関セットとreceiveアクティビティの関連付け

次に、相関セットをreceiveアクティビティと関連付けます。次の相関セットのタスクを実行します。

  • 最初の相関グループで、最初と2番目のreceiveアクティビティをCorrelationSet1相関セットと関連付けます。

  • 2番目の相関グループで、2番目と3番目のreceiveアクティビティをCorrelationSet2相関セットと関連付けます。

この項の内容は次のとおりです。

5.4.5.1 最初の相関セットのreceiveアクティビティへの関連付け

  1. receiveFirst receiveアクティビティをダブルクリックし、Receiveウィンドウを表示します。

  2. 「相関」タブをクリックします。

  3. 「追加」をクリックして「CorrelationSet1」を選択し、「OK」をクリックします。

  4. 「開始」列をyesに設定します。yesに設定すると、このセットが、交換するメッセージに含まれるプロパティの値で開始されます。

    図cs_set1.gifの説明が続きます
    図cs_set1.gifの説明

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

5.4.5.2 2番目の相関セットのreceiveアクティビティへの関連付け

  1. receiveSecond receiveアクティビティをダブルクリックし、Receiveウィンドウを表示します。

  2. 「相関」タブをクリックします。

  3. 「追加」をクリックして「CorrelationSet2」を選択し、「OK」をクリックします。

  4. 「開始」列をyesに設定します。

  5. 「追加」をクリックして「CorrelationSet1」を選択します。

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

  7. CorrelationSet1の「開始」列を「いいえ」に設定します。

    図cs_set2.gifの説明が続きます
    図cs_set2.gifの説明

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

    これにより、最初と2番目のreceiveアクティビティが1つの相関グループにまとめられます。

5.4.5.3 3番目の相関セットのreceiveアクティビティへの関連付け

  1. receiveThird receiveアクティビティをダブルクリックし、Receiveウィンドウを表示します。

  2. 「相関」タブをクリックします。

  3. 「追加」をクリックして「CorrelationSet2」を選択します。

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

  5. CorrelationSet2の「開始」列を「いいえ」に設定します。

    図cs_set3.gifの説明が続きます
    図cs_set3.gifの説明

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

    これにより、2番目と3番目のreceiveアクティビティが2番目の相関グループにまとめられます。

5.4.6 手順6: プロパティ・エイリアスの作成

プロパティ・エイリアスを使用すると、グローバル・プロパティを特定のメッセージ・パートのフィールドにマップできます。これにより、プロパティ名を、メッセージのパートと場所を表すエイリアスにできます。このエイリアスは、XPath式で使用できます。

この項の内容は次のとおりです。

5.4.6.1 NameCorrのプロパティ・エイリアスの作成

NameCorr相関セットに次の2つのプロパティ・エイリアスを作成します。

  • NameCorrreceiveFirst receiveアクティビティのLoanApplメッセージ・タイプ・パートにマップします。このreceiveアクティビティをFirstReceivePLパートナ・リンク(FirstReceive.wsdlファイルで定義)と関連付けます。

  • NameCorrreceiveSecond receiveアクティビティの受信メッセージ・タイプ・パートLoanAppResponseにマップします。このreceiveアクティビティをSecondReceivePLパートナ・リンク(SecondFileRead.wsdlファイルで定義)と関連付けます。

  1. Oracle JDeveloperの「構造」セクションで「プロパティ・エイリアス」を右クリックします。

  2. 「プロパティ・エイリアスの作成」を選択します。

  3. 「プロパティ」リストで「NameCorr」を選択します。

  4. 「メッセージ・タイプ」「パートナ・リンク」「FirstReceivePL」「FirstReceive.wsdl」「メッセージ・タイプ」「LoanAppl_msg」Part - LoanApplの順に展開して選択します。

  5. 「問合せ」フィールドで[Ctrl]を押してから[Space]キーを押して、次のXPath式を定義します。

    /ns2:LoanAppl/ns2:Name
    
    
  6. 「OK」をクリックします。

  7. 手順13を繰り返して、NameCorrの2番目のプロパティ・エイリアスを作成します。

  8. 「メッセージ・タイプ」「プロジェクトのWSDLファイル」「SecondFileRead.wsdl」「メッセージ・タイプ」「LoanAppResponse_msg」Part - LoanAppResponseの順に展開して選択します。

  9. 「問合せ」フィールドで[Ctrl]を押してから[Space]キーを押して、次のXPath式を定義します。

    /ns4:LoanAppResponse/ns4:APR
    

5.4.6.2 IDCorrのプロパティ・エイリアスの作成

IDCorr相関セットに次の2つのプロパティ・エイリアスを作成します。

  • IDCorrreceiveSecond receiveアクティビティのLoanAppResponseメッセージ・タイプ・パートにマップします。このreceiveアクティビティをSecondReceivePLパートナ・リンク(SecondFileRead.wsdlファイルで定義)と関連付けます。

  • IDCorrreceiveThird receiveアクティビティのCustResponseメッセージ・タイプ・パートにマップします。このreceiveアクティビティをThirdReceivePLパートナ・リンク(ThirdFileRead.wsdlファイルで定義)と関連付けます。

  1. 「構造」セクションで「プロパティ・エイリアス」を右クリックします。

  2. 「プロパティ・エイリアスの作成」を選択します。

  3. 「プロパティ」リストで「IDCorr」を選択します。

  4. 「メッセージ・タイプ」「プロジェクトのWSDLファイル」「SecondFileRead.wsdl」「メッセージ・タイプ」「LoanAppResponse_msg」Part - LoanAppResponseの順に展開して選択します。

  5. 「問合せ」フィールドで[Ctrl]を押してから[Space]キーを押して、次のXPath式を定義します。

    /ns4:LoanAppResponse/ns4:APR
    
    
  6. 「OK」をクリックします。

  7. 手順13を繰り返して、IDCorrの2番目のプロパティ・エイリアスを作成します。

  8. 「メッセージ・タイプ」「プロジェクトのWSDLファイル」「ThirdFileRead.wsdl」「メッセージ・タイプ」「CustResponse_msg」Part - CustResponseの順に展開して選択します。

  9. 「問合せ」フィールドで[Ctrl]を押してから[Space]キーを押して、次のXPath式を定義します。

    /ns6:CustResponse/ns6:APR
    
    

    これで、設計は完了します。

5.4.7 手順7: WSDLファイルのコンテンツの確認

NameCorrおよびIDCorr相関セット・プロパティは、Oracle JDeveloperのアプリケーション・ナビゲータにおいてMyCorrelationSet_Properties.wsdlファイルに定義されています。

<definitions
     name="properties"
     targetNamespace="http://xmlns.oracle.com/MyCorrelationSet/correlationset"
     xmlns="http://schemas.xmlsoap.org/wsdl/"
     xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
     xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <bpws:property name="NameCorr" type="xsd:string"/>
    <bpws:property name="IDCorr" type="xsd:double"/>
</definitions>

プロパティ・エイリアスは、MyCorrelationSet.wsdlファイルに定義されています。

<bpws:propertyAlias propertyName="ns1:NameCorr"
 messageType="ns3:LoanAppl_msg"
 part="LoanAppl" query="/ns2:LoanAppl/ns2:Name"/>

<bpws:propertyAlias propertyName="ns1:NameCorr"
 messageType="ns5:LoanAppResponse_msg"
 part="LoanAppResponse" query="/ns4:LoanAppResponse/ns4:APR"/>

<bpws:propertyAlias propertyName="ns1:IDCorr"
 messageType="ns5:LoanAppResponse_msg"
 part="LoanAppResponse" query="/ns4:LoanAppResponse/ns4:APR"/>

<bpws:propertyAlias propertyName="ns1:IDCorr"
 messageType="ns7:CustResponse_msg"
 part="CustResponse" query="/ns6:CustResponse/ns6:APR"/>

この例では、BPELプロセスはWebサービス・プロバイダとしては作成されていないので、MyCorrelationSet.wsdlファイルはBPELプロセスでは参照されません。このため、相関セットを参照するには、MyCorrelationSet.wsdlファイルをFirstReceive.wsdlファイル内にインポートする必要があります。

<import namespace="http://xmlns.oracle.com/MyCorrelationSet" location="MyCorrelationSet.wsdl"/>

5.5 まとめ

この章では、非同期Webサービスを起動するBPELプロセスの概要について説明しました。このサービスは、クライアントから入力として融資申込書を受け取り、承認された融資提案を非同期に返すものでした。また、Oracle JDeveloperで相関セットを作成する例を示しました。