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.

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>
Dabei ist Schleupen.CS.PI.BPE.Tasks.CreateTaskActivityService_3.2 die ServiceId des zyklisch aufzurufenden Service.

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:
