BPMN(Business Process Model and Notation)は、ビジネスプロセスを視覚的にモデリングするための国際標準表記法。OMG(Object Management Group)が策定・維持しており、国際規格 ISO 19510 として認定されている。
- 業務担当者・業務分析者・システム開発者の間で共通言語としてビジネスプロセスを記述・共有する
- フローチャートよりも厳密かつ詳細にプロセスを表現する
- 標準化された記号体系: 記号と線の種類が厳密に定義されている
- 階層化が可能: サブプロセスとして入れ子構造にでき、抽象度を段階的に変えて記述できる
- 誰が読んでも同じ意味: 正しく記述された業務フローは、読み手によって解釈が異ならない
- 実行可能なモデル: BPMN 2.0で記述したプロセスは、BPMS上でそのまま実行エンジンに渡すことができる
- ビジネス部門とIT部門の間のコミュニケーションギャップを解消
- 業務プロセスの可視化により、ボトルネックや改善点の発見が容易
- 国際標準のため、ベンダーロックインを回避できる
- 例外処理やメッセージ連携も記述可能
| バージョン | 年 | 概要 |
|---|
| BPMN 1.0 | 2004年 | BPMIにより初版策定 |
| BPMN 1.1 | 2008年 | OMGにより正式標準化 |
| BPMN 1.2 | 2009年 | マイナー改訂 |
| BPMN 2.0 | 2011年 | 現行標準。名称を「Business Process Model and Notation」に変更。ISO 19510として国際規格化 |
BPMNの記法要素は大きく以下のカテゴリに分類される。
プロセスの中で「何かが起こる」ことを示す要素。大きく開始・中間・終了の3種類に分かれる。
| 区分 | 記号の形状 | 説明 |
|---|
| 開始イベント | 細線の円 | プロセスの開始点 |
| 中間イベント | 二重線の円 | プロセス途中で発生する事象。キャッチ(受信)とスロー(送信)がある |
| 終了イベント | 太線の円 | プロセスの終了点 |
| トリガー | 開始 | 中間キャッチ | 中間スロー | 終了 | 説明 |
|---|
| なし(None) | o | - | - | o | 単純な開始/終了 |
| メッセージ(Message) | o | o | o | o | メッセージの送受信でトリガー |
| タイマー(Timer) | o | o | - | - | 特定の日時や周期でトリガー |
| 条件(Conditional) | o | o | - | - | 条件式が真になったとき |
| シグナル(Signal) | o | o | o | o | ブロードキャスト型のシグナル |
| エラー(Error) | o | o | - | o | エラー発生時 |
| エスカレーション | o | o | o | o | 上位プロセスへの通知 |
| キャンセル(Cancel) | - | o | - | o | トランザクションのキャンセル |
| 補償(Compensation) | - | o | o | o | 取消し・やり直しの処理 |
| リンク(Link) | - | o | o | - | 離れた場所へのフロー接続 |
| 終了(Terminate) | - | - | - | o | プロセス全体の即時終了 |
「実行される作業」を示す要素。
| タスク種類 | 説明 |
|---|
| 抽象タスク(None) | 種類を特定しない一般的なタスク |
| ユーザータスク | 人間がシステムの支援を受けて実行 |
| サービスタスク | Webサービスやアプリケーションが自動実行 |
| マニュアルタスク | システムを使わず人間だけで実行 |
| スクリプトタスク | 事前定義されたスクリプトで自動実行 |
| 送信タスク | 外部参加者へメッセージを送信 |
| 受信タスク | 外部参加者からのメッセージを待ち受け |
| ビジネスルールタスク | ビジネスルールエンジンで判定 |
| マーカー | 説明 |
|---|
| ループ | 条件が満たされるまで繰り返し実行 |
| 複数インスタンス(並列) | 同じタスクを複数同時に実行 |
| 複数インスタンス(逐次) | 同じタスクを順番に複数回実行 |
| 補償 | 取消し時に実行される補償処理 |
| 種類 | 説明 |
|---|
| 埋め込みサブプロセス | 親プロセス内に展開して詳細を表示(「+」マーク) |
| 呼び出しアクティビティ | 外部定義の再利用可能なプロセスを呼び出す(太枠) |
| アドホックサブプロセス | 内部タスクを任意の順序で実行可能(「~」マーク) |
| トランザクション | ロールバック可能な一連の処理(二重枠) |
| イベントサブプロセス | 特定イベントにより起動される(破線枠) |
プロセスのフロー(分岐・合流)を制御する要素。
| ゲートウェイ種類 | 記号 | 説明 |
|---|
| 排他ゲートウェイ(XOR) | ひし形に「X」 | 条件に基づいて1つだけの経路を選択。最も一般的 |
| 並列ゲートウェイ(AND) | ひし形に「+」 | 全ての経路を同時に実行。合流時は全分岐の完了を待つ |
| 包含ゲートウェイ(OR) | ひし形に「○」 | 条件に基づいて1つ以上の経路を選択 |
| イベントベースゲートウェイ | ひし形に五角形 | どのイベントが先に発生するかで経路を決定 |
| 複合ゲートウェイ | ひし形に「*」 | 上記で表現できない複雑な条件ロジック |
| フロー種類 | 表現 | 説明 |
|---|
| シーケンスフロー | 実線矢印(→) | 同一プール内の実行順序を示す |
| 条件付きシーケンスフロー | 実線矢印(始点にひし形) | 条件が真の場合にのみ遷移 |
| デフォルトシーケンスフロー | 実線矢印(始点にスラッシュ) | 他の条件が全て偽の場合に遷移 |
| メッセージフロー | 破線矢印(- - →) | 異なるプール間のメッセージのやり取り |
| 関連(Association) | 点線(…) | データオブジェクトや注釈をフロー要素と結びつける |
| 要素 | 説明 |
|---|
| プール(Pool) | プロセスの参加者(組織、システム、役割など)を表す大きな矩形領域 |
| レーン(Lane) | プール内部を分割する区画。担当部門・担当者などの役割分担を明示 |
| 要素 | 説明 |
|---|
| データオブジェクト | プロセスで使用・生成される情報(申請書、報告書など) |
| データ入力 | アクティビティへの入力データ |
| データ出力 | アクティビティからの出力データ |
| データストア | 永続的なデータの保管場所(データベースなど) |
| 要素 | 説明 |
|---|
| テキスト注釈 | プロセス図に補足説明やコメントを追加する |
| グループ | 破線の角丸四角形で関連する要素を視覚的にグルーピング(フローの意味には影響しない) |
以下は、BPMNの記法要素を使った経費精算プロセスの例。スイムレーンをsubgraphで、ゲートウェイをひし形ノードで表現している。
| Mermaid記法 | BPMN対応要素 | 説明 |
|---|
(("開始")) | 開始イベント | 二重丸括弧で円形ノードを表現 |
["タスク名"] | タスク(アクティビティ) | 角括弧で角丸四角形を表現 |
{"判断"} | 排他ゲートウェイ(XOR) | 波括弧でひし形を表現 |
-->|ラベル| | 条件付きシーケンスフロー | ラベル付きの矢印で条件分岐を表現 |
subgraph | スイムレーン(レーン) | サブグラフで担当者・部門の区画を表現 |