- はじめに
- 基本情報
- BPMN を使用したプロセス モデリング
- ケース管理を使用したプロセス モデリング
- フローを使用したプロセス モデリング
- プロセスの実装
- プロセスの操作
- プロセスの監視
- プロセスの最適化
- 参考情報
障害が発生したノードをエラー ハンドラーにルーティングし、エラーの詳細をログに記録し、一時的な障害をリトライし、回復不能なエラーを正常に終了します。
構築する内容: 障害が発生したノードを別のパスにルーティングし、有用なコンテキストを使用して失敗を記録し、意味のある場所で一時的な失敗をリトライし、エラーが回復不能になったときに正常に終了するワークフロー。このガイドを終えると、既存のワークフローにドロップできるパターンが完成します。
必要なもの
- Maestro Flow へのアクセス権を持つ UiPath Automation Cloud アカウント。
- 既存のフロー ワークフローに、失敗する可能性があり、エラー ハンドルを公開するノードが少なくとも 1 つある (HTTP 要求ノードや抽出ノードなど)。
使用されるノード
手順
1. ノードのエラーハンドルを接続する
既定では、ノードに障害が発生するとプロセス全体が停止します。代わりに、この失敗を処理するには、以下の手順を実行します。
- キャンバス上でワークフローを開き、失敗しやすいノードを選択します。
- エラー ハンドル (ノードの右下にあるコネクタ) から新しい スクリプト ノードにドラッグします。
これによりエラー パスが作成されます。ノードに障害が発生すると、実行はプロセスを停止するのではなく、このパスに従ってルーティングされます。(エラー ハンドルを公開しないノードはエラー処理をサポートしていません。エラーが失敗するとプロセスが停止し、[ インシデント ] タブに表示されます)。
2. エラーをログに記録する
エラー パスのスクリプト ノードで、 $vars.<node>.errorにあるエラー オブジェクトを読み取ります。
const error = $vars.httpRequest1.error;
console.log('Step failed:', error.message);
console.log('Code:', error.code, '| HTTP status:', error.status);
return { logged: true };
const error = $vars.httpRequest1.error;
console.log('Step failed:', error.message);
console.log('Code:', error.code, '| HTTP status:', error.status);
return { logged: true };
エラー オブジェクトは、エラー パスにのみ入力されます。フィールドの完全な参照については、「 エラー処理」をご覧ください。
3. 一時的なエラーをリトライする (任意)
障害が一時的なものである可能性が高い場合 (ネットワークのブリップやレート制限など) は、あきらめる前にリトライしてください。HTTP 要求ノードには、リトライ回数が組み込まれています。プロパティでリトライ回数を設定すると、エラー ハンドルをトリガーする前に要求を何度も再試行します。最後の失敗のみがエラー パスにルーティングされます。
べき等操作のみをリトライします。副作用 (データの書き込み、メッセージの送信) があるノードをリトライすると、重複が作成される可能性があります。
4. 回復できない場合は終了する
エラー パスのスクリプト ノードの後に [強制終了 ] ノードを追加します。セット:
- ステータス →
Failed - メッセージ → エラーを含む説明が記述されます (例:
$vars.httpRequest1.error.message
これにより、失敗が実行履歴に有用な説明とともに記録されます。この説明は、「 実行を監視する」に表示されます。
5. テストとデバッグ
エラー パスを意図的にトリガーするには、以下の手順を実行します。
- HTTP 要求ノードの URL を一時的に無効な値 (例:
https://this-will-fail.example.com) に設定します。 - テストを実行し、実行トレースのルートがエラー パスに沿って進んでいることを確認します。
- 正しい URL を復元します。
トレース内のスクリプト ノードのコンソール出力を調べて、エラーの詳細がログに記録されていることを確認します。
結果
ワークフローでは、失敗をエラー パスにルーティングし、エラーの詳細をログに記録し、必要に応じて一時的な失敗をリトライし、エラーのステータスできれいに終了します。エラー パスが機能することを確認するには、HTTP 要求ノードで無効な URL を使用し、実行トレースでスクリプト ノードのコンソール出力を調べます。
このワークフローを拡張する
- 失敗時にアラートを送信 — エラー パスの [強制終了] ノードの前に、Slack チャンネルに通知したり、インシデント チケットを作成したりするための HTTP 要求ノードまたは統合ノードを追加します。
- 終了せずに続行 — ステップが重要でない場合は、エラー パスにフォールバック値を設定してもらい、終了せずにメイン パスに再結合します。
- このパターンをあらゆる場所に適用 — その他のパターン (ログを記録して続行、フォールバック値、エスカレーション) については、「 エラー処理の リファレンス」をご覧ください。