Allgemeiner Überblick über den Scheduler
Überblick
Der BWScheduler führt wiederkehrende oder gezielt ausgelöste Aufgaben automatisch aus. Typische Einsatzbereiche sind:
- Starten von ERP-Suite-Aufgaben, Programmen und Skripten
- Aufrufen vorbereiteter Wartungs- und Systemfunktionen
- Starten, Stoppen oder Neustarten von Windows-Diensten
- Überwachen von Dateien und Ordnern
- Auslösen einer Aufgabe über eine
SchedulerXX.RUN-Datei - Auslösen einer Aufgabe auf einem verbundenen BWScheduler über die REST-API
Jede Aufgabe besitzt eine eindeutige Scheduler-ID. Die Bezeichnung dient der Übersicht und darf bei mehreren Aufgaben gleich sein. Für gezielte Aufrufe ist immer die Scheduler-ID maßgeblich.
Zeitsteuerung des BWSchedulers
Die globale Einstellung Zeitsteuerung legt fest, in welcher Betriebsart geplante Aufgaben ausgeführt werden dürfen.
| Einstellung | Bedeutung |
|---|---|
| Dienst | Die Zeitsteuerung ist nur im Windows-Dienst aktiv. |
| Applikation | Die Zeitsteuerung ist nur in der manuell gestarteten Anwendung aktiv. |
| Immer aktiv | Die Zeitsteuerung darf sowohl im Dienst als auch in der Anwendung aktiv sein. |
Optional kann die Zeitsteuerung auf einen bestimmten Windows-Benutzer eingeschränkt werden. Die Schaltfläche zum manuellen Starten der Zeitsteuerung kann eine unpassende Betriebsart oder Benutzerbeschränkung nicht übersteuern.
Wichtig: Ist die Einstellung Zeitsteuerung nicht korrekt gesetzt, bleiben geplante Aufgaben in der betreffenden Instanz inaktiv.
Aufgabenarten
| Aufgabenart | Verwendung |
|---|---|
| ERP-Suite Aufgabe | Führt eine dafür vorgesehene Aufgabe in der ERP-Suite aus. |
| Modaler Programmaufruf | Startet ein Programm und wartet auf dessen Abschluss. |
| Programmstart (nicht modal) | Startet ein Programm, ohne andere nicht zusammengehörige Aufgaben bis zu dessen Ende zu blockieren. |
| Skriptaufruf (modal) | Führt ein Skript aus und berücksichtigt dabei die modale Steuerung. |
| Funktionsaufruf | Führt eine im BWScheduler bereitgestellte Funktion aus, beispielsweise eine NoLock- oder Dienstfunktion. |
Bei modalen Aufgaben kann zusätzlich eine Modale Gruppe eingestellt werden. Aufgaben derselben Farbgruppe werden nacheinander ausgeführt. Aufgaben verschiedener Farbgruppen dürfen parallel laufen. keine (Global) sperrt sich mit allen modalen Gruppen. Weitere Einzelheiten enthält die Kundendokumentation Modale Gruppen im BWScheduler.
Wichtige Einstellungen einer Aufgabe
| Einstellung | Bedeutung |
|---|---|
| Aktiv | Nur aktivierte Aufgaben werden automatisch ausgeführt. |
| Bezeichnung | Frei wählbarer Name zur leichteren Erkennung. |
| Aufgabenart | Legt fest, wie die Aufgabe ausgeführt wird. |
| Prozesspriorität | Legt bei unterstützten Programmaufrufen die Windows-Prozesspriorität fest. |
| Modale Gruppe | Steuert die gleichzeitige Ausführung modaler Aufgaben. |
| Ausführungsintervall | Bestimmt den Kalendertag beziehungsweise die Wiederholung. |
| Ausführungsbedingung | Zusätzliche Bedingung, die vor dem Start erfüllt sein muss. |
| Ausführungsdatum | Tag oder Datum für datumsabhängige Ausführungen. |
| Wochentag | Erlaubte Wochentage. Ohne Wochentage erfolgt keine normale zeitgesteuerte Ausführung. |
| Ausführungszeit | Uhrzeit für eine einmalige Ausführung bei Intervall 0. |
| Zeit von / Zeit bis | Zeitraum, innerhalb dessen die Aufgabe gestartet werden darf. |
| Intervall | Wiederholung in Minuten; 0 bedeutet Ausführung zur festen Uhrzeit. |
| App | Programm, Skript oder bereitgestellte Scheduler-Funktion. |
| AppParameter / AppParameter2 | Übergabewerte für die gewählte Aufgabe oder Funktion. |
| Maximale Prozesslaufzeit | Überwachung der zulässigen Laufzeit in Minuten. |
| Rückgabecode Variable | Optionale Auswahl einer der zehn fest vorgegebenen Variablen, in der das Ergebnis der Aufgabe gespeichert wird. |
| Rückgabecode übernehmen | Legt bei nicht-modalen Programmen fest, ob bereits der erfolgreiche Start oder erst das Prozessende ausgewertet wird. |
| REST-API Ausführung | Legt fest, ob und mit welcher Berechtigung die Aufgabe über REST ausgelöst werden darf. |
Je nach Aufgabenart können weitere Einstellungen sichtbar oder erforderlich sein, beispielsweise Dienstname, Netzlaufwerk, Benachrichtigung oder Dateifilter.
Zeitgesteuerte Ausführung
Ausführung zu einer festen Uhrzeit
Für eine einmalige Ausführung pro passendem Tag wird Intervall auf 0 gesetzt. Die Ausführungszeit muss innerhalb von Zeit von und Zeit bis liegen.
Beispiel:
| Einstellung | Wert |
|---|---|
| Ausführungsintervall | Täglich |
| Wochentag | MO, DI, MI, DO, FR |
| Ausführungszeit | 05:31 |
| Zeit von | 05:30 |
| Zeit bis | 06:00 |
| Intervall | 0 |
Die Aufgabe wird an den gewählten Wochentagen einmal um 05:31 Uhr ausgeführt.
Plausibilitätsprüfung: Bei einem Zeitfenster innerhalb desselben Tages muss Zeit bis später als Zeit von sein. Eine Ausführungszeit außerhalb des Fensters ist nicht zulässig.
Wiederkehrende Ausführung
Ist Intervall größer als 0, erfolgt die Wiederholung in Minuten. Der nächste Lauf richtet sich nach der letzten Ausführungszeit und muss weiterhin in einem erlaubten Zeitfenster und an einem erlaubten Wochentag liegen.
Beispiel: Bei Intervall = 15 wird die Aufgabe frühestens 15 Minuten nach dem letzten Start erneut berücksichtigt.
Kalenderintervalle
Der BWScheduler unterstützt unter anderem:
- Täglich
- bestimmter Tag oder bestimmtes Datum
- Monatsanfang und Monatsende
- Quartalsanfang und Quartalsende
- Halbjahresanfang und Halbjahresende
- Jahresanfang und Jahresende
Zusätzlich müssen der eingestellte Wochentag, das Zeitfenster und eine mögliche Ausführungsbedingung passen.
Ausführungsbedingungen
Standardmäßig gilt keine Einschränkung. Je nach Aufgabe kann als zusätzliche Bedingung beispielsweise verlangt werden, dass der ERP-Suite-Mailserver aktiv ist.
Eine Aufgabe startet nur, wenn alle für sie geltenden Voraussetzungen erfüllt sind:
- Die Aufgabe ist aktiviert.
- Die Zeitsteuerung ist für die aktuelle Instanz erlaubt und aktiv.
- Kalendertag und Wochentag passen.
- Die Aufgabe befindet sich im erlaubten Zeitfenster.
- Feste Uhrzeit oder Minutenintervall sind fällig.
- Die Ausführungsbedingung ist erfüllt.
- Es besteht keine Sperre durch NoLock, Wartungsmodus oder eine unpassende modale Gruppe.
Rückgabecodes und abhängige Aufgaben
Eine Aufgabe kann ihr Ergebnis in einer benannten Scheduler-Variable bereitstellen. Eine andere Aufgabe kann diese Variable anschließend als Ausführungsbedingung verwenden.
Verfügbare Rückgabecode-Variablen
Der Scheduler stellt zehn fest vorgegebene Variablen bereit:
- Variable 1
- Variable 2
- Variable 3
- Variable 4
- Variable 5
- Variable 6
- Variable 7
- Variable 8
- Variable 9
- Variable 10
Die Namen können nicht geändert werden. Dadurch bezeichnet beispielsweise Variable 3 bei der Aufgabe, die den Rückgabecode schreibt, und bei der davon abhängigen Aufgabe immer denselben Inhalt.
Ergebnisvariable einer Aufgabe zuordnen
Wählen Sie bei der Aufgabe unter Rückgabecode Variable die gewünschte Variable aus. Soll die Aufgabe keinen Rückgabewert bereitstellen, wählen Sie Keine Rückgabecode-Variable.
Beim Start der Aufgabe wird die Variable auf -1 gesetzt. Nach erfolgreichem Abschluss wird der Rückgabecode gespeichert.
| Wert | Bedeutung |
|---|---|
-1 |
Aufgabe wurde noch nicht beendet oder Ergebnis steht noch aus. |
0 |
Erfolgreich beziehungsweise Selektion erfüllt. |
200 |
Erfolgreich beziehungsweise Selektion erfüllt. |
| jeder andere Wert | Fehler beziehungsweise Selektion nicht erfüllt. |
Interne Scheduler-Funktionen, die keinen eigenen Exitcode liefern, setzen bei fehlerfreier Ausführung den Wert 0. Kann ein Programm nicht gestartet oder überwacht werden oder tritt eine Zeitüberschreitung auf, speichert der Scheduler einen eigenen negativen Fehlercode.
| Interner Fehlercode | Bedeutung |
|---|---|
-1001 |
Programm konnte nicht gestartet werden. |
-1002 |
Maximale Laufzeit überschritten; Prozess wurde beendet. |
-1003 |
Maximale Laufzeit überschritten; Prozess läuft laut Einstellung weiter. |
-1004 |
Prozessüberwachung nicht möglich. |
-1005 |
Fehler während der Aufgabenausführung. |
Folgeaufgabe auswählen
Bei anderen Aufgaben erscheint die Variable unter Ausführungsbedingung in folgender Form:
Nur wenn Rückgabecode-Variable 'Variable 1' den Wert 0 oder 200 enthält
Die Folgeaufgabe darf nur starten, wenn Variable 1 den Wert 0 oder 200 enthält. Bei -1 sowie bei jedem Fehlercode bleibt die Bedingung unerfüllt.
Ergebnis nach der Ausführung verbrauchen
Aktivieren Sie bei der Folgeaufgabe die Einstellung Variable nach Ausführung auf -1 setzen, wenn dasselbe Ergebnis nur einmal verarbeitet werden darf.
Nach der Ausführung der Folgeaufgabe setzt der Scheduler die in der Ausführungsbedingung ausgewählte Variable wieder auf -1. Bei einem nicht-modalen Programm erfolgt dies nach dessen erfolgreichem Start, während die Prozessüberwachung im Hintergrund weiterläuft. Dadurch ist die Bedingung anschließend nicht mehr erfüllt und die Aufgabe kann wegen desselben Rückgabewerts nicht nochmals starten. Wird der Aufgabenstart verhindert, bleibt die Variable unverändert.
Diese Einstellung wirkt ausschließlich bei einer Ausführungsbedingung mit einer Rückgabecode-Variable.
Nicht-modale Programme
Für Programmstart (nicht modal) stehen unter Rückgabecode übernehmen zwei Möglichkeiten zur Verfügung:
| Einstellung | Verhalten |
|---|---|
| Nach Programmstart | Nach einem erfolgreichen Start wird die Variable sofort auf 0 gesetzt. Dies ist die Standardvorgabe. |
| Nach Prozessende | Die Variable bleibt während der Laufzeit auf -1 und erhält erst nach dem tatsächlichen Prozessende dessen Exitcode. |
Unabhängig von dieser Auswahl überwacht der Scheduler den gestarteten nicht-modalen Prozess im Hintergrund:
- Andere Scheduler-Aufgaben dürfen weiterhin ausgeführt werden.
- Dieselbe Aufgabe kann nicht nochmals gestartet werden, solange ihr Prozess noch läuft.
- Die maximale Prozesslaufzeit und die Einstellung Prozess bei Zeitüberschreitung nicht Abbrechen gelten auch für nicht-modale Programme.
- Wird der Prozess wegen Zeitüberschreitung beendet, wird die Ergebnisvariable auf einen Fehlerwert gesetzt.
- Darf der Prozess nach einer Zeitüberschreitung weiterlaufen, bleibt dieselbe Aufgabe bis zu seinem tatsächlichen Ende für einen erneuten Start gesperrt.
Empfehlung: Verwenden Sie pro Variable möglichst nur eine schreibende Aufgabe. Mehrere gleichzeitig laufende Aufgaben mit demselben Variablennamen würden sich gegenseitig überschreiben.
Haupt- und Unteraufgaben
Unter einer Hauptaufgabe können Unteraufgaben angelegt werden. Wird die Hauptaufgabe gestartet, werden ihre aktivierten Unteraufgaben entsprechend der eingestellten Reihenfolge verarbeitet.
Für gezielte Aufrufe über SchedulerXX.RUN oder die REST-API sollte eine Hauptaufgabe verwendet werden. Eine Unteraufgabe ist für einen direkten externen Start nicht vorgesehen.
Möglichkeiten zum Starten einer Aufgabe
Automatische Zeitsteuerung
Der BWScheduler prüft regelmäßig, welche Aufgaben fällig sind. Eine Aufgabe wird nur einmal gleichzeitig zur Ausführung eingeplant; ein noch laufender Prüfvorgang wird nicht parallel ein zweites Mal gestartet.
Manuelle Ausführung
Eine Aufgabe kann in der Bedienoberfläche gezielt gestartet werden. Ausführungsbedingungen, modale Gruppen und aktive Schutzsperren sind weiterhin zu beachten.
SchedulerXX.RUN-Datei
Im eingestellten Überwachungsordner kann eine Datei nach folgendem Schema angelegt werden:
Scheduler22.RUN
Damit wird die Hauptaufgabe mit der Scheduler-ID 22 angefordert. Die Dateierkennung reagiert auch dann, wenn eine Datei zunächst unter einem anderen Namen erstellt und anschließend in Scheduler22.RUN umbenannt wird. Mehrere Dateiereignisse für dieselbe Datei führen nicht zu einer mehrfachen parallelen Ausführung derselben Anforderung.
Eine RUN-Datei hebt eine NoLock- oder Wartungssperre nicht auf. Während einer solchen Sperre gelten ausschließlich die weiter unten beschriebenen Ausnahmen.
Dateiüberwachung
Eine Aufgabe kann auf das Erstellen oder Ändern passender Dateien in einem überwachten Ordner reagieren. Die Überwachungsaufgabe verweist auf die auszuführende Zielaufgabe. Zielaufgabe und Überwachungsaufgabe dürfen nicht identisch sein.
REST-API
Ab Programmversion 5.31 können BWScheduler-Installationen Aufgaben verschlüsselt untereinander auslösen. Die Zielaufgabe muss dafür über REST-API Ausführung ausdrücklich freigegeben sein. Einzelheiten enthält die Kundendokumentation BWScheduler über REST-API verbinden.
Verhalten bei NoLock.ini und Wartungsmodus
Zweck der Sperre
Eine gefundene NoLock.ini, eine NoLock_admin_only.ini oder ein aktiver ERP-Suite-Wartungsmodus hält die normale Programmausführung des BWSchedulers an. Dadurch sollen während Wartungsarbeiten keine normalen ERP-, Programm-, Skript-, Datei- oder Importaufgaben neu gestartet werden.
Der BWScheduler berücksichtigt die NoLock-Dateien in den dafür vorgesehenen ERP-Suite- und Mandantenpfaden. Der Wartungsstatus wird regelmäßig neu geprüft. Sobald keine Sperre mehr besteht, kann die normale Zeitsteuerung fortgesetzt werden.
Welche Aufgaben trotz Sperre ausgeführt werden dürfen
Während einer gefundenen NoLock-Datei oder eines aktiven Wartungsmodus sind ausschließlich folgende Funktionsaufrufe freigegeben:
| Kundenfunktion | Unterstützte Funktionsnamen | Verhalten während der Sperre |
|---|---|---|
| NoLock.INI löschen | $DELETENOLOCKINI, $DELETENOLOCK, $DELETENOLOCK.INI |
Darf ausgeführt werden und entfernt die vorgesehenen NoLock-Dateien. |
| Alle NoLock.INI löschen | $DELETEALLNOLOCKINI |
Darf ausgeführt werden und entfernt die NoLock-Dateien aus allen berücksichtigten Pfaden. |
| Benutzer beziehungsweise ERP-Suite-Sitzungen abmelden | $AUSLOGGEN, $LOGOFF, $LOGOFFMDE, $BWLOGOFF |
Darf ausgeführt werden, damit eine Wartung oder Abmeldung abgeschlossen werden kann. |
Alle anderen Aufgaben bleiben gesperrt. Das betrifft insbesondere:
- ERP-Suite-Aufgaben
- modale und nicht-modale Programmaufrufe
- Skripte
- normale Datei- und Importfunktionen
- Start, Stopp und Neustart von Diensten
- das Erstellen einer NoLock-Datei mit
$CREATENOLOCKINI - Prozessstart- und Prozessbeendigungsfunktionen, sofern sie nicht zu den oben ausdrücklich freigegebenen Abmeldefunktionen gehören
- über RUN-Datei, Dateiüberwachung oder REST-API angeforderte normale Aufgaben
Wichtig: „Darf trotz Sperre ausgeführt werden“ bedeutet nicht „wird sofort und bedingungslos ausgeführt“. Bei einem normalen Zeitplan muss die Aufgabe aktiviert sein; außerdem müssen Wochentag, Zeitfenster, Ausführungszeit beziehungsweise Intervall und Ausführungsbedingung passen. Für einen gezielten Aufruf gelten dessen eigene Freigabe- und Aktivierungseinstellungen. Ein gezielter Aufruf kann die zeitliche Fälligkeit ersetzen, aber nicht die NoLock-Freigabeliste erweitern.
Zusammenfassung
| Systemzustand | Normale Aufgaben | NoLock löschen / Abmelden |
|---|---|---|
| Keine Sperre | gemäß Aufgabenplanung erlaubt | gemäß Aufgabenplanung erlaubt |
NoLock.ini gefunden |
gesperrt | erlaubt, wenn die betreffende Aufgabe fällig oder gezielt angefordert ist |
NoLock_admin_only.ini gefunden |
gesperrt | erlaubt, wenn die betreffende Aufgabe fällig oder gezielt angefordert ist |
| Wartungsmodus aktiv | gesperrt | erlaubt, wenn die betreffende Aufgabe fällig oder gezielt angefordert ist |
| Zeitsteuerung manuell pausiert | gesperrt | die ausdrücklich freigegebenen Entsperr-/Abmeldefunktionen bleiben grundsätzlich möglich |
Empfohlener Ablauf eines Wartungsfensters
- Legen Sie eine Aufgabe zum Erstellen der NoLock-Datei an.
- Planen Sie anschließend die benötigten Wartungs- oder Beendigungsaufgaben in einer sinnvollen Reihenfolge.
- Beachten Sie, dass nach Aktivierung der Sperre normale Aufgaben nicht mehr neu gestartet werden.
- Verwenden Sie zum Abschluss eine ausdrücklich freigegebene Aufgabe zum Löschen der NoLock-Dateien.
- Prüfen Sie nach dem Wartungsfenster die Statusanzeige und das Protokoll.
Hinweis: Eine Aufgabe, die nach dem Erstellen der NoLock-Datei noch als normale separate Scheduler-Aufgabe starten soll, wird durch die Sperre verhindert. Solche Abläufe müssen als zusammengehöriger Wartungsablauf vorbereitet oder vor Eintritt der Sperre gestartet werden.
Anzeige und Statuskontrolle
Die Aufgabenliste zeigt unter anderem:
- Aktivstatus
- Bezeichnung und Scheduler-ID
- letzte und nächste Ausführung
- aktuellen Laufstatus
- die kompakte Spalte Gruppe mit dem Namen und der Farbe einer ausgewählten Farbgruppe
Bei keine (Global) und bei nicht-modalen Aufgaben bleibt die Zelle in der Spalte Gruppe leer. Die globale Sperrwirkung der Einstellung keine bleibt davon unberührt.
Bei unerwartetem Verhalten sollte zusätzlich das BWScheduler-Protokoll geprüft werden. Dort werden beispielsweise folgende Zustände festgehalten:
- Zeitsteuerung aktiv oder nicht aktiv
- Aufgabe fällig oder nicht fällig
- nicht erfüllte Ausführungsbedingung
- erkannte NoLock-Datei oder Wartungsmodus
- Warten auf eine modale Gruppe
- Start und Ende einer Aufgabe
- fehlende Programme, Pfade oder Berechtigungen
- Änderung einer Rückgabecode-Variable
- geändertes Ergebnis einer Variablenselektion
- verhinderter Doppelstart eines noch laufenden nicht-modalen Programms
Benachrichtigungen und Laufzeitüberwachung
Je nach Konfiguration kann der BWScheduler über Aufgabenstart, Aufgabenende, Fehler, NoLock-Erkennung oder ungewöhnlich lange Laufzeiten informieren.
Für lang laufende oder geschäftskritische Aufgaben empfiehlt sich:
- eine realistische maximale Prozesslaufzeit
- ein Warnungszeitpunkt vor oder bei Überschreitung
- aktivierte Benachrichtigungen
- die Kennzeichnung als kritischer Prozess, sofern zutreffend
Ein automatischer Abbruch sollte nur verwendet werden, wenn das betreffende Programm gefahrlos beendet werden kann.
Checkliste für eine neue Aufgabe
- Eindeutige Bezeichnung und richtige Aufgabenart wählen.
- Programm beziehungsweise Funktion und Parameter prüfen.
- Aufgabe aktivieren.
- Gewünschte Wochentage festlegen.
- Feste Uhrzeit oder Minutenintervall einstellen.
- Prüfen, ob die Ausführungszeit innerhalb von Zeit von und Zeit bis liegt.
- Bei modalen Aufgaben die passende Gruppe wählen.
- Benötigte Zugriffsrechte des Scheduler-Kontos prüfen.
- REST-Freigabe nur bei tatsächlichem Bedarf aktivieren.
- Aufgabe zunächst kontrolliert testen und anschließend das Protokoll prüfen.
Fehlerbehebung
Eine geplante Aufgabe startet nicht
Prüfen Sie in dieser Reihenfolge:
- Ist die Aufgabe aktiviert?
- Ist die Zeitsteuerung in dieser Instanz aktiv?
- Passt die globale Betriebsart Dienst, Applikation oder Immer aktiv?
- Ist der aktuelle Windows-Benutzer zugelassen?
- Ist der heutige Wochentag ausgewählt?
- Liegt die aktuelle Zeit im erlaubten Zeitfenster?
- Ist die feste Uhrzeit beziehungsweise das Intervall bereits fällig?
- Ist die Ausführungsbedingung erfüllt?
- Wurde eine
NoLock.inioderNoLock_admin_only.inigefunden? - Ist der ERP-Suite-Wartungsmodus aktiv?
- Wartet die Aufgabe auf eine belegte modale Gruppe?
- Sind Programm, Pfad, Dienstname und Parameter korrekt?
Aufgaben verschiedener Farben warten trotzdem
Prüfen Sie, ob eine laufende modale Aufgabe die Gruppe keine (Global) verwendet. Eine globale modale Aufgabe sperrt alle Farbgruppen. Zwei unterschiedliche Farbgruppen dürfen nur dann parallel laufen, wenn keine globale modale Aufgabe aktiv ist.
Eine Aufgabe wurde beim Programmstart unerwartet ausgeführt
Prüfen Sie besonders:
- ob Zeit von und Zeit bis ein gültiges Zeitfenster bilden,
- ob die Ausführungszeit innerhalb dieses Fensters liegt,
- ob ein Intervall größer als
0eingestellt ist, - ob noch eine
SchedulerXX.RUN-Datei oder ein anderer externer Auftrag vorhanden war, - ob die Aufgabe als Unteraufgabe einer gerade gestarteten Hauptaufgabe ausgeführt wurde.
Weiterführende Kundendokumentationen
- Modale Gruppen im BWScheduler
- Funktionsaufrufe im BWScheduler
- BWScheduler über REST-API verbinden