マスター・プロセスに対するBPELファイル定義

マスター・プロセスに対するBPELファイルは、詳細プロセスとの調整を定義します。BPELファイルは、マスター・プロセスが様々な詳細プロセスのパートナ・リンクと相互作用することを示します。次に例を示します。

<process name="MasterProcess"
. . .
. . .
  <partnerLinks>
    <partnerLink name="client"
             partnerLinkType="tns:MasterProcess"
             myRole="MasterProcessProvider"
             partnerRole="MasterProcessRequester"/>
    <partnerLink name="DetailProcess"
             partnerLinkType="dp:DetailProcess"
             myRole="DetailProcessRequester"
             partnerRole="DetailProcessProvider"/>
    <partnerLink name="DetailProcess1"
             partnerLinkType="dp1:DetailProcess1"
             myRole="DetailProcess1Requester"
             partnerRole="DetailProcess1Provider"/>
    <partnerLink name="DetailProcess2"
             partnerLinkType="dp2:DetailProcess2"
             myRole="DetailProcess2Requester"
             partnerRole="DetailProcess2Provider"/>
  </partnerLinks>

signalアクティビティは、このマスター・プロセスと調整するラベル値と詳細プロセスを示します。このラベル値(startDetailProcess)は、すべての詳細プロセスのreceive signalアクティビティのラベル値と一致しています。これにより、シグナルは適切なプロセスに送信されます。シグナル受信プロセスごとに1つのシグナル・プロセスがあります。マスター・プロセスは、実行時にすべての詳細プロセスに通知します。次の例のこの構文は、BPELバージョン2.0をサポートするBPELプロセスのsignalアクティビティを示しています。

<extensionActivity>
   <bpelx:signal name="notifyDetailProcess" 
                 label="startDetailProcess" to="details"/>
</extensionActivity>

ノート:

BPEL 1.1では、signalアクティビティの構文は多少異なります。

<bpelx:signal name="notifyDetailProcess" label="startDetailProcess" to="details"/>

assign、invokeおよびreceiveの各アクティビティには、マスター・プロセスと詳細プロセス間の相互作用が記述されます。この例は、マスター・プロセスと詳細プロセスの1つ(DetailProcess)との間の相互作用を示しています。同様の相互作用は、すべての詳細プロセスについて、BPELファイルに定義されています。

invokeアクティビティで、「詳細として呼出し」チェック・ボックスが選択されていることを確認します。図16-3に詳細を示します。

図16-3 「詳細として呼出し」チェック・ボックス

図16-3の説明が続きます
「図16-3 「詳細として呼出し」チェック・ボックス」の説明

この選択は、詳細インスタンスとして、パートナ・プロセス・インスタンス(DetailProcess)を作成します。相互作用する各詳細プロセスに対するマスター・プロセスのinvokeアクティビティで、このチェック・ボックスを選択する必要があります。次の例に、「詳細として呼出し」チェック・ボックスを選択した後のBPELファイル・コンテンツの例を示します。

<assign>
   <copy>
     <from variable="input" part="payload" query="/tns:processInfo/tns:value"/>
     <to variable="detail_input" part="payload" query="/dp:input/dp:number"/>
   </copy>
</assign

<invoke name="receiveInput" partnerLink="DetailProcess"
        portType="dp:DetailProcess"
        operation="initiate" 
        inputVariable="detail_input" 
        bpelx:invokeAsDetail="true"/>

<!--  receive the result of the remote process -->
<receive name="receive_DetailProcess" partnerLink="DetailProcess"
            portType="dp:DetailProcessCallback"
            operation="onResult" variable="detail_output"/>

マスターBPELプロセスには、receive signalアクティビティが含まれています。このアクティビティは、すべての詳細プロセスからシグナルを受信するまでマスター・プロセスが待機することを示します。ラベル値(detailProcessComplete)は、各詳細プロセスのsignalアクティビティのラベル値と一致しています。これにより、シグナルは適切なプロセスに送信されます。次にコードの例を示します。次の構文は、BPELバージョン2.0をサポートするBPELプロセスのreceive signalアクティビティを示しています。

<extensionActivity>
   <bpelx:receiveSignal name="waitForNotifyFromDetailProcess" 
   label="detailProcessComplete" from="details"/>
</extensionActivity>

ノート:

BPEL 1.1では、receive signalアクティビティの構文は多少異なります。

<bpelx:receiveSignal name="waitForNotifyFromDetailProcess" 
                     label="detailProcessComplete" 
                     from="details"/>