機能

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運用を実現します。

ジョブの実行

イベントによる実行

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

カレンダによる計画実行

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

その他

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

クレデンシャルストア機能

クレデンシャルストア機能とは、ジョブの中から外部ホストやメールサーバー、データベースなどにログイン認証が必要な場合、いちいちアカウント認証情報をジョブに記載したり公開鍵情報を外部ファイルに記録することなく、ジョブからアクセス可能にする仕組みです。
またクレデンシャルストアを使用することによって、認証情報を秘匿しながら集中管理を可能にします。

参考記事:JS7® JobSchedulerクレデンシャルストア機能

ファイル転送機能

JS7®JobSchedulerではYADEと呼ぶファイル転送機能が組み込まれており、別途インストールや設定が不要で、ジョブからファイル転送の仕組みを利用することができます。

  • マルチプロトコル: ftp/ftps/sftp/http/https/SMB/WebDAV/ローカルファイルに対応し、ソースとターゲットで異なるプロトコルを使用できます。
  • ゼロタッチダウン: YADEクライアント上ではデータストリームは32KB(変更可能)ごとのチャンクでメモリー上に展開され、ローカルストレージには保存されません。
  • マルチプラットフォーム: YADEはJavaで実装されているため、JS7エージェント同様Java(1.8以上)が稼働する環境であればOSを選びません。
  • ジャンプホスト転送: インターネット経由でファイルアップロード・ダウンロードする場合でも、DMZ上に中継用ジャンプホストを配置することによって安全なデータ交換を実現します。
  • アトミック転送: ファイル送信先で転送途中のファイルが処理開始されないように、転送完了するまで自動的にファイル名を一時的に変更し、転送完了後に正式なファイル名に変更します。
  • トランザクショナル転送: 複数のファイルを送信する場合、一部のファイルでエラーが発生し、リトライが全て失敗した場合、全ての送信されたファイルが取り消されます。
  • ファイル完全性確認: ファイルが送信元と受信先で差異がないか、チェックサムとサイズで確認できます。
  • ファイル圧縮: ファイル送信時に自動的に圧縮できます。

参考記事:JS7® JobSchedulerファイル転送機能

クラスタリング機能(有償版のみ)