|
Task
|
spooler_task.add_pid( pid, timeout )
|
Macht dem Scheduler einen abhängigen, befristeten Prozess bekannt |
| |
|
spooler_task.call_me_again_when_locks_available()
|
Wiederholt spooler_open() oder spooler_process(), sobald Sperren verfügbar |
| |
|
string |
spooler_task.changed_directories |
Die Verzeichnisse, deren Änderung den Start der Task veranlasst haben |
| |
|
Subprocess |
spooler_task.create_subprocess( filename_and_arguments )
|
Start eines überwachten Subprozesses |
| |
|
spooler_task.delay_spooler_process = seconds_or_hhmm_ss
|
Verzögert den nächsten Aufruf von spooler_process() |
| |
|
spooler_task.end()
|
Beendet die Task |
| |
|
spooler_task.error = string
|
Setzt einen Fehler und stoppt den Job |
|
Error |
spooler_task.error |
Setzt einen Fehler und stoppt den Job |
| |
|
spooler_task.exit_code = int
|
Exit-Code |
|
int |
spooler_task.exit_code |
|
| |
|
spooler_task.history_field( name ) = value
|
Ein Feld in der Task-Historie |
| |
|
int |
spooler_task.id |
Die Task-Kennung |
| |
|
Job |
spooler_task.job |
Der Job, zu dem die Task gehört |
| |
|
Order |
spooler_task.order |
Der zu verarbeitende Auftrag |
| |
|
Variable_set |
spooler_task.params |
Die Parameter der Task |
| |
|
spooler_task.priority = int
|
Priorität der laufenden Task |
|
int |
spooler_task.priority |
|
| |
|
spooler_task.priority_class = string
|
Prioritätsklasse der laufenden Task |
|
string |
spooler_task.priority_class |
|
| |
|
spooler_task.remove_pid( pid )
|
Gegenstück zu add_pid() |
| |
|
spooler_task.repeat = double
|
Startet erneut eine Task nach der eingestellten Zeit |
| |
|
string |
spooler_task.stderr_path |
Der Pfadname der stderr-Ausgabe der Task |
| |
|
string |
spooler_task.stderr_text |
Der bisher vom Prozess der Task nach stderr geschriebene Text |
| |
|
string |
spooler_task.stdout_path |
Der Pfadname der stdout-Ausgabe der Task |
| |
|
string |
spooler_task.stdout_text |
Der bisher vom Prozess der Task nach stdout geschriebene Text |
| |
|
string |
spooler_task.trigger_files |
Pfade der Dateien in mit regex überwachten Verzeichnissen |
| |
|
boolean |
spooler_task.try_hold_lock( lock_path )
|
Versucht, eine Sperre zu halten |
| |
|
boolean |
spooler_task.try_hold_lock_non_exclusive( lock_path )
|
Versucht, eine Sperre nicht-exklusiv zu halten |
| |
|
Web_service |
spooler_task.web_service |
Der Webdienst, der der Task zugeordnet ist |
| |
|
Web_service |
spooler_task.web_service_or_null |
Der Webdienst, der der Task zugeordnet ist, oder null. |
Eine Task ist eine laufende Instanz eines Jobs. Eine Task kann wartend in der Task-Warteschlange des Jobs sein oder laufen.
add_pid Macht dem Scheduler einen abhängigen, befristeten Prozess bekannt
|
spooler_task.add_pid( int pid, string|double|int timeout (optional) )
|
Mit dem Aufruf kann die Laufzeit von abhängigen Prozessen eingeschränkt werden. Bei Task-Ende bricht der Scheduler noch laufende abhängigen Prozesse in jedem Fall ab. Wenn der Scheduler einen Prozess abbricht, gibt es einen Eintrag ins Protokoll. Die Task erfährt davon nichts. Der Aufruf <kill_task> bricht alle mit add_pid() bekannt gemachten Prozesse ab. Unter Unix kann eine Prozessgruppen-Id als negative pid übergeben werden. Ein kill bricht dann die ganze Prozessgruppe ab. Bei Ausführung auf einem entfernten Rechner mit <process_class remote_scheduler="…"> wirkt die Frist nicht. Parameter
Meldungen
[warn] |
SCHEDULER-849 |
Timeout is not possible for a subprocess running on a remote host (it cannot be killed), pid=(1)
|
call_me_again_when_locks_available Wiederholt spooler_open() oder spooler_process(), sobald Sperren verfügbar
|
spooler_task.call_me_again_when_locks_available()
|
Veranlasst den Scheduler, nach erfolglosem spooler_task.try_hold_lock() oder spooler_task.try_hold_lock_non_exclusive() den Aufruf von spooler_open() bzw. spooler_process() zu wiederholen, sobald die angeforderten Sperren verfügbar sind. Der Scheduler wiederholt dann den Aufruf mit gehaltenen Sperren, so dass die erstgenannten Aufrufe Erfolg haben werden. Nach dem Aufruf hat der Rückgabewert von spooler_open() bzw. spooler_process() (true/false) keine Wirkung. Einen Auftrag spooler_task.order belässt der Scheduler in seinem Zustand. Exceptions
changed_directories Die Verzeichnisse, deren Änderung den Start der Task veranlasst haben
|
string |
spooler_task.changed_directories |
Siehe Job.start_when_directory_changed(), Task.trigger_files. Rückgabe
string Die Verzeichnisnamen sind durch Semikolon getrennt. "", wenn kein Verzeichnis geändert ist. Meldungen
[warn] |
SCHEDULER-976 |
This directory path with ';' will not be included in triggered_files: (1)
|
create_subprocess Start eines überwachten Subprozesses
Subprocess |
spooler_task.create_subprocess( string|string[] filename_and_arguments (optional) )
|
Parameter
|
filename_and_arguments (optional)
|
|
Rückgabe
Subprocess delay_spooler_process Verzögert den nächsten Aufruf von spooler_process()
|
spooler_task.delay_spooler_process = string|double|int seconds_or_hhmm_ss
|
Wirkt nur in spooler_process(). Parameter
end Beendet die Task
Der Scheduler ruft nicht mehr spooler_process() auf. Statt dessen ruft er spooler_close() auf. Der Aufruf kann verwendet werden, um beim Task-Ende den Versand des Task-Protokolls zu veranlassen, siehe Log. Meldungen
[info] |
SCHEDULER-815 |
Task should end but it has just been started with an order attached, so one step will be done
|
error Setzt einen Fehler und stoppt den Job
|
spooler_task.error = string
|
Error |
spooler_task.error |
Der lesende Aufruf liefert den letzten Fehler dieser Task. Wenn kein Fehler vorliegt, wird ein Error-Objekt zurückgeliefert, dessen Eigenschaft is_error false liefert. Sie können eine Fehlermeldung auch mit spooler_log.error() ins Task-Protokoll schreiben. Parameter
Rückgabe
Error exit_code Exit-Code
|
spooler_task.exit_code = int
|
|
int |
spooler_task.exit_code |
Beispiel
spooler_log.error( "This call of spooler_log.error() sets the exit code to 1" );
spooler_task.exit_code = 0; // Reset the exit code Der Exit-Code ist anfänglich 0 und wird bei einem Fehler auf 1 gesetzt. Das ist, wenn der Scheduler eine Zeile mit [ERROR] ins Task-Protokoll schreibt: Der Job kann anschließend, z.B. in spooler_on_error(), den spooler_task.exit_code neu setzen. Der Exit-Codes des (Betriebssystem-)Prozesses, der die Task ausführt, ist ohne Belang und wird nicht übernommen, im Gegensatz zu Jobs mit <process> oder <script language="shell">. Der Exit-Code entscheidet über die anschließend auszuführenden Kommandos. Siehe hierzu <job><commands on_exit_code="…">. Der Exit-Codes hat keinen Einfluss darauf, ob der Job gestoppt wird (eine Fehlermeldung der Task lässt den Job stoppen). Parameter
history_field Ein Feld in der Task-Historie
|
spooler_task.history_field( string name ) = var value
|
Beispiel
spooler_task.history_field( "extra" ) = 4711;
Die Datenbanktabelle (s. factory.ini (Abschnitt [spooler], Eintrag db_history_table=…) muss eine Spalte mit dem Namen haben und diese Spalte muss in der Datei factory.ini (Abschnitt [job], Eintrag history_columns=…) deklariert sein.
Parameter
id Die Task-Kennung
Jede Task hat eine Scheduler-weit eindeutige numerische Kennung. job Der Job, zu dem die Task gehört
Rückgabe
Job order Der zu verarbeitende Auftrag
Beispiel
var order = spooler_task.order;
spooler_log.info( "order.id=" + order.id + ", order.title=" + order.title ); Rückgabe
Order null, wenn kein Auftrag vorliegt.
params Die Parameter der Task
Beispiel
var value = spooler_task.params.value( "parameter3" );
Beispiel
var parameters = spooler_task.params;
if( parameters.count > 0 ) spooler_log.info( "Parameters given" );
var value1 = parameters.value( "parameter1" );
var value2 = parameters.value( "parameter2" ); Eine Task kann Parameter haben. Die Parameter können gesetzt werden mit Rückgabe
Variable_set != null
priority Priorität der laufenden Task
|
spooler_task.priority = int
|
|
int |
spooler_task.priority |
Beispiel
spooler_task.priority = +5; // Unix: Priorität etwas verschlechtern Unix: Die höchste Priorität ist -20, die niedrigste 20. Üblicherweise kann die Priorität nur gesenkt, nicht erhöht werden. Windows kennt die Prioritätsklassen 4 "idle", 6 "below_normal", 8 "normal", 10 "above_normal" und 13 "high" (andere Werte werden abgerundet). Siehe auch Task.priority_class. Wenn die Priorität nicht gesetzt werden kann, führt das nicht zu einem Fehler. Ein Prozess mit hoher Priorität kann Ihren Rechner blockieren. Die Priorität kann betriebsystem-unabhängig eingestellt werden mit Task.priority_class. Parameter
priority_class Prioritätsklasse der laufenden Task
|
spooler_task.priority_class = string
|
|
string |
spooler_task.priority_class |
Beispiel
spooler_task.priority_class = "below_normal"; Gesetzt werden können folgende Prioritätsklassen, die verschiedenen Prioritäten unter Windows und Unix entsprechen: | Prioritätsklasse | Windows | Unix | "idle" | 4 | 16 | "below_normal" | 6 | 6 | "normal" | 8 | 0 | "above_normal" | 10 | -6 | "high" | 13 | -16 | Wenn die Priorität nicht gesetzt werden kann, z.B. wegen mangelnden Rechts, führt das nicht zu einem Fehler. Dagegen führt das Setzen einer nicht hier aufgeführten Prioritätsklasse zu einem Fehler. Ein Prozess mit hoher Priorität kann Ihren Rechner blockieren. Siehe auch Task.priority, Subprocess.priority_class und Microsoft® Windows® Scheduling Priorities. Parameter
remove_pid Gegenstück zu add_pid()
|
spooler_task.remove_pid( int pid )
|
Es gibt keinen Fehler, wenn die Pid nicht mit Task hinzugefügt worden ist. Siehe Task.add_pid(). Parameter
| pid |
Kennung der Task, die nicht länger überwacht werden soll. |
repeat Startet erneut eine Task nach der eingestellten Zeit
|
spooler_task.repeat = double
|
(Diese Methode gehört eigentlich in die Klasse Job. Sie hat nichts mit der gerade laufenden Task zu tun.) Wenn nach Ablauf der angegebenen Zeit keine Task des Jobs läuft, startet der Scheduler eine Task. Dabei wird die <run_time> berücksichtigt. <period repeat="…"> der aktuellen Periode wird vorläufig außer Kraft gesetzt. Job.delay_after_error hat Vorrang, wenn die Task einen Fehler liefert. Parameter
stderr_path Der Pfadname der stderr-Ausgabe der Task
|
string |
spooler_task.stderr_path |
Der Text in stderr wird derzeit im Zeichensatz ISO-8859-1 interpretiert. Rückgabe
string "", wenn die Task nicht in einem separaten Prozess <process_classes> läuft. stderr_text Der bisher vom Prozess der Task nach stderr geschriebene Text
|
string |
spooler_task.stderr_text |
Der Text in stderr wird derzeit im Zeichensatz ISO-8859-1 interpretiert. Rückgabe
string "", wenn die Task nicht in einem separaten Prozess <process_classes> läuft. stdout_path Der Pfadname der stdout-Ausgabe der Task
|
string |
spooler_task.stdout_path |
Der Text in stdout wird derzeit im Zeichensatz ISO-8859-1 interpretiert. Rückgabe
string "", wenn die Task nicht in einem separaten Prozess <process_classes> läuft. stdout_text Der bisher vom Prozess der Task nach stdout geschriebene Text
|
string |
spooler_task.stdout_text |
Der Text in stdout wird derzeit im Zeichensatz ISO-8859-1 interpretiert. Rückgabe
string "", wenn die Task nicht in einem separaten Prozess <process_classes> läuft. trigger_files Pfade der Dateien in mit regex überwachten Verzeichnissen
|
string |
spooler_task.trigger_files |
Liefert die Pfade der Dateien aus überwachten Verzeichnissen (Job.start_when_directory_changed() oder <start_when_directory_changed>) zum Zeitpunkt des Starts der Task. Nur die Verzeichnisse, für die ein Regulärer Ausdruck (regex) angegeben ist, werden berücksichtigt. Die Pfade werden aus dem Verzeichnispfad, wie er in Job.start_when_directory_changed() oder <start_when_directory_changed> angegeben ist und dem Dateinamen zusammengesetzt. Nicht-API-Jobs (<process> und <script language="shell">) steht der Inhalt von Task.trigger_files in der Umgebungsvariablen SCHEDULER_TASK_TRIGGER_FILES zur Verfügung. Siehe Job.start_when_directory_changed(), Task.changed_directories(). Rückgabe
string Die Dateipfade durch Semikolon getrennt. "" sonst Meldungen
[warn] |
SCHEDULER-975 |
This file path with ';' will not be included in changed_directory: (1)
|
try_hold_lock Versucht, eine Sperre zu halten
|
boolean |
spooler_task.try_hold_lock( string lock_path )
|
Beispiel
function spooler_process()
{
var result = false;
if( spooler_task.try_hold_lock( "Georgien" ) &&
spooler_task.try_hold_lock_non_exlusive( "Venezuela" ) )
{
// Task is holding the two locks. Insert processing code here.
result = ...
}
else
{
spooler_task.call_me_again_when_locks_available();
}
return result;
} try_lock_hold() versucht, die angegebene Sperre (Lock) zu halten, und kann aufgerufen werden - in
spooler_open(): die Sperre wird für die Task gehalten und erst nach Beendigung freigegeben, - in
spooler_process(): die Sperre wird für nur für diesen Jobschritt gehalten und nach dessen Beendigung freigegeben, also beim Verlassen von spooler_process(). Wenn die Sperre nicht verfügbar ist, ein Aufruf also false liefert, kann entweder Siehe auch <lock.use>. Parameter
Rückgabe
boolean true, wenn die Task die Sperre hält.
Exceptions
Meldungen
[warn] |
SCHEDULER-469 |
try_hold_lock() or try_hold_lock_non_exclusive() has failed and call_me_again_when_locks_available() has not been called
|
try_hold_lock_non_exclusive Versucht, eine Sperre nicht-exklusiv zu halten
|
boolean |
spooler_task.try_hold_lock_non_exclusive( string lock_path )
|
Es gelten dieselben Bedingungen wie für spooler_task.try_hold_lock(). Siehe auch <lock.use exclusive="no">. Parameter
Rückgabe
boolean true, wenn die Task die Sperre hält.
Exceptions
Meldungen
[warn] |
SCHEDULER-469 |
try_hold_lock() or try_hold_lock_non_exclusive() has failed and call_me_again_when_locks_available() has not been called
|
web_service Der Webdienst, der der Task zugeordnet ist
Wenn die Task keinem Webdienst zugeordnet ist, liefert der Aufruf eine Exception. Siehe auch Task.web_service_or_null. Rückgabe
Web_service web_service_or_null Der Webdienst, der der Task zugeordnet ist, oder null.
Siehe auch Task.web_service. Rückgabe
Web_service |