中間イベント

中間イベントとは、BPMN記法において、ある事柄が1つのプロセスの開始と終了の間で発生する時点を表すモデリング要素である. Intermediate Event.

中間イベントの概要
BPMNにおいて、中間イベントは、個々のプロセスが開始してから終了するまでの間、つまり進行中のプロセスの中で、ある事柄が生じる時点を示す. そのため、中間イベント自体は、あるプロセスを開始させたり終了させたりすることはない. 中間イベントはトリガー（イベントの起因となる条件・状況）に反応(catch)したり、そのようなトリガーを設定(throw)したりする. つまり、中間イベントはキャッチイベントとスローイベントの両方の性質を併せ持つ. ただ、すべての中間イベントがその両方の性質を持つわけではない. 中間イベントは、プロセスの途中のどのような場合に用いられ、どのような事柄を引き起こしたり設定したりするのかという観点に基づいて、10種類に分類されている.

中間イベントの主な役割

 * プロセス内で、メッセージを受け取ったり送ったりする時点を示す.
 * プロセス内で、遅延(delay)が予定される時点を示す.
 * 例外処理により通常フローを中断し、例外フローへ変更する.
 * 補償処理に必要な臨時作業があることを示す.

中間イベントに関する詳細

 * 通常フローで用いられた場合、キャッチイベントかスローイベントのどちらかの性質をもつ.
 * アクティビティの境界で用いられた場合、キャッチイベントの性質しかもたない.
 * キャッチイベントとして用いられた場合、起因（トリガー）となる時間やメッセージなどが来るまで、トークンはイベントのところに留まる.
 * スローイベントとして用いられた場合、トークンが到達してすぐにメッセージの送信などのイベントを発生させ、プロセスは次の段階に進む.

中間イベントの表記
中間イベントは、開始イベントや終了イベントとの区別のため、一般に2本の細い線で描かれた円形で表される. 中間イベントには10個のタイプ（以下を参照）があり、プロセスが進行している途中で発生するイベント（結果）のタイプによって表記方法が異なる. 他のタイプの中間イベントと区別するために、2重円の内部には異なる形状のマーカーが置かれる.

中間イベントは、開始イベントや終了イベントとは異なり、ある場面ではキャッチイベントに分類され、またある場面ではスローイベントにも分類される性質を持ちうる. BPMNでは、キャッチイベントに分類される中間イベントはマーカーの内部が白く塗られており、他方、スローイベントに分類される中間イベントはマーカーの内部が黒く塗られている.

例外処理や補償処理の表記
一般に1つの中間イベントを使って右の図1のように表記する. 図1-1と図1-2はともに、アクテイビティAにおいてエラーが発生した時の「例外処理」としてアクティビティBを実行することを示すプロセス図である. プロセス図が水平方向にある場合は図1-1のように、垂直方向にある場合は図1-2のように表記するのが一般的である.

アクティビティの境界およびフローとの接続

 * 1) アクティビティの境界との接続
 * 「なし」、「リンク」タイプ以外の中間イベントは、アクティビティの境界に直接置くことができる. 複数置くことも可能.
 * ※「キャンセル」タイプの中間イベントは、サブプロセスの境界に置くことが可能である.
 * 1) シーケンスフローとの接続
 * (a) 「なし」、「リンク」タイプ以外の中間イベントが、アクティビティの境界に置かれているとき
 * シーケンスフローの対象とはならない. つまり、入力シーケンスフローは中間イベントと接続しない.
 * シーケンスフローのただ1つの起点となる. つまり、出力シーケンスフローは中間イベントと1つだけ接続する.
 * ※「補償」タイプの中間イベントは出力シーケンスフローとも接続しない.
 * (b) 「キャンセル」、「エラー」、「複合」タイプ以外の中間イベントが、通常フローで用いられているとき
 * 「なし」、「補償」タイプは、ただ1つのシーケンスフローの対象とならなければならない. つまり、これらの中間イベントはただ1つの入力シーケンスフローと接続しなければならない.
 * 「メッセージ」、「タイマー」、「条件」、「リンク」、「シグナル」タイプは、ただ1つのシーケンスフローの対象となることができる. つまり、これらの中間イベントはただ1つの入力シーケンスフローと接続することができる.
 * シーケンスフローのただ1つの起点となる. つまり、出力シーケンスフローは中間イベントと1つだけ接続する.
 * ※「リンク元」タイプの中間イベントは、出力シーケンスフローが不要.
 * (c) 「リンク」タイプの中間イベントが、「Off-Pageコネクタ」や「Go To」オブジェクトとして用いられたとき
 * シーケンスフローの起点と対象に同時になることはできない. つまり、同時に「リンク元」と「リンク先」の中間イベントとなることはできない.
 * 1つの「リンク元」中間イベントがあれば、それに対応する（同じ名称をもつ）「リンク先」中間イベントが存在する.
 * 1つの「リンク先」中間イベントに対する「リンク元」中間イベントが、複数存在する場合がある.
 * 1つの「リンク元」中間イベントに対する「リンク先」中間イベントが、複数存在してはならない.
 * 1) メッセージフローとの接続
 * 「メッセージ」タイプの中間イベントは、メッセージフローの起点となることも対象となることも可能. つまり、入力メッセージフローを接続することも出力メッセージフローを接続することも可能. しかし、同時に2つを接続することはできない.

BPMN1.0仕様からの変更点
BPMN1.0仕様からBPMN1.1仕様への移行によって、表記および名称の点で変更が見られた.
 * 「メッセージ」タイプにおいて、新たに「スローイベント」型が追加
 * 「エラー」タイプのマーカーデザインがより極太に
 * 「キャンセル」タイプにおいて、「スローイベント」型から「キャッチイベント」型へ変更
 * 「補償」タイプにおいて、新たに「キャッチイベント」型が追加
 * 「条件」タイプにおいて、トリガーの名称変更（「ルール」→「条件」）
 * 「リンク」タイプにおいて、新たに「キャッチイベント」型が追加
 * 「シグナル」というトリガーがBPMN1.1仕様で新たに追加
 * 「複合」タイプのマーカーデザインが「六芒星（ろくぼうせい）」から「五角形」へ変更、新たに「キャッチイベント」型が追加

関連記事

 * BPMN
 * イベント
 * 開始イベント
 * 終了イベント
 * アクティビティ
 * トランザクション

参考文献

 * BPMN1.1仕様（2008-01-17)
 * BPMN超入門 第4話：BPMN図だけで業務システムが構築できるか？(07/03/2009)