Integration der IsyFact in das Task Scheduling
Diese Seite ist ein Teil der IsyFact-Standards. Alle Inhalte der Seite, insbesondere Texte und Grafiken, sind urheberrechtlich geschützt. Alle urheberrechtlichen Nutzungs- und Verwertungsrechte liegen beim Bundesverwaltungsamt.
Die Nutzung ist unter den Lizenzbedingungen der Creative Commons Namensnennung 4.0 International gestattet.
Die IsyFact stellt einige Anforderungen an die Ausführung fachlicher und technischer Operationen. Diese gelten auch für Tasks, die nicht direkt durch Anwender, sondern durch die Anwendung selbst eingeplant und ausgeführt werden.
Die folgenden Kapitel beschreiben knapp die Anforderungen und konzentrieren sich dann auf die Umsetzung.
1. Logging
Tasks müssen sich ins fachliche und technische Logging integrieren.
Dazu bindet der Baustein Task Scheduling, vornehmlich im Around Advice und den damit zusammenhängenden Klassen, den IsyFact-Logger aus dem Baustein Logging ein.
Der Baustein schreibt per Default folgende Informationen ins Log:
-
Start und Ende der Ausführung eines Tasks (Log-Level:
INFO
), -
Fehler in der Konfiguration eines Tasks (Log-Level:
ERROR
).
2. Nachvollziehbarkeit
Tasks müssen fachliche Operationen nachvollziehbar aufrufen. Das bedeutet, dass sich alle aufgerufenen fachlichen Operationen eindeutig einer bestimmten Ausführung eines Tasks zuordnen lassen.
Dazu nutzt der Baustein Task Scheduling Korrelations-IDs. Der Around Advice generiert hierfür direkt nach seinem Aufruf eine neue Korrelations-ID und setzt diese im MDC (Mapped Diagnostic Context), bereitgestellt durch das Framework Logback. Direkt vor der Beendigung seines Aufrufs entfernt der Advice die Korrelations-ID wieder aus dem MDC.
Bei der Umsetzung von Tasks ist weiter nichts zu beachten.
3. Authentifizierung
Wie bereits erwähnt, rufen Tasks fachliche Operationen auf. Manche dieser Operationen sind abgesichert, d.h. sie erfordern bestimmte Rechte zum Aufruf. Diese Rechte sind authentifizierten Benutzern bzw. Clients zugeordnet.
Die Absicherung des Bausteins Task Scheduling basiert auf dem Standard OAuth2.0 und nutzt hierfür den Baustein Security und dessen Schnittstelle zur Authentifizierung. Die Konfiguration von Tasks, sowie die globale Konfiguration aller Tasks, bietet dazu die Möglichkeit, Credentials (d.h. Benutzernamen & Passwörter oder Client-IDs & Client Secrets) sowie Behördenkennzeichen zu setzen.
Bei der Umsetzung von Tasks muss die Konfiguration mit konkreten Werten belegt werden. Es kann aber auch global konfiguriert werden, dass keine Authentifizierung erforderlich ist.
4. Überwachung
Tasks müssen dem Monitoring Informationen über ihre Ausführungen bereitstellen.
Der Baustein Task Scheduling nutzt hierzu die Möglichkeiten des Frameworks Micrometer, das der Baustein Überwachung nutzt, und definiert folgende Metriken:
-
Anzahl erfolgreicher Ausführungen pro Task,
-
Anzahl nicht erfolgreicher Ausführungen pro Task,
-
Fehler (d.h. Klasse der Exception) bei nicht erfolgreichen Ausführungen.
Die Metriken können bei Nutzung eines entsprechenden Monitoring-Produkts auch über die Zeit hinweg ausgewertet werden.
Bei der Umsetzung von Tasks ist nichts weiter zu beachten.
Für die Erhebung detaillierter Statistiken zur Ausführungszeit eines Tasks ermöglicht der Baustein Task Scheduling die Verwendung der Annotation @Timed
von Micrometer.
Sie wird, wie @Scheduled
, an der Methode des Tasks gesetzt.
Mehr zu der Annotation @Timed findet sich in der Dokumentation von Micrometer.
|
5. Konfiguration
Tasks müssen über eine betriebliche Konfiguration konfigurierbar sein. Neben den bisher erwähnten Konfigurationsmöglichkeiten unterstützt der Baustein Task Scheduling noch das selektive Ausführen von Tasks. Dazu können Anwendungen Tasks über die Konfiguration:
-
aktivieren und deaktivieren,
-
nur auf bestimmten Maschinen ausführen.
Die Zuordnung von Tasks zu Maschinen geschieht über den Hostnamen.
Bei der Umsetzung von Tasks muss die entsprechende Konfiguration mit konkreten Werten belegt werden. Tasks sind per Default aktiviert, das muss nicht explizit konfiguriert werden.