XOR分岐



BPMNにおいて、フローチャートのある時点において1つのフローが複数のフローへと分岐するとき、各分岐フローにさまざまな条件式が置かれている. XOR分岐とは、複数の分岐フローからある条件式を満たす(True)、ただ１つのフローを選択・判断するための表記法をいう. 主に排他ゲートウェイ（XOR Gateways）がこの役割を果たす. 排他的分岐. XOR-Split.

XOR分岐の概略
BPMNを使ったフローチャートで、トークンがある条件下で１つのフローから複数のフローへと分岐する場合がある. その分岐点において、条件に適している出力シーケンスフローをただ１つだけ選択することを排他的判断(Exclusive Decision)という. その排他的判断をBPMN記法で視覚化したものを、XOR分岐という. XOR分岐では、１つでも条件に合う出力シーケンスフローがあれば、残りの出力シーケンスフローは評価されない. （あとで別の条件に合う出力シーケンスフローが出てきても同様. ）この条件は順番通りに評価され、いずれの条件式も「偽」と評価されたときはデフォルトシーケンスフローをプロセスの経路として選択する必要がある.

XOR分岐の表記
フローのXOR分岐に際して、出力シーケンスフローを２つだけ備えている場合、XOR分岐の表記法としては２通りある. しかし、出力シーケンスフローが３つ以上ある場合において、制御シーケンスフローとデフォルトフローのみを使用してしまうと、２つ以上の制御シーケンスフローが表現されるため、モデル表記上、それがXOR分岐を表しているのかOR分岐を表しているのかが曖昧となってしまう. したがって、その曖昧さを解消し、XOR分岐だということを強調するためには、ゲートウェイを用いるべきだといえる. また、この場合では、フローを途絶えさせるような状況を作らないために、出力シーケンスフローの１つはデフォルトシーケンスフローの役割を果たさなくてはならない. そのようなデフォルトシーケンスフローがなく、いずれの条件式も「真」と評価されなかった場合、トークンが分岐点で停止してしまい、その地点からプロセスが進行しなくなる. このような無意味なプロセスモデルはすぐに再設計を施す必要がある. (注)図１の中央にあるひし形は、BPMNでは「データ準拠型排他ゲートウェイ」（以下に詳細を記す）を表す. 本来はひし形の内部に"X"マーカーが置かれているが、この"X"は図１のように省略されることがしばしばある.
 * 1) ゲートウェイを使用する場合（図１）
 * 2) ゲートウェイを使用せず、制御シーケンスフロー(Conditional Flow)とデフォルトシーケンスフロー(Default Flow)を使用する場合（図２）

XOR分岐を行うゲートウェイ


XOR分岐を行うゲートウェイは排他ゲートウェイ(Exclusive Gateways)と呼ばれている. 排他ゲートウェイには、「データ準拠型排他ゲートウェイ」（図3）、「イベント準拠型排他ゲートウェイ」（図4）という２種類のゲートウェイがある.

データ準拠型排他ゲートウェイ(Data-Based Exclusive Gateways)
各種ゲートウェイで最もよく使われる. このゲートウェイに接続する複数の出力シーケンスフローには、それぞれ条件式が定義づけられている. そこでプロセスデータに基づいてその条件式が真か偽かが判定され、最初に「真」(True)と評価された経路を持つシーケンスフローが選択される. このゲートウェイは排他性を持つため、１つでも条件が「真」と評価されればほかの条件をもつシーケンスフローは無視される. 他の種類のゲートウェイと区別するため、ひし形（BPMNにおけるゲートウェイの形状）の内部には、"X"マーカーが置かれる. ただし、この"X"は省略されることがしばしばある. ちなみに包括(OR)ゲートウェイおよび併列(AND)ゲートウェイは、データ準拠型に分類される.

イベント準拠型排他ゲートウェイ(Event-Based Exclusive Gateways)
プロセス内のある地点で起こるイベントによって、フローが複数に分岐されるときに用いられる. 受け取ったイベントによって複数のフローからただ１つのフローが選択されるため、排他的判断の一種と考えられている. たとえば、企業がある事業を行った結果、顧客から高い評価をメッセージとして得られたとき、その企業はその事業を推し進めるというアクティビティを行う. 一方、低い評価しか得られなかったときは、企業は事業の改善案を出したり、事業自体を撤回したりするというアクティビティを行う. 高い評価を得た場合と低い評価を得た場合とでは、顧客からのメッセージに区別がつくため、メッセージに排他的な条件が認められる.

参考文献

 * BPMN1.1仕様（2008年）.