マスター・プロセスと複数の詳細プロセスの相関

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属性が適用されるため、指定する必要はありません。