同時実行したスクリプトの実行制御がしたい
キーワード:同時実行,多重実行,排他制御,ロック
シナリオ一覧に戻る
概要
スクリプトを同時に実行した場合、ロック用のファイルを使用して実行制御を行います。
サンプルプロジェクトの説明
スクリプト実行時、指定したディレクトリ内にロックファイルが存在しない場合はロックファイルを作成し、メモ帳を起動します。
メモ帳を閉じるとロックファイルが削除され、スクリプトが終了します。
指定したディレクトリ内にロックファイルが存在した場合はメモ帳を起動せずに終了します。
本スクリプトは、逆引きリファレンス「
ロックファイルを作成したい
」および「
ロックファイルを削除したい
」を子スクリプトとして呼び出します。
処理の流れ
サンプルプロジェクトの処理の流れは以下の通りです。
「
スクリプト呼び出し処理
」でロックファイルを作成するスクリプトを呼び出します。
「
条件分岐処理
」を行います。
ロックファイルを作成するスクリプトの戻り値が「0」と等しい場合のみ、以下の処理を行います。
「
外部アプリケーション起動処理
」でメモ帳を呼び出します。
また、メモ帳が終了するまで処理を待機します。
メモ帳が終了したら、「
スクリプト呼び出し処理
」でロックファイルを削除するスクリプトを呼び出します。
同内容のプロジェクトを作成し、同時にスクリプトを実行すると、最初に実行したスクリプトによってメモ帳が起動し、それ以外のスクリプトはメモ帳を起動せずに終了します。
ポイントとなる機能
名前
説明
ツールパレット上の場所
スクリプト呼び出し処理
プロジェクト内の他のスクリプトやサーバに登録されたスクリプトを呼び出します。
「基本」-「処理」-「スクリプト呼び出し」
処理のポイント
スクリプト呼び出し処理の戻り値を判定し、条件分岐を行います。
サンプルプロジェクトの使用方法
上記処理を実装したサンプルプロジェクトを用意しています。サンプルプロジェクトを使用する場合の手順は、以下の通りです。
サンプルプロジェクトファイル名
rl_reference_008-010.zip
サンプルプロジェクトの展開
サンプルプロジェクトファイル「rl_reference_008-010.zip」を展開します。
プロジェクトのアップロード
「rl_reference_008-010.zip」を展開後に作成される「rl_reference_008-010プロジェクト」ディレクトリがプロジェクトファイルとなります。
DataSpider Studioを起動し、マイプロジェクトの画面から
[ファイル]
-
[ローカルからアップロード]
で展開したディレクトリ「rl_reference_008-010プロジェクト」をアップロードしてください。
本シナリオに該当するスクリプトは、「rl_reference_008-010プロジェクト」のスクリプト「rl_reference_008」です。
サンプルデータの準備
「rl_reference_008-010.zip」を展開後に作成される「samples」ディレクトリがサンプルデータとなります。
$DATASPIDER_HOME/server/samplesディレクトリに上書きしてください。
スクリプトの作成手順
プロセスフローは、「
サンプルプロジェクトの説明
」のスクリプト画像を参照して適宜設定してください。
デザイナのツールパレット「基本」-「処理」-「スクリプト呼び出し」から、スクリプト呼び出し処理をスクリプトキャンバスに配置します。
スクリプト呼び出し処理の設定は、以下のように行います。
[必須設定]タブ
スクリプト「rl_reference_009」の機能および作成方法については、逆引きリファレンス「
ロックファイルを作成したい
」を参照してください。
デザイナのツールパレット「基本」-「フロー」-「条件分岐」から、条件分岐処理をスクリプトキャンバスに配置します。
条件分岐処理の設定は、以下のように行います。
[必須設定]タブ
処理のポイント
スクリプト呼び出し処理の戻り値を判定し、条件分岐を行います。
デザイナのツールパレット「基本」-「処理」-「外部アプリケーション起動」から、外部アプリケーション起動処理をスクリプトキャンバスに配置します。
外部アプリケーション起動処理の設定は、以下のように行います。
[必須設定]タブ
[実行設定]タブ
デザイナのツールパレット「基本」-「処理」-「スクリプト呼び出し」から、スクリプト呼び出し処理をスクリプトキャンバスに配置します。
スクリプト呼び出し処理の設定は、以下のように行います。
[必須設定]タブ
スクリプト「rl_reference_010」の機能および作成方法については、逆引きリファレンス「
ロックファイルを削除したい
」を参照してください。
スクリプトを実行し、正常終了すれば成功です。