エラー処理

この説では、ワークフロー実行中に発生したエラーの処理の方法について説明しています。

捕捉が可能なエラーの種類

ワークフローの実行時にエラーが発生することがあります。エラーは、自動化の対象システムで発生しているエラーや、APIの認証エラー、システムの変更によるエラーなどがあります。各アクションの実行時に発生するエラーについては、ロボットがエラーを捕捉しエラー処理用のワークフローを起動したり、エラーが発生したことを通知することができるようになります。

エラーの通知

エラーが捕捉されると、プロジェクトに登録されているコラボレーター宛にエラー通知を送信することができます。エラー通知の内容は、統一されており、現在のところ Eメールでの通知にのみ対応しています。

エラーの通知先の設定手順は以下のようになっています。

  1. ワークフロー画面より編集ボタンをクリックしてワークフロー編集ダイアログを表示する

  2. 通知先のインプットフィールドをクリックして、通知可能なコラボレーター一覧を表示する

  3. 通知先に設定するコラボレーターをクリックしてチェック状態にする

エラーの通知先は、複数設定可能です。通知先から省く場合も同様の手順でチェックを外してください。

エラー通知先の設定

エラー時に実行するワークフロー

エラーが捕捉された際に、エラー処理をリカバリしたり、または、より柔軟な方法で通知を送信したりするにはどうすれば良いでしょうか。

エラー時に実行するワークフローを選択することでこの問題にある程度対応することができるようになります。

エラー時に実行するワークフローを選択する手順は次の通りです。

  1. ワークフロー画面より編集ボタンをクリックしてワークフロー編集ダイアログを表示する

  2. 「エラー時に実行するワークフロー」というインプットフィールドをクリックします

  3. 選択肢に出てきたワークフローを選択します *選択肢が多い場合は、ワークフロー名で絞り込みができるのでインプットフィールドに文字を入力してみてください

エラー時に実行するワークフローは、一つのみ選択可能です。

エラー処理用ワークフローの設定

エラー時に実行するワークフローに渡されるパラメーター

エラー時に実行するワークフローは、特殊なパラメーターを受け取ることができます。

例えば、次のワークフローをエラー時に実行してみましょう。

# テキストを作成
+text_1:
action>: Text
text: |
*エラーが発生しました*
Message: ${error.message}
Workflow: ${error.workflow.name}
Time: ${error.session_time}
Session ID: ${error.session_queue_id}
Session URL: ${error.session_url}"
# Slackでメッセージを送信する
+send_slack_message_1:
action>: SendSlackMessage
provider: slack_slackproviderid
channel: '#chanellname'
text: +text_1

このワークフローは、このまま実行すると、 error が未定義のためエラー終了してしまいますが、エラー時に実行されるワークフローとして呼び出されると error が自動的に定義され実行可能になります。

このワークフローは、エラー時に実行されるとSlackにエラーを通知します。

Slack通知

${error} という記述でエラーの中身が表示されるようになっています。この 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.roboticcrowd.com/projects/1/workflows/23/attempts/365", // セッション詳細(ログ)画面のURL
}

エラー時に実行するワークフローのテスト

エラー時に実行されるワークフローをテストするには、Robotic Crowd APIを使ってパラメーターを渡すか、よりシンプルには、KillAttemptというアクションのみのワークフローを作って、エラー時に実行するワークフローを設定しておく方法があります。

例えば、次のようなワークフローを実行すればすぐにエラー終了し、任意のエラーメッセージをエラー時に実行するワークフローに渡すことができます。

# 強制終了
+kill_attempt_1:
action>: KillAttempt
message: エラーが発生しました。これは任意に設定可能です。