- はじめに
- 開発
- デプロイして実行する
- 例
- 参照
エラーを処理する
失敗したノードをエラー パスにルーティングし、エラーの詳細を記録し、一時的な失敗をリトライし、回復不能なエラーでワークフローをクリーンに終了します。
構築するもの
障害が発生したノードを別のパスにルーティングし、有用なコンテキストを使用して失敗を記録し、意味のある場所で一時的な失敗をリトライし、エラーが回復不能になった時点で正常に終了するワークフロー。この結果、既存のワークフローに適合するパターンが作成されます。
開始する前に
- 失敗する可能性のあるノードが少なくとも 1 つあり、[ エラー処理 ] タブがある既存のワークフロー (HTTP 要求ノードや抽出ノードなど)。
使用されるノード
手順
コーディング エージェントが設定されていれば、手動の手順を省略できます。質問してください:
Add error handling to the HTTP Request node in this Maestro Automate workflow: connect its error path to a Script node that logs the error message, retry temporary failures, and end the run with a Terminate node when the error can't be recovered.
Add error handling to the HTTP Request node in this Maestro Automate workflow: connect its error path to a Script node that logs the error message, retry temporary failures, and end the run with a Terminate node when the error can't be recovered.
次に、キャンバス上でワークフローを開き、以下の手順と照合してテストします。コーディング エージェントを設定する 設定について説明しています。
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. 回復できない場合は終了する
エラー パスのスクリプト ノードの後に [強制終了 ] ノードを追加します。エラーの説明を返すには、ノードで [ 出力変数を追加 ] を選択し、エラーを含む値を指定します (例: $vars.httpRequest1.error.message)。
ワークフローは [強制終了] ノードで終了し、実行が [実行を監視] のリストに表示されます。
5. テストとデバッグ
エラー パスを意図的にトリガーするには、以下の手順を実行します。
- HTTP 要求ノードの URL を一時的に無効な値 (例:
https://this-will-fail.example.com) に設定します。 - Select Run Debug (▶) in the bottom toolbar of the canvas and verify that the execution trace follows the error path.
- 正しい URL を復元します。
トレース内のスクリプト ノードのコンソール出力を調べて、エラーの詳細がログに記録されていることを確認します。
結果
ワークフローは、失敗をエラー パスにルーティングし、エラーの詳細をログに記録し、必要に応じて一時的な失敗をリトライし、わかりやすい失敗ステータスできれいに終了します。HTTP 要求ノードの URL が無効であるため、エラー パスが機能していることが確認されます。
このワークフローを拡張する
- Send an alert on failure: on the error path, before the Terminate node, add an HTTP Request or connector node to notify a Slack channel or create a ServiceNow incident.
- 終了する代わりに続行する: ステップが重要でない場合は、エラー パスにフォールバック値を設定してもらい、終了せずにメイン パスに再結合します。
- このパターンを幅広く適用してください。「 エラー処理 」では、ログを記録して続行、フォールバック値、エスカレーションなど、さまざまなパターンについて説明します。
次のステップ
- ワークフローをデプロイする: ユーザーがいなくてもワークフローを実行します。
- ガイド: 構築するワークフローが増えます。
- コミュニティ: 構築したものを共有したり、他のビルダーに助けを求めたりします。