Zschimmer GmbH Impressum und Kontakt

Job Scheduler     Erste Seite

  XML     API     Register


logo

Was ist ein Job?

Ein Job bestimmt das auszuführende Programm, seine Laufzeit und das Verhalten im Fehlerfall. Darüber hinaus können die Parametrisierung, Vor- und Nachverarbeitung, konkurrierender Zugriff auf Sperren und mögliche Folge-Jobs Teil einer Job-Konfiguration sein.

Ein Job wird definiert in der XML-Konfiguration mit <job>.

Konfiguration

Die XML-Konfiguration eines Jobs kann in der zentralen Startkonfigurationsdatei (meist ./config/scheduler.xml) oder in Form einer separaten Datei in dem vom Job Scheduler überwachten Konfigurationsverzeichnis (meist ./config/live) vorgenommen werden, siehe Konfiguration aus Hot Folders

Implementierung

Der Job Scheduler startet ausführbare Programme und kann Jobs mit individuellen Implementierungen starten, die das API des Job Schedulers nutzen.

Ausführbare Programme

Sie können beliebig implementiert sein als executable, shell scripte, batch files. Dies bezieht Programme ein, z.B. JavaScript, VBScript, Perl, PHP, Ruby etc., für die ggf. ein Interpreter mit der auszuführenden Programmdatei gestartet werden muss. Java-Klassen können mit der für den Job Scheduler konfigurierten JVM gestartet werden.

Ausführbare Programme können mit folgenden Elementen konfiguriert werden:

<script language="…">


<script language="shell">

Der Job Scheduler erzeugt eine Shell für die Ausführung des Programms.

Beispiele:

<job name="simple_shell">
  <script language="shell"><![CDATA[
    echo hello world
    call my_script.cmd
    my_prog.exe
  ]]></script>
</job>  

<job name="simple_command">
  <script language="shell">
    <include file="my_script.cmd"/>
  </script>
</job>
Kommandos des Kommandozeileninterpreters können direkt als Inhalt des <script> Elements einngegeben werden. Alternativ können Shell Scripte mittels <include> angegeben werden.

<script language="java">

Der Job Scheduler startet eine JVM für die Ausführung der Java-Klasse.

Beispiel:

<job name="simple_java">
  <script language   = "java" 
          java_class = "sos.scheduler.ftp.JobSchedulerFTPReceive"/>
</job>

<process file="…">


Der Job Scheduler startet das Programm ohne separate Shell.

Beispiele:

<job name="simple_job">
  <process file="c:\my_prog.exe"/>
</job>

<job name="interpreter_job">
  <process file="c:\php\php.exe"
           param="-f 'c:\test\phpinfo.php'"/>
</job>
Für Programmdateien, die per Interpreter gestartet werden, muss dieser als auszuführendes Programm konfiguriert sein.

Implementierungen mit dem Job Scheduler API

Job-Implementierungen können das API des Job Schedulers nutzen, z.B. zur Protokollierung, Benachrichtigung per eMail, Zugriff auf Job-, Task- und Auftragsobjekte etc.

Der Job Scheduler startet diese Scripte nicht per Interpreter (s.o.) sondern implementiert eine Unterprogrammschnittstelle für den Aufruf von Scripten in diesen Sprachen und stellt ihnen Objekte und Methoden zur Verfügung.

Java

Ein Job in Java ist eine Implementierung der abstrakten Oberklasse sos.spooler.Job_impl.

Die Java-Schnittstelle stellt weitere Klassen bereit. Sie gilt entsprechend für die COM- und Perl-Schnittstellen, wenn Sie Ihren Job in einer anderen Sprache implementieren.

Den Pfad der implementierten Klasse geben Sie in sos.ini (Abschnitt [java], Eintrag class_path=…) an.

JavaScript und JScript

