Job Scheduler Erste Seite |
Wenn eine Job-Kette Dateien aus einem Verzeichnis verarbeiten soll, können Sie Dateiaufträge verwenden. Ein Dateiauftrag ist ein Auftrag mit einem Verweis auf eine Datei. Der Scheduler überwacht das Verzeichnis und erzeugt zu jeder neuen Datei einen Dateiauftrag.
<job_chain name="my_job_chain">
<file_order_source directory="path"/>
<file_order_source directory="other_path" regex="regex"/>
<job_chain_node state="100" job="job_1 error_state="error"/>
<job_chain_node state="200" job="job_2 error_state="error"/>
<file_order_sink state="ok" remove="yes"/>
<file_order_sink state="error" move_to="/errorpath.../ "/>
</job_chain> Siehe <job_chain>, <file_order_source> und <file_order_sink>.
Eine Dateiauftragsquelle <file_order_source> überwacht ein Verzeichnis. Wenn diesem ein Dateiname hinzugefügt wird, der dem optionalen Regulären Ausdruck entspricht, führt das zu einem Dateiauftrag.
<job_chain …>
<file_order_source directory="…" regex="…"/>
… Ein Dateiauftrag ist ein Auftrag Order mit folgenden Eigenschaften:
order.state <file_order_source next_state="…"> eingestellte Zustand. order.id order.params.value( "scheduler_file_path" ) order.id. Diese für den Scheduler reservierte Variable macht einen Auftrag zum Dateiauftrag. Die ältesten Dateien (die mit der am weitesten zurückliegenden letzten Änderung) werden zuerst berücksichtigt.
Eine Job-Kette kann mehrere Auftragsquellen haben. Der Scheduler berücksichtigt sie in der angegebenen Reihenfolge.
Der Scheduler entfernt einen Dateiauftrag, wenn die dazugehörige Datei nicht mehr im Verzeichnis steht und
der Dateiauftrag noch nicht einem Job übergeben wurde
der Dateiauftrag auf der Schwarzen Liste steht
Dateiaufträge, die in Ausführung sind, sind nicht betroffen.
Dieser Abgleich wird durchgeführt,
Am Ende der Ausführung des Auftrags kann die zugehörige Datei entfernt oder verschoben werden. Die mit <file_order_sink> definierten Zustände sind Endzustände.
Wenn aber die Datei bereits entfernt worden ist, gibt der Scheduler eine Warnung aus und der Dateiauftrag ist erledigt.
|
SCHEDULER-339 |
File does not exist and can therefore neither be moved nor removed: |
Wenn die Datei sich nicht entfernen bzw. verschieben lässt, gelangt der Auftrag auf die Schwarze Liste.
<file_order_sink state="…" move_to="directory_path">
Eine Datei gleichen Namens im Zielverzeichnis wird ohne Warnung überschrieben.
<file_order_sink state="…" remove="yes">
Wenn ein Dateiauftrag ausgeführt ist (einen Endzustand erreicht hat), aber die Datei noch vorhanden ist, dann setzt der Scheduler den Auftrag auf die Schwarze Liste.
|
SCHEDULER-340 |
File still exists. Order has been set on the blacklist |
Dort bleibt er bis
<remove_order> ausgeführt wird. Damit wird verhindert, dass die Datei sofort zu einem neuen Dateiauftrag führt.
Wenn die Verzeichnisüberwachung auf einen Fehler läuft, zum Beispiel weil das Verzeichnis abgehängt worden ist, dann gibt der Scheduler eine Warnung aus und erzeugt eine eMail (die Einstellungen aus factory.ini (Abschnitt [spooler]) gelten).
Der Scheduler versucht periodisch die Überwachung erneut zu starten. Fehlermeldungen dabei werden ignoriert. Die Periode ist einstellbar mit <file_order_source delay_after_error="…">. Wenn das Verzeichnis wieder lesbar ist, sendet der Scheduler eine entsprechende eMail und gibt diese Meldung aus:
|
SCHEDULER-984 |
Recovered from previous error in directory |
Wenn ein Dateiname nicht zu einem Auftrag gemacht werden kann (weil der Pfad zu lang ist für die Datenbankspalte scheduler_orders.id), dann merkt er sich den Pfad, um die Fehlermeldung nicht bei jedem Lesen des Verzeichnisses zu wiederholen, und setzt fort nach der Meldung
|
SCHEDULER-346 |
Due to previous error the path will be ignored: |
Sobald der erste Job zum ersten Mal bereit ist, einen Auftrag auszuführen, liest der Scheduler das Verzeichnis (mit der Beschränkung durch den Regulären Ausdruck) und erzeugt daraus Dateiaufträge.
Wenn das Verzeichnis viele Dateien enthält (mehr als mit <file_order_source max="…"> eingestellt), dann verbleibt eine Liste der übrigen Dateien im Speicher, aus der der Scheduler später die weiteren Dateiaufträge erzeugt. Die Meldungen dazu sind:
|
SCHEDULER-985 |
more file orders will be added later, after previous orders have been processed |
|
SCHEDULER-986 |
Continuing reading buffered directory (as of ) |
Der Scheduler liest das Verzeichnis erneut, wenn
<file_order_source repeat="…"> einstellte Periode abgelaufen ist. Unter Windows lässt der Scheduler außerdem das Verzeichnis vom Betriebssystem überwachen. Eine Signalisierung veranlasst den Scheduler, das Verzeichnis vor Ablauf der Periode zu lesen. Damit reagiert der Scheduler sofort auf eine neue Datei.
Trotzdem sollte für ein Verzeichnis auf einem anderen Rechner das Wiederholungsintervall nicht mit <file_order_source repeat="no"> abgestellt werden. Die Windows-Verzeichnisüberwachung verstummt, wenn das Verzeichnis entfernt und wieder angelegt wird. Siehe außerdem Microsofts Article 188321: FindFirstChangeNotification May Not Notify All Processes on File Changes. Das Wiederholungsintervall erneuert die Verzeichnisüberwachung periodisch.
Einen auftragsgesteuerten <process>-Job startet der Scheduler für jeden Dateiauftrag.
Die Umgebungsvariable SCHEDULER_TASK_TRIGGER_FILES enthält den Dateipfad.
Zuletzt geändert von aa, 2008-01-25 |