ご参考になれば、ぜひ X(@utanesuke_papa)をフォローしてください。UiPath の技術情報や AI 実装に関する話題を、できるだけ早くお届けしています。
前編では、BPMN における基本的なフロー制御パターンを中心に、プロセス内部の動き方を整理しました。
後編となる本記事では、外部サービスとのメッセージ交換をどのように表現するか に焦点を移し、BPMN の「サービス連携パターン」 を紹介します。
業務プロセスが他のシステムやサービスと連携する場面は多く、
同期・非同期の呼び出し、複数応答、通知待ち など、実務ならではの振る舞いを正しくモデル化することが重要です。
ここでは、それぞれのパターンの特徴と使いどころを整理し、UiPath Maestro ではどのように実現できるのかもあわせて解説していきます。
ここで紹介するパターンと解説は、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.13からNo.22までのサービス連携に関するパターンに焦点を当てて紹介します。
サービス要求受信
サービス要求受信は、対象プロセスを Web サービスとして公開し、外部クライアントからのリクエストを受信し、その内容に応じてレスポンスを返す一連のメッセージ交換を表すパターンです。
プロセスが外部システムからの入力をトリガーとして動作する場合に利用されます。
13. 同期型受信応答
同期型受信応答は、自プロセスを同期型の Web サービスとして公開し、クライアントからの要求を受信して処理を行い、その結果を応答として返す際に使用するパターンです。
クライアントは要求を送信したあと、応答が返ってくるまで待機する必要があり、その間はほかの処理を進めることができません。
- クライアントからの要求を待ち、要求を受け取ったらプロセスを開始する
- サブプロセスを実行する
- サブプロセスの実行が完了したら、クライアントに応答を送信する
※ クライアントは、要求を送信してから応答を受信するまでの間、他の処理を実行できない
UiPath Maestroでのシナリオ例:
① クライアントからの予約依頼を受け取る
(予約依頼を受け取るとプロセスをインスタンス化し、プロセスを開始する)
② 認証サービスを呼び出し、クライアントを認証する
③ 認証サービスからの応答を確認し、後続のフローに進むかを決定する
認証OKの場合:
④-1 ホテル予約サービスを呼び出し、ホテルを予約する
⑤ クライアントに予約結果を送る
認証NGの場合:
④-2 クライアントに予約不可通知を送る
※ クライアントは予約依頼を送信してから、予約結果または予約不可通知を受信するまでの間、他の処理を実行できない
14. 非同期型受信応答
非同期型受信応答は、自プロセスを非同期型の Web サービスとして公開し、クライアントからの要求を受信したあと、処理結果を応答として送信する場面を表すために使用します。
クライアントは要求を送信したあとも応答を待ち続ける必要がなく、その間に別の処理を進めることができるのが特徴です。
シナリオ:
- クライアントからの要求を待ち、要求を受け取ったらプロセスを開始する
- サブプロセスを実行する
- サブプロセスの実行が完了したら、クライアントに応答を送信する
※ クライアントは、要求を送信してから応答を受信するまでの間、他の処理を実行できる
予約作業の流れは「13.同期型受信応答」と同じです。
① クライアントからの予約依頼を受け取る
(予約依頼を受け取るとプロセスをインスタンス化し、プロセスを開始する)
② 認証サービスを呼び出し、クライアントを認証する
③ 認証サービスからの応答を確認し、後続のフローに進むかを決定する
認証OKの場合:
④-1 ホテル予約サービスを呼び出し、ホテルを予約する
⑤ クライアントに予約結果を送る
認証NGの場合:
④-2 クライアントに予約不可通知を送る
※ クライアントは予約依頼を送信してから、予約結果または予約不可通知を受信するまでの間、他の処理を実行できる
15. 非同期型受信
非同期型受信は、自プロセスを非同期型の Web サービスとして公開し、クライアントからの要求を受信したあと、あらかじめ定められた処理を実行する場面を表すために使用します。
このパターンではクライアントへ応答を返さず、片方向のメッセージ受信として処理が進む点が特徴です。
- クライアントからの要求を待ち、要求を受け取ったらプロセスを開始する
- サブプロセスを実行する
- サブプロセスを完了したら、プロセスを終了する
① クライアントからの出力依頼を受け取る
(出力依頼を受け取るとプロセスをインスタンス化し、プロセスを開始する)
② クライアントからの出力依頼で指定された帳票の種類によって、後続のいずれのフローに進むかを決定する
②-1 受注履歴帳票の場合は、受注管理サービスを呼び出し、受注履歴を確認する
②-2 発注履歴帳票の場合は、発注管理サービスを呼び出し、発注履歴を確認する
③ 帳票出力サービスを呼び出し、帳票を出力する
16. タイマー通知受信
タイマー通知受信は、タイマーによる監視を行い、タイムアウトが発生した場合にのみクライアントへ通知メッセージを送信する振る舞いを表すために使用します。
このパターンでは、タイムアウトが発生しても通常の処理フローは中断されず、クライアント側も引き続き応答を待つ点が、タイマー例外パターンとの大きな違いです。
シナリオ:

