質問
特定の処理がなんらかの理由でエラーになった際にスクリプトをエラー終了とせずに処理をもう一度行いたいです。
実装方法を教えてください。
回答
概要
スクリプト内で処理のリトライを行いたい場合、[例外監視]処理と[繰り返し]処理を使用します。
サンプルスクリプト
ストレージに格納されているファイルを削除します。
エラーが発生した場合、処理をリトライします。
また、一定回数処理をリトライしてもエラーが発生する場合、処理を異常終了させます。
処理の流れ
サンプルプロジェクトの処理の流れは以下のとおりです。
- [繰り返し]処理で以下の処理を5回繰り返します
- [例外監視]処理の対象となる処理のエラーを監視します
対象となる処理は[ファイル/ディレクトリ削除]処理です - [ファイル/ディレクトリ削除]処理でエラーが発生した場合、[待機]処理で一定時間待機後、処理をリトライします
- エラーが発生せずに処理が終了した場合、スクリプト変数「is_succeeded」に"true"を設定し、[繰り返し]処理から抜け出します
- [例外監視]処理の対象となる処理のエラーを監視します
- [繰り返し]処理が終了し、スクリプト変数「is_succeeded」の値が"true"でない場合、[例外通知]処理でスクリプトを異常終了させます
スクリプトの詳細
- リトライ対象の処理の終了状態として使用するスクリプト変数を作成します
スクリプト変数のプロパティは、以下のように設定します
変数名:is_succeeded
変数型:真偽値
初期値:false - リトライ対象の処理を作成します
サンプルスクリプトでは、[ファイル/ディレクトリ削除]処理が該当します -
デザイナのツールパレット[基本]-[フロー]-[例外監視]をスクリプトキャンバスに配置します
-
デザイナのツールパレット[基本]-[フロー]-[繰り返し]をスクリプトキャンバスに配置します
繰り返し処理の設定は、以下のように行います
・[必須設定]タブ -
デザイナのツールパレット[基本]-[フロー]-[continue]をスクリプトキャンバスに配置します
-
デザイナのツールパレット[基本]-[処理]-[変数代入]をスクリプトキャンバスに配置します
[変数代入]処理のMapperエディタを開き、スクリプト変数に"true"を代入します
マッピングキャンバスは、以下のように設定します -
デザイナのツールパレット[基本]-[フロー]-[break]をスクリプトキャンバスに配置します
-
デザイナのツールパレット[基本]-[フロー]-[条件分岐]をスクリプトキャンバスに配置します
条件の設定は、以下のように行います
・[必須設定]タブ -
デザイナのツールパレット[基本]-[処理]-[例外通知]をスクリプトキャンバスに配置します
例外通知処理の設定は、以下のように行います。
[必須設定]タブ -
スクリプトを実行し、正常終了すれば成功です
コメント
0件のコメント
記事コメントは受け付けていません。