学習資料

BPMN 2.0 リファレンス

参加者(Participants)

プール
Participant
レーン
Lane

Pool(プール)

プロセスのコンテナであり、インタラクションの参加者を表します。プール同士はメッセージフローによってのみデータをやり取りします。折りたたんで詳細を隠すこともできます。

受注処理営業倉庫配送注文済み注文を確認注文を梱包注文を配送配送完了
BP1 Modelerで開く →
1つのプール、1つのプロセス:注文は営業から倉庫、配送へと進む — プールが作業を調整する
顧客オンラインストア商品が必要注文する荷物到着商品を開梱注文完了注文受付ピッキング・梱包荷物を発送発送済み注文荷物
BP1 Modelerで開く →
コラボレーション:顧客とストアは別々のプール — やり取りはメッセージだけで行う

Lane(レーン)

プール内の帯状の区分で、誰がタスクを実行するか(役職、ロール、部門、ITシステム)を示します。

カスタマーサポートサポート担当エンジニア新規チケット種別を判定質問かバグか?質問に回答バグを修正チケット完了質問バグ
BP1 Modelerで開く →
レーンは1つのプロセスをロールごとに分ける:サポート担当がチケットの種別を判定し、バグは「エンジニア」レーンへ回る

アクティビティ(Activities)

タスクの種類

抽象
Task (None)
手動
Manual
ユーザー
User Task
送信
Send Task
受信
Receive Task
スクリプト
Script Task
サービス
Service Task
ビジネスルール
Business Rule

抽象タスク(None Task)

種類が指定されていないタスクです。実行方法がまだ決まっていない初期のモデリング段階や、図の目的にとって種類が重要でない場合に使います。本質的には、後で具体的な種類に精緻化されるプレースホルダーです。

ユーザータスク(User Task)

人がソフトウェアのインターフェースを介して実行します。CRMのフォーム、Webアプリの画面、タスク管理ツールの項目などです。手動タスクとの主な違いは、担当者がタスクのステータスを追跡するシステムの中で作業する点です。

例:システム上で申請を承認する、フォームに入力する、セルフサービスポータルで文書をレビューする。

手動タスク(Manual Task)

人がBPMエンジンの関与なしに実行します。システムはこの作業がいつ開始・終了したかを自動的に検知できません。

例:紙の文書に署名する、顧客に電話をかける、対面で打ち合わせをする、宅配便で荷物を届ける。

サービスタスク(Service Task)

プログラムやサービスによって自動的に実行されます。人は関与しません。実行可能なプロセスで最も一般的なタスク種類です。

例:APIへのHTTPリクエスト、データベースへの書き込み、マイクロサービスの呼び出し、計算の実行。

送信タスク(Send Task)

特定の外部参加者(別のプロセスやシステム)にメッセージを送信し、応答を待たずに直ちに完了します。いわゆるファイア・アンド・フォーゲット(撃ちっぱなし)のパターンです。

例:顧客にメールを送る、メッセージキューにイベントを発行する、Webhookで通知を送る。

受信タスク(Receive Task)

外部参加者からの受信メッセージを待ちます。メッセージが届くまで、プロセスはこのタスクで一時停止します。

特殊なバリエーションとしてインスタンス化受信(instantiated Receive)があります。このタスクがプロセスの最初のステップである場合、メッセージの受信そのものが新しいプロセスインスタンスを生成します(メッセージ開始イベントの代替)。

例:取引先の返信を待つ、決済プロバイダーからのコールバックを待つ、配送完了の確認を待つ。

スクリプトタスク(Script Task)

プロセスモデル内に直接定義された組み込みスクリプト(コード)を実行します。サービスタスクとは異なり、コードは外部システムを呼び出さず、BPMエンジンの中で実行されます。

例:データ形式を変換する、期限を計算する、メール用の文字列を組み立てる、条件を判定する。

ビジネスルールタスク(Business Rule Task)

意思決定エンジン(例:DMNテーブル)を呼び出します。入力をルールセットに渡すと、判定結果が返されます。

例:顧客ランクに応じた割引を決定する、保険料を算出する、申請をポリシーに照らして確認する、問い合わせを分類する。
タスク手動タスクユーザータスク受信タスク送信タスクスクリプトタスクサービスタスクビジネスルールタスク
BP1 Modelerで開く →
タスク種類:形は同じで、作業の進め方を示すのは隅のアイコンだけ

