CronJobService

Der CronJobService dient dem zeitgesteuerten Starten von Prozessen. Folgende Möglichkeiten werden geboten, um die Zeitpunkte zu steuern, bei denen ein Start erfolgen soll.


  • Wiederholtes Starten nach einem gewissen Zeitintervall, d. h. ein Start soll z. B. alle 10 Minuten erfolgen (relative Zeitangabe).

  • Wiederholtes Starten zu bestimmten Zeiten, z. B. jeden Montag um 13.00 Uhr (absolute Zeitangabe).

  • Einmaliges Starten zu bestimmten Zeiten, z. B. am 27.01.2010 (absolute Zeitangabe).

  • Einmaliges oder wiederholtes Starten durch Verwendung der crontab-Syntax.


Jeder zu startende Prozess ist hierbei als Java-Klasse bereitzustellen, die das Interface ITask im Package com.ebd.hub.services.cron implementiert.

XML-Konfiguration


Wichtiger Hinweis: Die Verfügbarkeit eines Services hängt von der erworbenen Lizenz ab und davon, ob der Service innerhalb der Konfigurationsdatei ./etc/factory.xml der Service-Factory eingetragen wurde (Änderungen erfordern Server-Neustart!). Dort finden Sie auch die zuständige Konfigurationsdatei für einen Service, ansonsten können Sie die Konfigurationsdatei des Services auch direkt in der GUI des Services bearbeiten (Änderungen erfordern Service-Neustart!).

Hinzufügen eines Cronjobs


Folgendes XML-Fragment wird benötigt, um dem CronJobService einen neuen Cronjob hinzuzufügen.


<Call name="addJob">
<Arg>
<New class="com.ebd.hub.services.cron.CronJob">
<Arg>Cronjobname</Arg>
<Arg>
<New class="Klassenname des Cronjobs">
</New>
</Arg>
[Zeitsteuerungsspezifische Einstellungen]
</New>
</Arg>
</Call>


Das erste Argument legt hierbei den Namen des Cronjobs fest, unter dem dieser in der Liste erscheinen soll, das zweite Argument enthält die ITask-implementierende Klasse, die vom CronJobService ausgeführt werden soll.

Je nachdem, welche Art von Zeitsteuerung gewählt wird, unterscheidet sich der nachfolgende XML-Anteil. Dies wird im Folgenden beschrieben.

Zeitintervallgesteuerte Ausführung ohne Gültigkeitsbereich


Soll der Cronjob wiederholt nach Ablauf einer bestimmten Zeit gestartet werden, ist folgendes XML-Fragment zu verwenden.


<Call name="setTimeSchedule">
<Arg>
<New class="com.ebd.hub.services.cron.Schedule">
<Arg type="long">3600000</Arg>
</New>
</Arg>
</Call>


Die als Argument übergebene Zahl repräsentiert die Zeit zwischen zwei Aufrufen in Millisekunden, im angegebenen Beispiel also eine Stunde.

Achtung: Beim Start des Servers bzw. des Services wird der Cronjob nicht sofort aufgerufen. Wird der Server oder der Service kurz vor dem erneuten Aufruf heruntergefahren, bzw. gestoppt, kann dies dazu führen, dass die Zeit zwischen zwei Aufrufen bis zu doppelt so lange dauern kann wie eventuell erwartet, da die Wartezeit für die Ausführung wieder von vorne beginnt.

Zeitintervallgesteuerte Ausführung mit Gültigkeitsbereich


Soll der Cronjob wiederholt nach Ablauf einer bestimmten Zeit gestartet werden, aber eingeschränkt auf einen bestimmten Zeitraum, ist folgendes XML-Fragment zu verwenden.


<Call name="setTimeSchedule">
<Arg>
<New class="com.ebd.hub.services.cron.Schedule">
<Arg type="long">3600000</Arg>
<Call name="setStart">
<Arg type="int">2003</Arg>
<Arg type="int">8</Arg>
<Arg type="int">23</Arg>
<Arg type="int">5</Arg>
<Arg type="int">0</Arg>
</Call>
<Call name="setStop">
<Arg type="int">2013</Arg>
<Arg type="int">8</Arg>
<Arg type="int">22</Arg>
<Arg type="int">17</Arg>
<Arg type="int">0</Arg>
</Call>
</New>
</Arg>
</Call>


Das obige Beispiel schränkt den Cronjob auf die Zeit zwischen dem 23.08.2003, 5.00 Uhr und dem 22.08.2013, 17.00 Uhr ein.

Soll nur ein Anfangsdatum oder nur ein Enddatum gesetzt werden, kann der jeweilige andere Block (setStop, bzw. setStart) einfach weggelassen werden.

Tageszeitpunktgesteuerte Ausführung ohne Gültigkeitsbereich


Soll der Cronjob jeden Tag zu einem bestimmten Zeitpunkt und ab da nach einem bestimmten Intervall laufen, kann dies über folgendes XML-Fragment eingestellt werden.


<Call name="setTimeSchedule">
<Arg>
<New class="com.ebd.hub.services.cron.Schedule">
<Arg type="int">13</Arg>
<Arg type="int">31</Arg>
<Arg type="long">3600000</Arg>
</New>
</Arg>
</Call>


