Arbeiten mit Kalendern und Zeiten

In diesem Kapitel werden folgende Themen behandelt:

Einleitung

Das Rechnen mit Daten und Zeiten spielt bei der Programmierung von ConSol CM-Workflows eine große Rolle. Für einen Zeit-Trigger (siehe Abschnitt Zeit-Trigger) muss der genaue Zeitpunkt, an dem er feuern soll, über das Skript gesetzt werden. Dadurch haben Sie verschiedene Möglichkeiten zur Steuerung von Eskalationszeiten, Erinnerungen für Bearbeiter und anderen aktiven Komponenten des ConSol CM-Prozesses. Beispiele für mögliche Berechnungen mit Daten und/oder Zeiten sind:

Wenn Sie ein Datum und/oder eine Zeit berechnen, müssen Sie entscheiden, ob ein Arbeitszeitkalender verwendet werden soll oder nicht. Ein Arbeitszeitkalender definiert die Arbeitszeiten für einen Prozess. Er wird mit dem Admin Tool definiert und einer oder mehrerer Queues zugewiesen.

Zum Beispiel kann das Servicedesk-Team Arbeitszeiten von 8:00 bis 18:00 an 6 Tagen der Woche haben, wohingegen das Verwaltungsteam an 5 Tagen pro Woche von 9:00 bis 17:00 arbeitet. Durch die Verwendung eines CM-Arbeitszeitkalenders wird sichergestellt, dass die Eskalation nicht in der Freizeit stattfindet und dass die Nicht-Arbeitsstunden nicht in die Berechnung der verstrichenen Eskalationszeit einfließen. Eine detaillierte Einführung in die Arbeitszeitkalender finden Sie im ConSol CM Administratorhandbuch.

Auf der anderer Seite gibt es Beispiele, bei denen ein Arbeitszeitkalender nicht erforderlich ist und stattdessen die reine Zeit auf Grundlage des normalen Kalenders verwendet werden soll. Zum Beispiel wenn Sie sich drei Wochen nach dem Erstkontakt bei einem Kunden melden sollen. Die folgenden Absätze zeigen Beispiele für beide Anwendungsfälle.

1 Tag bedeutet 24 Stunden absolute Zeit; dies hat nichts mit der Verwendung eines Kalenders zu tun. Der Kalender spielt nur eine Rolle, wenn der Zeit-Trigger aktiviert ist. Dann werden die 24 Stunden, d. h. 86400000 Millisekunden, als Eingabe für den Arbeitszeitkalender verwendet (sofern der Kalender aktiviert ist).

Beispiel:
Wenn der Zeitraum 1 Tag = 24 Stunden ohne Kalender ist, werden die 24 Stunden wie reguläre Zeit berechnet. Die Eskalation wird also einen Tag später zur gleichen Uhrzeit ausgelöst.
Im Gegensatz dazu: Wenn ein Kalender verwendet wird (mit zum Beispiel 7 Arbeitsstunden pro Arbeitstag), werden die 24 Stunden entsprechend dem Kalender aufgeteilt. Der Trigger feuert also über 3 Tage später (24 Stunden = 3 x 7 Stunden + 3 Stunden).

Rechnen mit Daten und Zeiten ohne CM-Arbeitszeitkalender

Beispiel: Setzen der Zeit eines Zeit-Triggers mit einem dynamischen Zeitraum

Der Zeit-Trigger für eine Eskalation wird abhängig von der Priorität konfiguriert:

// prio is 'medium'

def escalationTime = configurationService.getValue("custom-mycompany-properties","escalation.time.medium")

def escalationTimeMillisecs = escalationTime * 60 * 1000L

trigger.setDueTime( escalationTimeMillisecs )

Code-Beispiel 63: Setzen der Zeit für einen Zeit-Trigger

Rechnen mit Daten und Zeiten mit CM-Arbeitszeitkalender

Beispiel: Verwenden eines Zeit-Triggers mit einem Arbeitszeitkalender zum Berechnen der Eskalationszeit (CM 6.9)

Abbildung 145: ConSol CM Process Designer - Zeit-Trigger für eine Eskalation 4 Stunden vor der Deadline

def deadl = ticket.get("serviceDesk_fields.desiredDeadline")

 

// 4hrs before deadline the escalation should be set

// business calendar should be used

// ServiceDeskCalendar is assigned to queue ServiceDesk, this is transparent here

def now = new Date()

 

// time required in millisecds

def four_hours = -4*60*60*1000L

 

// calculate escalation date

def escalDate = BusinessCalendarUtil.getBusinessTime(deadl, four_hours, ticket.queue.calendar)

 

// calculate and set due time

 

def dueTime = escalDate.time - now.time

trigger.setDueTime(dueTime)

Code-Beispiel 64: Skript für einen Zeit-Trigger für eine Eskalation 4 Stunden vor der Deadline