複数のreceiveまたはpickアクティビティで同じパートナ・リンクが使用されている場合における適切なエンドポイントへのコールバック・メッセージのルーティング

中間プロセスのreceiveアクティビティの後に続くinvokeアクティビティ(コールバック用)に対して、このプロパティをクライアントのreplyToAddressに設定してください。つまり、クライアントが、中間プロセスのreceiveアクティビティに対してWS-Addressing replyTo情報を送信する場合でも、assignアクティビティを使用してそれを動的に設定しないかぎり、それがパートナ・リンクに設定されることはありません。

たとえば、BPELプロセスが次に示すとおりであるとします。

Caller                               Callee
-----------------------------------------------------------
<receive>                            <receive> Initiate CS1
<invoke>initiate CS1 -------->       <receive> Use CS1
                                     <wait>
<receive>use CS1    <--------        <invoke>
<invoke>

複数のreceiveおよびpickアクティビティで同じパートナ・リンクが使用されている場合において適切なエンドポイントにコールバック・メッセージをルーティングするには:

  1. 中間プロセスのreceiveアクティビティからクライアントのreplyToAddress値を取得します。
    <receive name="receiveMsgFromAccessor" partnerLink="midprocess_client"
           portType="client:mySingletonBPEL" operation="process"
           variable="ReceiveMidProcess" createInstance="no">
    <bpelx:fromProperties>
       <bpelx:fromProperty name="replyToAddress" variable="var_replyToAddress"/>
    </bpelx:fromProperties>
       <correlations>
           <correlation set="<YourCorrset>" initiate="no"/>
       </correlations>
    </receive>
    
  2. そのinvokeアクティビティ(コールバック用)で、「プロパティ」タブをクリックします。
  3. 「追加」アイコンをクリックして、プロパティおよびその内容(変数またはXPath式)を選択します。

    ノート:

    BPEL 1.1プロセスでは、プロパティは「プロパティ」列に自動的に表示されます。「名前」列でプロパティを選択し、「値」列および「タイプ」列をダブルクリックして適切な値を入力します。

  4. 「名前」列で、下にスクロールして「replyToAddress」プロパティを選択します。「wsa.replyToAddress」または「bpel.replyToAddress」を選択しないでください
  5. 「値」列で、変数名を値(この例では、ステップ1var_replyToAddressが入力されています)として指定して、「OK」をクリックします。

    図8-1に示すように、Invokeの編集ダイアログが表示されます。

    図8-1 invokeアクティビティの「プロパティ」タブ

    図8-1の説明が続きます
    「図8-1 invokeアクティビティの「プロパティ」タブ」の説明
  6. 「適用」をクリックし、「OK」をクリックします。
  7. Oracle BPELデザイナで、「ソース」をクリックします。

    BPELプロセス・ファイル内のinvokeアクティビティは次のようになります。

    <invoke name="callbackAccessor" partnerLink="midprocess_client"
                    portType="client:mySingletonBPELCallback"
                    operation="processResponse"
    inputVariable="CallbackAccessorVar"
                    bpelx:invokeAsDetail="no">
                <bpelx:inputProperty name="replyToAddress"
    variable="var_replyToAddtess"/>