BPEL 2.0 IMAサポートの制限に関する必知事項
receiveアクティビティは一種のインバウンド・メッセージ・アクティビティ(IMA)です。IMAのその他の例は次のとおりです。
-
scopeアクティビティ(BPEL 1.1)またはpickアクティビティのonMessageブランチ
-
BPEL 2.0のscopeアクティビティのonEventブランチ
BPEL 2.0仕様では、複数のIMAを相互に使用する、または拡張アクティビティから導出した他のIMAとともに使用することができます。実行時の動作を一定に保つために、BPEL 2.0仕様ではinitiate
属性をjoin
に設定した相関セットを使用できます。ただし、Oracle BPEL Process ManagerにおけるBPEL 2.0仕様では、この動作がサポートされていません。複数のIMAをサポートする唯一の方法は、それらをpickアクティビティのonMessageブランチとしてコーディングする(つまり、createInstance
をyes
に設定する)ことです。また、Oracle BPEL Process Managerでは、複数IMAのその他の形、たとえば2つのブランチを持つflowアクティビティで、それぞれがreceiveアクティビティを持ち、createInstance
の設定がyes
で、相関セットのinitiate
の設定がjoin
であるなどの形もサポートされていません。
解決方法として、次のように、交互に2つのreceiveアクティビティがある2つのBPELプロセスを設計する必要があります。
-
Process1: receive1の後にreceive2が続き、receive1でのみ、
createInstance
がyes
に設定されています。 -
Process2: receive2の後にreceive1が続きます。receive2でのみ、
createInstance
がyes
に設定されています。
同じことが、receiveアクティビティとpickアクティビティ、または2つのpickアクティビティなど、IMAの他の組合せにも適用されます。