Zeit-Trigger
Einführung in Zeit-Trigger
Zeit-Trigger sind Interrupts, die signalisieren, dass nach dem Eintreten des Vorgangs in einen Bereich oder eine Aktivität eine bestimmte Zeitspanne verstrichen ist. Sie können an Bereichen und Aktivitäten hängen. Ein Zeit-Trigger, der an einem Bereich hängt, wird initialisiert, wenn ein Vorgang in den Bereich eintritt. Bereiche können mehrere Zeit-Trigger haben. Ein Zeit-Trigger, der an einer Aktivität hängt, wird initialisiert, wenn diese Aktivität durchgeführt wurde. Eine Aktivität kann nur einen Zeit-Trigger haben. Die Aktionen, die durchgeführt werden sollen, wenn die eingestellte Zeit abgelaufen ist, müssen im Skript einer mit dem Trigger verbundenen automatischen Aktivität implementiert werden.
Beispiele für die Verwendung von Zeit-Triggern:
-
Ein Vorgang soll für eine bestimmte Zeitspanne auf Wiedervorlage gelegt werden.
-
Eskalationszeiten und SLAs sollen durch das Einrichten von Warnungen kontrolliert werden, zum Beispiel durch ein Overlay am Vorgangs-Icon oder durch E-Mails oder Benachrichtigungen an die Bearbeiter.
-
Ein Vorgang, der aus geschäftlicher Sicht abgeschlossen ist, soll zum Endknoten bewegt werden, d. h. der Vorgang soll nach einer bestimmten Zeitspanne technisch geschlossen werden.
Prozesslogik mit Zeit-Triggern
Für Zeit-Trigger gilt die folgende allgemeine Logik:
Die Zeitmessung eines Triggers beginnt (d. h. der Trigger wird initialisiert), wenn der Vorgang in den Bereich bzw. in die Aktivität eintritt. Sie endet (d. h. der Trigger feuert), wenn die definierte Zeitspanne, die als fester Wert gesetzt wurde (Minuten/Stunden/Tage), oder die manuell definierte Zeit abgelaufen ist.
-
Der Trigger wird initialisiert, d. h. die Zeitmessung beginnt, wenn der Vorgang in den Bereich oder in die Aktivität eintritt.
-
Der Trigger feuert, wenn die definierte Zeitspanne abgelaufen ist.
-
Bei manuellen Triggern an Aktivitäten ist dies die Zeit, die der Benutzer setzt, wenn er die Aktivität ausführt.
-
Bei automatischen Triggern an Aktivitäten oder Bereichen ist dies die in Minuten, Stunden und Tagen definierte Zeit.
-
Sie können eine andere Zeit einstellen, wenn der Timer initialisiert wird oder läuft, siehe Ändern von Timern in Skripten.
Wenn bei der Zeitmessung ein Arbeitszeitkalender berücksichtigt werden soll, müssen Sie die Option Kalender verwenden setzen und der Queue einen Arbeitszeitkalender zuweisen, siehe Verwenden eines Arbeitszeitkalenders.
-
-
Wenn der Trigger feuert, wird das Trigger-Skript ausgeführt. Gibt es true zurück, wird die folgende automatische Aktivität oder der Entscheidungsknoten mit zwei folgenden automatischen Aktivitäten ausgeführt.
Verfügbare Einstellungen für Zeit-Trigger
-
Pfad:
Schreibgeschützt. Der Pfad zum Zeit-Trigger im Workflow. Wird zum Referenzieren des Triggers in Skripten verwendet. -
Zeit manuell festlegen:
Optional. Nur für Zeit-Trigger an Aktivitäten. Bestimmt, ob die Zeit, zu der der Trigger feuert, vom Benutzer gesetzt werden soll. Ist dies der Fall, wird ein Kalender angezeigt, wenn der Benutzer die Aktivität im Web Client auswählt, und der Trigger wird mit der vom Benutzer eingegebenen Zeit initialisiert. Die Felder zum Definieren der Zeitspanne sind daher nicht verfügbar. -
Zeitspanne:
Pflicht. Geben Sie die Zahl der Tage, Stunden und Minuten an, nach der der Trigger feuern soll. -
Kalender verwenden:
Optional. Bestimmt, ob die Zeitberechnung auf einem Arbeitszeitkalender beruht, siehe Verwenden eines Arbeitszeitkalenders. -
Wiederholbar:
Optional. Bestimmt, ob der Trigger mehr als einmal für einen Vorgang feuern kann. Wiederholbare Trigger werden direkt, nachdem sie gefeuert haben, neu initialisiert, d. h. die Zeitmessung beginnt von neuem und das Initialisierungsskript wird erneut ausgeführt. -
Initialisierungsskript:
Optional. Bestimmt, ob und wann der Trigger feuern soll, siehe Timer wird initialisiert. -
Skript:
Optional. Bestimmt, ob die nachfolgende automatische Aktivität ausgeführt wird, siehe Zeit ist abgelaufen.Best Practice
Verwenden Sie dieses Skript nur, um zu bestimmen, ob eine automatische Aktivität ausgeführt werden soll oder nicht. Alle anderen Aktionen sollten in dem Skript der automatischen Aktivität ausgeführt werden, die mit dem Trigger verbunden ist.
-
Wiederholungsintervall:
Optional. Legt die Zeit in Sekunden fest, nach der die Trigger-Ausführung erneut ausgeführt werden soll, falls ein Fehler bei einem Skript aufgetreten ist. Die Standardzeit dafür wird in der System-Property cmas-workflow-engine, jobExecutor.timerRetryInterval.seconds konfiguriert.
Aufgaben
Verwenden eines Arbeitszeitkalenders
Standardmäßig basiert die Zeitberechnung, wann ein Trigger feuert, auf absoluten Zeiten. Sie können einen Arbeitszeitkalender verwenden, um die Berechnung an Ihre Arbeitszeiten anzupassen. Damit verhindern Sie, dass Zeit-Trigger während des Wochenendes oder außerhalb Ihrer Geschäftszeiten feuern.
Führen Sie die folgenden Schritte aus, wenn Sie einen Arbeitszeitkalender verwenden möchten:
-
Definieren Sie einen Arbeitszeitkalender, siehe Kalender.
-
Weisen Sie den Arbeitszeitkalender den Queues zu, die den Workflow verwenden, siehe Queues.
-
Markieren Sie die Checkbox Kalender verwenden für alle Zeit-Trigger, für die der Arbeitszeitkalender gelten soll, siehe Verfügbare Einstellungen für Zeit-Trigger.
Beispiel: Ein Zeit-Trigger soll nach einem Tag feuern.
Ohne Arbeitszeitkalender:
Der Trigger feuert 24 Stunden später, d. h. zur selben Zeit am nächsten Tag.
Mit Arbeitszeitkalender:
Es gibt einen Arbeitszeitkalender, im dem die Arbeitsstunden von Montag bis Freitag von 9 bis 17 Uhr definiert sind. Der Trigger feuert 24 Geschäftsstunden später.
-
Initialisierung am Montag um 10 Uhr
→ Der Trigger feuert am Donnerstag um 10 Uhr. Das ist drei Arbeitstage später (24 Stunden / 8 Arbeitsstunden pro Tag). -
Initialisierung am Freitag um 10 Uhr
→ Der Trigger feuert am Mittwoch um 10 Uhr. Das ist drei Arbeitstage später (24 Stunden / 8 Arbeitsstunden pro Tag). Das Wochenende wird ausgelassen.
Die folgende Abbildung zeigt ein Beispiel für einen Arbeitszeitkalender, der für die Berechnung von SLA-Zeiten verwendet wird.
Abbildung 16: ConSol CM - Arbeitszeitkalender
Sie können die Methoden der Klasse BusinessCalendarUtil verwenden, um Zeitspannen zu berechnen, die auf einem Arbeitszeitkalender basieren.
Ändern von Timern in Skripten
Sie können Timer auf unterschiedliche Weise ändern, abhängig von der aktuellen Position im Prozess.
Timer wird initialisiert
Der Timer wird initialisiert, wenn der Vorgang in den entsprechenden Bereich oder die entsprechende Aktivität eintritt. An dieser Stelle kann der Timer über das Initialisierungsskript geändert werden. Sie können das Skript, zum Beispiel, dazu verwenden, um die Reaktionszeit anhand der Priorität des Vorgangs zu berechnen oder um den Timer zu deaktivieren, wenn er für den Vorgang nicht relevant ist.
Der Trigger ist implizit als trigger (Klasse TimerTrigger) im Skript verfügbar. Sie können zwei Aktionen im Skript ausführen:
-
Lassen Sie den Trigger aus oder deaktivieren Sie ihn, sodass er für den Vorgang nicht feuert, außer wenn er erneut initialisiert wird.
→ Rückgabe von null oder false. -
Ändern Sie die Zeit, zu der der Trigger feuern soll.
→ Berechnen Sie einen Long-Wert, der für die Millisekunden vom Zeitpunkt der Initialisierung bis zum Zeitpunkt des Feuerns steht, und geben Sie den Wert als Parameter an die Methode trigger.setDueTime() weiter. Die Methode definiert die Zeitspanne in Millisekunden beginnend mit dem Eintritt des Vorgangs in den Bereich oder die Aktivität bis zum Zeitpunkt des Feuerns.Beispiel: Die Eskalationszeit eines Vorgangs soll von der Priorität abhängen. Für jede Priorität gibt es eine System-Property, die die Eskalationszeit in Minuten enthält.
def escalationTime = configurationService.getValue("custom-mycompany-properties","escalation.time.medium.minutes")
def escalationTimeMillisecs = escalationTime * 60 * 1000L
trigger.setDueTime( escalationTimeMillisecs )
Timer läuft
Der Timer läuft, solange sich der Vorgang im Bereich oder in der Aktivität befindet, an dem bzw. an der der Trigger hängt. Sie können den Timer über Methoden aus workflowApi ändern.
-
Initialisieren Sie einen Timer mit dem ursprünglichen Initialisierungsdatum erneut.
→ Verwenden Sie die Methode reinitializeTrigger(String pTriggerName), um den Timer erneut mit dem Datum, an dem der Vorgang in den Bereich oder die Aktivität eingetreten ist, zu initialisieren. -
Initialisieren Sie einen Timer mit einem neuen Initialisierungsdatum.
→ Verwenden Sie die Methode reinitializeTrigger(String pTriggerName, Date pBaseDate), um den Timer mit dem angegebenen Datum erneut zu initialisieren, unabhängig vom Datum, an dem der Vorgang in den Bereich oder die Aktivität eingetreten ist. Wenn Sie den Zeit-Trigger eines anderen Vorgangs neu initialisieren möchten, verwenden Sie die Methode reinitializeTrigger(Ticket pTicket, String pTriggerName, Date pBaseDate), die einen Vorgang als Parameter akzeptiert. -
Deaktivieren Sie einen Timer, sodass er nicht feuert, außer wenn er erneut initialisiert wird.
→ Verwenden Sie die Methode workflowApi.deactivateTimer(String pName).
Die Operationen müssen in einer Aktivität außerhalb des Trigger-Flows durchgeführt werden. Der Trigger wird durch seinen Pfad referenziert.
Zeit ist abgelaufen
Der Trigger feuert, wenn die konfigurierte Zeit abgelaufen ist. Dann wird das Trigger-Skript ausgeführt. Wenn es true zurückgibt, wird die automatische Aktivität oder der Entscheidungsknoten nach dem Trigger ausgeführt. Wenn es false zurückgibt, werden sie nicht ausgeführt, d. h. der Trigger hat keinen Einfluss auf den Vorgang.