JS7®JobSchedulerは独SOS社(Software- und Organisations-Service GmbH)によって開発されている、オープンソースのジョブ管理システムです。
本記事では、JS7®JobSchedulerで実装されているデイリープランサービスの機能について記載しています。
詳細な情報については、以下をご覧下さい。
- ナレッジベース(英語) https://kb.sos-berlin.com/display/PKB/JS7
- 日本語紹介資料 https://www.ossl.co.jp/
- 日本語フォーラム https://groups.google.com/forum/?hl=ja#!forum/jobscheduler-ja
- Facebook https://www.facebook.com/Jobscheduler-Japan-%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97-594469610565511/timeline/
- 日本JobSchedulerユーザーグループ https://sites.google.com/site/jobschedulerja/
- JIRA(英語) https://change.sos-berlin.com/secure/Dashboard.jspa
- User Forum(英語) http://sourceforge.net/projects/jobscheduler/forums/forum/486122
- SOS社ホームページ http://www.sos-berlin.com
1. 前提条件
JS7® JobScheduler V.2.3以上がインストール済みであること
ワークフローの作成/実行が一通りできること
JS7® JobSchedulerの概要及びインストール方法については以下を参照ください
Dockerでのインストール手順 https://qiita.com/satoruf/items/360fee5293611433ed33
Windowsでのインストール手順 https://qiita.com/Yoshitami/items/6804584592956a483364
Linux/CLIでのインストール手順 https://qiita.com/satoruf/items/fa9846f4376d1a50a67e
JS7® JobSchedulerクイックスタートhttps://qiita.com/satoruf/items/96f21ef25bcb35e47b21
2. デイリープランサービスについて
デイリープランサービスはJOCコックピットのバックグラウンドサービスの一つで、定義されているスケジュールから毎日定時にワークフローの実行計画(オーダー)を作成し、コントローラーに配布します。
新規作成されたスケジュールは、設定画面のperiod_beginで指定した開始時刻から24時間分がその日の実行計画(オーダー)として自動作成されます。開始時刻が0時であればスケジュール作成した日の翌日分のオーダーから0時に自動作成され、例えば19:00:00に設定すると翌日の19時までの実行計画が当日分として作成されます。
作成されたオーダーは予定(Planned)状態になり、コントローラーに配布されると登録(Submitted)になり、コントローラーから実行するエージェントに配布され実行を待ちます。
登録されたオーダーは、JOCコックピットやコントローラーが障害時でもエージェントが動いていれば自律的に実行され、実行ログも保存されます。
エージェントクラスター設定がされている場合は、オーダーが登録されているエージェントが障害時でも、クラスター指定した他のエージェントで実行されます。
手動でデイリープランサービスを実行するには、ダッシュボード画面からJOCコックピットメニューのサービス再起動>デイリープランサービスを選択します。
サービスの各種設定は、JOCコックピットの設定からdailyplanを選択し、下記項目を設定します。
- time_zone:設定時刻の時間帯を設定します。初期値が"Etc/Utc"になっているので、通常は"Asia/Tokyo"に設定します。
- period_begin:24時間分の実行計画を作成する開始時刻を指定されたタイムゾーンで設定します。初期値は00:00:00ですが、例えば19:00:00に設定すると、翌日の19時までの実行計画が当日分として作成されます。
- start_time:毎日デイリープランサービスを実行する開始時刻を、指定したタイムゾーンの時間で指定します。この設定がない場合、デイリープランサービスは、period_begin設定で指定された時点の30分前に実行されます。この設定には、period_begin時刻とは関係なく23:00:00などの時刻も指定できます。
- days_ahead_plan:オーダーを生成し予定状態で利用可能にする日数を指定します。初期値は7日ですので、1週間分の予定が常に作成されます。
- days_ahead_submit:予定済オーダーをコントローラーに配布し、登録状態で利用可能になる日数を指定します。初期値は3日ですので、3日分のオーダーが常に登録されます。
days_ahead_plan、days_ahead_submitを長くすると、スケジュールを変更/削除したいときに予定/登録されたオーダーが大量になり変更する(後述)のが大変になるので、あまり大きくしないことをお勧めします。
予定・登録状態になったオーダーは、実行計画画面で確認できます。
カレンダーの日付を選択すると、その日の実行計画(オーダー)が確認できます。
当日および、過去日付の実行済みオーダーは、完了(Finnished)、直近days_ahead_submitで指定した日数分のオーダーは、登録(Submitted)、days_ahead_submitで指定した日数より先から、days_ahead_planで指定した日数までは、予定(Planned)と表示されます。
また、カレンダーの下に登録履歴●作成済-日時が表示され、選択した日の実行計画が作成された日時がわかります。start_timeで設定した時刻(初期値 23:30)、またはサービス再起動による手動実行をした場合は、その時刻が表示されます。
3. 実行計画の変更方法
作成された実行計画(オーダー)は、コントローラー/エージェントに配布されるため、実行計画作成後に該当ワークフロー定義やスケジュール定義を変更しても、自動的に既存実行計画には反映されません。
変更を反映するためには、実行計画画面からカレンダーで日付指定して実行計画を作成し直すか、開始時刻編集かオーダー変数編集で設定変更する必要があります。
登録状態のオーダーは、キャンセル、開始時刻編集、オーダー変数編集が可能です。オーダー毎でも、複数オーダー一括選択からでも操作できます。
- キャンセル:コントローラー/エージェントに配布されたオーダーをキャンセルし、オーダーを予定状態に戻します。登録状態からオーダーを直接削除することはできません。
- 開始時刻編集:選択したオーダーの開始時刻を変更できます。他のオーダーには影響ありません。
-
オーダー変数編集:オーダー変数が設定されている場合は、選択したオーダーのオーダー変数を変更できます。他のオーダーには影響ありません。
オーダーを削除するには、キャンセルした後予定状態に変わった後、オーダー削除する必要があります。 登録状態のオーダーを削除することはできません。予定状態のオーダーを再度登録することも可能です。
予定状態のオーダーは、カレンダーの日付を複数選択して画面右上のオーダー削除ボタンで一括オーダー削除することも可能です。
オーダー削除後もカレンダー上の反転表示と登録履歴は残っていますので、完全に登録履歴削除するにはカレンダーの下の登録削除ボタンをクリックします。カレンダーの日付を複数選択することも可能です。
4 . スケジュール変更方法
恒久的変更
ワークフローの実行周期、時刻、オーダー変数を恒久的に変更する場合
ジョブ定義>該当スケジュール定義画面から変更し、リリースすると、自動的に作成済み実行計画とオーダーに反映される
恒久的削除
ワークフローのスケジュールを恒久的に削除する場合
ジョブ定義>該当スケジュール定義を削除すると、実行計画済みのオーダーは全て予定状態になるため、実行計画画面からオーダー削除を行う必要がある
実行予定ワークフローの一時的変更
実行計画オーダー作成済みのワークフローの時刻、オーダー変数を変更する場合
実行計画画面から対象ワークフローの該当オーダーを選択し、開始時刻編集/オーダー変数編集から変更する
実行予定ワークフローの一時的停止
実行計画オーダー作成済みのワークフローを停止する場合
実行計画画面から対象ワークフローの該当オーダーを選択し、オーダーキャンセルする
キャンセルしたオーダーは、予定状態になるので、復旧するにはオーダー登録しなおす
削除したオーダーを復旧するには、実行計画の再作成を行う
複数日の実行予定の停止
ジョブ定義>該当スケジュール定義>ランタイム編集画面から、制限の+をクリック
停止期間を有効開始日と有効終了日を入力し、実行日だけ入力、周期追加をクリックし登録後、スケジュールをリリースすると自動的に実行計画が変更される
回復する場合は、制限を削除してスケジュールを再リリース
5 . まとめ
JS7®JobSchedulerは、JOCコックピットやコントローラーが障害時でも、エージェントがワークフローを実行できるようにするために、実行計画をエージェントに事前に配布する仕組みになっています。
つまりワークフロー定義やスケジュール定義を変更しても、変更前の実行計画が存在するため、一旦作成されたものを完全に削除するには、下記の手順を踏む必要があります。
登録状態->キャンセル実行->予定状態->オーダー削除実行->登録履歴削除実行
最初は戸惑うかもしれませんが、この仕組みを理解すれば柔軟な計画変更ができるようになります。