① クライアントからの要求を待ち、要求を受け取ったらプロセスを開始する
② サブプロセスを実行する
③ サブプロセスが完了する前に、タイマー境界イベント(中断なし)であらかじめ決められた時間が経過した場合のみ、タイマー通知を送信する
④ サブプロセスが完了したら、クライアントに応答を送信する
※ タイマー通知を送信した場合でも、クライアントに応答を送信する
① クライアントからの注文を受け取る
(注文を受け付けるとプロセスをインスタンス化し、プロセスを開始する)
② 入金管理サービスからの入金通知の受信を待つ
③ 入金通知の受信前に、注文受付後 10 日間の期限がきた場合には、クライアントに入金督促通知を送る
④ 入金管理サービスから入金通知を受信したら、配送管理サービスを呼び出し、商品配送を依頼する
⑤ 商品配送の依頼が完了したら、プロセスを終了する
サービス呼び出し
サービス呼び出しは、対象プロセスが外部の Web サービスを実行制御する際のメッセージ交換を表すパターンで、オーケストレーションにおける中心的な役割を持ちます。
外部システムとの連携を前提とした業務プロセスにおいて、必要なサービス機能を呼び出し、結果を受け取る流れを明確に表現できます。
17. 同期型要求
同期型要求は、同期型 Web サービスに対して要求を送信し、その応答を受信するまで処理を待つ場合に使用するパターンです。
要求送信後は応答が返ってくるまで待機状態となり、その間はほかの処理を並行して実行することはできません。
上記の動作は流れがシンプルなため、GIF 動画による動作例の掲載は省略します。
① クライアントからの注文を受け取る
② 在庫管理サービスを呼び出し、商品情報メッセージを送信する
③ 在庫管理サービスから応答メッセージ(在庫数量)の受信を待機する
④ 応答メッセージを受信したら、後続のフローに進む
18. 非同期型要求
非同期型 Web サービスを呼び出して要求を送信し、その応答を受信するといった非同期型のメッセージ送受信を表すために使用する。
要求を送信したら後続のフローに進み、応答を受信するタスクまで進むと応答を待機するため、送受信の間に他の処理を実行することもできる。
UiPath Maestroでのシナリオ例:
上記の動作は流れがシンプルなため、GIF 動画による動作例の掲載は省略します。
① クライアントからの注文を受け取る
② 商品配送管理サービスを呼び出し、配送依頼メッセージを送信する
③ クライアントに配送予定日を通知する
④ ②の配送依頼メッセージに対する応答を待ち、応答メッセージを受信したら、後続のフローに進む
19. 複数応答受信(順次)
複数応答受信(順次)は、非同期型 Web サービスに要求を送信し、複数の応答をあらかじめ定められた順序で受信する場面を表すために使用します。
応答は決められた順番どおりに処理されるため、処理の流れを明確に表現できるのが特徴です。
① サービスを呼び出し、メッセージを送信する
② メッセージを送信したら、「応答受信1タスク」で応答メッセージを受信する
③ 「応答受信1タスク」で応答メッセージを受信したら、「応答受信2タスク」で応答メッセージを受信する
上記の動作は流れがシンプルなため、GIF 動画による動作例の掲載は省略します。
① ショッピングサイトにメッセージを送信し、商品を注文する
② ショッピングサイトから応答メッセージ(出荷予定日)を受信する
③ ショッピングサイトから応答メッセージ(出荷完了通知)を受信する
20. 複数応答受信(順不同)
複数応答受信(順不同)は、非同期型 Web サービスに要求を送信し、複数の応答を順序を意識せずに受信する場面を表すために使用します。
各応答は到着した順に処理されるため、応答順が保証されないケースや、並行して結果を受け取りたい場合に適したパターンです。
① 販売管理プロセスから出荷依頼を受け取る
② 作業リストアプリケーションに作業指示を送信する
③ 作業リストアプリケーションから「出荷伝票作成の完了通知」または「出庫の完了通知」が送信されてくるのを待機する
④ 「出荷伝票作成の完了通知」または「出庫の完了通知」のいずれかが送信されてきたら、その通知を受信し、もう一方の通知が送信されてくるのを待機する
⑤ もう一方の通知も送信されてきたら、その通知を受信し、作業リストアプリケーションに荷揃え・梱包指示を送信する
21. 複数応答受信 (選択)
複数応答受信(選択)は、非同期型 Web サービスに要求を送信し、複数の応答候補の中から最初に到着した応答のみを受信する場面を表すために使用します。
どの応答を受信したかによって後続の処理フローを切り替えることができるため、複数の結果の中から一つを選択するようなケースに適したパターンです。
① サービスを呼び出し、メッセージを送信する
② メッセージを送信したら、「応答受信1」イベントと「応答受信2」イベントで、①で送信したメッセージに対する応答を待つ
③ 「応答受信1」イベントと「応答受信2」イベントが受信する応答メッセージのうち、先に送信されてきたメッセージを受信する
④ ③で応答を受信したイベントの後続サブプロセスを実行する
④-1 「応答受信1」イベントで受信した場合には、「サブプロセス1」を実行する
④-2 「応答受信2」イベントで受信した場合には、「サブプロセス2」を実行する
※ その後、③で応答を受信しなかった応答が送信されてきても受信せず、そのイベントの後続サブプロセスも実行されない
UiPath Maestroでのシナリオ例:
① クライアントからの注文を受け取る
② 在庫管理サービスを呼び出し、メッセージを送信する
③ 在庫管理サービスからの応答メッセージを待ち、その応答によって後続の作業を決定する
③-1 在庫ありを受け取った場合には、商品出荷サブプロセスを実行する
③-2 在庫なしを受け取った場合には、商品発注サブプロセスを実行する
※ 複数応答受信(選択)では、応答受信タイムアウトが発生した場合の例外的な振る舞いを表すために前述のタイマー例外パターンを使用せず、下図のようにイベント ゲートウェイとタイマー中間キャッチ イベントをシーケンスフローで接続する。

22. 複数応答受信 (任意応答)
複数応答受信(任意応答)は、非同期型 Web サービスに要求を送信し、必ず受信する必要のある必須応答に加えて、状況に応じて送信される任意の応答も受信する場面を表すために使用します。
必須応答を待ちつつ、追加情報や補足通知などの任意応答を柔軟に扱いたい場合に適したパターンです。
UiPath Maestroでのシナリオ例:
① クライアントからの注文を受け取る
② 「配送センタープロセス」にメッセージを送信し、商品の配送を依頼する
③ 「出荷完了通知」と「出荷遅延通知」のうち、先に送られてきたメッセージを受信する
③-1 出荷完了通知を受信した場合には、クライアントに配送予定日を送信し、プロセスを終了する
③-2 出荷遅延通知を受信した場合には、クライアントに配送の遅延を通知し、「出荷完了通知」を待ち続ける
最後に
本記事では、BPMN の「サービス連携パターン」 に焦点を当て、サービス要求の受信、サービス呼び出し、複数応答の扱いなど、外部サービスとのメッセージ交換をどのように表現するか を整理しました。
前編のフロー制御パターンとあわせて、BPMNを「記号の理解」から「設計に使える道具」 として活用する際の参考になれば幸いです。













