Die Aufgabenwarteschlange ist das Mittel der Wahl in Business Central, wenn es darum geht, gewisse Funktionen automatisiert im Hintergrund zu bestimmten Uhrzeiten auszuführen. Dabei kann es sich um alle möglichen Aktionen handeln, die nicht durch eine direkte Benutzeraktion ausgelöst werden. Welche Parameter es gibt und wie sich diese auswirken, erfahren Sie in diesem Beitrag.
Nutzung der Parameter in der Praxis
Typische Beispiele sind die Buchung der Lagerregulierung am Abend, das automatisierte Löschen erledigter Bestellungen oder Aufträge, die automatische Erzeugung von Berichten, das automatische Abrufen und Verarbeiten von Daten von externen Webdiensten oder auch das Übertragen von Daten an externe Dienste.
Weiterentwicklung seitens Microsoft
In den letzten Jahren hat Microsoft viele Optimierungen auf technischer Ebene vorgenommen, wodurch die Zuverlässigkeit unserer Erfahrung nach immer weiter verbessert wurde.
Die Aufgabenwarteschlange in Business Central arbeitet auf Basis der Aufgabenwarteschlangenposten. Jede Funktion, die automatisiert im Hintergrund zu einem bestimmten Zeitpunkt ausgeführt werden soll, wird durch einen Aufgabenwarteschlangenposten repräsentiert.
Es muss sich dabei nicht zwangsläufig immer um eine Funktion handeln, die regelmäßig immer wieder ausgeführt werden soll. Es können auch Aufgabenwarteschlangenposten für eine einmalige Ausführung einer Funktion zu einem bestimmten Zeitpunkt im Hintergrund angelegt werden.
Im Folgenden werden die wichtigsten Parameter zur Einrichtung dieser Posten beschrieben. Ein zusätzlicher Schwerpunkt liegt dabei auf der Steuerung wiederholender Ausführungen. Außerdem sei erwähnt, dass sich dieser Beitrag ausschließlich auf die aktuelle Business Central-Version 27 in der Cloud bezieht. In älteren Versionen kann es kleinere Abweichungen geben. Im Kern hat sich die zugrundeliegende Logik jedoch nicht verändert.
Allgemeine Parameter im Überblick
Technisch wird bei der Ausführung eines Aufgabenwarteschlangenpostens entweder ein Bericht (Report) oder eine Codeunit ausgeführt, somit ist die „Art des auszuführenden Objekts“ auch dessen erster Parameter. Bei beiden Optionen handelt es sich um Objekte in BC, die bei der Ausführung bestimmte Funktionen durchführen können.
Historisch hat es sich so ergeben, dass Berichte in der Regel genutzt werden, wenn bestimmte Datensätze mit einer gewissen Filterung im Stapel verarbeitet werden sollen. Codeunits werden eher für granulare Aufgaben genutzt, die keinen direkten Bezug zu bestimmten Datensätzen haben.
Jedes Objekt hat dabei eine eindeutige ID, bei der es sich um den zweiten Parameter handelt („ID des auszuführenden Objekts“). In der Regel führt ein Objekt eine bestimmte Aufgabe aus, so wird zum Beispiel der Bericht 1002 „Lagerregulierung buchen“ für das Buchen der Lagerregulierung verwendet.
Die Parameterzeichenfolge wird bei der Ausführung an das Objekt übergeben und kann von Entwicklern genutzt werden, um das Verhalten bei der Ausführung zu steuern. Die möglichen Zeichenfolgen müssen entsprechend vom Entwickler des Objekts vorhergesehen sein. Dieser Parameter wird verhältnismäßig selten genutzt.
Der Aufgabenwarteschlangen-Kategoriencode ermöglicht eine Kategorisierung der verschiedenen Aufgabenwarteschlangenposten. Ein wichtiges Detail ist dabei, dass Aufgabenwarteschlangenposten innerhalb der gleichen Kategorie niemals parallel ausgeführt werden.
Arbeiten zum Beispiel zwei Posten auf den gleichen Daten, ist es sinnvoll, diesen Posten die gleiche Kategorie zuzuweisen, um sicherzustellen, dass sie sich nicht gegenseitig beeinflussen und blockieren. Die Priorität, der nächste Parameter, kann zur Priorisierung innerhalb der Kategorie genutzt werden.
Die Benutzer-ID enthält den Benutzer, der den Aufgabenwarteschlangenposten erstellt, bzw. zuletzt auf den Status „Bereit“ gesetzt hat. Wichtig in dem Zusammenhang ist, dass die Ausführung in dessen Benutzerkontext durchgeführt wird. Das heißt, dass die Ausführung nur möglich ist, wenn es die Berechtigungen dieses Benutzers zulassen. Falls bei der Ausführung Datensätze erstellt oder gebucht werden, enthalten diese ebenfalls die jeweilige Benutzer-ID.
Bei der Ausführung der Posten kann es prinzipiell zu den gleichen Fehlern kommen, die auch auftreten können, wenn ein User die Funktion ausführt. Ein möglicher Fehler bei der Buchung der Lagerregulierung könnte beispielsweise sein, dass der Buchungszeitraum nicht mehr zugelassen ist. Tritt bei der Ausführung ein Fehler auf, wird der Status des Postens auf „Fehler“ gesetzt und der Fehler im Protokoll abgelegt. Handelt es sich um einen wiederholenden Posten, findet unabhängig von der Wiederholungseinstellung erstmal keine weitere Ausführung statt.
Der Parameter für die „Maximale Anzahl der Ausführungsversuchen“ steuert, wie oft eine weitere Ausführung gestartet wird, nachdem ein Fehler aufgetreten ist. Das Limit liegt in der aktuellen BC-Version dabei auf 10 Versuchen. Dabei muss man berücksichtigen, dass BC in der aktuellen Version selbstständig die Verzögerung erhöht, je öfter die Ausführung auf Fehler läuft. Aktuell liegt die Verzögerung für die ersten 5 Versuche im Bereich weniger Sekunden, steigt dann auf mehrere Minuten an bis hin zu einer Verzögerung von mehreren Stunden bei den letzten Versuchen.
Mit der „Verzögerung der erneuten Ausführung“ (in Sekunden) kann die Zeit gesteuert werden, die zusätzlich mindestens bis zur nächsten Ausführung vergehen soll. Diese Anzahl Sekunden wird also auf die Verzögerung vom Standard addiert. Der nächste Startzeitpunkt, der aus der Verzögerung für einen erneuten Start kalkuliert wird, berücksichtigt zusätzlich auch die unten beschrieben Wiederholungseinstellungen. Das heißt, dass der nächste Startzeitpunkt sonst weiter in das nächste mögliche Zeitfenster geschoben wird.
Das „Früheste Startdatum mit Uhrzeit“ zeigt den nächstmöglichen frühesten Ausführungszeitpunkt. Es ist allerdings nicht garantiert, dass die Ausführung tatsächlich zu diesem Zeitpunkt gestartet wird, z.B. durch Abhängigkeiten zu anderen Aufgabenwarteschlangenposten. Das früheste Startdatum wird entweder automatisch berechnet, wenn der Posten auf den Status „Bereit“ gesetzt wird oder bei wiederholenden Posten nach einer Ausführung.
Das „Ablaufdatum mit Uhrzeit“ beschreibt den Zeitpunkt, nach dem die Ausführung nicht mehr gestartet wird, falls sie bis dahin noch nicht gestartet hat.
Die „Zeitüberschreitung bei Aufgabe“ beschreibt die Dauer, nach der die Ausführung abgebrochen wird, falls sie bis dahin noch nicht erfolgreich beendet wurde oder auf Fehler gelaufen ist.
Ein Aufgabenwarteschlangenposten wird prinzipiell nur ausgeführt, wenn der Status „Bereit“ ist. Um einen Posten zu bearbeiten, muss der Status zuvor auf „Abwarten“ gesetzt werden. Der Status wird über die Funktionen verändert, das Feld kann nicht direkt bearbeitet werden.
Falls das auszuführende Objekt ein Bericht ist, bei dem über eine Berichtsanfrageseite eigene Parameter und Filter konfiguriert werden können, ist es über die Aufgabenwarteschlange auch möglich, diese Berichtsanfrageseite zu konfigurieren. Auf diese Weise wird die hinterlegte Konfiguration bei der Ausführung berücksichtigt.
Wiederholung
Die Parameter zur Steuerung der regelmäßigen Ausführung finden sich im Register „Wiederholung“. Prinzipiell funktioniert die Logik generell so, dass nach einer Ausführung das nächste (früheste) Ausführungsdatum mit Uhrzeit kalkuliert wird. Dabei werden unterschiedliche Parameter berücksichtigt, die im Folgenden näher beschrieben werden. Einige Parameter konkurrieren miteinander und sind dementsprechend nicht alle frei miteinander kombinierbar.
Dabei kann es möglicherweise durchaus unterschiedliche Konfigurationen geben, die zum gleichen Ziel führen. Prinzipiell muss bei der Konfiguration berücksichtigt werden, dass es durchaus Aufgaben gibt, deren Ausführung eine gewisse Zeitspanne dauert, während andere Aufgaben innerhalb von einer Sekunde durchgeführt werden können.
Natürlich muss klar sein, wie oft eine Funktion ausgeführt werden soll und wie lange eine Ausführung ungefähr dauert. Die Lagerregulierung wird klassischerweise einmal am Tag außerhalb der regulären Arbeitszeit gebucht. Ein Posten zur Kommunikation mit externen Diensten soll wahrscheinlich deutlich häufiger ausgeführt werden.
Zunächst eine einfache Definition der zur Verfügung stehenden Parameter, im Anschluss ein paar Beispiele zur Veranschaulichung.
- Der Parameter „Wiederkehrende Aufgabe“ wird automatisch gesetzt, sobald irgendeine Form der Wiederholung konfiguriert ist. Es ist damit das Kennzeichen, anhand dessen sofort erkannt werden kann, ob ein Aufgabenwarteschlangenposten einmalig oder regelmäßig ausgeführt.
- Die Parameter für die Wochentage steuern, an welchen Tagen der Posten ausgeführt wird.
- Die „Datumsformel für die nächste Ausführung“ stellt eine Alternative zu den Wochentagen dar. Die Datumsformel wird dabei auf den Zeitpunkt angewendet, zu dem die Ausführung beendet ist.
- Die „Start- und Endzeit“ beschreiben die Uhrzeiten vor und nach denen keine Ausführung gestartet wird.
- Die „Anzahl der Minuten zwischen Ausführungen“ beschreibt die Zeit, die zwischen zwei Ausführungen mindestens vergehen muss. Auch hier wird die Anzahl der Minuten auf den Zeitpunkt angewendet, zu dem die Ausführung beendet ist.
Die Wochentage konkurrieren mit der Datumsformel für die nächste Ausführung und der Anzahl der Minuten zwischen Ausführungen. Sobald ein Wochentag aktiviert wird, leert sich die Datumsformel und die Anzahl der Minuten zwischen Ausführungen wird auf 1440 (= 24 Stunden) gesetzt.
Wird die Datumsformel konfiguriert werden dadurch die Wochentage und die Anzahl Minuten zwischen Ausführungen zurückgesetzt. Alle genannten Konfigurationen berücksichtigen in gewisser Weise die Start- und Endzeit. Im Folgenden ein paar Beispiele zur besseren Darstellung:
Tägliche Ausführung 1
Datumsformel für die nächste Ausführung: „+1T“, Startzeit 21 Uhr.
Dieser Posten wird täglich um 21 Uhr ausgeführt. Sonderfall: Sollte die Ausführung länger als drei Stunden dauern, addiert sich die Datumsformel auf die Endzeit nach 12 Uhr nachts. Bei Start an einem Montagabend um 21 Uhr und Beendigung am Dienstagmorgen um 01 Uhr wäre die nächste Ausführung erst am Mittwochabend um 21 Uhr.
Tägliche Ausführung 2
Wochentage von Montag – Freitag, Startzeit 20 Uhr, Endzeit 21 Uhr, 60 Minuten zwischen den Ausführungen.
Dieser Posten wird täglich um 20 Uhr ausgeführt. Durch die 60 Minuten rutscht die nächste Ausführung nach 21 Uhr und liegt damit nach der Endzeit, sodass der nächste früheste Zeitpunkt für die Ausführung 20 Uhr am Folgetag ist. Samstags und sonntags findet keine Ausführung statt.
Tägliche Ausführung 3
Alle Wochentage, 1440 Minuten zwischen der Ausführung.
Dieser Posten startet immer 24 Stunden nach der letzten Ausführung. Die Startzeit verschiebt sich somit immer um die Ausführungsdauer. In Kombination mit einer Start- und Endzeit kann es passieren, dass es Tage gibt, an denen der Posten nicht ausgeführt wird.
Wird beispielsweise eine Start- und Endzeit zwischen 8 und 9 Uhr definiert, führt eine Fertigstellung am Montag um 09:05 dazu, dass die nächste Ausführung erst am Mittwoch um 08:00 stattfindet.
Mehrfache Ausführungen
Alle Wochentage, 1 Minute zwischen den Ausführungen.
Dieser Posten wird immer eine Minute nach dem Ausführungsende erneut gestartet. Der Startzeitpunkt verschiebt sich immer genau um die Dauer. Startet die Ausführung 08:00 und dauert bis 08:02 startet die nächste Ausführung um 08:03.
Mein Fazit:
Die Aufgabenwarteschlange ist ein mächtiges Tool zur Steuerung automatisierter Aufgaben in Business Central. Während die vielen Parameter zur Steuerung der Wiederholungen zu Beginn sicherlich eine Herausforderung darstellen können, ist die tatsächliche Komplexität eigentlich gar nicht so hoch.
Neben der korrekten Konfiguration ist das Tracking fehlgeschlagener Ausführungen sicherlich genauso wichtig. Die beste Wiederholungskonfiguration ist nutzlos, wenn niemand bemerkt, dass der Aufgabenwarteschlangenposten auf Fehler gelaufen ist und damit nicht mehr regelmäßig ausgeführt wird.
Mittlerweile ist es im Standard möglich, dass der jeweilige Benutzer eine Benachrichtigung erhält, wenn einer seiner Posten auf Fehler gelaufen ist. Unserer Erfahrung nach gehen genau diese Benachrichtigungen jedoch gerne mal unter. Deshalb sind auch hier kleinere Erweiterungen denkbar, wie z.B. Kacheln für fehlgeschlagene Posten im Rollencenter, Benachrichtigungen in Teams-Kanälen oder auch Benachrichtigungen per E-Mail.
Sprechen Sie uns gerne an bei weiteren Fragen zu diesen Themen oder wenn Sie sich Unterstützung bei Ihren individuellen Anforderungen wünschen.
Für weitere hilfreiche Tipps & Tricks in Dynamics NAV / Business Central klicken Sie einfach oben auf den orangefarbenen Tag "Tipps & Tricks", dann finden Sie alle Beiträge im Überblick.
Möchten Sie keinen Beitrag mehr verpassen? Dann abonnieren Sie einfach den Blog und Sie werden automatisch per E-Mail benachrichtigt.