エンジンがどう動作すべきかにも言及している BPMN 2.0

先日、BPMN 2.0 では Intermediate Boundary Events は大きく2種類に分かれると書きました。例外フローに移行した場合、タスクやサブプロセスがキャンセルされるかどうかで、2種類に分かれます。

同じことを BPMN 1.2 で表現できるのかどうか調べてみました。結論から言うと、BPMN 1.2 で 例外フローに移行した場合、もとのタスクやサブプロセスがどうなるかは「解りません」でした。

BPMN 2.0 では、Intermediate Boundary Events は共通属性として cancelActivity が定義されています。同様の属性は、BPMN 1.2 にはありません。また BPMN 1.2 では Intermediate Boundary Events について、指定した条件が満たされると例外フローに移行するとありますが、元のタスクやサブプロセスをキャンセルするかどうかについては、厳密な記載がありません。ただしキャンセルすることを期待しているのだろう、と思います。

仕様書全般的な話として、BPMN 2.0 では Execution Semantics という章があり、エンジンにおける動作についての言及があります。また WS-BPEL へのマッピングが付録から独立した章へ格上げされているところからも、より動作に関する意識が強まっていると考えられます。

おそらく解釈の違いによって、同じプロセス図なのに、エンジンでの動きがまったく異なるという事態が発生したのでしょう。同じプロセス図でもベンダーや人によって、どう動くか解釈が大きく異なるというのは BPM 業界全般として大きな問題と考えます。良い方向に向かっていると思います。