Mit dem Job Scheduling Service von SAP können Sie Jobs definieren und verwalten, die einmalig oder periodisch ausgeführt werden. Dieser laufzeitunabhängige Dienst kann verwendet werden, um lang andauernde Prozesse mit Aktionsendpunkten oder Cloud Foundry-Aufgaben in Ihrer Anwendung zu planen.
Der Job Scheduling Service von SAP, umgesetzt als REST-API, wird verwendet, um Jobs zu planen, einschließlich asynchroner Jobs mit langer Laufzeit, und zum Erstellen mehrerer Zeitplantypen für einfache und komplexe wiederkehrende Zeitpläne. Jobs, Aufgaben und Zeitpläne können über eine webbasierte Benutzeroberfläche verwaltet werden.
Features
Der Job Scheduling Service von SAP bietet folgende Features an:
- Flexible Zeitplanformate verwenden: Es ist eine flexible Wahl des Plandatumsformats zwischen Cron- und menschenlesbaren Formaten möglich
- Sicheren Zugang erhalten: Die Ausführung von Aufträgen im Namen einer Anwendung, die durch eine OAuth 2.0-geschützte Kommunikation gesichert ist und verwendet wird, wenn der Dienst den Aktionsendpunkt aufruft und wenn die Anwendung die REST-APIs der Dienste aufruft, ist möglich
- Synchron oder asynchron planen: Aufträge können synchron oder asynchron definiert und verwaltet werden und langlaufende CF-Aufgaben können asynchron ausgeführt werden
- Optimieren Sie Ihren Ressourcenverbrauch: Durch die asynchrone Ausführung von Cloud Foundry-Aufgaben kann die Nutzung der Ressourcen optimiert werden
- Applikation und Planungslogik sind getrennt: Anhand von REST-APIs können CRUD-Vorgänge mit Aufträgen und Zeitplänen ausgeführt und Laufprotokolle von ausgeführten Zeitplänen abgerufen werden
- Dashboard zur Verwaltung von Aufträgen und Aufgaben: Durch die webbasierte Benutzeroberfläche können Aufträge und Aufgaben für eine Serviceinstanz erstellt, bearbeitet und gelöscht werden. Erstellen, verwalten und überwachen Sie Zeitpläne für Ihre Aufträge oder Aufgaben im Dashboard und überprüfen Sie die Protokolle, um festzustellen, ob ein Zeitplan erfolgreich ausgeführt wurde
- Unterstützt Node-js Client-Bibliotheken: Eine komfortable Client-Bibliothek zur Ausführung von CRUD-Operationen, einschließlich der Erstellung von Aufträgen, aus der Node.js-Anwendung ist möglich
Konzept
Mit dem SAP Job Scheduling Service können Sie Aktionsendpunkte in Ihrer Anwendung oder langlaufende Prozesse mithilfe von Cloud Foundry-Tasks flexibel planen. Folgende Begriffe sind hier wichtig zu kennen:
- Job:Eine Reihe von Zeitplänen mit jeweils einem Aktionsendpunkt
- Aktion Endpunkt: Ein HTTP- oder REST-Endpunkt, der von der Anwendung bereitgestellt und vom SAP Job Scheduling Service aufgerufen wird, um die definierte Aktion durchzuführen
- Cloud Foundry Aufgabe: Eine Anwendung oder ein Skript, dessen Code in einer bereitgestellten Anwendung enthalten ist, aber unabhängig in einem eigenen Container mit minimalen Ressourcen läuft
- Zeitplan: Eine einmalige oder wiederkehrende Einheit innerhalb eines Auftrags, die keinen Aktionsendpunkt besitzt
- Mehrmandantenfähigkeit: Der Dienst kann mit mandantenfähigen Anwendungen genutzt werden, die als Platform-as-a-Service (PAAS)-Mieter oder als Software-as-a-Service (SaaS)-Mieter entwickelt wurden
Asynchronous Mode
Der Job Scheduling Service von SAP führt Jobs, die Aktionsendpunkte unterstützen, in einem synchronen oder asynchronen (oder Batch) Modus aus.
Synchroner Modus: Synchrone Anfragen werden verwendet, wenn der SAP Job Scheduling Service den Aktionsendpunkt der Anwendung aufruft und die Anwendungslogik in einer kurzen Zeitspanne ausgeführt wird.
Asynchroner Modus: Asynchrone Jobs werden für lang andauernde Aufträge verwendet.
Schedule Types
Der Job Scheduling Service von SAP führt einmalige und wiederkehrende Aufträge oder Cloud Foundry-Aufgaben aus.
Einmalige Zeitpläne
Zeitpläne, die nur einmal ausgeführt werden. Sie können einmalige Zeitpläne mit einer der folgenden Optionen erstellen:
- Von Menschen lesbarer Text: Ein von Menschen lesbarer Text, der die angegebene Ausführungszeit angibt
- Formate für Datumszeichenfolgen: Eine gültige Datumsdarstellung im ISO-8601- oder IETF-konformen RFC 2822-Format.
Wiederkehrende Zeitpläne
Zeitpläne, die periodisch zu bestimmten Zeiten, einem bestimmten Datum oder in Intervallen ausgeführt werden. Sie können wiederkehrende Zeitpläne mit einer der folgenden Optionen erstellen:
- repeatInterval: Gibt das Intervall zwischen den Zeitplänen in einem für Menschen lesbaren Textformat an (z. B. „5 Minuten“). Wenn es zu einer Verzögerung kommt, z. B. weil die Last sehr groß ist und der Lauf länger dauert, beginnt der nächste Lauf zu einem späteren Zeitpunkt. Das definierte Intervall bleibt dabei gleich
- cron: Bezeichnet einen crontab-Ausdruck, der eine Reihe von Zeiten darstellt, die bestimmen, wann der Job ausgeführt wird
- repeatAt: Gibt die genaue Uhrzeit an, zu der ein Auftrag jeden Tag ausgeführt wird. Dieses Feld kann in den Formaten „Human-Readable Time Format“ und „Date String Formats“ (ISO-8601 oder IETF-konform RFC-2822) angegeben werden, zum Beispiel „4.40pm“
Schedule Formats
Cron Format
Sie können den Zeitplan für die Auftragsausführung im cron-Format festlegen.
Die Struktur ähnelt dem Standard-Linux-Cron, bietet jedoch zusätzliche funktionale Flexibilität für die Planung anwendungsbasierter Aufgaben. Die folgende Tabelle gibt einen Überblick über die Hierarchie der Feldverwendung im Cron und enthält eine Liste der zulässigen Werte für jedes Feld:
Cron Feld (links nach rechts) | Beschreibung |
Year | 4-stellige Darstellung der Jahreszahl. Beispiel: 2015 |
Month | Numerische Darstellung für einen Monat. Zulässige Werte sind 1 bis 12 |
Day | Numerische Darstellung für den Tag des Monats mit zulässigen Werten von -31 bis 31. Negative Werte werden vom Ende des Monats an berechnet |
DayOfWeek | 3-Buchstaben-Darstellung für den Tag der Woche. Beispiel: mon, tue, usw |
Hour | Numerische Darstellung für eine Stunde. Zulässige Werte sind 0 bis 23 |
Minute | Numerische Darstellung für eine Minute. Zulässige Werte sind 0 bis 59 |
Second | Numerische Darstellung für eine Sekunde. Zulässige Werte sind 0 bis 59 |
Die Syntax für die Definition von Cron-Ausdrücken ist in der folgenden Tabelle aufgeführt:
Ausdruck | Verwendung | Wert |
* | überall | beliebiger Wert |
*/a | überall | jeder a-te Wert |
a:b | überall | Werte im Bereich von a bis b |
a:b/c | überall | Jeder c-te Wert zwischen a und b |
a.y | Day of the week | Am a-ten Auftreten des Wochentags y (a = -5 bis 5) |
a,b,c | überall | a oder b oder c |
Datum & Zeit Format
Als Datentyp String oder Objekt können Sie Datums- und Zeitparameter wie startTime, endTime oder Zeit für Zeitpläne angeben.
- Date Object: Ein obligatorisches Datumsfeld, welches das Datum als Zeichenkette angibt und ein optionales Formatfeld, das ein Datums-/Zeitformat angibt, sind für Objektdatentypen erforderlich, um vom Benutzer bereitgestellte Datumswerte korrekt zu analysieren.
Für Objektformate gelten die folgenden Einschränkungen:
Wenn Sie nur ein Datumsfeld angeben, wird die Zeichenfolge gemäß den ISO-8601-Standards sowie den IETF-konformen RFC 2822-Zeitstempeln validiert.
Eine optionale Formatzeichenfolge kann angegeben werden, wenn die Datumszeichenfolge im Datumsfeld ein benutzerdefiniertes Format hat. In der folgenden Liste sind die zulässigen Parsing-Tokens aufgeführt:
Eingabe-Token | Beispiel | Beschreibung |
YYYY | 2015 | 4-stelliges Jahr |
YY | 14 | 2-stelliges Jahr |
Q | 1-4 | Quartal Jahr. Setzt den Monat auf den ersten Monat des Quartals. |
M MM | 1-12 | Monat Nummer |
MMM MMMM | Januar-Dez | Monatsname in der jeweiligen Sprache |
D DD | 1-31 | Tag des Monats |
Do | 1st-31st | Tag des Monats mit Ordnungszahl |
DDD DDDD | 1-365 | Tag des Jahres |
X | 1410715640.579 | UNIX-Zeitstempel |
X | 1410715640579 | UNIX-Zeitstempel (ms) |
gggg | 2015 | Region 4-stellige Woche Jahr |
gg | 15 | Region 2-stellige Woche Jahr |
w ww | 1-53 | Lokale Woche im Jahr |
e | 1-7 | Lokaler Wochentag |
GGGG | 2015 | ISO-4-stelliges Wochenjahr |
GG | 15 | ISO 2-stelliges Wochenjahr |
W WW | 1-53 | ISO-Woche des Jahres |
E | 1-7 | ISO-Wochentag |
H HH | 0-23 | 24-Stunden-Zeit |
h hh | 1-12 | 12-Stunden-Zeit mit „a A“ benutzt |
a A | am pm | Vor oder nach dem Mittag |
m mm | 0-59 | Minuten |
s ss | 0-59 | Sekunden |
S | 0-9 | Zehntelsekunden |
SS | 0-99 | Hundertstel einer Sekunde |
SSS | 0-999 | Tausendstel einer Sekunde |
Z ZZ | +12:00 | Abweichung von UTC als +-HH:mm, +-HHmm, oder Z |
- Date String: Die Parameter für einen String-Datentyp müssen eine legitime Datumsdarstellung sein, die RFC 2822 oder ISO-8601 entspricht.
Zum Beispiel: 1994-11-05T08:15:30-05:00
Von Menschen lesbare Datumsformate
Bei der Konfiguration von Arbeits- und Aufgabenplänen stellt der SAP Job Scheduling Service menschenlesbare Daten und Bereiche zur Verfügung.
Die Parameter time, repeatAt und repeatInterval sind für diese Daten und Bereiche anwendbar. Der SAP Job Scheduling Service verwendet für diese Funktion einen eingebauten Datums-Parser in englischer Sprache.
Spezifikation für Zeitplanungsparameter
- Time
Ein bestimmter Zeitstempel sollte durch den String-Wert angegeben werden, wenn ein Arbeitsplan gestartet wird.
Beispiel: „10 hours from now“, „next week monday at 5am“, „9pm tonight“
- RepeatAt
Dieser Parameter stellt eine praktische Methode zur Erstellung von Tagesplänen mit Zeitstempel dar. Die Zeichenfolge sollte einen bestimmten Zeitstempel angeben, zu dem ein Arbeitsplan regelmäßig ausgeführt wird. Die Struktur ist dieselbe wie bei den Vorschlägen für den time-Parameter, mit einem Unterschied: repeatAt muss einen Zeitstempel angeben, der jeden Tag gültig und konstant ist, während der Text für den time-Parameter etwas Bestimmtes und in der Zukunft Liegendes bezeichnen muss.
Beispiel: „4.40pm“, „18.40“, „6.20am“, „17.20:30“
- RepeatInterval
Mit diesem Parameter muss ein Intervall für die Wiederholung des Auftrags angegeben werden. Die folgenden Zeiteinheiten werden für diesen Parameter unterstützt: „Jahre“, „Monate“, „Wochen“, „Tage“, „Stunden“, „Minuten“ und „Sekunden“.
Beispiel: „10 hours“, „2 days“, „5 minutes“
Schedule Lifecycle
Bei jedem Lauf durchläuft ein Zeitplan drei Lebenszykluszustände.
In der folgenden Tabelle sind die Lebenszyklusstatus aufgeführt:
Status | Beschreibung |
Scheduled | Der Zeitplan wurde für einen späteren Lauf in die Warteschlange gestellt. |
Running | Der Zeitplan wird derzeit ausgeführt. |
Completed | Der Planungslauf ist abgeschlossen. |
Für jeden Lebenszyklus-Zustand gibt es einen Übergangszustand. Sie können den Zeitplanlauf anhand der Kombination dieser Zustände untersuchen und nachvollziehen. Die Zeitplanprotokolle enthalten die mit jedem Zeitplan verbundenen Statusinformationen.
Mögliche Kombinationen
Die folgende Tabelle enthält Beschreibungen der einzelnen Kombinationen:
Status | Übergangsstatus | Beschreibung |
Scheduled | Scheduled | Der Zeitplan wurde für einen späteren Lauf in die Warteschlange gestellt. |
Running | Triggered | Der Scheduler hat eine Anfrage an den Endpunkt der Job-Aktion ausgelöst. |
ACK_RECVD | Die Anwendung sendet eine „202-Accepted“-Nachricht und bestätigt damit die vom Scheduler gesendete Anfrage. | |
ACK_NOT_RECVD | Auch nach einer gewissen Zeit hat die Anwendung noch keine „202-Accepted“-Nachricht zur Bestätigung der vom Scheduler gesendeten Anfrage gesendet. | |
Completed | Request_Error | Fehler beim Aufrufen des Endpunkts der Auftragsaktion. |
Success | Die Anwendung hat den Auftrag erfolgreich ausgeführt und mit einem Statuscode (von 200 bis 399, außer 202-ACCEPTED) an den Scheduler geantwortet. | |
Error | Die Anwendung ist während der Ausführung auf einen Fehler gestoßen und hat einen der in der Spezifikation des HTTP-Protokolls beschriebenen Server-Fehlercodes gesendet. | |
Unknown | Die Anwendung hat die Job Run Log Update API nicht aufgerufen, um den Scheduler über den Status der Jobausführung zu informieren. Der Status wird nach einem konfigurierbaren Zeitintervall auf UNKNOWN gesetzt. |
Status der Aktionen
In der folgenden Tabelle können Sie mehr über den Status der mit Cloud Foundry-Aufgaben verbundenen Aktionen erfahren:
Status | Übergangsstatus | Beschreibung |
Scheduled | Scheduled | Der Zeitplan wurde für einen späteren Lauf in die Warteschlange gestellt. |
Running | Triggered | Der Scheduler hat eine Anfrage an den Cloud Controller zur Erstellung von Cloud Foundry-Aufgaben ausgelöst. |
ACK_RECVD | Der Cloud Controller erstellt erfolgreich eine Aufgabe. | |
Completed | Request_Error | Der Cloud Controller erstellt erfolgreich eine Aufgabe. |
Success | Cloud Foundry-Aufgabe erfolgreich abgeschlossen. | |
Failed | Die Aufgabe wurde nicht erfolgreich abgeschlossen, was zu einem Exit-Code ungleich Null führte. | |
Unknown | Die Aufgabe war für den SAP Job Scheduling Service nicht verfügbar, um den Status abzuholen. |
Fazit
Wir hoffen, Ihnen mit unserem Beitrag einen übersichtlichen Einblick in den Job Sceduling Service von SAP gegeben zu haben.
Falls Sie nun noch weitere Fragen zum Thema haben, melden Sie sich! Unsere Berater helfen Ihnen gerne weiter.