Zeit-Trigger

In diesem Kapitel werden folgende Themen behandelt:

Einführung in Zeit-Trigger

Ein Workflow kann mehrere Zeit-Trigger enthalten.

Abbildung 54: ConSol CM Process Designer - Zeit-Trigger

Ein Zeit-Trigger ist ein Mechanismus, der reagiert, wenn ein bestimmter Zeitraum abgelaufen ist. Dies kann zum Beispiel in folgenden Situationen erforderlich sein:

Diese Anwendungsfälle können mittels Zeit-Triggern implementiert werden.

Ein Zeit-Trigger kann so konfiguriert werden, dass er einen Arbeitszeitkalender verwendet, d. h. nur die Zeiten berücksichtigt, die als Arbeitszeiten definiert sind.

Ein Zeit-Trigger kann hängen an ...

Ein Zeit-Trigger muss einen der beiden folgenden Typen haben:

Sie als Workflow-Entwickler müssen alles implementieren, was geschehen soll, wenn ein Zeit-Trigger gefeuert hat! Es gibt keine automatischen Aktionen. Der Zeit-Trigger sorgt lediglich für das Signal Zeit abgelaufen, genauso wie ein Wecker.

Hinzufügen eines Zeit-Triggers zu einem Workflow

Hinzufügen eines Zeit-Triggers zu einem Bereich

Klicken Sie in der Palette auf das Zeit-Trigger-Symbol und ziehen Sie es in den gewünschten Bereich. Es wird automatisch an den oberen Rand des Bereichs angefügt. Sie können die Position später ändern (ziehen Sie den Trigger nach links oder rechts, um die Reihenfolge der Trigger zu ändern oder das Layout zu verbessern).

Ein Zeit-Trigger, der an einem Bereich hängt, kann nicht in einen anderen Bereich oder eine Aktivität verschoben werden. Wenn Sie einen Zeit-Trigger an einen anderen Bereich oder eine Aktivität anfügen möchten, entfernen Sie den bereits erstellen Trigger und erstellen Sie einen neuen Trigger für den richtigen Bereich bzw. die Aktivität.

Um die Eigenschaften des Triggers zu konfigurieren, wählen Sie ihn im Bearbeitungsbereich aus und setzen Sie im Eigenschaften-Editor die richtigen Werte. Siehe Abschnitt Eigenschaften eines Zeit-Triggers.

Sie können vom Trigger ausgehend Verbindungen zu Aktivitäten oder Entscheidungsknoten ziehen, die sich hinter dem Trigger befinden sollen. Der erste Schritt, der nach dem Zeit-Trigger ausgeführt wird, muss immer eine automatische Aktivität sein!

Hinzufügen eines Zeit-Triggers zu einer Aktivität

Klicken Sie in der Palette auf das Zeit-Trigger-Symbol und ziehen Sie es in die gewünschte Aktivität. Es wird an die Ecke der Aktivität angefügt.

Ein Zeit-Trigger, der an einer Aktivität hängt, kann nicht in eine anderen Aktivität oder einen Bereich verschoben werden. Wenn Sie einen Zeit-Trigger an eine andere Aktivität oder einen Bereich anfügen möchten, entfernen Sie den bereits erstellen Trigger und erstellen Sie einen neuen Trigger für die richtige Aktivität bzw. den Bereich.

Um die Eigenschaften des Triggers zu konfigurieren, wählen Sie ihn im Bearbeitungsbereich aus und setzen Sie im Eigenschaften-Editor die richtigen Werte. Siehe Abschnitt Eigenschaften eines Zeit-Triggers.

Sie können vom Trigger ausgehend Verbindungen zu Aktivitäten oder Entscheidungsknoten ziehen, die sich hinter dem Trigger befinden sollen. Der erste Schritt, der nach dem Zeit-Trigger ausgeführt wird, muss immer eine automatische Aktivität sein!

Eigenschaften eines Zeit-Triggers

Ein Zeit-Trigger hat folgende Eigenschaften:

Abbildung 55: ConSol CM Process Designer - Eigenschaften eines Zeit-Triggers

Geschäftslogik und Initialisierung eines Zeit-Triggers

Die Zeitmessung eines Triggers wird begonnen (d. h. der Trigger wird initialisiert), wenn das Ticket in den Bereich bzw. die Aktivität eintritt. Sie hält an (d. h. der Trigger feuert), wenn der definierte Zeitraum, der als fester Wert gesetzt wurde (Minuten/Stunden/Tage), oder die manuell definierte Zeit verstrichen ist.

Wenn Sie als Workflow-Entwickler einen Trigger mit anderen Werten initialisieren möchten, muss dies mit Skripten erfolgen. Dieser Abschnitt enthält einige kurze Beispiele, eine detaillierte Erklärung zur Programmierung mit Zeit-Triggern in Workflows finden Sie im Abschnitt Arbeiten mit Kalendern und Zeiten. In diesen Kapiteln stehen auch Code-Beispiele.

