4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UiPath MaestroにおけるBPMN パターンの紹介 フロー制御 編

Last updated at Posted at 2025-12-16

前回の記事では、BPMNの基本要素や記号、それぞれの意味について整理しました。

しかし、実際の業務でBPMNを活用しようとすると、「どの場面でどのパターンを使えばよいのか」「どう組み合わせれば分かりやすい図になるのか」と悩む方も多いはずです。

そこで今回は、BPMNを実務で使う際に役立つ“具体的なパターン”に焦点を当て、代表的なユースケースを例とともに解説します。

前回の知識を土台に、より実践的なBPMNの描き方を身につけていきましょう。

ここで紹介するパターンと解説は、BPMN研究会がまとめた「ローレベルBPMNパターン」をもとに、UiPath Maestroでどのように実現できるかを補足した内容になっています。

パターン一覧

BPMNには多くの表現方法がありますが、実際の業務フローで頻繁に登場するパターンはある程度決まっています。
ここでは、プロセス設計や改善の場面で特に活用される代表的なパターンを整理しました。

それぞれのパターンで「どんな場面で使われるのか」「どの記号を選ぶべきか」が直感的にわかるよう、シンプルな例を交えて紹介していきます。
まずは全体像として、よく使われるパターンを一覧で確認してみましょう。

カテゴリ名 サブカテゴリ名 No パターン名
フロー制御 基本制御 1 逐次実行
2 並列実行 (AND)
3 タイマーイベント待ち
4 プロセス即時終了
経路選択 5 排他選択 (XOR)
6 包括選択 (OR)
ループ制御 7 標準ループ
8 マルチインスタンスループ
例外処理 9 メッセージ例外
10 タイマー例外
11 エラー処理
12 補償処理
サービス連携 サービス要求受信 13 同期型受信応答
14 非同期型受信応答
15 非同期型受信
16 タイマー通知受信
サービス呼出 17 同期型要求
18 非同期型要求
19 複数応答受信 (順次)
20 複数応答受信 (順不同)
21 複数応答受信 (選択)
22 複数応答受信 (任意応答)

本記事では、No.1からNo.12までのフロー制御に関するパターンに焦点を当てて紹介します。

基本制御

基本制御は、あるアクティビティが完了したあとに次のアクティビティへ処理がどのように進むかを示す、最も基本的なフローパターンです。
あらかじめ決められた静的な実行順序に従って処理が進む点が特徴です。
一方で、分岐条件によって次の処理が変わるパターンや、繰り返し回数が動的に決まるようなパターンは含まれません。

業務プロセスをシンプルに表現したい場合や、一連の手順が常に同じ順番で実行される場面で、最もよく利用される制御方式です。

1. 逐次実行

逐次実行は、あるアクティビティが終わったあとに、続けて次のアクティビティが始まるという、決められた順番で進む流れを表すときに使います。
シンプルな手順がそのまま順に進んでいく場面でよく利用されるパターンです。

image.png

シナリオ:

  • 「タスクA」を実行する
  • 「タスクA」が完了したら、「タスクB」を実行する
  • 「タスクB」が完了したら、「タスクC」を実行する

UiPath Maestroでのシナリオ例:
01逐次実行.gif

2. 並列実行 (AND)

並列実行(AND)は、二つ以上のアクティビティを同時に開始し、並行して進めたいときに使うパターンです。
複数の作業を同時に進める必要がある場面をシンプルに表現できます。

image.png

シナリオ:

  • 「タスクA」を実行する
  • 「タスクA」が完了したら、三つのタスク「タスクB」、「タスクC」、「タスクD」を同時並行で実行する
  • 三つのタスク「タスクB」、「タスクC」、「タスクD」の全てが完了したら、「タスクE」を実行する

UiPath Maestroでのシナリオ例:
02.並列実行.gif

たとえば、上記のようにホテル予約サービスと航空券予約サービスを同時に呼び出し、まとめて予約処理を進めたいケースに適しています。

3. タイマーイベント待ち

タイマーイベント待ちは、プロセスの途中で決められた時間が来るまで処理をいったん止めて待つ場面を表すために使います。
時間による待機が必要なステップを、わかりやすく表現できるパターンです。
image.png

シナリオ:

  • 「タスク A」を実行する
  • 「タスク A」が完了したら、あらかじめ決められた時間が経過するまで待機する

※あらかじめ決められた時間として、「17 時になるまで待つ」などの定時刻指定、「タスク A 完了後、1 時間経過するのを待つ」などの経過時間指定の 2 通りがある

  • 時間が経過したら「タスク B」を実行する

UiPath Maestroでのシナリオ例:(定時刻指定の場合):
03.タイマーイベント待ち.gif

  • 「注文を受け付ける」を実行する
  • 「注文を受け付ける」の完了が17時前ならば17時になるまで待ち、もし「注文を受け付ける」の完了が17時を過ぎていれば、待たずに次の作業を実行する (補足)
  • 17時になったら「配送計画を立てる」を実行する

