トークンが無限増殖するループ構造

2011年5月1日
「BPMNの書き方」シリーズ第5弾。(もぉ限界か?)

タスク1、タスク2、タスク3と進んだものの、再びタスク1に戻りたくなる事がある。「ループ構造」と言うヤツだ。Graphical Authoring (図式設計) と言う特性により、BPMツールではワークフロー定義中に色々なループを描くことが出来る。
しかし、あまり調子に乗ってループを作成しているとワークフロー定義自体がエラーになるケースがある。〔注意〕

<各タスク名>
1.タスク、2.タスク、3.タスク、4.タスク、5.タスク


[BPMNサンプル-ループ:「4.タスク」画面]



<各プロセスデータ名>
  • 件名
  • テキスト型:テキストA
  • テキスト型:34ループフラグ(Select:Yes/No)

上記のワークフロー定義は、正常に動作する。すなわち『1.タスク』が完了後、『2.タスク』と『3.タスク』が並列開始される。そして『3.タスク』と『4.タスク』は、データ項目「34ループフラグ」がYesであればループし続ける。さらに、『3.タスク』と『4.タスク』のループが終了し、また『2.タスク』が終了すれば、『5.タスク』が開始される。

しかし他方、下図のワークフロー定義は正常に動作しない。(ワークフローとして稼働できない)
言葉で説明する事は容易ではないのだが・・・、以下の例は「分割されたトークンがマージされることなく同じ分岐ポイントに戻る経路がある場合」に該当する。すなわち「トークンが無限に生成される可能性があるワークフロー定義」となり、BPMS(ワークフローエンジン)では対応できなくなるのだ。日常の業務フローを設計している時に、このような構造になることはあまり無いのだが、「同時並行に処理が進んでいる状態で、仕事を大きく差し戻すことは危険だ」と認識しておいてもらえれば十分だ。
ちなみに、トークンがマージされた後の状態である『5.タスク』から『1.タスク』にループするのは問題ない。


なお、これまでの「BPMNの書き方」シリーズを復習したい方は以下。

0 件のコメント :

コメントを投稿