BPMN(Business Process Model and Notation)は、記号が少し多いフローチャートのように見えます。実際、多くの人はそう捉えて使い始めます。しかし、その追加の記号こそが肝心です。各ステップを誰が担当するのか、何がプロセスを開始するのか、何が並行して進むのか、何が組織の境界をまたぐのかを、開発者と業務部門のマネージャーが同じ意味に読み取れるほど正確に図で示せるからです。
このガイドでは、オンラインショップの受注処理プロセスを題材に、1 つの BPMN 図をステップごとに組み立て、要素が登場するたびに説明します。読み終えるころには、自分の業務に合わせて応用できるプロセスと、BPMN 図を読みにくくする間違いのリストが手元に残ります。
必要な要素
BPMN 2.0 の語彙は豊富ですが、ほとんどのプロセス図は少数の中核要素だけで描けます。
| 要素 | 形 | 意味 |
|---|---|---|
| プール | 大きな枠 | 1 つの参加者(会社や顧客など) |
| レーン | プール内の行 | その参加者の中の役割、チーム、システム |
| 開始イベント | 細い線の円 | プロセスを開始するもの(メッセージ、タイマー、特になし) |
| 終了イベント | 太い線の円 | プロセスの終わり方の 1 つ |
| 中間イベント | 二重線の円 | 途中で起きること、または途中で待つこと |
| タスク | 角丸の四角形 | 1 単位の作業。マーカーでユーザータスク、サービスタスク、送信タスク、手動タスクの区別を示す |
| 排他ゲートウェイ | X の入ったひし形 | 出ていく経路のうち、ちょうど 1 つだけを通る |
| 並列ゲートウェイ | + の入ったひし形 | 出ていく経路をすべて実行する。対になるゲートウェイがすべての完了を待つ |
| シーケンスフロー | 実線の矢印 | 1 つのプール内でのステップの順序 |
| メッセージフロー | 破線の矢印 | プール間のコミュニケーション |
例: 受注処理
プロセスを平易な言葉で書くと、次のとおりです。
- 顧客から注文が届きます。
- 販売システムが在庫を確認します。
- 在庫がなければ、顧客に通知して注文をキャンセルします。
- 在庫があれば、決済を行い、それと同時に倉庫が注文の商品をピッキングして梱包します。
- 両方が終わったら、出荷担当が荷物を配送業者に引き渡します。
- 販売システムが追跡リンクをメールで送り、プロセスは終了します。
これを BPMN で描くと、次のようになります。
ダイアグラムの内容
- Customer
- Online shop
- Order received
- Check stock
- In stock?
- Notify customer
- Order cancelled
- Charge payment
- Pick and pack
- Ship order
- Send tracking email
- Order fulfilled
- no
- yes
- order
- out of stock notice
- tracking link
では、1 つずつ組み立てていきましょう。
ステップ 1: プールとレーン
まず参加者から始めます。ショップは 1 つのプールで、Sales system(販売システム)、Warehouse(倉庫)、Shipping(出荷)の 3 つのレーンがあります。顧客は 2 つ目のプールで、折りたたんだ空の帯として描きます。関心があるのは顧客が何を送り、何を受け取るかであって、顧客がどう判断するかではないからです。
レーンを使えば、タスクにラベルを 1 つも付けずに「誰がやるのか」に答えられます。あるタスクをどのレーンに置くべきか決められないなら、たいていそれは、提起する価値のある本当の責任分担の問題です。
ステップ 2: 開始イベントと終了イベント
プロセスは注文メッセージが届いたときに始まるので、開始イベントにはメッセージマーカーを付けます。終わり方は 2 通りあるので、終了イベントも 2 つです。Order fulfilled(注文完了)と Order cancelled(注文キャンセル)です。各終了イベントに結果を表す名前を付けると、図がどんな結末を迎えうるのかがひと目でわかります。
ステップ 3: タスク名は動詞と目的語で
すべてのタスクに、動詞と目的語で名前を付けます。たとえば Check stock(在庫を確認する)、Charge payment(代金を決済する)、Pick and pack(ピッキングして梱包する)、Ship order(注文を出荷する)、Send tracking email(追跡メールを送る)です。役に立つ場合はタスクの種類も付けましょう。サービスタスクは人を介さずに実行され、ユーザータスクには人が必要で、送信タスクはメッセージを送ります。このマーカー 1 つで、開発者はどのステップを自動化すべきかがわかります。
ステップ 4: 判断と並行作業のためのゲートウェイ
Check stock の後ろにある排他ゲートウェイは In stock?(在庫あり?)という問いを立て、そこから出ていくフローに答えの yes と no を付けます。通る経路は 1 つだけです。
yes の経路の先では、並列ゲートウェイがフローを分岐させ、Charge payment と Pick and pack が同時に進みます。2 つ目の並列ゲートウェイがそれらを合流させるので、出荷は両方が終わってから始まります。分岐と合流は対で使います。合流のない並列分岐を置くと、プロセスの残りの部分をトークンが流れ続けることになり、それが意図どおりであることはまずありません。
ステップ 5: プール間のメッセージフロー
シーケンスフローはプールの中にとどまります。プール間のコミュニケーションには、破線で描くメッセージフローを使います。開始イベントに入る注文メッセージ、顧客に返す在庫切れの通知と追跡メールがそれにあたります。BPMN ではシーケンスフローがプールの境界をまたぐことは認められていません。このルールがあるので、組織間の受け渡しはすべて明示的に描くことになります。
プロセスを拡張する
実際のプロセスには、さらに多くの要素が必要です。よくある拡張と、それを BPMN でどう表すかを紹介します。
- 決済が失敗する。 Charge payment と Pick and pack をサブプロセスでまとめ、そのサブプロセスにエラー境界イベントを付けて、商品を在庫に戻し顧客に通知するタスクへつなぎます。並列の分岐の片方だけからエラー経路を出すと、合流が永遠に待ち続けることになります。
- ピッキングに時間がかかりすぎる。 Pick and pack に非割り込み型のタイマー境界イベント(たとえば 24 時間)を付け、エスカレーション用のタスクへつなぎます。
- 倉庫が外部のパートナーである。 倉庫を別のプールにし、そこへ入るシーケンスフローをメッセージフローに置き換えます。これで、図が 2 社間の取り決めを示すようになります。
これらの拡張は、議論に必要なときだけ加えましょう。すべての例外を描こうとしたプロセス図は、矢印の壁になってしまいます。
よくある間違い
- プールをまたぐシーケンスフロー。 参加者の間にはメッセージフローを使います。
- 合流なしでまとめた並列経路。 択一の経路はそのまま次のタスクに流し込んでもかまいませんが、並列の経路は並列ゲートウェイで合流させる必要があります。そうしないと、次のタスクが分岐の数だけ実行されます。
- 問いを置く要素の間違い。 問いはタスクではなくゲートウェイに、答えはそこから出ていくフローに書きます。
- あいまいなタスク名。 「注文を処理する」は 5 つのステップを隠しています。説明に 1 段落が必要なタスクは、サブプロセスにすべきです。
- すべてを 1 つのレーンに入れる。 レーンのない BPMN 図は、記号が凝っているだけのフローチャートです。
BPMN か、フローチャートか?
手早くロジックを示したいとき、アルゴリズムや手順を説明するときはフローチャートを使います。責任の所在、待ち、並行作業、参加者間のやり取りが重要なら BPMN を使います。複数のチームが関わる業務プロセスの多くはこちらに当てはまります。Archboard では両方を同じキャンバスで扱えます。よりシンプルなスタイルについては、フローチャートのユースケースと部門横断フローチャートのテンプレートをご覧ください。
Archboard で作る
- Google または GitHub でサインインし、図を作成します。
- BPMN パックから、ショップ用のプールを追加して 3 つのレーンを設け、顧客用に空の 2 つ目のプールも追加します。
- 開始イベントと終了イベント、タスクの種類を設定したタスクノード、ゲートウェイの種類を排他または並列に設定した排他ゲートウェイノードを追加します。
- プール内のステップを接続し、メッセージフローとしてプール間に破線のエッジを引きます。
- ゲートウェイから出ていくフローに答えのラベルを付け、読み手が知っておくべきことはテキスト注釈で補足します。
この例で使うノードは 14 個で、Free プランの範囲に収まります。関連するプロセスについては、決済フロー図とバリューストリームマッピングのユースケースをご覧ください。
よくある質問
BPMN 2.0 をすべて覚える必要がありますか? いいえ。プール、レーン、開始イベントと終了イベント、タスク、排他ゲートウェイと並列ゲートウェイ、メッセージフローがあれば、ほとんどの図は描けます。それ以外の記号は、実際のケースで必要になったときに加えてください。
BPMN 図は実行できますか? プロセスエンジンは、必要な技術的詳細を含む BPMN モデルを実行できます。この例のように人が読むために描いた図は、まずプロセスについて合意するためのものです。
1 つの図はどのくらいの大きさにすべきですか? 1 画面に収まらなくなったら、タスクのまとまりをサブプロセスに移し、それを別の図として描きます。
システムやデータはどこに置きますか? 作業を行うシステムにはレーンを使います(ここでの販売システムがその例です)。タスクが読み書きする情報には、データオブジェクトやデータストアを使います。
プロセス図はどうレビューすればよいですか? 実際に作業をしている人たちと一緒に、在庫切れの注文のような実際のケースを 1 つ、図に沿ってたどってみてください。「実は、うちでは…」と言われた箇所はすべて修正点です。