スクリプトに実行タイムアウトを設定したい

キーワード:スレッド,繰り返し,待機,実行タイムアウト,プロセスタイムアウト
シナリオ一覧に戻る

概要

スクリプトに実行タイムアウトを設定したい場合、スレッド処理と待機処理を使用します。

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

スレッド処理と待機処理を使用して実行タイムアウトを行います。
以下、本シナリオでは実行タイムアウトの対象となる一連のフローを「メイン処理」、実行タイムアウトの実装部分を「実行タイムアウト処理」と呼びます。
実行タイムアウト処理は一定間隔でメイン処理の状況を確認し、一定時間内にメイン処理が終了しない場合、タイムアウトエラーとします。
実行タイムアウトまでの時間は「待機処理時間×繰り返し回数」となります。たとえば、待機処理を5秒、繰り返し回数を12回とした場合、5秒×12回=60秒となります。

処理の流れ

サンプルプロジェクトの処理の流れは以下の通りです。
  1. スレッド処理」によって、メイン処理と実行タイムアウト処理を並列で実行します。
  2. メイン処理では、「CSVファイル読み取り処理」でファイルを読み取り、読み取り終了後、スクリプト変数「終了フラグ」に「true」を設定します。
  3. 実行タイムアウト処理では「繰り返し処理」で指定回数分、以下の処理を繰り返します。
    1. 待機処理」で一定時間待機します。
    2. 条件分岐処理」でメイン処理の実行状況を判定し、終了している場合、繰り返し処理を抜け出します。
  4. 繰り返し処理」終了後、「条件分岐処理」でメイン処理の実行状況を判定し、終了していない場合、「例外通知処理」で処理を異常終了させます。
実行結果のイメージについて

ポイントとなる機能

名前 説明 ツールパレット上の場所
スレッド処理 スレッド開始アイコンからスレッド終了アイコンまでの間の処理をスレッドで実行します。 「基本」-「フロー」-「スレッド」
繰り返し処理 指定した回数分、処理を繰り返します。 「基本」-「フロー」-「繰り返し」
待機処理 指定された時間、待機します。 「変換」-「処理」-「待機」

処理のポイント

スレッド処理のスレッド開始アイコンは複数のアイコンにプロセスフローを引くことができます。スレッド開始アイコンからプロセスフローを引かれた処理は、すべて並列で実行されます。
メイン処理が終了した場合にはタイムアウト処理も終了させるため、繰り返し処理によって一定間隔でメイン処理の実行状況を確認します。

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

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

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

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

  3. サンプルデータの準備
    「rl_reference_094.zip」を展開後に作成される「samples」ディレクトリがサンプルデータとなります。
    $DATASPIDER_HOME/server/samplesディレクトリに上書きしてください。

スクリプトの作成手順

プロセスフローは、「サンプルプロジェクトの説明」のスクリプト画像を参照して適宜設定してください。
  1. 実行タイムアウト設定として使用するスクリプト変数を作成します。

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

  3. デザイナのツールパレット「ファイル」-「CSV」-「CSVファイル読み取り」から、CSVファイル読み取り処理をスクリプトキャンバスに配置します。

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

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

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

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

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

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

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

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

  12. スクリプトを実行し、以下の結果になれば成功です。