タスクマーカー

タスクの四角形の下辺中央に付く小さなアイコンです。タスクの振る舞いを示すものであり、種類を示すものではありません。

ループ
Loop
複数インスタンス ∥
Parallel MI
複数インスタンス ≡
Sequential MI
補償
Compensation
Ad-hoc ~
Ad-hoc
サブプロセス +
Subprocess
マーカー意味例
↻ ループ条件が満たされている間、タスクを繰り返す(1インスタンス、複数回の反復)文書を修正 → 提出 → 差し戻されたら繰り返す
∥ 並列複数インスタンスN個のインスタンスが同時に開始する — コレクションの要素ごとに1つすべての承認者に同時に通知を送る
≡ 逐次複数インスタンス同じN個のインスタンスを、1つずつ順番に実行する各候補者を順番に面接する
⏪ 補償ロールバック用のタスク。補償がトリガーされたときにのみ実行され、すでに完了した処理を取り消す「ホテルを予約」が完了した後の「予約をキャンセル」
~ Ad-hocサブプロセス内のタスクは任意の順序で実行でき、繰り返しやスキップも可能。内部に開始・終了イベントは置けない顧客コンサルティング中のステップを自由に選択
+ サブプロセス内部シーケンスが隠された複合アクティビティ。フローはその境界を越えられない「受注処理」が10の内部ステップを隠している
契約書案完成条件を交渉契約を締結契約締結済み双方が合意するまで
BP1 Modelerで開く →
ループ:1つのタスクを繰り返す — 「条件を交渉」は双方が合意するまで再実行される
購買依頼見積を依頼仕入先を選定仕入先決定仕入先ごとに
BP1 Modelerで開く →
並列複数インスタンス(3本線):「見積を依頼」は仕入先ごとに同時に実行され、すべての見積もりが揃うとプロセスが先へ進む
旅行申込ホテルを予約航空券を予約予約できた?旅行予約完了旅行取消取消要求ホテル予約を取消はいいいえ
BP1 Modelerで開く →
補償:「ホテル予約を取消」は、ホテルの予約後に旅行が取り消された場合にだけ実行される — フローではなく補償の境界イベントで結ばれている

サブプロセス

「+」で示される複合アクティビティです。独自のステップシーケンスを含みます。フローはその境界を越えられません。中間イベントは境界上に付けられます。

注文受付代金を支払うカードに請求領収書を送付注文を発送発送済み
BP1 Modelerで開く →
サブプロセスは独自のステップを包み込む:展開した「代金を支払う」は独自の開始と終了とともにステップを見せ、折りたたんだ「注文を発送」は「+」マーカーの奥に隠す

コールアクティビティ(Call Activity)

太い枠線。複数のプロセスで再利用されるグローバルなサブプロセス(例:「調達」)を参照します。

埋め込みサブプロセスとの違い:埋め込みサブプロセスではデータに直接アクセスできます(親とスコープを共有)。Call Activityは別個のプロセスであり、その入出力には明示的なデータマッピングが必要です。呼び出し時に何を渡し、戻り時に何を受け取るかを定義します。
販売リース注文済み与信を審査注文を確認注文確定リース申込与信を審査契約を締結契約締結済み
BP1 Modelerで開く →
Call Activity(太い枠線):「販売」と「リース」が同じグローバルプロセス「与信を審査」を呼び出す

アドホックサブプロセス(Ad-hoc)

マーカーは「~」。内部のアクティビティは任意の順序で実行でき、繰り返しやスキップも可能です。内部に開始・終了イベントは置けません。

内定承諾初出社の準備PCを発注アカウントを作成社員証を発行メンター指名受入準備完了
BP1 Modelerで開く →
アドホックサブプロセス(~):タスク間にフローはなく、任意の順序で実行され、繰り返しやスキップもできる

イベントサブプロセス

プロセス内の破線の枠。親プロセスがアクティブな間、開始イベントによってトリガーされます。割り込み型は親をキャンセルします。非割り込み型は並行して実行されます。

