マルチインスタンスタスク

BPMN のタスクの種類として、マルチインスタンスタスクというものがあります。プロセスにおいて、トークンがこのマルチインスタンスタスクに到達すると、タスク(インスタンス)が複数生成されます。

たとえば「確認」というタスクがあって、これを複数の人が実施する場合などに使用します。分岐を使ってフローを複数に分けることで表現することもできますが、複数のタスク(インスタンス)でフローを分ける必要がない場合には、シンプルに記述することができます。

ただしこのタスク(インスタンス)の生成の仕方で、大きく2つに分かれます。
「Parallel(並列)」と「Sequential(直列)」の2種類です。マーカーも異なります。

こちらは並列です。トークンが到達すると同時に、複数のインスタンスが生成され実行されます。

こちらは直列です。トークンが到達すると1つインスタンスが生成されます。1つが終わるとその次が生成され、という形で、順々に実行されます。ループタスクというのが別にあるのですが、それとの違いは正直、まだよく解っていないです。後日の課題にします。


さて並列においても直列においても、「いくつのインスタンスが生成されるか」という問題があります。これについては "loopCounter""loopCardinality" または "loopDataInput" 属性で指定します。この属性が "5" の場合、5つインスタンスが生成されます。

もう1つ「いつインスタンスが終了するか」という問題があります。これについては、後日まとめます。