Zschimmer GmbH Impressum und Kontakt

Job Scheduler     Erste Seite   –  

  XML     API     Register


logo

Konfiguration aus Hot Folders

Jobs, Job-Ketten, Daueraufträge, Prozessklassen und Sperren (im folgenden Objekte genannt) können in einzelnen Dateien gehalten werden, die der Job Scheduler automatisch nach Änderung übernimmt. Der Job Scheduler überwacht Verzeichnisse (Hot Folders), für die hinzugefügte, geänderte und gelöschte Dateien als entsprechende Operationen zum Hinzufügen, Ändern und Entfernen von Jobs, Job-Ketten etc. ausgeführt werden.

Inhalt

Konfigurationsverzeichnis

Dateien für Prozessklassen, Sperren, Jobs, Job-Ketten und Daueraufträge

Spiegelung des Verzeichnisses im Job Scheduler

Wirkung der Kommandos zum Ändern und Löschen

Verhalten der einzelnen Objekttypen

Prozessklassen

Sperren

Jobs

Job-Ketten

Verschachtelte Job-Ketten

Daueraufträge

Kommando <show_state>

Konfigurationsverzeichnis

Die Dateien liest der Job Scheduler aus dem Konfigurationsvereichnis und dessen Unterverzeichnissen. Das Konfigurationsverzeichnis kann eingestellt werden mit

Der Job Scheduler überwacht das Konfigurationsverzeichnis und seine Unterverzeichnisse und übernimmt hinzugefügte und geänderte Dateien. Löschen einer Datei führt zum Löschen des entsprechenden Objekts im Job Scheduler.

Unter Windows verwendet der Job Scheduler die Verzeichnisüberwachung des Betriebsystems, bemerkt Änderungen also sofort. Außerdem prüft er die Verzeichnisse im Minutenabstand.

Unter Unix überwacht der Job Scheduler die Verzeichnisse im Abstand von zwischen 5 und 60 Sekunden. Nach einer Änderung verkürzt er den Abstand auf fünf Sekunden und verlängert ihn, wenn keine Änderung vorliegt, bis auf 60 Sekunden.

Dateien für Prozessklassen, Sperren, Jobs, Job-Ketten und Daueraufträge

Die Dateien enthalten die XML-Elemente für die Definition des Objekts und werden aufgrund folgender Namenskonventionen verarbeitet:

Objekt Dateiname XML-Element
Prozessklasse name.process_class.xml <process_class>
Sperre name.lock.xml <lock>
Job name.job.xml <job>
Job-Kette name.job_chain.xml <job_chain>
Dauerauftrag jobchainname,orderid.order.xml <order>

Das Attribut name= sollte nicht angegeben werden. Wird es angegeben, muss es dem Dateinamen entsprechen.

Die Attribute replace= und spooler_id= sind nicht zulässsig.




Beispiel eines Jobs (auftragsgesteuert): Datei hello_world.job.xml:
<job order="yes">
    <script language="shell"><![CDATA[
      echo hello world
    ]]></script>
</job>

Beispiel einer Job-Kette: Datei echo_hello.job_chain.xml:
<job_chain>
    <job_chain_node  state="start" job="hello_world" next_state="success" error_state="error"/>
    <job_chain_node  state="success"/>
    <job_chain_node  state="error"/>
</job_chain>

Beispiel eines Auftrags: Datei echo_hello,echo_trigger.order.xml:
<order>
    <run_time>
      <period repeat="3600"/>
    </run_time>
</order>

Spiegelung des Verzeichnisses im Job Scheduler

Der Job Scheduler legt für jede Datei mit bekannter Dateinamensendung (.job usw.) ein entsprechendes Objekt im Job Scheduler an und verbindet es mit der Datei. Der Job Scheduler überwacht den Zeitstempel der Datei und geht bei Änderung wie folgt vor.

Wirkung der Kommandos zum Ändern und Löschen

Kommandos zum Ändern von Objekten ändern nicht die Dateien.

Kommandos zum Löschen von Objekten löschen die zugrundliegende Datei (die Debug-Version des Schedulers versieht den Dateinamen mit dem Anhängsel "-REMOVED").

Verhalten der einzelnen Objekttypen

Prozessklassen

Änderungen an einer Prozessklasse übernimmt der Job Scheduler sofort.

Beim Löschen einer Prozessklasse beendet der Job Scheduler alle zugehörigen Tasks. Erst wenn keine Task mehr läuft, löscht er die Prozessklasse. Bis dahin startet der Job Scheduler keine weiteren Tasks, uns verhält sich als ob die Prozessklasse erschöpft wäre.

Sperren

Änderungen an einer Sperre übernimmt der Job Scheduler sofort.

Beim Löschen einer Sperre beendet der Job Scheduler alle zugehörigen Tasks. Erst wenn keine Task mehr läuft, löscht er die Sperre. Bis dahin startet der Job Scheduler keine weiteren Tasks, und verhält sich als ob die Sperre belegt wäre.

Jobs

Einen geänderten Job übernimmt der Job Scheduler, nachdem er alle Tasks beendet hat.

Beim Löschen verfährt der Job Scheduler ebenso. Keine neue Tasks werden gestartet.

Fehlt dem Job die Prozessklasse oder eine Sperre, wirkt das so, als ob die Prozessklasse erschöpft oder die Sperre nicht verfügbar wäre.

Job-Ketten

Eine geänderte Job-Kette übernimmt der Job Scheduler, nachdem alle Aufträge ihren Job-Schritt beendet haben. Weitere Job-Schritte werden solange verhindert.

Aufträge in Job-Kettenknoten mit gleichem Auftragszustand übernimmt der Job Scheduler in die geänderte Job-Kette.

Beim Löschen verfährt der Job Scheduler ebenso.

Fehlt der Job-Kette ein Job, dann sammeln sich die Aufträge im Job-Kettenknoten, als wäre der Job nicht zur Auftragsausführung bereit.

Verschachtelte Job-Ketten

Fehlt der Job-Kette eine verschachtelte Job-Kette <job_chain_node.job_chain>, dann ist die gesamte Job-Kette nicht bereit. Alle untergeordneten Job-Ketten müssen bekannt sein, damit der Job Scheduler die Eindeutigkeit der Auftragskennungen sicherstellen kann.

Ebenso wird eine untergeordnete Job-Kette erst gelöscht, wenn auch die übergeordnete Job-Kette gelöscht ist.

Daueraufträge

Daueraufträge werden anders behandelt als die anderen Objekte. Zum einen haben sie einen zusammengesetzten Namen (job_chain= und id= statt name=), zum anderen werden Dateiänderungen nicht jederzeit beachtet. Eine gelöschte oder geänderte Auftragsdatei wird nur beachtet, wenn

Kommando <show_state>

Das Kommando liefert zu jedem dateibasiertem Objekt ein <file_based> mit Angaben zur Datei.

Wenn eine Ersetzung im Gang ist, zeigt <replacement> dies an.

Wenn eine Datei gelöscht ist, aber das dazugehörige Objekt noch nicht, wird <removed> geliefert.


Software- und Organisations-Service GmbH

Zuletzt geändert von Joacim Zschimmer, 2008-08-14