オンラインストア注文受付注文を梱包注文を発送発送済み住所を変更住所変更住所を更新住所更新済み
BP1 Modelerで開く →
イベントサブプロセス(点線の枠):入力フローはなく、注文の処理中にメッセージ「住所変更」で開始する。破線の開始イベントは非割り込み型で、メインフローを止めない

ゲートウェイ(Gateways)

分岐と合流を制御します。ゲートウェイ自体は作業をしません。流れを振り分けるだけで、判断は手前のタスクで準備します。

排他 XOR
Either/Or
並列 AND
And/And
包含 OR
One or more
イベントベース
Event-based
複合
Complex
なし
None

排他ゲートウェイ(XOR)

最も一般的なゲートウェイです。分岐時には、条件が最初に満たされたちょうど1つの出力パスを有効化します。どの条件も満たされない場合、プロセスはエラーで失敗します(そのため、常に「デフォルト」分岐を定義しておくのが良い習慣です)。合流時には、到着した各トークンを他を待たずに直ちに通過させます。

たとえ:1方向にしか進めない道の分かれ道。

例:「注文は支払い済みか? → はい / いいえ」、「金額は10,000より大きいか? → はい / いいえ」。
ヒント:質問はゲートウェイの手前に書き、回答の選択肢は出力の矢印に添えましょう。
支払い済み配送を選択配送方法は?宅配便で発送受取を準備郵便で発送出荷済み宅配店頭受取郵便
BP1 Modelerで開く →
XORゲートウェイ:通るのはちょうど1つの分岐。合流のXORは待たずに注文を先へ送る

並列ゲートウェイ(AND)

分岐時には、すべての出力パスを条件なしで一斉に有効化します。判定は行いません。合流時には、すべての入力パスのトークンを待ち、すべて到着してはじめて1つのトークンを先に送ります。

たとえ:マネージャーが5人の従業員にタスクを配り、5人全員が終わるまで待つ。

例:商品の出荷と請求書の発行を並行して行う。複数の部門が同時に文書をレビューする。
アンチパターン:XORで分岐した分岐や、いずれか一方しか通らない分岐をANDで合流させてはいけません。ANDはすべての入力にトークンが揃うのを永遠に待ち続け、プロセスがデッドロックします。XORの後はXOR(または空のひし形)で合流させましょう。
支払い済み商品を発送請求書を発行注文完了
BP1 Modelerで開く →
ANDゲートウェイ:発送と請求書の発行が同時に始まり、合流のANDは両方を待つ

包含ゲートウェイ(OR)

XORとANDのハイブリッドです。分岐時には、条件に応じて1つ以上のパスを有効化します。各条件は独立して評価されます。合流時には、実際に有効化されたパスのトークンだけを待ちます(ANDのようにすべてを待つわけではありません)。

たとえ:ビュッフェ — 料理を1皿、2皿、あるいは全部取れるが、ゼロということはない。

例:顧客が配送・店頭受取・ギフト包装のいずれか(または複数)を選択した — 選ばれたオプションを実行し、すべての完了を待つ。
注意:ORゲートウェイは分析が難しくなります。分岐の多い図では同期のルールが直感的でないことがあります。すべてのエンジンが正しくサポートしているわけではありません。
支払い済み注文内容は?荷物を発送リンクを送信注文完了物理商品デジタル商品
BP1 Modelerで開く →
ORゲートウェイ:物理商品、デジタル商品、またはその両方 — 1つか両方の分岐が実行され、合流のORは実際に通った分岐だけを待つ

イベントベースゲートウェイ

他とは根本的に異なり、データではなく、最初に発生したイベントによって経路を決めます。ゲートウェイの後には中間の待機イベント(タイマー、メッセージ、条件、シグナル)を配置します。いずれか1つが発火した時点で、残りはキャンセルされます。

たとえ:候補者に内定を出して返事を待つ — 返事が来れば先に進み、1週間返事がなければ次の候補者に移る。

例:タイマー付きで支払いを待つ(3日以内に未払い → 注文をキャンセル)。顧客の返信または期限のいずれかを待つ。
注文済み請求書を送付入金済み注文を発送発送済み3日注文を取消注文取消済み
BP1 Modelerで開く →
イベントベースゲートウェイ:先に起きたほうが勝つ — 入金があれば注文を発送し、3日間なければキャンセルする

複合ゲートウェイ

