|
バッチ起動
|
オンラインのNOMADを使ったWebアプリケーションのスケジュールが停止したあとに、指定のバッチを自動起動させます。
この機能はDSM Ver5.0以降で追加されました。
バッチ起動
バッチ起動とは、NOMADを使用したWebアプリケーション(アプリケーションIDまたはアプリケーション名で判別)のスケジュールが停止したときに指定のバッチ(スクリプト・プログラム)を立ち上げる機能のことです。
例えば、指定のWebアプリケーションが08:40から16:30に運用する設定がされていて、DsmSrvCheckerの監視間隔が180秒(CheckerTimer=180)の場合、スケジュールの運用が16:30に停止した際は、次にDsmSrvCheckerがチェックする16:31にバッチを自動的に起動させます。
下図のように、16:31になってもWebアプリケーションが動作している場合は、Webタスクが終了するまで待ち、Webタスクが終了したことをDsmSrvCheckerが判定した段階でバッチを起動させます(「dsm.ini」ファイルの「KillSessionOnKeep=0」の場合)。

「DsmSrvChecker」は、
Webアプリケーションのスケジュールが停止状態(即時停止による停止ではない)、
すでに実行されたNOMADプロシージャが終了している、
セッションが保持されていない、
の3つが満たされている場合にWebアプリケーションが終了したと判断し、バッチを起動します。
下図のように、CheckerTimerに設定された値によっては、チェックしてから次にチェックするまでの間にWebアプリケーションのスケジュールが「停止」→「稼働」→「停止」となった場合、DsmSrvCheckerがWebアプリケーションの開始を判定できませんので、指定されたバッチは起動されません。

なお、バッチ起動時は、Webアプリケーションのスケジュール設定(「dsm.ini」の[WKSCH]セクションの「WkSch_xxxx」の指定)を必ず行うようにしてください。
バッチ起動の設定
バッチ起動の設定は、「dsm.ini」ファイルの[BATCH]セクション下で設定します。
※DSMで管理できる外部アプリケーションの数は、設定ファイル「dsm.ini」の[DSMMEXT]セクションのMaxExtAppの値までです。
- バッチ周期の設定
[BATCH]
BatchCycleMin=600
バッチ周期を分単位で設定します。デフォルトは1320分です
(1320分(22×60分)をデフォルトのバッチ周期とし、運用周期を24時間に想定しています)。
バッチ周期はバッチタスクの重複起動を制限するパラメータで、Webアプリケーションが開始された時刻からBatchCycleMinに設定された時間の間、すべてのバッチタスクが設定されたバッチ周期ごとに1回しか起動しません。

毎日00:00から17:00で運用し、終了後バッチを実行するWebアプリケーションを例に挙げます。
この時、BatchCycleMin=1320(デフォルト)と設定しておくと、例えば一時的に19:00から20:00で運用させても20:00の終了後バッチは起動されません。このように、バッチの重複起動を避けることができます。

次に、毎日09:00から13:30と15:00から18:00で運用し、それぞれの終了後にバッチを実行するWebアプリケーションを例に挙げます。
この時、デフォルト設定(BatchCycleMin=1320)にすると、18:00から実行する予定のバッチは起動されません。したがって、BatchCycleMin=330(5時間30分)のように、Webアプリケーションの1回の周期よりも短く設定し、バッチを1日に2回実行させます。
このように、通常の運用周期(最初のバッチタスクの運用スケジュールにより設定)内ですべてのバッチを終了させることが不可欠であるため、バッチ周期を通常の運用周期よりも小さい値を設定する必要があります。
- バッチAPPの登録
[BATCH]
BatchAppList=バッチ名1,バッチ名2,バッチ名3 ...
DSMSRVから起動するバッチAPPは必ずあらかじめBatchAppListに登録する必要があります。
DSMSRVは、一定の時間間隔(デフォルトは60秒。CheckerTimerの設定によって変更可能)で、BatchAppListに登録されたバッチAPPの運用スケジュールをチェックし、稼動状態になったバッチAPPを起動させます。
- バッチAPPの定義
[BATCH]
Bch_バッチ名=アプリケーションID > バッチタスク名
Cmd_バッチタスク名=#currentDir#Ptask 起動のコマンドライン
指定のWebタスク(アプリケーションIDまたはアプリケーション名で指定)の後に起動させるバッチ設定を記述します。
「Bch_バッチ名」は、「BatchAppList」で指定されている必要があります。バッチ名には、一意のバッチ名をしてください。
「Cmd_バッチタスク名」では、実際に起動させるバッチのコマンドラインを指定します。
必要に応じて実行時のカレントディレクトリの指定も可能です(##で区切る)。##を省略した場合は、DSMSRVのカレントディレクトリになります。
バッチ起動の設定例

Webアプリケーション「App1」のスケジュール停止後に「btest.bat -d1」を起動する、
Webアプリケーション「App2」のスケジュール停止後に「mytest.bat -ss」を起動する例を説明します。
[CHECK]
CheckerTimer=60
[WKSCH]
WkSch_App1=9.15-18.30,1-5
WkSch_App2=9-16,1-5
[BATCH]
BatchAppList=MyBatchApp1,MyBatchApp2
Bch_MyBatchApp1=App1 > Stask1
Bch_MyBatchApp2=App2 > Stask2
Cmd_Stask1=d:\batchapp\btest.bat -d1
Cmd_Stask2=#d:\batchapp#d:\batchapp\mytest.bat -ss
「App1」は、月曜から金曜までの09:15-18:30に運用する、というスケジュールになっています。
このスケジュールが停止状態になったとき(18:31以降)、Stask1のバッチ(d:\batchapp\btest.bat -d1)を起動させます。
カレントディレクトリは、DSMSRVのあるディレクトリになります。
「App2」は、月曜から金曜までの09:00-16:59に運用する、というスケジュールになっています。
このスケジュールが停止状態になったとき(17:00以降)、Stask2のバッチ(d:\batchapp\mytest.bat -ss)を起動させます。
カレントディレクトリは「d:\batchapp」になります。

Webアプリケーション「App1」のスケジュール停止後に「btest -d1」を起動する、
Webアプリケーション「App2」のスケジュール停止後に「mytest -ss」を起動する例を説明します。
[CHECK]
CheckerTimer=60
[WKSCH]
WkSch_App1=9.15-18.30,1-5
WkSch_App2=9-16,1-5
[BATCH]
BatchAppList=MyBatchApp1,MyBatchApp2
Bch_MyBatchApp1=App1 > Stask1
Bch_MyBatchApp2=App2 > Stask2
Cmd_Stask1=/batchapp/btest -d1
Cmd_Stask2=#/batchapp#/batchapp/mytest -ss
「App1」は、月曜から金曜までの09:15-18:30に運用する、というスケジュールになっています。
このスケジュールが停止状態になったとき(18:31以降)、Stask1のバッチ(/batchapp/btest -d1)を起動させます。
カレントディレクトリは、DSMSRVのあるディレクトリになります。
「App2」は、月曜から金曜までの09:00-16:59に運用する、というスケジュールになっています。
このスケジュールが停止状態になったとき(17:00以降)、Stask2のバッチ(/batchapp/mytest -ss)を起動させます。
カレントディレクトリは「/batchapp」になります。