Jobs

Bestimmte Tätigkeiten müssen zyklisch durchgeführt werden. Hierzu gehören beispielsweise Tätigkeiten des Housekeepings wie das Löschen veralteter Daten, das stichtagsbezogene Ausführen von Prozessen oder das Starten von Prozessen nach Dateieingang. Aber auch, wenn Funktionalität zeitverzögert ausgeführt werden muss, sind Jobs ein gutes und geeignetes Mittel.

Grundsätzlich ist bei der Verwendung von Jobs aber zu überlegen, ob das Problem nicht mithilfe von Business Events gelöst werden kann, da Jobs eine gewisse Systemgrundlast erzeugen.

Zur Implementierung eines Jobs wird ein Service im Jobsystem angeschlossen. Ist die Jobausführung zyklisch, so spricht man auch von Scheduled Services. 

Das Jobsystem von Schleupen.CS ruft Services auf

Jobs werden selber mittels eines Webservice-Aufrufs angelegt. Dazu wird die URI des gewünschten Services erweitert, indem ihrer ServiceId beim Abrufen der WSDL über den MetadataActivityService wie folgt das Präfix ScheduledServices vorangestellt wird.

http://<host>/Schleupen/Service Bus/Broker/MetadataActivityService.svc/ScheduledServices/<ServiceId>

Beispiel:
http://localhost/Schleupen/Service Bus/Broker/MetadataActivityService.svc/ScheduledServices/Schleupen.CS.PI.BPE.Tasks.CreateTaskActivityService_3.2

Dabei ist Schleupen.CS.PI.BPE.Tasks.CreateTaskActivityService_3.2 die ServiceId des zyklisch aufzurufenden Service.

Broker-Erweiterung zur Anlage eines Jobs

Durch Aufruf des Zielservice wird dann der Job angelegt.

In der Praxis wird der Job per Powershell Cmdlet angelegt! Das folgende Beispiel erstellt einen neuen Job (= ScheduledService), der jeden Montag um 22 Uhr läuft.

New-ScheduledService -ServiceId 'Schleupen.CS.PI.AIF.TestActivityService_3.0' -Weekday -Weekdays Monday -Start '01-01-2019 22:00:00' -SessionToken $sessionToken -Message $message

Services folgender Servicekategorien können im Jobsystem angebunden werden:

  • EntityService
  • ActivityService

Obwohl es technisch möglich ist Command Services im Jobsystem anzubinden, raten wir dringend davon ab. Der Aufruf eines Command Service führt immer zu einer Nachricht im Messaging System.

Hat der aufgerufene Service einen Fehler so wird die Nachricht in die Deadletter Queue verschoben, von dort exportiert und, je nach Klassifikation des Fehlers, erneut zugestellt. Dies führt dazu, dass der Benutzer das Verhalten des Systems nur noch schwer nachvollziehen kann, da man von einem Job in der Regel nicht erwartet, dass dieser zeitversetzt, ggf. über Tage hinweg, erneute Ausführungsversuche durchführt. Ist der Fehler nicht temporär, so sammeln sich über die Zeit sehr viele Nachricht im Messaging.

Über das Portal können die definierten Jobs eingesehen werden:

Verwaltungsoberfläche von Jobs im Schleupen.CS 3.0 Portal
Chatbot not allowed
Cookie Consent mit Real Cookie Banner