Ablaufbeschreibung Batchserver 

Zusammenfassung

Mit dem in der Software enthaltenen Batchserver können auf dem Anwendungsserver folgende Prozesse im Hintergrund gestartet werden:

  • in der entsprechenden Tabelle definierte Aufgaben. Bei einer Aufgabe kann es sich um eine Standardverarbeitung der Software oder um ein Skript handeln (also um eine Funktion mit zugeordneter Aktion vom Typ Standardverarbeitung oder, abhängig vom aufrufenden Server, um ein Unix- oder DOS-Skript).  Ein Sonderfall für Aufgaben vom Typ Verarbeitung sind Druckausgaben.
  • Aufgabengruppen. Dabei handelt es sich um verkettete Aufgaben, bei denen die nächste Aufgabe das korrekte Beenden der vorherigen voraussetzt.
  • Aufgaben und regelmäßige Aufgabengruppen über wiederkehrende Aufgaben

Der Batchserver kann direkt aus der Software heraus oder per Systembefehl gestartet werden.

Mit einer Überwachungsaufgabe können die Aufgaben unabhängig von ihrem Status (in Warteschlange, läuft, beendet) überwacht werden. Weiterhin ist es möglich, vor dem Start die Startparameter zu ändern, Aufgaben anzuhalten und nach Beendigung der Aufgabe die Logdatei anzuzeigen.

Aufgaben können dem Batchserver auf verschiedene Arten für die Ausführung unterbreitet werden:

  • direkt mit einer Funktion für die Unterbreitung von Abfragen
  • per Anlage von wiederkehrenden aktiven Aufgaben
  • per Ablage von Abfragedateien in einem speziellen, in den Batchserverparametern definierten Verzeichnis. Diese Möglichkeit kann auf globaler Ebene deaktiviert oder für bestimmte Benutzer reserviert werden, deren Benutzerparameter EXTBATCH in der Gruppe SUP einen bestimmten Wert aufweist. Nähere Hinweise zur Anfragevorlage finden sich im technischen Anhang, wo auch auf die Vorlage von Dateien mithilfe eines Automaten eingegangen wird.

Ausführliche Erläuterung

In den nachstehenden Strukturen wird die Funktionsweise des Batchservers beschrieben. Rauten beziehen sich auf logische Tests, gelbe Rechtecke auf einfache Aktionen, grüne Rechtecke auf komplexere Aktionen, die in einer anderen Struktur beschrieben werden. Die Titel der einzelnen Strukturen werden in ein blaues Quadrat gesetzt. Die roten Rechtecke enthalten jeweils die letzte Aktion.

Beim Server handelt es sich um einen X3-Prozess, der auf einem speziellen SERVX3-Ordner läuft. Dieser Prozess verwendet eine Reihe von Tabellen im Supervisor-Ordner, die aufgrund der Tatsache, dass sie sich in diesem Ordner befinden, in allen Ordnern sichtbar sind. Zu jedem Zeitpunkt kann immer nur ein einziger Serverprozess laufen. Serveraufgaben werden folgendermaßen aufgerufen:

Nach Durchführung der Prüfungen und Initialisierungen werden in Unterverzeichnissen des SERVX3-Verzeichnisses Dateien abgelegt:

  • Im Unterverzeichnis FIL wird eine run-Datei abgelegt. Da eine Aufgabe unerwartet unterbrochen worden sein kann, ist diese Datei nicht dafür ausreichend, zu ermitteln, ob der Server aktiv ist. Dies wird mit einer Polling-Technik geprüft. Wenn die run-Datei fehlt, ist dies hingegen ausreichend um festzustellen, dass der Server nicht läuft.
  • Im tmp-Verzeichnis wird die Datei serveur.pid angelegt. Diese Datei enthält die Nummer des Serverprozesses.
  • Das Serverprotokoll wird im TRA-Verzeichnis des Ordners geöffnet

Zusätzlich wird die Anzahl der Abfragen geprüft, die je nach definierten Batchservereinstellungen gleichzeitig ausgeführt werden können.

Funktionsweise des Batchservers:

