# JobScheduler

JS7 JobScheduler est un ordonnanceur open source qui permet à une entreprise d'ordonnancer ses travaux d'informations et d'automatiser ses processus. JS7 JobScheduler est utilisé pour des scripts ou des fichiers mais peut tout aussi bien exécuter des procédures stockées, effectuer des transferts de fichiers ou appeler des services web.
Les traitements sont interfaçables en Web services permettant l'interopérabilité avec les applications informatiques de l'entreprise. L'ensemble des informations est stocké dans une base de données (MySQL, PostgreSQL, Firebird, SQL Server, Oracle ou Adaptive Server Enterprise).
Le Gartner intègre JobScheduler dans son Magic Quadrant for Workload Automation le 27 février 2012. L'outil rentre dans la liste des achats stratégiques pour un directeur informatique.

## Plateformes supportées

Systèmes d'exploitation:
* Windows 2003/2008/XP/Vista/7/10
* Linux à partir du noyau 2.4
* Solaris 8/9/10 (SPARC, x86)
* HP-UX 11 (IA-64)
* AIX 5.3
Systèmes de Base de données :
* Oracle 8.1.7, 9.2, 10g, 11g
* SQL Server 2000, 2005, 2008
* Adaptive Server Enterprise ASE 15
* MySQL version 4.1, 5.x
* PostgreSQL 8.x
* Firebird 1.5

## Principales fonctionnalités

* Lancement d'exécutables, de scripts shell et de procédures stockées.
* Déclenchement d'événements pour le démarrage des traitements tel qu'un événement calendrier, surveillance d'arrivée de fichiers et événements basés sur les API initiés par les applications externes.
* Configuration de traitement en tant que Services Web pour fournir une interopérabilité avec des Architectures Orientées Services (BPEL).

## Mode opératoire

* Utilisé pour l'ordonnancement de batch, l'ordonnancement tourne en tant que démon Unix ou en tant que service Windows en tâche de fond.
* Le contrôle du traitement est pris en charge par les commandes en ligne ou par l'interface web embarquée.
* Un éditeur graphique pour la configuration des traitements et une interface web sont disponibles.
L'ordonnanceur peut être contrôlé par l'interface web embarquée. Il utilise, en interne, des fichiers XML pour la définition des tâches.

## Exécution du traitement

* Le traitement est l'unité de base pour le traitement de l'exécution (exécutable, script shell, procédures stockées, transfert…) ou des intégrations basées sur l'interface de programmation.
* Les traitements sont exécutés indépendamment les uns des autres.
* Les conditions de dépendances prennent en compte le statut du prédécesseur ou le code retour du shell, ceci sans limite de traitements précédents.
* Les traitements peuvent être instanciés, un même traitement peut être exécutée en parallèle, chacune de ces exécutions est une tâche.
* Les chaînes de traitements sont un assemblage de nœuds, ce système permet de lier simplement des traitements en fonction du succès d'un prédécesseur ou de définir des chemins dégradés.
* La surveillance d'un répertoire peut déclencher le départ d'un traitement permettant ainsi l'intégration d'applications dans un workflow.
* Les traitements peuvent être déclenchés par un calendrier interne, une commande en ligne ou en services web.
* Toute application peut démarrer un traitement à travers l'interface de programmation.

## Fonctionnalités clés

L'ordonnanceur est fourni en standard avec les fonctions suivantes :
* L'activité peut être limitée en intervalles de temps, l'ordonnanceur supporte un nombre illimité d'intervalles qui peuvent être configurés en fonction des besoins.
* L'ordonnanceur gère les priorités d'exécution entre les traitements.
* L'historique des traitements peut être stocké en base de données.
* Les verrous évitent les accès concurrentiels à une même ressource, comme par exemple l'accès à une base de données.
* Des traitements standards sont fournis nativement avec l'outil : gestion des journaux (« rotatelog »), traitements de maintenance (purge, vérification, etc.), exécution distante (mode dit « agentless »), transferts de fichiers (FTP, SCP, SFTP, etc.).
* Les notifications par e-mail, la journalisation et la surveillance des journaux est configurable globalement ou pour chaque traitement.
* L'interface de programmation (API) facilite l'intégration des traitements et des scripts, par exemple sur la gestion des conditions complexes.
* Une interfaces utilisateur unique : une interface HTTP/HTTPS JOC Cockpit pour la création, gestion et la supervision des workflows.

## Fonctions additionnelles

* Haute disponibilité : des serveurs secondaires peuvent être configurés pour reprendre les traitements après un crash du serveur primaire.
* Équilibrage de charge : plusieurs ordonnanceurs regroupés peuvent se partager la charge en fonction des disponibilités de chacun.
* Intégrations avec des produits tiers :
** surveillance des traitements avec Nagios ;
** gestion des rapports avec JasperReports ;
** Secure Copy, SSH…

## Implémentation

* L'ordonnanceur est écrit en C++.
* Les traitements standards sont écrits en Java.