
みなさま、こんにちは。植木です。
前回の記事では、MaestroのBPMN要素の種類をご紹介しました。
本記事はその続編として、「選んだ要素をどう実装するか」に焦点を当ててご紹介します。
各要素の種別・使い分け・画面操作の詳細は以下の記事をご参照ください。
【UiPath Agents】Maestro BPMN要素リファレンス
【UiPath Agents】Maestro の使い方
※本記事は、2026年3月時点の情報をもとに作成しております。
目次
1. 実装を始める前に
1-1. ソリューションの構成を理解する
Maestroのプロセスは、Studio Web のソリューションとして、
複数の関連プロジェクトをまとめて管理します。
実装を始める前に、以下の5種類のプロジェクトの役割を把握しておきましょう。
| プロジェクト種別 | 役割 | 主な用途 |
| エージェンティックプロセス | プロセス本体 | BPMNキャンバスでフローを定義 |
| エージェント | AIエージェント | サービスタスクから呼び出すAIエージェント |
| RPAワークフロー | RPAワークフロー | サービスタスクから呼び出すRPA |
| APIワークフロー | APIワークフロー | サービスタスクから呼び出すAPIワークフロー |
| アプリ / エスカレーションアプリ | カスタムUI | ユーザータスク用のアクションアプリ(承認フォーム等) |
1-2. 実装の全体フロー
プロセス実装は、以下の流れで進めます。
① BPMNキャンバスで業務プロセスをモデル化
② 各要素のプロパティパネルで実装を設定
③ 変数・式エディタでデータの受け渡しを定義
④ エラー処理・リトライを設定
⑤ デバッグ実行で検証 → 公開・デプロイ
1-3. 変数と式エディタ
要素間のデータ受け渡しには変数と式エディタを使います。
| 変数種別 | スコープ | 使いどころ |
| グローバル変数 | プロセス全体で永続 | 複数タスク間で共有するデータ(申請ID・顧客情報等) |
| インスタンス変数 | 実行インスタンス固有 | 特定の実行インスタンスだけで使うデータ |
補足①:式エディタでは、インテリセンス("Ctrl+Space" で利用できるコード補完・入力支援)、Autopilotによる式の生成支援、構文チェック・テスト機能を利用できます。
補足②:JavaScript式の利用が推奨されています。
以前のバージョンでC#式を使用していた方は、以下の対応表を参考に書き換えてください。
Maestro ユーザーガイド - C# 式から JavaScript 式に移行する
2. 実装リファレンス
以下の表を参考に、各要素のプロパティパネルで設定してください。
2-1. タスク
| タスク | 実装設定 | 実装のポイント |
| サービスタスク | RPA / Agent / コネクタ / キュー等のアクションを選択 | 入力 / 出力 で変数をマッピング。リトライ設定可能 |
| ユーザータスク | 任意のアクションアプリを選択 | 担当者が完了するまでプロセスは一時停止。リトライ設定不可 |
| スクリプトタスク | 「スクリプトを実行」を選択し、任意のスクリプトを設定 | "return" で値を返す。Autopilotで自然言語からコード生成可能 |
| ビジネスルールタスク(プレビュー) | Orchestratorで設定したビジネスルールを選択 | Orchestratorにルールを登録するだけで利用可能(ルールの更新時もプロセス再デプロイ不要) ※.dmnファイル必須 |
| 送信タスク | Integration Serviceで設定済みのコネクタを選択 | Integration Service経由でメッセージ送信 |
| 受信タスク | Integration Serviceで設定済みのコネクタを選択 | 外部からのトリガーを待機してプロセスを再開 |
補足①:サービスタスクの 入力/出力 の例
例:サービスタスクで実行するRPAに 入力/出力 の引数がある場合、下図のようにプロパティに表示され、
Maestroの変数とRPAの引数の値の受け渡しを設定できます。
補足②:Script Task の記述例
"return" で値を返すことが記述のポイント
■文字列結合の例
return vars.str1 + "test";
■数字を日本円の表記に変更する例
------------------------------------------------------------------------------------------
const formattedNumber = vars.number1.toLocaleString('ja-JP');
const result = formattedNumber + '円';
return result;
------------------------------------------------------------------------------------------
詳細は以下の公式ドキュメントもご参照ください。
Maestro ユーザーガイド - スクリプトタスク
補足③:ビジネスルールタスクの例
DMNファイルを作成し、Orchestratorのビジネスルールに登録後、
「ビジネスルールタスクを実行」からルールを選択すると、
登録されたビジネスルールに基づき、入力値に応じた結果が出力されます。
※現在はプレビュー版で動作が不安定な部分もあるため、DMNファイルの作成方法は割愛します。
2-2. イベント
開始・終了・中間イベント
| イベント | 設定内容 |
| 開始イベント(条件なし) | 設定不要。手動トリガーまたは他プロセスからの呼び出しで起動 |
| タイマー開始イベント | タイマーでスケジュールと繰り返し間隔を定義 |
| メッセージ開始・メッセージ終了イベント | Integration Serviceのコネクタを選択 |
| 終了イベント(条件なし) | 設定不要。そのパスの処理を終了 |
| エラー終了イベント | エラーラベル・エラーコードを設定(※未設定だとエラー) |
| 強制終了イベント | 設定不要。プロセス全体を即時停止 |
| メッセージ中間スロー・キャッチイベント | Integration Serviceのコネクタイベントを選択 |
| タイマー中間キャッチイベント | タイマーで次のステップまで一定時間待機 |
※タイマー中間キャッチイベントは「到達した時点」から評価されます。
日付種別で指定時刻を過ぎていた場合は即時通過するため注意してください。
境界イベント
| 種別 | 動作 | 使いどころ |
| 中断 | タスクを中断して別経路へ | タイムアウト、エラー捕捉など |
| 中断なし | 並列パスを起動し元タスクは継続 | 定期リマインダー、段階的エスカレーションなど |
■境界イベントの設定例(RPA実行中にエラー発生、または一定時間経過後にエラー処理に移行する例)
境界イベントを対象タスクの枠に設定し、
タイマー条件やエラーのキャッチ条件を設定し分岐先フローを接続。
2-3. ゲートウェイ
| ゲートウェイ | 実装時の注意点 |
| 排他 | 条件は上から順に評価、最初にtrueの1経路のみ実行。デフォルト経路を必ず設定する。(未設定で全条件falseだと実行エラー) |
| 包括 | trueの全経路を並列実行。全条件falseで実行エラーになるため、無条件の経路を1つ定義して対策する。 |
| 並列 | 条件なしで全経路を同時実行。原則、分岐とペアになる合流を配置する。 |
| イベント | 後続は中間キャッチイベントのみ。1つのイベントが来たら他はキャンセルされる。 |
補足①:条件式の設定
条件式はJavaScriptの構文で記述します。
- vars.文字列型変数 === "文字列" // 文字列比較の例
- vars.数字型変数 > 100000 // 数値比較の例
- vars.score >= 80 && vars.region === "JP" // 複合条件の例
2-4. サブプロセス・マルチインスタンス
サブプロセス
| 種別 | 変数スコープ | 設定の要点 |
| サブプロセス | 親と共有(追加設定不要) | サブプロセス内部に「開始→タスク→終了」のフローを構築。外枠に境界イベント付与可能。 |
| コールアクティビティ | 呼び出し先と独立 | プロパティで呼び出し先プロセスを選択し、入力 / 出力 で明示的にマッピング。再利用ロジックの分離に有効。 |
| イベントサブプロセス | 親と共有 | 通常フローとは接続せず配置。内部の開始イベントでトリガー(エラー/タイマー/メッセージ)と中断/非中断を設定。 |
マルチインスタンス
| 種別 | 動作 | 使いどころ |
| シーケンシャル(順次) | 1件ずつ順次実行 | 処理順序が重要な場合 |
| 並列 | 同時実行(最大50件/バッチ) | スループットを上げたい場合 |
対応する型:`List`, `IList`, `IEnumerable`, `DataTable`, `JArray`, プリミティブ配列。
50件超のリストは事前にスクリプトタスクなどで分割が必要です。
設定方法の詳細は以下の記事をご参照ください
【UiPath Agents】Maestro BPMN要素リファレンス - "5. サブプロセス・マーカー
3. エラー処理とリトライ
3-1. エラー処理
Maestroのエラー処理は2層構造です。
プロセス全体で利用される任意のエラーコード(エラー名)を定義し、
各要素のプロパティで捕捉ルールを設定します。
エラー条件はリストの上から順に評価されるため、具体的な条件ほど上に配置してください。
| エラーマッピングのプロパティ | 説明 |
| 条件 | 適用条件式(空欄なら無条件で捕捉) |
| エラー | 捕捉側が参照する際のエラー名(任意の名前を設定可能) |
| 詳細(任意) | 説明テキスト |
参考:実行結果
3-2. リトライ
タスクのエラー発生時のリトライ回数を設定します(ユーザータスク・手動タスクは対象外)
| パラメータ | 説明 |
| 最大リトライ回数 | 最大リトライ回数を指定する |
| 初期待機時間 | 初回リトライの待機時間 |
| バックオフ(リトライ待機時間) | 静的(一定)/ 線形(線形増加)/ 指数(指数増加) |
| エラー発生時にリトライ | すべてのエラーでリトライするか、設定されたエラーの場合のみリトライするかを指定する |
補足:リトライ待機時間の指数増加の例
1回目: 1秒後 → 2回目: 2秒後 → 3回目: 4秒後 → 4回目: 8秒後
まとめ
本記事では、ソリューション構成の理解から、
タスク・イベント・ゲートウェイ・サブプロセスの実装設定、
エラー処理・リトライまでをご紹介しました。
ぜひ実際にプロセスを作成しながら、各要素の動作を確認してみてください。
本記事がMaestroのプロセス実装の参考になれば幸いです。
他のおすすめ記事はこちら
著者紹介
SB C&S株式会社
ICT事業本部 技術本部 第1技術統括部 第2技術部 3課
植木 真
