JobScheduler

**JobScheduler**は、エンタープライズレベルのスケジューリングとプロセス自動化のためのオープンソースのアプリケーションソフトウェアである。実行ファイルやスクリプトを起動し、ユーザープログラムを自動的に実行するために使用される。JobSchedulerは、ステータスと履歴情報をバックエンドデータベース管理システムに保存する。

JobSchedulerのクラスタリングを除くすべての機能は、GPL V.3ライセンスの下で使用可能となっている。クラスタリングとエンタープライズレベルのサポートとサービスを求めるユーザーは、商用ライセンスを利用可能である。

## 主な機能

* JobSchedulerは、実行ファイル、シェルスクリプト、およびデータベースプロシージャを実行できる。
* ジョブの開始は、カレンダーイベント、受信ファイルの監視、他のジョブスケジューリングイベント、外部アプリケーションによって開始されたAPIイベントなどのイベントによってトリガーできる。

## 歴史と発展
JobSchedulerは、Joacim Zschimmerから提供されたコードを使用してSOS GmbHによって開発された。 独立した製品としてのJobSchedulerの開発は2005年に開始され、同年にオープンソースGPL 2ライセンスの下でリリースされた。 JobSchedulerの64ビットバージョンは2013年にリリースされ、ユニバーサルエージェントは2015年9月にリリースされた

SOS GmbHとJobSchedulerは、2012年にガートナーのITリサーチおよびアドバイザリー会社により、世界的な作業自動化市場に関するMagic Quadrantレポートにおいて選ばれている。JobSchedulerは、「...オープンソースツールの採用ポリシーを持つ組織にとって魅力的」と説明されていた。

2021年10月従来のコードベースを完全に書き換えたV.2系が発表され、JS7® JobSchedulerとリブランディングされた。

## 説明

### アーキテクチャ

* JS7® JobSchedulerは、JOCコックピット、コントローラー、エージェントから構成される。
* JOCコックピット
**WEB GUI/REST API
**ジョブ実行制御配布
**履歴情報収集・保存
**ジョブ定義・リソースの作成
**ジョブ定義の管理とコントローラーへの配布
**クラスター制御、イベントキュー、ロギングなど
*コントローラー
**DB接続を廃止
**ジョブ定義をJOCコックピットから取得
**実行履歴をJOCコックピットに送信
**実行計画とジョブ定義をエージェントに配布
*自律型エージェント
**コントローラーとの通信障害時にも自律的にジョブ実行制御
**エージェントクラスター内で実行計画とジョブ定義を同期
**実行履歴をコントローラーに送信
*公開鍵認証の導入
**各モジュール間通信の公開鍵認証
***JOCコックピットまたは外部認証局で証明書を作成・署名
***ルート証明書と中間証明書を各コントローラーとエージェントに配布
**ジョブ定義ファイルの公開鍵認証
***JOCコックピットまたは外部認証局でジョブ定義ファイル毎に署名
***各コントローラー及びエージェントで配布された署名が一致するかを確認

### 動作モード

* JS7® JobSchedulerコントローラー・エージェントは、バックグラウンドでUnixデーモンまたはWindowsサービスとして無人で実行される。
** JS7® JobSchedulerは、一連の操作を実行するバッチ処理に使用できる。
** 個々の操作に対してほぼリアルタイムの処理を開始できる。着信ファイルの到着などの外部イベントに応答して、ほぼリアルタイムのトリガーをオンザフライで生成できる。
* 監視と手動介入は、JOCコックピットのWebベースのGUI、REST API、Powershellコマンドレットを利用して実行できる。

### 主な機能

