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.

JobServer
Der Schleupen.CS JobServer ist, neben Business-Events der zweite Weg, über den Prozesse automatisiert gestartet werden. Seine wesentliche Aufgabe ist das Aufrufen von WebServices zu vorgegebenen Zeitpunkten (Scheduled Services).
Jobs können in konfigurierbaren Zeitabständen regelmäßig wiederholt und bei Bedarf in einer festgelegten Reihenfolge nacheinander ausgeführt werden. Mehr Informationen hierzu enthält die Online-Hilfe im Kundencenter (Anmeldung erforderlich).
Windows-Dienst
Der Kern des JobServers ist der Windows-Dienst Schleupen JobServer Service. Dieser ist im Standard auf allen Host mit der Deployment-Rolle WorkflowBackendServer aktiviert. Das sind im wesentlichen die Dienste-Server.
Definition von Jobs
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:
