終了イベントとは、BPMN記法において1つのプロセスの「終了」時点を表すモデリング要素である。End Event。
目次 |
終了イベントの概要
| イベント(Event)とは |
|---|
一連のビジネスプロセスの中で生じる事柄。アクティビティの順序または時期に影響を与える。イベントは、生じる時期によって以下の3種類に分けられる。
|
BPMNにおいて、終了イベントは、個々のプロセスが終了する場所を示す。終了イベントは、プロセスを終了させるときに生じる事柄や状況(これを「結果(Results)」と呼ぶ)を設定(throw)する役割をもつという意味で、スローイベント(Throwing Event)である。しかし、終了イベントはなんらかのトリガー(誘因)を受けてアクションを引き起こすキャッチイベントではない。終了イベントは、プロセス終了の「結果」として何が起こるのか、どのような状況になるのかという観点に基づいて、8種類に分類されている。
終了イベントに関する詳細
- 同一レベルのプロセスでは、その中で複数の終了イベントが存在することがある。
- どんなプロセス(展開されたサブプロセスを含む)でも、その中で終了イベントを表記してもいいし、表記しなくともよい。使用するかどうかはモデル設計者の任意である。
- あるプロセス中に開始イベントが1つでもあれば、終了イベントは1つ以上なければならない。同一レベルのプロセスにおいて、開始イベントから発生したトークンの流れは、終了イベントに到達した時点で終了する。
- 終了イベントが使用される場合、
- 終了イベントを除くすべてのフロー要素は、必ずシーケンスフローが発していなければならない。
- 終了イベントを除くすべてのフローオブジェクトは、1つ以上のシーケンスフローの始点にならなければならない。
- ※ ただし、「補償(Compensation)」マーカーをもつアクティビティ(「補償アクティビティ」)はこの規則の例外に当たる。終了イベントがあろうとなかろうと、補償アクティビティにシーケンスフローの始点があってはならない。
- 終了イベントが使用されない場合、
- これはプロセスの最終的な結果として何も起こらないことを示す。
- どんなフローオブジェクトも、そこからシーケンスフローが発していなければ、プロセスの最後に位置することになる。このとき、プロセス内のすべての並列経路が完全に結合してはじめて全プロセスは終了する。
- ※ ただし、「補償アクティビティ)」はこの規則の例外に当たる。補償アクティビティは通常フローの一部とは考えられておらず、あくまで代用的に「補償」を行うアクティビティである。したがって、シーケンスフローの始点をもたない補償アクティビティは、プロセスの最後に位置してはならない。
終了イベントのBPMN表記
終了イベントは、一般に1本の太い線で描かれた円形(○)で表される。線が太くなっているのは開始イベントとの区別のためである。もし細い線で円形を描いてしまえば、開始イベントと同一の表記になり、開始イベントと終了イベントとの区別がつかなくなってしまう。
終了イベントには8つのタイプ(以下を参照)があり、プロセスが終了した時に発生するイベント(結果)のタイプによって表記方法が異なる。開始イベントや中間イベントと同様、円形の内部に異なる形状のマーカーを置いて他の終了イベントと区別する。すべての終了イベントはスローイベントに分類されるため、マーカーの内部がすべて黒く塗りつぶされてある。
フローとの接続
- 終了イベントは、シーケンスフローの始点とはならない。
- 終了イベントは、シーケンスフローの終点(複数可能)とならなければならない。
代替経路や並列経路として枝分かれした経路は、それぞれ終了イベントをもつことがある。終了イベントを表記するかどうかはモデル設計者の任意であるから、省略も可能である。プロセスはこれらの分岐した経路がすべて終了するまでずっと継続する。
- ※ この例外として、終了イベントが「展開されたサブプロセス」の境界と接している場合があげられる。このとき、高次のプロセスへと接続するシーケンスフローが、サブプロセスの境界と接続する代わりにその終了イベントと接続することがある。
- 終了イベントは、メッセージフローの終点とはならない。
- 終了イベントは、メッセージフローの始点(複数可能)となることがある。
- ※ すべてのメッセージフローは異なる2つのプールに接続される。メッセージフローは、プールの境界線、またはプールの境界内のフローオブジェクトに接続できる。
各種の終了イベント
| プロセス終了時に発生する結果(Result) | 説明 | マーカー |
|---|---|---|
| なし(None) |
モデル設計者がこの終了イベントを使用するのは、通常はイベントの種類を示さない場合である。つまり、下の7つの終了イベントのどれによっても定義されない場合である。サブプロセス(Sub Processes)の終点としてこの終了イベントが使用された場合、そのサブプロセスが終了した時に親プロセス(Parent Processes)にフローが戻ってくることに注意が必要。 |
![]() |
| メッセージ(Message) |
プロセスが終了する時に、関係者らにメッセージを送信する際に使用する終了イベント。 |
![]() |
| エラー(Error) |
名称がついたエラーを作成する際に使用する終了イベント。エラーを生じさせるのは、
つまり、エラーの発生に関して、エラー中間イベントとエラー終了イベントは連動する関係にある。プロセス内のアクティビティに1や2で示したようなエラー中間イベントがない場合、このエラー終了イベントだけでは、どのプロセスにもエラーの意味を持たせることはできない。 |
![]() |
| キャンセル(Cancel) |
トランザクション(Transactions)になっているサブプロセスの内部で使用される終了イベント。トランザクションがキャンセル(失敗終了)となったとき、サブプロセスの境界線上にあるキャンセル中間イベントが、この終了イベントのトリガー(誘因)となる。また、同時にトランザクションプロトコルを通じて、キャンセルメッセージがトランザクション内で関与する人やモノに対して送られる必要がある。 |
![]() |
| 補償(Compensation) | 補償が必要である場合に使用される終了イベント。確認が行われたアクティビティは、補償されうるものとなる。最高次のプロセスからサブプロセスまですべて含めたプロセスの内部で終了したアクティビティは、実際のプロセスと逆の順番で補償が行われる。アクティビティの境界に補償中間イベントがなければ、補償は行われない。 | ![]() |
| シグナル(Signal) | 1つのプロセスが終了となったとき、シグナルが送られる場合に使用される終了イベント。シグナルは、それを受け取ることができるプロセスならなんでも、その対象にプロセスの次元やプールを越えて送られるものである。しかし、シグナルは明確な始点(source)や対象(target)をもつメッセージではない。 | ![]() |
| 終結(Terminate) |
プロセス内のすべてのアクティビティをすぐに終了させる際に使用される終了イベント。マルチインスタンス内の全てのインスタンスも、同様にすぐに終了させられる対象となる。この場合のプロセスの終了では、補償処理やイベント処理(メッセージの送信など)は実行されない。 |
![]() |
| 複合(Multiple) | プロセスを終了させる方法が複数存在する場合に使用される終了イベント。トークンがこの終了イベントに到達したとき、存在するすべての終了方法(複数のメッセージの送信など)が発生する。 | ![]() |
BPMN1.0仕様からの変更点
BPMN1.0仕様からBPMN1.1仕様への移行によって、表記および名称の点で変更が見られた。
- 「メッセージ」のマーカーデザインが「白色の手紙」から「黒色の手紙」へ変更
- 「エラー」のマーカーデザインがより極太に
- 「リンク」という結果がBPMN1.1仕様では消失
- 「シグナル」という結果がBPMN1.1仕様で新たに追加
- 「複合」のマーカーデザインが「六芒星(ろくぼうせい)」から「五角形」へ変更
関連記事
参考文献
- BPMN1.1仕様(2008-01-17)