Das obige Beispiel lässt den Cronjob um 13:31 Uhr starten und ab da jede weitere Stunde.

Tageszeitpunktgesteuerte Ausführung mit Gültigkeitsbereich


Soll der Cronjob jeden Tag zu einem bestimmten Zeitpunkt und ab da nach einem bestimmten Intervall aber eingeschränkt auf einen bestimmten Zeitraum gestartet werden, kann dies über folgendes XML-Fragment eingestellt werden.


<Call name="setTimeSchedule">
<Arg>
<New class="com.ebd.hub.services.cron.Schedule">
<Arg type="int">13</Arg>
<Arg type="int">31</Arg>
<Arg type="long">3600000</Arg>
<Call name="setStart">
<Arg type="int">2003</Arg>
<Arg type="int">8</Arg>
<Arg type="int">23</Arg>
<Arg type="int">5</Arg>
<Arg type="int">0</Arg>
</Call>
<Call name="setStop">
<Arg type="int">2013</Arg>
<Arg type="int">8</Arg>
<Arg type="int">22</Arg>
<Arg type="int">17</Arg>
<Arg type="int">0</Arg>
</Call>
</New>
</Arg>
</Call>

Starten des Cronjobs zu genau festgelegten Zeitpunkten (TimeTable)


Soll der Cronjob nur zu ganz bestimmten Zeitpunkten gestartet werden, kann dies über folgendes XML-Fragment eingestellt werden.


<Call name="setTimeSchedule">
<Arg>
<New class="com.ebd.hub.services.cron.Schedule">
<Call name="addTimeTable">
<Arg>
<New class="com.ebd.hub.services.cron.TimeTable">
<Arg type="int">2000</Arg>
<Arg type="int">12</Arg>
<Arg type="int">31</Arg>
<Arg type="int">12</Arg>
<Arg type="int">0</Arg>
</New>
</Arg>
</Call>
</New>
</Arg>
</Call>


Dieses Beispiel lässt den Cronjob am 31.12.2000 um 12:00 Uhr starten.

Allgemeine Einstellungen


images/download/attachments/189461511/Services_28-version-1-modificationdate-1737965340746-api-v2.png

images/download/thumbnails/189461511/Services_29-version-1-modificationdate-1737965340742-api-v2.png


(1) Hier kann das Logging für den CronService konfiguriert werden. Möglich ist das Ein- und Ausschalten als solches bzw. die Einstellung welcher LogService und welcher LogManager die Meldungen erhalten soll. Mit Klick auf den Button Setzen werden die Änderungen übernommen.

(2) Liste der verfügbaren Cronjobs. Angezeigt wird der Status, der Zeitpunkt des letzten Durchlaufes und der Zeitpunkt für den nächsten Durchlauf. Hinweis: Siehe Abschnitt "System-Cronjobs" unten.

(3) Über das Kontextmenü können Sie einen Cronjob anzeigen, aktivieren, starten, entfernen und hinzufügen. Sie können auch explizit für einen speziellen Cronjob den Verbose-Modus aktivieren (anstatt diesen für den gesamten Service zu aktivieren).

Hinzufügen eines Cronjobs über die Admin-Konsole


Die Admin-Konsole bieten die Möglichkeit Cronjobs hinzuzufügen. Achtung: Die Cronjobs, die über die Admin-Konsole hinzugefügt werden, gehen nach einem Neustart verloren. Beim Start des CronJobServices werden nur die in der XML-Datei konfigurierten Cronjobs hinzugefügt.


images/download/attachments/189461511/Services_51-version-1-modificationdate-1737965340739-api-v2.png


(1) Der Name des Cronjobs, der in der Liste der Cronjobs angezeigt wird.

(2) Der Name (mit Package) der Klasse, die das Interface ITask implementiert.

(3) Der Gültigkeitszeitraum für diesen Cronjob.


Im folgenden sehen Sie die verschiedenen Zeiteinstellungsmöglichkeiten für Cronjobs.


images/download/attachments/189461511/Services_52-version-1-modificationdate-1737965340736-api-v2.png

images/download/attachments/189461511/Services_53-version-1-modificationdate-1737965340733-api-v2.png

images/download/attachments/189461511/Services_54-version-1-modificationdate-1737965340730-api-v2.png


(4) Hier kann das Zeitintervall in Sekunden oder Minuten angegeben werden.

(5) Hier kann ein absoluter Zeitpunkt angegeben werden. Der Cronjob läuft dann einmal zu dem angegebenen Zeitpunkt.

(6) Hier kann ein relativer Zeitpunkt angegeben werden, z. B. jeden Sonntag um 17:30.

(7) Hier können über das Kontextmenü Werte für Sekunden, Minuten, Stunden, Tage, Monate, und Wochentage hinterlegt. Für weitere Informationen sei hier auf den Abschnitt Crontab-Syntax verwiesen.

Loglevel-Abhängigkeiten


Änderungen des Loglevels beim LogService können Einfluss auf den Umfang der Meldungen von Cronjobs haben. Diese sind jedoch von der konkreten Implementierung des jeweiligen Cronjobs abhängig und können hier nicht beschrieben werden.

Das Setzen des Verbose-Modes hat beim CronService keinen Effekt.

System-Cronjobs