SOS JobSchedulerでジョブチェーンを作る

昨日はSOS JobSchedulerでジョブを作って実行する方法を紹介しました。

今日は複数のジョブを連続して実行するジョブチェーンを作って実行する方法を紹介したいと思います。

今回は2つのジョブを実行するジョブチェーンを作成します。
1つは昨日作ったWordpressにアップロードした画像ファイルを圧縮してバックアップするジョブを使います。
もう1つはWordpressのデータベースをバックアップするジョブを作ります。

ジョブの種類をOrder Jobに変える

昨日、作成したWordpressFileBackupJobは、Standalone Jobとして作成しました。そのため、ジョブを単独で実行できたのですが、そのままではジョブチェーンに組み込むことが出来ません。
ただ、ジョブのOptionsタブから簡単にStandalone JobをOrder Job(ジョブチェーンに組み込むことが出来るが、単独では実行出来ない)に変えることが出来ます。

データベースバックアップジョブの作成

昨日のジョブ作成と同じ方法でデータベースバックアップジョブを作成します。
ジョブチェーンに組み込むことが前提なので、最初からOrder Jobとして作成しておきます。
名前はWordpressMysqlBackupJobにしました。
スクリプトを下記のようなものです。

echo "starting WordPressMysqlBackupJob..."

WP_DB=$SCHEDULER_PARAM_WP_DB
WP_USER=$SCHEDULER_PARAM_WP_USER
WP_PASS=$SCHEDULER_PARAM_WP_PASS
BACKUP_DIR=$SCHEDULER_PARAM_BACKUP_DIR

echo "WP_DB: $WP_DB"
echo "BACKUP_DIR: $BAKCUP_DIR"

TIMESTAMP=`date '+%Y%m%d%H%M%S'`
FILENAME="${WP_DB}_${TIMESTAMP}.sql"

echo "FILENAME: $FILENAME"

mysqldump -u $WP_USER -p$WP_PASS $WP_DB > $BACKUP_DIR/$FILENAME

echo "WordpressMysqlBackupJob completed."

exit 0

ジョブチェーンの作成

ジョブチェーンを作成するには、ツリーからJob Chainを選択して、New Job Chainボタンをクリックします。

Job Chain Nameとして、WordpressBackupChainという名前を付けました。

次は、Steps/Nodesの設定です。ここがいかにもジョブチェーンだなと思う設定です。

State: ジョブチェーンでは1つのStateごとに1つのジョブを実行できます。そのStateに名前を付けます。
Job: 実行するジョブを選択します。
Next State: ジョブが正常終了(戻り値が0)の場合に遷移するStateを入力します。
Error State: ジョブが異常終了(戻り値が1)の場合に遷移するStateを入力します。
Nodeの種類:
Full Node ジョブを実行します。
End Node ジョブチェーンの終端を示します。
File Sink ファイルの移動や削除を行います。次のStateを指定できないので、End Nodeの一種といえます。

最終的に、このようなジョブチェーンを作成します。

ジョブチェーンの実行

ジョブチェーンを保存した後でJOCを開くと、自動的に設定が読み込まれたのが分かります。

表示されているWordpressBackupChainを右クリックすると、コンテキストメニューが表示されます。

ジョブチェーンを実行するには、Orderを作る必要があります。
Orderはジョブチェーンに対して実行日時やパラメータを指定するもので、1つのジョブチェーンに対して複数のOrderを作成出来ます。
Orderを作るには、コンテキストメニューからAdd Orderをクリックします。

Add Orderをクリックすると、このようなダイアログが表示されます。

Enter an order id: 任意の値を入力します。英字が入っても構いません。入力しない場合は自動的に採番されます。
Enter an order title: 任意の値を入力します。
Enter a start time: 実行したい日時を入力します。
Select an order state: ジョブチェーンの中で最初に実行するStateを選択します。
Select an order end state: ジョブチェーンの中で最後となるStateを選択します。特に入力する必要はありません。
Declare parameters: パラメータを入力します。JOEで既に指定したパラメータをそのまま使用する場合は、ここで入力する必要はありません。

最後にsubmitをクリックして実行します。

画面の右側にORDER HISTORYが表示されます。どうやら、Stateがsuccessになっていますので、正常終了したようです。

今回はジョブチェーンを作成して実行するまでを紹介しました。
ところで、今回のジョブチェーンの実行方法ではジョブチェーンを繰り返して実行することができません。これはJOEでOrderを作成することで実現出来るのですが、その方法は次回ご紹介したいと思います。

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。2018年、株式会社ビビンコを北九州市に創業。IoTソリューションの開発・導入や、画像認識モデルを活用したアプリの開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。