制御シーケンスフロー

制御シーケンスフローとは、シーケンスフローの一種で、始点側に条件式が定義されているもの. Conditional Sequence Flow.

概要
制御シーケンスフローとは、BPMNにおいて始点付近に条件式を持つシーケンスフローである. 条件式は、 の判断分岐が行われる個所で用いられる. 制御シーケンスフローは、始点（表記上、矢印→の根元）にひし形のマーカー（◇）がくっついている. このひし形のマーカーは「制御マーカー」と呼ばれている. 制御シーケンスフローの始点がゲートウェイと接続するときは、ゲートウェイ自体が制御マーカーと同じ役割を果たすため、ひし形のマーカーをつけない. アクティビティから出力される制御シーケンスフローにのみ「制御マーカー」が用いられる.
 * XOR分岐
 * OR分岐

ひし形のマーカーと接続していないシーケンスフローは、特に非制御シーケンスフロー（Unconditional Sequence Flow）と呼ばれている.

用法
制御シーケンスフローの始点として接続するフローオブジェクトは、 の2つがある.
 * アクティビティ
 * 判断ゲートウェイ（排他的判断または包含的判断を行うゲートウェイ）

BPMNはさまざまな業務プロセスに対応する柔軟性を持つが、同一プロセスに対して複数の表現法が可能である（これは、一般にBPMNの「冗長性」と呼ばれている）. 例えば、OR分岐における制御シーケンスフローのメカニズムを表記する方法として、主に2通りの方法が考えられる.

アクティビティとの接続におけるプロセス図と判断ゲートウェイとの接続におけるプロセス図は、表記は違うが同じプロセスを表現している. 下の2つの図において、オレンジ色のシーケンスフローが制御シーケンスフローである.

アクティビティとの接続
制御シーケンスフローが用いられるのは、主にOR分岐となるフローである. このとき「制御マーカー」をシーケンスフローの始点にくっつける必要がある. 1つのフローオブジェクトからフローが3つ以上分岐する場合、デフォルトシーケンスフローが必要となる.

判断ゲートウェイとの接続
「制御マーカー」はないが、「排他ゲートウェイ」および「包含ゲートウェイ」（これらをまとめて「判断ゲートウェイ」と呼ぶ）から出力されるシーケンスフローは、すべて制御シーケンスフローである. XOR分岐やOR分岐となるフローで用いられる. AND分岐では「判断」が行われないため、並列ゲートウェイから出力されたシーケンスフローは制御シーケンスフローではなく、非制御シーケンスフローである.

条件判定のメカニズム
OR分岐やXOR分岐において、複数の制御シーケンスフロー上には、それぞれ1つずつ条件式が定義される. ただ、条件式が3つ以上存在する場合、その条件式を「どのような順序でどのように評価するか」は、OR分岐とXOR分岐とで異なる.
 * OR分岐の場合（図2を参照）
 * 条件式は、表記において上位に書かれているものから順番にすべて評価される. そこで「真」と判定された条件式をもつ、すべてのフローにトークンが流れる. したがって、OR分岐では1つ以上のフローにトークンが流れることになる. 図2では、条件式A、Bともに「真」であれば、「アクティビティ1」と「アクティビティ2」が行われることになる.


 * XOR分岐の場合
 * 条件式は、表記において上位に書かれているものから順番に評価され、「真」と判定されたケースがあればその条件式のあるフローだけにトークンが流れ、以降の条件式は全く評価されない. したがって、XOR分岐ではただ1つのフローにトークンが流れることになる. しかし、BPMNのマーカ記法では、「上から順に条件評価し、ある条件式が真となれば、以降の条件式が評価されない」ということを正確に表現しきれない. BPMNによる表記では、XOR分岐もOR分岐と同様に、すべての条件式を評価するものと誤解される恐れが大きい.

関連記事

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

参考文献

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