機能

JS7® JobSchedulerの構成

JOCコックピット
    • WEB GUI/REST API
    • ジョブ実行制御配布
    • 履歴情報収集・DBへの保存
    • ジョブ定義・リソースの作成
    • ジョブ定義の管理とコントローラーへの配布
    • クラスター制御、イベントキュー、ロギングなど
コントローラー
    • DB接続を廃止
    • ジョブ定義をJOCコックピットから取得
    • 実行履歴をJOCコックピットに送信
    • 実行計画とジョブ定義をエージェントに配布
自律型エージェント
    • コントローラーとの通信障害時にも自律的にジョブ実行制御
    • エージェントクラスター内で実行計画とジョブ定義を同期
    • 実行履歴をコントローラーに送信

ジョブの定義

ジョブの定義はワークフローによって行います。

    • 従来からあるジョブチェーンと同様に、ジョブ間の依存関係を定義し、オーダーによって一連のジョブを実行する
    • DAG(有向非巡回グラフ、Directed Acyclic Graph)モデル
    • BPMN(ビジネスプロセスモデリング表記法、Business Process Model and Notation)ベースのワークフローパターンを採用、ただし準拠ではない
    • フォーマットはJSONベースのHOCON(Human-Optimized Config Object Notation)形式
    • ジョブはshellジョブとJVMジョブ(GraalVM®で稼働するJavaScript, Ruby, Pythonなど)を実行
    • スケジュールとカレンダで実行日時を制御
    • YADEファイル転送ツールを内蔵
    • エージェントでのファイル監視

ジョブ定義はJOCコックピットのJSONエディタで作成/編集する方法と、JOCコックピットのワークフローエディターから生成する方法があります。

ワークフロー定義の例
{
  "instructions": [
    {
      "TYPE": "Execute.Named",
      "jobName": "JOB1",
      "label": "JOB1"
    }
  ],
  "jobs": {
    "JOB1": {
      "agentId": "js7-agent-primary",
      "executable": {
        "TYPE": "ScriptExecutable",
        "script": "echo \"ハロー\"",
        "v1Compatible": false
      },
      "taskLimit": 1,
      "title": "ジョブ1"
    }
  }
}
 ワークフローエディター画面例
 
ジョブ定義やカレンダー、スケジュールなどの定義はJSON形式でインポート/エキスポートできます。

またそれらのオブジェクトは、JOCコックピットのGit連携機能からコミット/プッシュ/プルなどでリポジトリ操作することにより、ジョブ定義の開発環境→ステージング環境→本番環境のバージョン管理/ロールアウトなどのCI/CD運用を実現します。

ジョブの実行

イベントによる実行

ホットフォルダに作成/更新されたファイルを監視し、自動的にジョブ起動、ファイルを移動/リネーム/削除/処理対象外に指定できる。また、メールの受信や、任意のプログラムやスクリプトでジョブを制御する事も可能である。

カレンダによる計画実行

平日、休日、特定の休業日、毎週/毎月の特定日、など柔軟に指定でき、実行日が休業日や特定日の場合、実行日時を翌営業日、前の営業日、または実行中止を指定できる。

その他

・ジョブ実行時間を制限するタイムスロット機能
・実行優先順位を制御するプライオリティ機能
・ジョブの排他制御のためのロック機能
・複数ジョブの同時並行実行を制御するシンクロナイズ機能
・ジョブ実行エラー時の再実行を制御するセットバック機能
等、柔軟なジョブ実行制御機能を備えている。

クラスタリング機能