Die Existenz einer kill-Datei im FIL-Verzeichnis des SERVX3-Ordners zieht die Unterbrechung sämtlicher noch laufender Batchaufgaben nach sich. Die Existenz einer stop-Datei in demselben Verzeichnis hält den Server an. Sollen der Webserver und sämtliche Abfragen angehalten werden, müssen diese beiden Dateien im Verzeichnis abgelegt werden. Hierbei ist zunächst die erste Datei und dann innerhalb von zwei Sekunden die zweite Datei abzulegen, damit der Server zunächst die Aufgaben unterbricht und dann anhält.

Die auszuführenden Aufgaben werden in aufsteigender chronologischer Reihenfolge gesucht: Die älteste Aufgabe hat die höchste Priorität, sofern die maximale Frist für den Aufruf noch nicht überschritten ist (diese Frist ist in Stunden in den Aufgabendaten definiert). Die für den Aufruf der Aufgabe programmierte Uhrzeit ist durch an anderer Stelle bestehende Bedingungen definiert. Weitere Erläuterungen sind dem nachstehenden Kapitel über die Verwaltung von zeitlichen Bedingungen zu entnehmen.

Mit einem Verarbeitungsintervall kann eine bestimmte Zeit definiert werden, nach deren Ablauf der Server sich aktiviert, um die neuen eingereichten Abfragen zu verarbeiten. Vor dem Hintergrund, dass alle 2 Sekunden per Polling geprüft wird, ob der Server immer noch aktiv ist, sollte dieses Intervall sinnvollerweise zwischen 30 Sekunden und 1 Minute lang sein.

Der Aufruf von Abfragen folgt folgender Struktur:

Im SERVX3-Ordner wird ein X3-Prozess im richtigen Ordner gestartet. Dabei werden mit der übernommenen Prozessnummer die entsprechenden Daten aktualisiert. Wurde die Abfrage mithilfe einer Datei unterbreitet, so werden die entsprechenden Dateien aktualisiert.

Im Zielverzeichnis beginnt die Ausführung des der Abfrage zugeordneten Prozesses mit dem Öffnen der Logdatei und dem Prüfen der Ausführungsbedingungen (Modus? Verfügt der Benutzer immer noch über die Ausführungsrechte?). Danach wird die Verarbeitung oder das Skript gestartet. Schließlich wird die Aufgabe beendet:

Ein Aufgabenende führt nicht nur zum Öffnen der Logdatei und der Aktualisierung der mit der Ausführung verbundenen Dateien nach Datei, sondern auch zur Aktivierung der nächsten Aufgabe in einer Gruppe, wenn kein Fehler aufgetreten ist. Umgekehrt werden die nächsten Aufgaben abgebrochen.

Zu den weiteren, an dieser Stelle nicht beschriebenen Verarbeitungen zählen in erster Linie das Polling (Löschen einer stat-Datei im Fil-Unterverzeichnis des SERVX3-Ordners, sofern diese von einer Aufgabe angelegt wurde, die testet, ob der Server immer noch läuft), sowie die Abfrageverarbeitung bei Zeitüberschreitung. Um den Test zu vermeiden, ob die Abfragen das festgelegte Intervall überschritten haben, kann dieses Intervall größer gewählt werden als das erste Verarbeitungsintervall. Da dieser Test schwerfällig ist, kann das Intervall beispielsweise auf 5 Minuten gesetzt werden (was bedeutet, dass das maximal für diese Aufgabe zulässige Intervall um bis zu 5 Minuten überschritten werden darf):

Die Abfrageliste kann von externen Dateien aktualisiert werden (Rechteck Lesen der Abfragedateien in der Hauptschleife des Servers). Diese Verarbeitung folgt der folgenden Struktur:

Die letzte Verarbeitung in der Ausführungsschleife des Servers betrifft die Verarbeitung von wiederkehrenden Abfragen. Sie wird nachstehend beschrieben:

Verwaltung von zeitlichen Bedingungen