* ワークフロー：複数のジョブノードが渡されるアセンブリラインとして見ることができる。ワークフロー内の各ジョブは、処理のステップを構成する。
*ワークフローはDAG（有向非巡回グラフ、Directed Acyclic Graph）モデルを採用し、BPMN（ビジネスプロセスモデリング表記法、Business Process Model and Notation）ベースのワークフローパターンを採用している（ただし準拠ではない）
*ワークフロー・ジョブ定義のフォーマットはJSONベースのHOCON（Human-Optimized Config Object Notation）形式であり、JOCコックピットのGUIエディタまたはテキストエディタで作成・編集できる。
* クロスプラットフォームスケジューリング： 
** 異なるオペレーティングシステムのリモートホストでジョブを直接実行するユニバーサルエージェント。
** 異なるオペレーティングシステムでジョブを実行するためのエージェントレススケジューリング。
* 高可用性のためのアクティブ/パッシブクラスタ。
* SQLデータベースでのジョブ履歴、およびログ情報の記録。
* ジョブのトリガーは、ディレクトリ監視およびファイル監視などによって開始する。
* ビルトインのファイル転送機能。
* スクリプト機能（シェル、JavaScript、PowerShellなど） ）。
* Nagios、Zabbix、SCOMなどのシステムモニターと統合するための監視インターフェイス。
* ファイル転送やログローテーションなどの操作をカバーする標準ジョブテンプレートのライブラリ。
*SAP S/4 HANA®に提供される SAP Job Scheduling Service REST API を使用したJS7ワークフローテンプレート。

### 実装

* JS7®JobSchedulerはScalaとJavaで開発されている。JS7®JobSchedulerで配布される標準ジョブはJavaで実装されている。
* JS7®JobSchedulerによって処理される個々のオブジェクトに関する情報（ジョブ、ワークフロー、スケジュールなど）は、HOCON(JSON)形式で永続的に保存される。
* JOCコックピットは、データベース管理システム（DBMS）を使用して、ジョブのステータス、および履歴情報を保存する。 
**
**https://kb.sos-berlin.com/display/PKB/JS7+-+Database

### JobScheduler ユニバーサルエージェント

* エージェントは、Java仮想マシンをサポートするオペレーティングシステムで実行される。
* エージェントは、コントローラーから構成およびタスク実行要求を取得し、DBMSは必要ない。
* コントローラー/エージェント通信は、単一のHTTPまたはHTTPS接続を使用する。
* 複数のエージェントは、冗長性とフェールオーバーを満たすようエージェントクラスターで設定できる。

### サポートされているプラットフォーム
https://kb.sos-berlin.com/display/JS7/JS7+-+Platforms

#### JOCコックピット/コントローラー
オペレーティングシステム： 

* Windows （32および64ビット）
* Linux （32および64ビット）
*Oracle/openJDK 8 - 11, 17

データベース管理システムl（JOCコックピットのみ必要）： 

* オラクル
* SQL Server
* DB2
* MySQL
* MariaDB
* PostgreSQL
*H2

#### JobScheduler ユニバーサルエージェント
ユニバーサルエージェントは、Oracle/openJDK 8 - 11, 17をサポートする任意のオペレーティングシステムで実行できる。DBMSは必要ない。

### ライセンス
JS7® JobSchedulerは、オープンソースのGPL 3.0ライセンスの下で使用できる。ユーザーは商用ライセンスも購入可能。 

オープンソース版と商用ライセンス版の違いは、クラスタリング機能及び商用サポートの提供の有無である。

### サポートとサービス
商用ライセンスをお持ちのユーザーは、エンタープライズレベルのサポートとサービスを利用できる。 オープンソースライセンスでJobSchedulerを操作しているユーザーは、JobScheduler Knowledge BaseおよびSourceForgeのフォーラムからサポートを受けることができる。

## 関連項目

* ジョブスケジューラソフトウェアのリスト
* Mohr、James： "Job Schedulingàla Carte"、Linux Magazine、2008年12月、＃97;オンライン版はこちら。
* Simon Brock、Simon：「 完璧なオープンソースタスクスケジューラ 」2010年2月、デニスパブリッシングリミテッド、イギリス。2016年5月にアクセス。

## 参照資料

## 外部リンク

* 
* ドイツのベルリンにあるSoftware- und Organisations-Service GmbH社のWebサイト
*日本国内代理店：OSSラボ株式会社