補足:

「注文を受け付ける」
完了時刻
タイマー動作 「配送計画を立てる」
開始タイミング
16:50 17:00 まで 10 分待つ 17:00
16:59 1 分待つ 17:00
17:05 すでに条件成立 → 待ち時間なし 即時開始

タイマー中間キャッチイベントは 到達した時点から時間を評価します。

4. プロセス即時終了

プロセス即時終了は、並行で進んでいるアクティビティが他に残っていても、プロセス自体をその場で終了させたいときに使うパターンです。
特定の条件が満たされた時点で、残りの処理を行わずにプロセスを早期に終わらせる動作を表現できます。

image.png

シナリオ:

  • 「タスクA」を実行する
  • 「タスクA」が完了したら、「タスクB」と「タスクC」を同時に並列で実行する
  • 「タスクC」が完了したら、プロセスを終了する
    • 「タスクC」が完了した時、「タスクB」が実行中であってもプロセスを終了する
  • 「タスクB」が完了した時に、「タスクC」も完了してればプロセスを終了するが、「タスクC」が実行中であればプロセスを終了しない

UiPath Maestroでのシナリオ例:
04.プロセス即時終了.gif

👆上記のように、「配送を依頼する」タスクでは、エラーが発生し、下のシステム異常フローに流れます。「配送可能日を通知する」タスクが実行中であっても、プロセスを即時終了させます。

特記事項:

強制終了イベントを除く通常の終了イベントは、並列に分岐したすべてのフローが終了イベントへ到達した時点で、プロセス全体を終了します。

たとえば下図のように並列実行が行われている場合、プロセスが完了するのは「タスクB」と「タスクC」の両方が終わったタイミングとなり、どちらか片方だけでは終了しません

image.png

経路選択

経路選択は、処理が複数のフローに分かれる場面で、条件に応じてどのルートへ進むかを判断するためのパターンです。
業務内容によって進む方向が変わるため、プロセスの動きを柔軟に表現できるのが特徴です。

5. 排他選択 (XOR)

二つ以上のフローから、条件判定によって一つのフローだけが選択されるといった排他的なフロー選択の振舞いを表すために使用する。

image.png

このフローはシンプルですので、シナリオ及びパターン適用例を割愛します。

詳細について、以下の記事(ゲートウェイ(Gateway)→ 排他的ゲートウェイ)をご参照ください。

特記事項:

排他的ゲートウェイでは、デフォルトフローを省略することもできますが、その場合は必ずいずれかのフローが選ばれるように条件を設定しておく必要があります。

どの条件にも当てはまらず、どのフローも選択されない状態になると、フローが途中で途切れてしまい、プロセスとして無効なモデルになってしまいます

6. 包括選択 (OR)

包括選択(OR)は、複数のフロー候補の中から、条件に応じて一つまたは複数のルートを同時に選択する場面で使われるパターンです。
条件次第で選ばれるフローの数が変わるため、より柔軟な分岐の表現が可能です。
image.png

このフローはシンプルですので、シナリオ及びパターン適用例を割愛します。

詳細について、以下の記事(ゲートウェイ(Gateway)→ 包括的ゲートウェイ)をご参照ください。

特記事項:

包括的ゲートウェイでは、デフォルトフローを省略することもできますが、その場合は必ずいずれかのフローが選ばれるように条件を設定しておく必要があります。

どの条件にも当てはまらず、どのフローも選択されない状態になると、フローが途中で途切れてしまい、プロセスとして無効なモデルになってしまいます

注意事項:
包括的ゲートウェイでは本来デフォルトフローを設定できますが、現時点の UiPath Maestro ではデフォルトパスを指定することはできません。
そのため、どのフローも条件に当てはまらない状態が発生しないよう、条件設定を慎重に行う必要があります。

ループ制御

ループ制御は、タスクやサブプロセス、またはそれらを含む特定の処理ブロックを、定められた条件に従って繰り返し実行するためのパターンです。
同じ処理を一定回数実行する場合や、継続条件が満たされるまで反復を行う場合など、反復的な業務動作を表現する際に用いられます。

7. 標準ループ

標準ループは、タスクやサブプロセスといったアクティビティを、決められた条件に従って繰り返し実行したい場面で使用するパターンです。
同じ処理を何度も行う必要がある場合に、その反復動作をわかりやすく表現できます。

image.png

シナリオ:

  • 「タスクA」を実行する
  • 「タスクA」が完了したら、あらかじめ決められたループ条件を満たすまで、「タスクB」を繰り返し実行する。
    ※ 前の「タスクB」の完了を待ってから、次の「タスクB」を開始する
  • ループ条件が満たされたら、「タスクC」を実行する

