プロセスのコンテナであり、インタラクションの参加者を表します。プール同士はメッセージフローによってのみデータをやり取りします。折りたたんで詳細を隠すこともできます。
プール内の帯状の区分で、誰がタスクを実行するか(役職、ロール、部門、ITシステム)を示します。
種類が指定されていないタスクです。実行方法がまだ決まっていない初期のモデリング段階や、図の目的にとって種類が重要でない場合に使います。本質的には、後で具体的な種類に精緻化されるプレースホルダーです。
人がソフトウェアのインターフェースを介して実行します。CRMのフォーム、Webアプリの画面、タスク管理ツールの項目などです。手動タスクとの主な違いは、担当者がタスクのステータスを追跡するシステムの中で作業する点です。
人がBPMエンジンの関与なしに実行します。システムはこの作業がいつ開始・終了したかを自動的に検知できません。
プログラムやサービスによって自動的に実行されます。人は関与しません。実行可能なプロセスで最も一般的なタスク種類です。
特定の外部参加者(別のプロセスやシステム)にメッセージを送信し、応答を待たずに直ちに完了します。いわゆるファイア・アンド・フォーゲット(撃ちっぱなし)のパターンです。
外部参加者からの受信メッセージを待ちます。メッセージが届くまで、プロセスはこのタスクで一時停止します。
特殊なバリエーションとしてインスタンス化受信(instantiated Receive)があります。このタスクがプロセスの最初のステップである場合、メッセージの受信そのものが新しいプロセスインスタンスを生成します(メッセージ開始イベントの代替)。
プロセスモデル内に直接定義された組み込みスクリプト(コード)を実行します。サービスタスクとは異なり、コードは外部システムを呼び出さず、BPMエンジンの中で実行されます。
意思決定エンジン(例:DMNテーブル)を呼び出します。入力をルールセットに渡すと、判定結果が返されます。
タスクの四角形の下辺中央に付く小さなアイコンです。タスクの振る舞いを示すものであり、種類を示すものではありません。
| マーカー | 意味 | 例 |
|---|---|---|
| ↻ ループ | 条件が満たされている間、タスクを繰り返す(1インスタンス、複数回の反復) | 文書を修正 → 提出 → 差し戻されたら繰り返す |
| ∥ 並列複数インスタンス | N個のインスタンスが同時に開始する — コレクションの要素ごとに1つ | すべての承認者に同時に通知を送る |
| ≡ 逐次複数インスタンス | 同じN個のインスタンスを、1つずつ順番に実行する | 各候補者を順番に面接する |
| ⏪ 補償 | ロールバック用のタスク。補償がトリガーされたときにのみ実行され、すでに完了した処理を取り消す | 「ホテルを予約」が完了した後の「予約をキャンセル」 |
| ~ Ad-hoc | サブプロセス内のタスクは任意の順序で実行でき、繰り返しやスキップも可能。内部に開始・終了イベントは置けない | 顧客コンサルティング中のステップを自由に選択 |
| + サブプロセス | 内部シーケンスが隠された複合アクティビティ。フローはその境界を越えられない | 「受注処理」が10の内部ステップを隠している |
「+」で示される複合アクティビティです。独自のステップシーケンスを含みます。フローはその境界を越えられません。中間イベントは境界上に付けられます。
太い枠線。複数のプロセスで再利用されるグローバルなサブプロセス(例:「調達」)を参照します。
マーカーは「~」。内部のアクティビティは任意の順序で実行でき、繰り返しやスキップも可能です。内部に開始・終了イベントは置けません。
プロセス内の破線の枠。親プロセスがアクティブな間、開始イベントによってトリガーされます。割り込み型は親をキャンセルします。非割り込み型は並行して実行されます。
分岐と合流を制御します。ゲートウェイはタスクではありません! 判断はゲートウェイの手前で行われます。
最も一般的なゲートウェイです。分岐時には、条件が最初に満たされたちょうど1つの出力パスを有効化します。どの条件も満たされない場合、プロセスはエラーで失敗します(そのため、常に「デフォルト」分岐を定義しておくのが良い習慣です)。合流時には、到着した各トークンを他を待たずに直ちに通過させます。
たとえ:1方向にしか進めない道の分かれ道。
分岐時には、すべての出力パスを条件なしで一斉に有効化します。判定は行いません。合流時には、すべての入力パスのトークンを待ち、すべて到着してはじめて1つのトークンを先に送ります。
たとえ:マネージャーが5人の従業員にタスクを配り、5人全員が終わるまで待つ。
XORとANDのハイブリッドです。分岐時には、条件に応じて1つ以上のパスを有効化します。各条件は独立して評価されます。合流時には、実際に有効化されたパスのトークンだけを待ちます(ANDのようにすべてを待つわけではありません)。
たとえ:ビュッフェ — 料理を1皿、2皿、あるいは全部取れるが、ゼロということはない。
他とは根本的に異なり、データではなく、最初に発生したイベントによって経路を決めます。ゲートウェイの後には中間の待機イベント(タイマー、メッセージ、条件、シグナル)を配置します。いずれか1つが発火した時点で、残りはキャンセルされます。
たとえ:ピザを注文した — 60分たっても届かなければピザ店に電話し、それより早く届けば食べる。
分岐ロジックが標準のゲートウェイでは表現できない場合に使います。合流条件は式で定義します(例:「5つの分岐のうち3つが完了したら続行」、「最初の返信が届き、かつ10分が経過したとき」)。
マーカーのないひし形です。意味的には排他ゲートウェイ(XOR)と等価で、BPMN標準では十字マークの省略が認められています。一部の方法論者はこれを悪い慣行だとみなします。読みやすさを損なうためです。作成者がマーカーを付け忘れたのか、あえてXORを選んだのか区別がつきません。
イベントは起こること(事実)を表し、能動的な処理であるタスクとは対照的です。円で描かれます。
キャッチ(Catching)(塗りつぶしなしのマーカー)は待機、スロー(Throwing)(塗りつぶし)は送出を表します。境界イベントには、割り込み型(実線)と非割り込み型(破線)があります。
アイコンは bpmn-font(Camunda)より。「—」=標準で定義されていないことを示します。
| 種類 | 開始 | 中間 | 終了 | |||||
|---|---|---|---|---|---|---|---|---|
| 通常 | イベントサブ | 非割り込み | キャッチ | 境界 | 境界・非割り込み | スロー | ||
| None(なし) | — | — | — | — | — | |||
| ✉ メッセージ | ||||||||
| ⏱ タイマー | — | — | ||||||
| ⚡ エラー | — | — | — | — | — | |||
| ▲ シグナル | ||||||||
| 📋 条件 | — | — | ||||||
| ↗ エスカレーション | — | — | ||||||
| ⬤ 終了 | — | — | — | — | — | — | — | |
| ⏪ 補償 | — | — | — | — | ||||
| ✖ キャンセル | — | — | — | — | — | — | ||
| ➡ リンク | — | — | — | — | — | — | ||
| ⬠ 複数 | ||||||||
| ➕ 並列複数 | — | — | ||||||
特定の相手とのやり取り:メール、電話、HTTP、push。すべての位置で使えます。
日時、間隔、カウントダウン(期限)。キャッチのみ。
重大な失敗。キャッチは境界のみ、スローは終了のみ。
外部の条件(「オーブンが温まった」)を待ちます。キャッチのみ。
ブロードキャスト(宛先付きメッセージとは対照的)。購読しているすべての対象が反応します。
プロセスインスタンス全体を直ちに停止します。終了イベントのみ。
タスク3が終わった後にタスク2を続ける意味がなくなった場合はどうでしょうか。そのときは次のパターンを使います:
フローの「テレポート」。スローとキャッチのペアが長い矢印を置き換えます。中間イベントのみ。
すでに完了した処理を取り消します。補償タスクは関連(アソシエーション)で結ばれます。
サブプロセスから親へ送られます。エラーではありません。非割り込み型にもできます。
トランザクションの文脈でのみ使用します。終了ではロールバック、境界ではキャッチ。
角を折った「紙」の形。プロセスインスタンス内でタスク間で作成・消費・受け渡しされる情報を表します。インスタンスが生存している間だけ存在します。
円柱の形。プロセスインスタンスより長く存続する永続的なストレージです。データベース、レジストリ、ファイルストアなど。タスクはここから読み書きします。
プロセスまたはサブプロセスの境界にあるパラメータです。入力は外部から与えられるもの、出力は返されるもの。中抜き/塗りつぶしの三角形が付いた矢印で表します。
破線で任意の要素に付けるコメントです。実行には影響しません。図の読み手に説明を補うためだけに存在します。
破線の角丸長方形。要素の視覚的なグルーピング(例:「すべての物流タスク」)です。実行上の意味は持たず、フローはその境界を自由に越えられます。
塗りつぶしの矢じりを持つ実線の矢印。1つのプール内での実行順序を定義します。プールの境界を越えることはできません。
条件フロー(始点に小さなひし形が付く)は、条件が真の場合にのみ発火します。ゲートウェイを使わずにタスクから出る矢印に用います。
デフォルトフロー(始点に斜線マークが付く)は、XOR/ORゲートウェイや条件分岐のフォールバック経路で、他のどの条件も成立しない場合に選ばれます。
中抜きの矢じりを持つ破線の矢印。異なるプール同士をつなぎ、独立した参加者間でやり取りされるメッセージを表します。1つのプール内では使いません。
二重の枠線を持つサブプロセス。ACIDの性質を持ち、内部のすべての処理が正常にコミットされるか、あるいはCancelイベントによって(補償を伴って)トランザクション全体がロールバックされます。分散処理の一貫性を保つために使います。