invokeアクティビティとreceiveアクティビティ
variables
およびsequence
セクションを表示します。ここでは特に、invoke
アクティビティとreceive
アクティビティの2つの領域に注目します。
-
invokeアクティビティは、同期Webサービスを起動(「BPELプロセスからの同期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> . . . . . . </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アクティビティによって非同期サービスが開始されると、Web Services Addressing (WS-Addressing)(「非同期サービスでのWS-Addressingの使用」で説明)を使用して、クライアント・リクエストに固有の相関IDが送信されます。複数のプロセスがサービス・コールバックを待機している可能性があるため、サーバーでは、どのBPELプロセス・サービス・コンポーネント・インスタンスが融資申請承認Webサービスからのコールバック・メッセージを待機しているかを把握する必要があります。相関IDによって、サーバーは、レスポンスを適切なリクエスト・インスタンスと関係付けることができます。