UiPath Maestroでのシナリオ例:

image.png
1.クライアントからの注文を受け取る
2. 認証サービスを呼び出し、クライアントを認証する
3. 注文のメッセージを確認し、商品の種類の数だけ在庫管理サービスを呼び出し、在庫を確認する(1つの商品の在庫確認が完了したら、次の商品の在庫を確認する)
4. 配送管理サービスを呼び出し、配送を依頼する

注意事項:
標準ループでは本来ループを継続するための条件を設定できますが、現在の UiPath Maestro ではループマーカーはモデリング用途のみ、ループ条件を直接指定する機能は提供されていません。

8.マルチインスタンスループ

マルチインスタンスループは、コレクション(リストや配列)の各項目に対して、同じアクティビティを1回ずつ実行したい場合に使用します。
項目ごとに処理を繰り返す必要がある場面で便利なパターンです。実行方式によって以下の2種類があります。

種類 意味 実行時の注意事項
順次(シーケンシャル) 各項目を1つずつ順番に実行する 順序が維持され、前の項目が終わってから次の処理が開始します。
並列(パラレル) 複数の項目を同時に実行する 順序は保証されず、各項目が並行して処理されます。

8.1 順次(シーケンシャル) マルチインスタンス

順次(シーケンシャル)マルチインスタンスは、同じアクティビティ(タスクまたはサブプロセス)を、リスト内の各項目に対して1つずつ順番に実行する際に使用します。
現在の項目の処理が正常に完了してから次の項目へ進むため、処理順序が維持されるのが特徴です。
すべての項目に対する実行が終わると、後続のプロセスへ処理が進みます。

シナリオ:
image.png

① 「タスクA」を実行する。
② 「タスクA」が完了したら、リストに含まれる各項目に対して「タスクB」を順番に開始する。
 ※現在の「タスクB」が完了してから、次の項目の「タスクB」を開始する。
③ リスト内すべての項目に対する「タスクB」が完了したら、「タスクC」を実行する。

UiPath Maestroでのシナリオ例:
8.1 順次(シーケンシャル) マルチインスタンス (1).gif

① クライアントからの注文を受け取る。
② 認証サービスを呼び出し、クライアントを認証する。
③ 注文のメッセージを確認し、商品リストに含まれる各商品について、在庫管理サービスを 順番に1つずつ呼び出して在庫を確認する
 ※現在の商品の在庫確認が完了してから、次の商品に対する在庫確認を開始する。
④ すべての商品について在庫確認が完了したら、配送管理サービスを呼び出し、配送を依頼する。

8.2 並列(パラレル) マルチインスタンス

並列(パラレル)マルチインスタンスは、同じアクティビティ(タスクまたはサブプロセス)を、リスト内の複数の項目に対して同時に実行したい場合に使用します。
各項目の処理は並列して進むため、実行順序は保証されません。
すべての項目に対する処理が完了すると、後続のプロセスへ処理が進みます。

シナリオ:
image.png

① 「タスクA」を実行する。
② 「タスクA」が完了したら、リストに含まれる各項目に対して「タスクB」を並列で開始する。
③ ②で開始されたすべての「タスクB」が完了したら、「タスクC」を実行する。

UiPath Maestroでのシナリオ例:
8.2 並列(パラレル) マルチインスタンス (1).gif

① クライアントからの注文を受け取る。
② 認証サービスを呼び出し、クライアントを認証する。
③ 注文のメッセージを確認し、商品リストに含まれる各商品について、在庫管理サービスを 同時に並列で呼び出して在庫を確認する
 ※すべての商品に対する在庫確認が並列して実行されるため、処理順序は保証されない。
④ 全商品の在庫確認がすべて完了したら、配送管理サービスを呼び出し、配送を依頼する。

例外処理

例外処理パターンは、「例外的なメッセージを受信した」「処理がタイムアウトした」など、通常フローでは想定していない事象が発生した際に、処理を例外フローへ切り替える動作を表現します。
想定外の状態を適切に処理し、プロセスの堅牢性を高めるために活用される重要なパターンです。

9.メッセージ例外

メッセージ例外は、アクティビティの実行中に想定外のメッセージを受信した場合、その状況に応じた例外処理へ切り替えるために使用します。
メッセージを受け取ると、その時点でアクティビティの実行を中断し、通常どおり完了した場合とは異なる例外フローへ処理を進めます。

シナリオ:
image.png

  • ① 「タスクA」を実行する
  • ② 「タスクA」が完了する前に例外メッセージを受け取るか、受け取らないかによって後続フローの何れに進むかを決定する
    • ②-1 例外メッセージを受け取らず「タスクA」が完了した場合には、「タスクB」を実行する
    • ②-2 「タスクA」が完了する前に例外メッセージを受け取った場合には「タスクC」を実行する(メッセージ境界イベントから出力する例外フローに進む)