分岐ロジックが標準のゲートウェイでは表現できない場合に使います。合流条件は式で定義します(例:「5つの分岐のうち3つが完了したら続行」、「最初の返信が届き、かつ10分が経過したとき」)。

実務では:使用頻度は低く、すべてのBPMエンジンがサポートしているわけではありません。XOR / AND / ORの組み合わせで足りるなら、そちらを選びましょう。

なし(デフォルトの排他)

マーカーのないひし形です。意味的には排他ゲートウェイ(XOR)と等価で、BPMN標準では十字マークの省略が認められています。一部の方法論者はこれを悪い慣行だとみなします。読みやすさを損なうためです。作成者がマーカーを付け忘れたのか、あえてXORを選んだのか区別がつきません。

イベント(Events)

基本概念

イベントは起こること(事実)を表し、能動的な処理であるタスクとは対照的です。円で描かれます。

開始
Thin circle
中間
Double circle
終了
Thick circle

キャッチ(Catching)(塗りつぶしなしのマーカー)は待機、スロー(Throwing)(塗りつぶし)は送出を表します。境界イベントには、割り込み型(実線)と非割り込み型(破線)があります。

イベント一覧表

「—」=標準で定義されていないことを示します。

種類開始中間終了
通常イベントサブ非割り込みキャッチ境界境界・非割り込みスロー
None(なし)—————
✉ メッセージ
⏱ タイマー——
⚡ エラー—————
▲ シグナル
📋 条件——
↗ エスカレーション——
⬤ 終了———————
⏪ 補償————
✖ キャンセル——————
➡ リンク——————
⬠ 複数
➕ 並列複数——

メッセージ(Message)

特定の相手とのやり取り:メール、電話、HTTP、push。すべての位置で使えます。

オンラインストア宅配業者支払い済み荷物を梱包集荷依頼済み依頼受付荷物を配達配達完了集荷依頼
BP1 Modelerで開く →
メッセージ:ストアのメッセージ終了イベントが集荷依頼を送り、宅配業者のメッセージ開始イベントが新しいプロセスを始める

タイマー(Timer)

日時、間隔、カウントダウン(期限)。キャッチのみ。

毎週月曜 9:00週報を作成週報を承認承認済み1日承認者に催促催促済み2日上長に上申上申済み
BP1 Modelerで開く →
タイマー:スケジュールによる開始、1日後の非割り込み型リマインダー、2日後の割り込み型の期限

エラー(Error)

重大な失敗。キャッチは境界のみ、スローは終了のみ。

注文済みカードに請求注文を発送発送済み支払い拒否注文を取消注文取消済み
BP1 Modelerで開く →
エラー:カードへの請求に失敗すると、境界エラーがタスクを中断し、注文はキャンセルへ進む

条件(Conditional)

外部の条件(「在庫が最低水準を下回った」)を待ちます。キャッチのみ。

注文受付注文を確認在庫あり注文を発送発送済み
BP1 Modelerで開く →
条件:確認後、プロセスは商品の在庫が揃うまで待ち、それから注文を発送する

シグナル(Signal)

ブロードキャスト(宛先付きメッセージとは対照的)。購読しているすべての対象が反応します。

本社店舗欠陥確認済み回収を準備製品リコール製品リコール棚から撤去撤去完了
BP1 Modelerで開く →
シグナル:本社が「製品リコール」をブロードキャストし、それを待ち受けるすべての店舗がそれぞれのプロセスを開始する — メッセージフローは不要

終了(Terminate)

プロセスインスタンス全体を直ちに停止します。終了イベントのみ。

チケット起票原因を調査(45分)原因判明応急処置(30分)処置済み
BP1 Modelerで開く →
Terminateなし:並列の各分岐がそれぞれの終了に達し、インスタンスは長いほうの分岐が終わる45分後にようやく完了する

タスク3が終わった後にタスク2を続ける意味がなくなった場合はどうでしょうか。そのときは次のパターンを使います:

チケット起票原因を調査(45分)原因判明応急処置(30分)処置済み解決?解決済みいいえはい
BP1 Modelerで開く →
Terminateあり:応急処置でチケットが解決すれば、Terminate終了がインスタンス全体を即座に停止する — まだ実行中の「原因を調査」も含めて
支払い済み注文を梱包発送発送注文を発送発送済み
BP1 Modelerで開く →
リンク:スローの「発送」リンクが1行目を終え、キャッチのリンクが次の行で続ける — 長く横切る矢印の代わりになる