Im Rahmen des Aufrufs von Aufgaben oder Aufgabengruppen können zeitliche Bedingungen festgelegt werden. Diese gelten lediglich für den Aufgaben- bzw. Aufgabengruppenaufruf. Zum Beispiel:

  • Aufgaben, die zwischen 18 Uhr und 22 Uhr ausgeführt werden müssen, können nicht um 17 Uhr aufgerufen werden (18 Uhr muss als Aufrufzeit definiert sein).
  • Tritt bei der Ausführung anderer Aufgaben eine Verzögerung auf, aufgrund derer der Batchserver die betreffende Aufgabe erst um 22:30 Uhr starten kann (die Anzahl von parallelen Aufgaben ist begrenzt), so wird die betreffende Aufgabe trotzdem gestartet, wenn das angegebene maximale Intervall nicht kleiner ist als 4 Stunden.
  • ebenso können Sie eine Zeitüberschreitung für die Ausführung der Aufgabe angeben: diese Zeitüberschreitung entspricht dem tatsächlichen Start der Aufgabe und ermöglicht die Begrenzung der tatsächlichen Ausführungszeit.
  • Beispiel: Wenn die vorherige Aufgabe zwingend um 22 Uhr beendet sein muss und nicht mehr als 1 Stunde Ausführungszeit beanspruchen kann, werden als maximale Wartezeit 3 Stunden und als Zeitüberschreitung 1 Stunde festgelegt. Wenn die Aufgabe für 18 Uhr programmiert ist, wird sie um 22 Uhr beendet sein. Andernfalls wurde sie entweder abgebrochen oder nicht gestartet.

Die zeitlichen Bedingungen sind in einer von allen Ordnern gemeinsam genutzten Tabelle definiert und ermöglichen die Festlegung bestimmter Uhrzeiten für die Arbeitstage und anderer Uhrzeiten für die Sonn- und Feiertage. Die Codes der zeitlichen Bedingungen können Aufgaben, aber auch Aufgabengruppen zugewiesen werden. Wichtige Hinweise:

  • Die zeitliche Bedingung für (mithilfe eine Abfragedatei oder per direktem Aufruf) direkt aufgerufene Aufgaben wird anhand des der Aufgabe zugeordneten Bedingungscodes geprüft: Die betreffende Aufgabe kann nicht vor der vorgesehenen Uhrzeit gestartet werden, und der Tag muss in die gewünschte Kategorie (Arbeitstag, Feiertag) fallen
  • Bei Aufgaben, die zu einer Aufgabengruppe gehören, werden nicht die eigenen zeitlichen Bedingungen der Aufgabe geprüft, sondern lediglich diejenigen der Gruppe (die Gruppe wird gemäß ihrem Bedingungscode aufgerufen, die zur Gruppe gehörenden Aufgaben werden in der vorgesehenen Reihenfolge aufgerufen, ohne dass die einzelnen zeitlichen Bedingungen geprüft werden).
  • Beim Aufruf von wiederkehrenden Aufgaben (oder Aufgabengruppen) wird lediglich diejenige Bedingung geprüft, die sich auf ausgeschlossene Tage bezieht. In diesem Fall wird in den wiederkehrenden Aufgaben eine Ausführungsuhrzeit (oder ein Ausführungsintervall) direkt angegeben. Zu den betreffenden Aufgaben oder Aufgabengruppen werden dann keinerlei zeitliche Bedingungen mehr geprüft.

Verwendete Tabellen

Alle betroffenen Tabellen liegen im Supervisor-Ordner, der je nach installiertem Produkt unterschiedlich benannt sein kann: z.B. X3, PAYE oder GX. Diese Tabellen werden also von allen Ordnern gemeinsam benutzt.

Tabelle

Tabellentitel

ABATABT [ABA]

Batchserver (wiederkehrende Aufgaben) – Kopfzeile

ABATABTD [ABD]

Batchserver (wiederkehrende Aufgaben) – Zeilen

ABATCAL [ABC]

Ausschlusskalender

ABATGRP [ABG]

Batchserver (Gruppen)

ABATHOR [ABH]

Zeitbeschränkungen

ABATPAR [ABP]

Batchserverparameter

ABATRQT [ABR]

Batchserverabfragen

ABATTAC [ABT]

Batchserver (Aufgaben)