Ein Zeit-Trigger kann auch deaktiviert werden. In Beispiel 2 ist dies erforderlich, um zu verhindern, dass der Zeit-Trigger am Anfang feuert, da er erst initialisiert werden soll, wenn eine E-Mail eingegangen ist.

Beispiele für Zeit-Trigger

Die Implementierungen für die oben genannten Anwendungsfälle (siehe Einführung in Zeit-Trigger) wären:

Skripte mit Zeit-Triggern

Die folgenden Methoden sind wichtig, wenn Sie mit Zeit-Triggern arbeiten:

TimerTrigger

Das wichtigste Objekt in einem Skript für einen Trigger ist der Trigger selber. Es handelt sich um ein Objekt der Java-Klasse TimerTrigger und es ist implizit in jedem Trigger-Skript als trigger verfügbar.

workflowApi

workflowApi (die Singleton-Instanz von WorkflowContextService) bietet zwei Methoden zum Reinitialisieren des Triggers. Reinitialisieren bedeutet, dass der Trigger auf seinen ursprünglichen Zustand zurückgesetzt wird, sodass noch keine Zeit abgelaufen ist. Für beide Methoden muss der Name des Triggers (pTriggerName) als Pfad angegeben werden. Eine Erklärung dazu finden Sie im Abschnitt über die Arbeit mit Pfadinformationen.

Siehe auch Abschnitt Arbeiten mit Kalendern und Zeiten.

Beispiel 1: Setzen der Ablaufzeit eines Zeit-Triggers entsprechend der Queue

Diese Skript könnte beim Start der Zeitmessung für einen Zeit-Trigger an einem Bereich verwendet werden. Es initialisiert den Trigger für eine Eskalation entsprechend der Queue, d. h. wenn sich das Ticket in der Queue HelpDesk_1st_Level befindet, erfolgt die Eskalation schneller als in der Queue HelpDesk_2nd_Level.

Innerhalb der Skripte Skript zu Beginn und Skript nach Ablauf existiert das Objekt trigger als implizite Initialisierung von TimerTrigger. Sie können also direkt mit dem Trigger arbeiten, ohne vorher zusätzliche Schritte durchführen zu müssen. In einem Admin-Tool-Skript müssen Sie allerdings die Klasse TimerTrigger oder das entsprechende Java-Paket vorher importieren.

Das folgende Skript kann in einer Servicedesk- und Helpdesk-Umgebung verwendet werden und an den folgenden TimerTrigger angehängt werden.

Abbildung 65: ConSol CM Process Designer - TimerTrigger im ServiceDesk-Workflow

def addedEscalMillis = 0

switch (ticket.queue.name) {

case "HelpDesk_1st_Level":

addedEscalMillis = 12*60*60*1000L;

break;

case "HelpDesk_2nd_Level":

addedEscalMillis = 24*60*60*1000L;

break;

case "ServiceDesk":

addedEscalMillis = 4*60*60*1000L;

}

trigger.setDueTime(addedEscalMillis)

Code-Beispiel 7: Beispiel für ein Skript zu Beginn

Für dieses Beispiel ist es sinnvoll, statische Werte für die Zeiten direkt im Skriptcode anzugeben. In echten Umgebungen empfiehlt es sich, die Eskalationszeiten und dergleichen in System-Properties zu speichern und über configurationService abzurufen. Auf diese Weise kann ein Administrator einfach auf die Eskalationszeiten zugreifen und diese ändern, ohne die Workflow-Implementierung verändern zu müssen.

Im Arbeitsalltag würde vielleicht auch ein Arbeitszeitkalender verwendet werden, siehe Beispiel 2.

In der Datei server.log sehen Sie die Zeit, zu der der Trigger feuern soll.

Abbildung 66: Datei server.log mit berechneter Ablaufzeit des Zeit-Triggers

Das gleiche Prinzip wird angewendet, um die Eskalationszeit abhängig von der Ticketpriorität, dem VIP-Status des Kunden oder einem anderen Parameter zu berechnen.

Beispiel 2: Eskalation als Warnung 2 Tage vor dem gewünschten Enddatum berechnen

def now = new Date()

def wunschTermin = ticket.get("helpdesk_standard", "date_test")

def twoWorkDays = -2*8*60*60*1000L

 

// calculate escalation date

def escalDate = BusinessCalendarUtil.getBusinessTime(wunschTermin, twoWorkDays, ticket.queue.calendar)

// calculate and set due time

trigger.setDueTime(escalDate.time - now.time)

Code-Beispiel 8: Zeit für TimerTrigger mit BusinessCalendar berechnen und setzen