マスター・プロセスと複数の詳細プロセスの相関
1つのマスター・プロセスと複数の詳細プロセスがある環境では、シグナル相関にbpelx:detailLabel
属性を使用します。次の例は、この属性の使用方法を示しています。
最初のinvokeアクティビティは、DetailProcess
詳細プロセスを起動し、それをdetailProcessComplete0
のラベルに関連付けます。
<invoke name="invokeDetailProcess" partnerLink="DetailProcess" portType="dp:DetailProcess" operation="initiate" inputVariable="detail_input" bpelx:detailLabel="detailProcessComplete0" bpelx:invokeAsDetail="true"/>
2番目のinvokeアクティビティは、DetailProcess1
詳細プロセスを起動し、それをdetailProcessComplete1
のラベルに関連付けます。次に例を示します。
<invoke name="invokeDetailProcess1" partnerLink="DetailProcess1" portType="dp1:DetailProcess1" operation="initiate" inputVariable="detail_input1" bpelx:detailLabel="detailProcessComplete1-2" bpelx:invokeAsDetail="true"/>
3番目のinvokeアクティビティは、異なるポートと異なる入力変数を使用してDetailProcess2
詳細プロセスを再度起動します。これにより、次の例に示すように、DetailProcess2
詳細プロセスがdetailProcessComplete1-2
のラベルに関連付けられます。
<invoke name="invokeDetailProcess2" partnerLink="DetailProcess2" portType="dp2:DetailProcess2" operation="initiate" inputVariable="detail_input2" bpelx:detailLabel="detailProcessComplete1-2" bpelx:invokeAsDetail="true"/>
次の例に示すマスター・プロセスのreceive signalアクティビティは、詳細プロセスDetailProcess0
からの返信シグナルを待機します。
<!-- This is a receiveSignal waiting for 1 child to signal back -->
<bpelx:receiveSignal name="waitForNotifyFromDetailProcess0"
label="detailProcessComplete0" from="details"/>
次の例に記載されているマスター・プロセスの2番目のreceive signalアクティビティも、DetailProcess1
およびDetailProcess2
からの返信シグナルを待機します。
<!-- This is a receiveSignal waiting for 2 child (detail) processes to signal back -->
<bpelx:receiveSignal name="waitForNotifyFromDetailProcess1-2"
label="detailProcessComplete1-2" from="details"/>
ノート:
BPELプロセスのreceive signalアクティビティが1つのみの場合、invokeアクティビティには、bpelx:detailLabel
属性を指定しないでください。このような状況では、デフォルトのbpelx:detailLabel
属性が適用されるため、指定する必要はありません。