補償(Compensation)

すでに完了した処理を取り消します。補償タスクは関連(アソシエーション)で結ばれます。

注文済みカードに請求在庫あり?注文確定注文取消済み請求取消代金を返金はいいいえ
BP1 Modelerで開く →
補償:補償終了イベントが完了済みの「カードに請求」の境界イベントをトリガーし、その補償ハンドラーが代金を返金する

エスカレーション(Escalation)

サブプロセスから親へ送られます。エラーではありません。非割り込み型にもできます。

梱包済み注文を配送顧客先へ移動引渡し完了2時間配送遅延配送完了配送遅延顧客に通知通知済み
BP1 Modelerで開く →
エスカレーション:配送サブプロセスが「配送遅延」をスローし、非割り込み型の境界イベントがそれをキャッチして、配送を続けたまま顧客に通知する

キャンセル(Cancel)

トランザクションの文脈でのみ使用します。終了ではロールバック、境界ではキャッチ。

データ・成果物・フロー

データオブジェクト
Data Object
データストア
Data Store
データ入力
Data Input
データ出力
Data Output
注釈
Text Annotation
グループ
Group
フロー
Sequence Flow
メッセージフロー
Message Flow
条件フロー
Conditional Flow
デフォルト
Default Flow
トランザクション
Transaction

データオブジェクト(Data Object)

角を折った「紙」の形。プロセスインスタンス内でタスク間で作成・消費・受け渡しされる情報を表します。インスタンスが生存している間だけ存在します。

例:顧客からの申請、契約書のドラフト、途中で組み立てられていくレポート。

データストア(Data Store)

円柱の形。プロセスインスタンスより長く存続する永続的なストレージです。データベース、レジストリ、ファイルストアなど。タスクはここから読み書きします。

例:CRM、ERP、注文データベース、文書アーカイブ。

データ入力(Data Input) / データ出力(Data Output)

プロセスまたはサブプロセスの境界にあるパラメータです。入力は外部から与えられるもの、出力は返されるもの。中抜き/塗りつぶしの三角形が付いた矢印で表します。

例:「調達」サブプロセスは品目リストを入力として受け取り、請求書を出力として返す。

テキスト注釈(Text Annotation)

破線で任意の要素に付けるコメントです。実行には影響しません。図の読み手に説明を補うためだけに存在します。

グループ(Group)

破線の角丸長方形。要素の視覚的なグルーピング(例:「すべての物流タスク」)です。実行上の意味は持たず、フローはその境界を自由に越えられます。

シーケンスフロー(Sequence Flow)

塗りつぶしの矢じりを持つ実線の矢印。1つのプール内での実行順序を定義します。プールの境界を越えることはできません。

条件フロー(始点に小さなひし形が付く)は、条件が真の場合にのみ発火します。ゲートウェイを使わずにタスクから出る矢印に用います。

デフォルトフロー(始点に斜線マークが付く)は、XOR/ORゲートウェイや条件分岐のフォールバック経路で、他のどの条件も成立しない場合に選ばれます。

メッセージフロー(Message Flow)

中抜きの矢じりを持つ破線の矢印。異なるプール同士をつなぎ、独立した参加者間でやり取りされるメッセージを表します。1つのプール内では使いません。

例:顧客がオンラインストアに注文を送る。銀行が支払い確認を送る。

トランザクション(Transaction)

二重の枠線を持つサブプロセス。ACIDの性質を持ち、内部のすべての処理が正常にコミットされるか、あるいはCancelイベントによって(補償を伴って)トランザクション全体がロールバックされます。分散処理の一貫性を保つために使います。

例:「航空券+ホテル+レンタカー」のパッケージ予約 — どれか1つでも失敗すれば、予約全体がキャンセルされる。

BPMN を実務で活かしませんか?

当社チームにご相談ください。貴社のプロセスを可視化し、実データで BPMN が動く BP1.ai をご覧いただけます。

営業に問い合わせ
すべての図は無料のBPMN 2.0エディターBP1 Modelerで作成されています。どの図も開いて編集できます。編集:BP1.AI。