マスター・プロセスに対する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"/>