JavaScript ist in der Implementierung von SpiderMonkey (http://developer.mozilla.org/en/docs/SpiderMonkey) im Auslieferungsumfang des Job Schedulers für alle Plattformen enthalten.

Microsoft JScript ist auf Windows Plattformen verfügbar.

VBScript

Microsoft VBScript ist auf Windows Plattformen verfügbar.

Perl

Perl ist auf Unix-Plattformen i.d.R. vorinstalliert. Das Installationsprogramm des Job Schedulers versucht die Unterprogrammschnittstelle passend zur vorhandenen Perl Version zu installieren.

Auf Windows-Plattformen kann eine Perl-Implementierung, z.B. von http://www.activestate.com, nachinstalliert werden.

COM

Sie können auch (unter Windows) einen Job in jeder beliebigen Programmiersprache als COM-Server implementieren. Weiteres siehe hier.

Zustand eines Jobs

Ein Job ist in einem der folgenden Zustände.

pending Keine Task läuft. Das ist der anfängliche Zustand.
running Wenigstens eine Task läuft.
stopping Der Job stoppt. Der Scheduler startet keine weitere Task und die laufenden Tasks werden beendet. Sobald alle Tasks des Jobs beendet sind, wechselt der Job in den Zustand stopped.
Siehe das Kommando <modify_job cmd="stop">.
stopped Keine Task läuft und der Scheduler startet keine weitere Task.
Siehe das Kommando <modify_job cmd="stop">.
read_error Das Kommando reread hat zu einem Fehler geführt, und der Job ist unbrauchbar, weil der Programmcode nicht gelesen werden konnte.
Siehe das Kommando <modify_job cmd="reread">.
error Wenn eine Task mit Fehler geendet hat, startet der Scheduler keine weitere Task.

Zustand des Jobs ändern

Mit dem Kommando <modify_job> können Sie den Zustand des Jobs ändern. Die eingebaute HTML-Oberfläche des Job Schedulers bietet hierfür die entsprechenden Operationen an.

Eine Task starten

In der Konfiguration können Sie mit <run_time> einstellen, dass eine Task einmal oder periodisch gestartet werden soll.

Das Kommando <start_job> startet eine Task, ebenso die API-Methode Job.start().

 

Eine Task wird automatisch gestartet, wenn noch keine Task läuft und eine der folgenden Bedingungen gilt.

Außerdem startet eine Task

Eine Task läuft aber nur an, wenn sie eine Startzeit (at) hat oder

Sperren

Jobs können mit Sperren versehen werden, um den gleichzeitigen Lauf zweier Tasks zu verhindern. Siehe »Sperren«.

Verzeichnisüberwachung

Der Job Scheduler kann einen Job bei Änderungen in einem Dateiverzeichnis starten. Näheres im Kapitel Verzeichnisüberwachung.

Monitor

Für einen Job kann ein Monitor Script konfiguriert werden. Der Job Scheduler ruft Funktionen des Monitor Scripts bei Start und Ende der Task auf sowie vor und nach der Methode spooler_process().

Den Monitor bestimmen Sie mit <monitor>.

Beispiel:

        
<job name  = "simple_ftp"
  <params>
    <param name = "ftp_host"            value = "localhost"/>
    <param name = "ftp_user"            value = "anonymous"/>
    <param name = "ftp_password"        value = "anonymous"/>
  </params>

  <script language   = "java" 
          java_class = "sos.scheduler.ftp.JobSchedulerFTPReceive"/>

  <monitor>
    <script language="javascript"><![CDATA[
      function spooler_task_before() { 
        var today = yy = mm = dd = "";
        today = new Date();
        yy = today.getYear() + 1900;
        mm = today.getMonth() + 1;
        dd = today.getDate();
        if (parseInt(mm) < 10) mm = "0" + mm;
        if (parseInt(dd) < 10) dd = "0" + dd;
        spooler_task.params.set_var("ftp_file_path", "^test_" + yy + "-" + mm + "-" + dd + "\.csv$" );
        return true;
      } 
    ]]></script>
  </monitor>
</job>
Das Monitor Script verwendet einen Standard-Job der Auslieferung für den FTP-Transfer einer Datei. Dabei wird der Job-Parameter für den Namen der zu übertragenden Datei dynamisch aus dem Tagesdatum zusammengesetzt.


Software- und Organisations-Service GmbH

Zuletzt geändert von aa, 2007-10-10