特定の処理でエラーが発生した場合はリトライしたい

キーワード:エラー,例外,リトライ,リラン,再実行,例外監視,continue
シナリオ一覧に戻る

概要

スクリプト内で処理のリトライを行いたい場合、例外監視処理・繰り返し処理を使用します。

サンプルプロジェクトの説明

データベースのテーブルに格納されているデータを読み取り、テーブルに出力する処理を監視します。
エラーが発生した場合、エラー内容によって処理をリトライします。
また、一定回数処理をリトライしてもエラーが発生する場合、処理を異常終了させます。

処理の流れ

サンプルプロジェクトの処理の流れは以下の通りです。
  1. 繰り返し処理」で以下の処理を5回繰り返します。
    1. 例外監視処理」対象となる処理の例外を監視します。
      対象となる処理は「テーブル読み取り処理」および「テーブル書き込み処理」です。
    2. テーブル読み取り処理」または「テーブル書き込み処理」でエラーが発生した場合、「待機処理」で一定時間待機後、処理をリトライします。
      マッピング処理」でエラーが発生した場合、リトライは行わず、異常終了します。
    3. エラーが発生せずに処理が終了した場合、スクリプト変数「正常終了」に「true」を設定し、「繰り返し処理」から抜け出します。
  2. 繰り返し処理」が終了し、スクリプト変数「正常終了」の値が「true」でない場合、「例外通知処理」で処理を異常終了させます。
実行結果のイメージについて

ポイントとなる機能

名前 説明 ツールパレット上の場所
例外監視処理 対象となる処理の例外を監視し、例外処理を行います。 「基本」-「フロー」-「例外監視」
繰り返し処理 指定した回数分、処理を繰り返します。 「基本」-「フロー」-「繰り返し」
break処理 繰り返し処理から抜け出します。 「基本」-「フロー」-「break」
continue処理 繰り返し処理中の後続の処理をスキップし、ループ継続条件の判定処理に処理を移します。 「基本」-「フロー」-「continue」

処理のポイント

例外監視処理で、[チェック対象]にリトライしたい処理のみを設定することで、特定の処理を対象としたリトライを行います。
[チェック対象]に設定していない処理でエラーが発生した場合、リトライは行わず、異常終了します。

サンプルプロジェクトの使用方法

上記処理を実装したサンプルプロジェクトを用意しています。サンプルプロジェクトを使用する場合の手順は、以下の通りです。

サンプルプロジェクトファイル名 rl_reference_091.zip
  1. サンプルプロジェクトの展開
    サンプルプロジェクトファイル「rl_reference_091.zip」を展開します。

  2. プロジェクトのアップロード
    「rl_reference_091.zip」を展開後に作成される「rl_reference_091プロジェクト」ディレクトリがプロジェクトファイルとなります。
    DataSpider Studioを起動し、マイプロジェクトの画面から[ファイル]-[ローカルからアップロード]で展開したディレクトリ「rl_reference_091プロジェクト」をアップロードしてください。

  3. グローバルリソースの設定
    コントロールパネルの[グローバルリソースの設定]から、[新しいグローバルリソースの追加]を選択し、SQL Server接続設定のグローバルリソースを追加します。
    グローバルリソースの設定方法については、「グローバルリソースのプロパティ」を参照してください。

スクリプトの作成手順

プロセスフローおよびデータフローは、「サンプルプロジェクトの説明」のスクリプト画像を参照して適宜設定してください。
  1. リトライ対象の処理の終了状態として使用するスクリプト変数を作成します。

  2. リトライ対象の処理を作成します。
    サンプルプロジェクトでは、テーブル読み取り処理からテーブル書き込み処理までが該当します。

  3. デザイナのツールパレット「基本」-「フロー」-「例外監視」から、例外監視処理をスクリプトキャンバスに配置します。

  4. デザイナのツールパレット「基本」-「フロー」-「繰り返し」から、繰り返し処理をスクリプトキャンバスに配置します。

  5. デザイナのツールパレット「基本」-「フロー」-「continue」から、continue処理をスクリプトキャンバスに配置します。

  6. デザイナのツールパレット「基本」-「処理」-「変数代入」から、変数代入処理をスクリプトキャンバスに配置します。

  7. 変数代入処理のMapperエディタを開き、スクリプト変数に「true」を代入します。

  8. デザイナのツールパレット「基本」-「フロー」-「break」から、break処理をスクリプトキャンバスに配置します。

  9. デザイナのツールパレット「基本」-「フロー」-「条件分岐」から、条件分岐処理をスクリプトキャンバスに配置します。

  10. デザイナのツールパレット「基本」-「処理」-「例外通知」から、例外通知処理をスクリプトキャンバスに配置します。

  11. スクリプトを実行し、正常終了すれば成功です。