デフォルトシーケンスフロー

デフォルトシーケンスフローとは、シーケンスフローの一種で、すべての制御フローが流れない場合に限り作動する「デフォルト」の条件が与えられたもの. デフォルトフロー. Default Sequence Flow.

概要
BPMNにおいて、デフォルトシーケンスフローは、次の2つの場合で用いられる.
 * データ準拠の排他的判断（XOR分岐）が行われるとき
 * 複数に分岐されたフロー（制御シーケンスフロー）のうち、ただ1つのフローを選択する. 各分岐フローに定義づけられた条件式がデータとなり、最も先に「真」と評価されれば、その条件式を持つフローにトークンが通過する. この判断では「（データ準拠の）排他ゲートウェイ」が使用される.




 * 包含的判断（OR分岐）が行われるとき
 * 複数に分岐されたフロー（制御シーケンスフロー）のうち、少なくとも1つのフローを選択する. 各分岐フローに定義づけられた条件式について、「真」と評価された条件式を持つフローにはすべて、トークンが通過する. この判断では「アクティビティ」または「包含ゲートウェイ」が使用される.



これらの判断分岐において、出力される制御シーケンスフローは複数（A と B の2つ）存在している.

ここで仮に、デフォルトフローを置かず、すべての出力フローを制御シーケンスフローで表記することにした場合を考えてみよう. 各フローに対して、条件式は、"If A"、"If B"、"If C" 、・・・と設定される. ところが、この表記法には2つのデメリットがある.
 * これらの条件式がすべて「偽」と判断されてしまうような不測の事態が生じたとき、困ったことになる.
 * トークンの流れが分岐点で停止してしまい、それ以降のプロセスが無意味となってしまう.
 * 複雑に設定された条件式は、ユーザにとって都合が悪い.
 * ユーザの利便性を考えれば、プロセスは単純明快であるべきである. 「それ以外の場合」として簡潔にまとめることもできる場合は、少なくないだろう.

以上のデメリットを克服するために、上記の判断においては、デフォルトの条件式を付したデフォルトシーケンスフローが用いられることが多い.

トークンがこのデフォルトシーケンスフローを通過するのは、同一判断において他の制御シーケンスフロー上の条件式がすべて「偽」と判断された場合に限る. 制御シーケンスフローが1つでも「真」であれば、デフォルトシーケンスフローにトークンが通過することはなく、条件式が「真」と判断されたフローを通過する. また、デフォルトシーケンスフローは、同一判断において複数用いられることはない.

デフォルトシーケンスフローは、シーケンスフローの始点側にバックスラッシュ（＼）を付けて表す.

用法
デフォルトシーケンスフローは、制御シーケンスフローと同じ場面で使用される. つまり、そのソースオブジェクト（始点と接続するフローオブジェクト）は、 の2つである.
 * アクティビティ
 * 判断ゲートウェイ（排他ゲートウェイおよび包含ゲートウェイ）

ただし、デフォルトシーケンスフローは、必ずしも制御シーケンスフローがあれば存在するものではない.

BPMNの冗長性
たとえば、A,Bという2つの条件式を排他的に判断するXOR分岐のプロセス（右図参照）においては、一般的に2つの制御シーケンスフローが使用される. しかし、1本の制御シーケンスフローをデフォルトシーケンスフローと置き換えても表記上の意味は変わらない. というのも、Bにかかる条件式は常に“≠Aの場合”であるからである.

このように、BPMNでは、同じ意味をあらわすビジネスプロセスを表記する方法が、複数考えられることがある. どのようにプロセスを表記するかはプロセスの設計者の判断に任せるほかないため、現場の人間が、同じプロセスを異なる別のプロセスだと勘違いするおそれがある. この性質は、「BPMNの冗長性」と呼ばれている.

関連記事

 * BPMN
 * アクティビティ
 * ゲートウェイ
 * フロー
 * シーケンスフロー
 * 制御シーケンスフロー
 * XOR分岐
 * OR分岐

参考文献

 * BPMN1.1仕様（2008-01-17）