Scheduler Erste Seite |
<job>. 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
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:
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.
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>
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.
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 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.
Microsoft VBScript ist auf Windows Plattformen verfügbar.
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.
Sie können auch (unter Windows) einen Job in jeder beliebigen Programmiersprache als COM-Server implementieren. Weiteres siehe hier.
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. |
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.
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.
<period>, wenn in ihr repeat= oder single_start= angegeben ist. Task.repeat gesetzt hat und die Zeit erreicht ist. Job.delay_after_error abgelaufen ist. <period repeat="…"> angegebene Intervall nach dem Ende der zuletzt gelaufenen Task abgelaufen ist. Außerdem startet eine Task
<job tasks="…"> zugelassen. Eine Task läuft aber nur an, wenn sie eine Startzeit (at) hat oder
Job.delay_after_error) nicht wirkt. Jobs können mit Sperren versehen werden, um den gleichzeitigen Lauf zweier Tasks zu verhindern. Siehe »Sperren«.
Der Job Scheduler kann einen Job bei Änderungen in einem Dateiverzeichnis starten. Näheres im Kapitel Verzeichnisüberwachung.
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.
Zuletzt geändert von aa, 2007-10-10 |