マスター・プロセスに対する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に詳細を示します。
この選択は、詳細インスタンスとして、パートナ・プロセス・インスタンス(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"/>