エラー時に実行するワークフロー
この記事では、ワークフロー編集画面上の設定項目「エラー時に実行するワークフロー」について紹介します。
【できるようになること】
- エラー発生時に別のワークフローを起動
- エラー発生時に同じワークフローを再実行
エラーハンドリング
エラー時に実行するワークフローの設定方法
下記手順にて、エラー時に実行するワークフローを指定します。
エラーの詳細情報を起動先ワークフローで取得する
本機能で実行されたワークフローでは、呼び出し元のワークフローのエラー詳細情報を取得できます。
この情報を利用して、エラー発生のワークフローの名前やIDなどを取得し、SlackやChatworkに送信することが可能になります。
この方法については、以下の記事をご参照ください。
起動先ワークフローにて${error}を呼び出すと、以下のようにエラー全体が取得できます。
{
"workflow": {
"name": "some workflow", // エラーが発生したワークフローの名前
"id": 123, // エラーが発生したワークフローのID
},
"message": "Error: something went wrong.", // エラーメッセージ
"task_name": "+open_browser_1", // エラーが発生したタスクの名前
"session_time": "2020-01-14T12:09:00+09:00", // エラーが発生したセッションの開始時刻
"session_queue_id": 111, // エラーが発生したセッションのID
"session_url": "https://console.autoro.io/projects/1/workflows/XX/attempts/456", // セッション詳細(ログ)画面のURL
}各内容は、以下のように記述すると文字列として出力できます。
${error.workflow.name}
→エラーが発生したワークフローの名前${error.workflow.id}
→エラーが発生したワークフローの名前${error.message}
→エラーが発生したワークフローの名前${error.task_name}
→エラーが発生したワークフローの名前${error.session_time}
→エラーが発生したワークフローの名前${error.session_queue_id}
→エラーが発生したセッションのID${error.session_url}
→セッション詳細(ログ)画面のURLエラー発生時に同じワークフローを再実行する
エラー発生時に別のワークフローを実行する以外に、同じワークフローを再実行させることも可能です。
今回は、サンプルとして、以下のワークフローを作成する方法を紹介します。
- 実行エラーが発生したら自分自身を再実行し、最大実行回数に達してもエラーになる場合は、別のワークフローを実行する
KillAttemptアクション(強制終了)を実行すると、ワークフローはエラーとなり強制終了します。
今回は、KillAttemptアクションを使って必ずエラー終了となるワークフローを作成します。
また、エラー内容によって処理を分岐させるため、Tryアクション(エラーを捕捉する)を組み合わせます。
ワークフロー全体をTryアクションの内部に配置すると、いずれかのアクションでエラーが発生した場合、そのエラー内容を取得しつつ、Tryアクションの次のアクションへ処理を進めることができます。
- Tryアクションを設置します
- 「エラーを格納する変数名」に、
errorを設定します - Tryアクションの内部に、KillAttemptアクションを設置します
参考:ワークフローの強制終了
参考:エラーを捕捉(Try)
「2」の設定により、エラー発生時に変数 ${error} にエラー情報が記録されます。(エラーが発生しなかった場合、${error} は空)
Ifアクション(真のとき)で、条件に ${error} を設定することで、エラー発生時の条件分岐が可能です。
- Tryアクションの下に、Ifアクションを設置します。
- 「条件」に、
${error}を設定します。
参考:条件分岐(IF)
# エラーを捕捉する
+try_1:
try>:
display_name>: 'エラーを捕捉する'
errorObjectName: error
private: false
meta:
action:
disabled: false
_do:
# 強制終了
+kill_attempt_1:
action>: KillAttempt
display_name>: '強制終了'
message: 'ワークフロー内でエラー発生'
private: false
meta:
action:
disabled: false
# 真のとき
+if_1:
if>:
display_name>: '真のとき'
condition: ${error}
private: false
meta:
action:
disabled: false
_do:
# 真のとき
+if_3:
if>:
display_name>: '真のとき'
condition: ${ERROR_HANDLING_COUNT == 2}
private: false
meta:
action:
disabled: false
_do:
# ワークフローを実行する
+add_to_queue_2:
action>: AddToQueue
display_name>: 'ワークフローを実行する'
workflow_id: ''
private: false
meta:
display:
action:
disabled: false
# 強制終了
+kill_attempt_5:
action>: KillAttempt
display_name>: '強制終了'
message: '本ワークフローをエラー終了'
private: false
meta:
action:
disabled: false
<エラー時に実行するワークフロー>エラー時に実行するワークフロー
このページは役に立ちましたか?
サイトを見て解決しない場合はAUTOROにログインし、チャットよりお問い合わせください。