UiPath Maestroでのシナリオ例:
9.メッセージ例外.gif

① クライアントからの予約を受け取る
② 認証サービスを呼び出し、クライアントを認証する
③ ホテル予約サービスを呼び出す

ホテル予約サービスからの応答を受け取る前に、クライアントからのキャンセルを受け取った場合のフロー:
④ クライアントからキャンセルを受け取る
⑤ ホテル予約を中断し、クライアントにキャンセル応答を返す

10.タイマー例外

タイマー例外は、アクティビティの実行中にタイムアウトが発生した場合、その状況に応じた例外処理へ切り替えるために使用します。
設定した時間内にアクティビティが完了しないと、その時点で実行を中断し、通常どおり処理が完了した場合とは異なる例外フローへ進みます。

シナリオ:
image.png

  • ① 「タスクA」を実行する
  • ② 「タスクA」が完了する前にタイムアウトが発生するかによって後続フローの何れに進むかを決定する
    • ②-1 タイムアウトが発生せずに「タスクA」が完了した場合には「タスクB」を実行する
    • ②-2 「タスクA」が完了する前にタイムアウトが発生した場合には「タスクC」を実行する(タイマー境界イベントから出力する例外フローに進む)

UiPath Maestroでのシナリオ例:
10.タイマー例外.gif

① クライアントからの注文を受け取る
② 配送可能日を確認する
③ 配送を依頼するために、商品依頼管理サービスを呼び出す

以下、商品依頼管理サービスからの応答を受け取る前に、依頼応答タイムアウトが発生した場合のフロー

③ 依頼応答タイムアウトが発生する
④ システム監視コンソール(サービス)を呼び出し、システム異常を表示し、異常発生の通知を送信する

11.エラー処理

エラー処理は、アクティビティの実行中にエラーが発生した場合、その状況に応じた例外処理へ切り替えるために使用します。
エラーが発生すると、その時点でアクティビティの実行は中断され、通常どおり完了した場合とは異なる例外フローへ処理が進みます。

シナリオ:

image.png

  • ① 「タスクA」を実行する
  • ② 「タスクA」が完了したら、実行結果が正常か、異常かによって後続フローの何れに進むかを決定する
    • ②-1 正常な場合には「タスクB」を実行する
    • ②-2 異常な場合には「タスクC」を実行する(エラー境界イベントから出力する例外フローに進む)

UiPath Maestroでのシナリオ例:
11.エラー処理 (1).gif

① クライアントからの予約依頼を受け取る
② 予約依頼データ検証アプリケーションを呼び出し、予約依頼データを検証する

以下、検証結果が NG の場合のフロー
③ 予約依頼データ検証アプリケーションから検証 NG を受け取ると、検証エラーを発生させる
④ クライアントに予約依頼情報再入力通知を送る

12.補償処理

補償処理は、アクティビティの実行結果が望ましくないと判断された場合に、そのアクティビティを実行する前の状態へ戻すための処理を表す際に使用します。
いわば“巻き戻し”のような動きを表現するもので、後続フローを進める前に、必要な取り消しや調整を行いたい場面で利用されます。

シナリオ:

image.png

  • ① 「タスクA」を実行する
  • ② 「タスクA」が完了したら、「検証サブプロセス」を実行する
     ※「タスクA」の実行結果が望ましいものかを判定し、望ましくないと判定される場合にはエラーを発生させる
  • ③ 「検証サブプロセス」においてエラーが発生するかによって後続フローの何れに進むかを決定する
    • ③-1 エラーが発生せずに「検証サブプロセス」が完了した場合には「タスクB」を実行する
    • ③-2 エラーが発生した場合には「補償タスク」を実行する(「タスクB」は実行せず、「補償タスク」が完了したらプロセスを終了する)

注意事項:
補償タスクによる補償処理は BPMN では定義されているものの、現時点の UiPath Maestro では補償処理の実装をサポートしていません。

UiPath Maestro でサポートされている BPMN 要素は、以下のページをご参照ください:

最後に

本記事では、BPMN の中でも フロー制御に関する主要パターン を中心に、代表的な使い方と UiPath Maestro での表現方法を紹介しました。
逐次実行・並列実行・経路選択・ループ・例外処理といった基本的なパターンを押さえることで、業務フローをより分かりやすく、実務に沿った形でモデル化できるようになります。

一方で、包括的ゲートウェイのデフォルトパスや補償処理など、BPMNとしては定義されていても Maestro では未サポートの機能もあります。
モデルを作成する際は、仕様の違いを意識しながら活用してみてください。

次回は、サービス要求受信・サービス呼出などの「サービス連携パターン」 を取り上げます。
外部サービスとのメッセージ交換を BPMN と Maestro でどのように表現できるかを解説します。

参考資料

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?