Verwenden von Datenfeldern in Skripten

Zugriff auf Datenfelder

Die grundsätzlichen Methoden, um auf Datenfelder zuzugreifen, sind für Vorgänge, Kontakte und Ressourcen gleich.

Vorgänge

Für die Arbeit mit Vorgangsfeldern benötigen Sie vier Methoden der Klasse Ticket:

Kontakte

Für die Arbeit mit Kontaktfeldern benötigen Sie vier Methoden der Klasse Unit:

Alternativ können Sie den Namen der Feldgruppe und des Feldes durch einen Doppelpunkt trennen.

Bei der Arbeit mit Kontaktdaten, benötigen Sie auch Zugriff auf die verschiedenen Kontaktobjekte.

Ressourcen

Für die Arbeit mit Ressourcenfeldern benötigen Sie vier Methoden der Klasse Resource:

Der Inhalt eines Datenfelds hängt vom Datentyp ab und ist entweder ein Wert oder ein Objekt. Details zum Umgang mit den verschiedenen Datentypen finden Sie im Abschnitt Arbeiten mit verschiedenen Datentypen.

Arbeiten mit verschiedenen Datentypen

Der folgende Abschnitt zeigt Beispiele für die Arbeit mit Datenfeldern verschiedener Datentypen. Die Beispiele beziehen sich auf Vorgangsfelder, gelten aber auch für Kontakt- und Ressourcenfelder.

Einfache Datentypen

Einfache Datentypen sind Datenfelder, die einen einzelnen Wert oder ein einzelnes Objekt enthalten. Die folgende Liste zeigt die verfügbaren einfachen Datentypen mit den Klassen ihrer Werte:

Abrufen und Setzen von einfachen Feldwerten

Das folgende Beispiel zeigt, wie der Boolean-Wert eines Vorgangsfeldes abgerufen werden kann, um ihn in einem Entscheidungsskript zu verwenden:

boolean vip_info = ticket.get("am_fields.vip")

 

if(vip_info == true){

return true

}

else {

return false

}

Code-Beispiel 24: Entscheidungsskript, bei dem ein Boolean-Wert überprüft wird

Dasselbe Verhalten kann erreicht werden, indem Sie den Wert direkt zurückgeben:

return ticket.get("am_fields.vip")

Code-Beispiel 25: Entscheidungsskript, bei dem ein Boolean-Wert überprüft wird, Kurzversion

Das folgende Beispiel zeigt, wie ein Wert in einem Vorgangsfeld gesetzt werden kann. Da das Feld den Datentyp date hat, benötigt es ein Objekt der Klasse Date, das direkt in der Anweisung erstellt werden kann.

ticket.set("fields.reaction_time", new Date());

Code-Beispiel 26: Setzen eines Vorgangsfeldwertes für ein Feld des Typs date

Wenn Sie mit Feldern des Typs number oder date arbeiten, können Sie sogar bequem mit den Feldwerten rechnen, siehe folgendes Beispiel.

ticket.add("fields.orders_number", 1)

Code-Beispiel 27: Eins zur Anzahl der Bestellungen addieren

Suchen nach Feldwerten

Sie können mit den Methoden getByCriteria aus den entsprechenden Services (ticketService, unitService und resourceService) über die Werte in Datenfeldern nach Vorgängen, Kontakten und Ressourcen suchen.

def tickets = ticketService.getByCriteria("HelpDesk_1st_Level", [

"helpdesk_standard:priority": "hoch"

])

Code-Beispiel 28: Suchen nach allen Vorgänge der Queue „Helpdesk 1st Level“ mit der Priorität „hoch“

ticketService.getByCriteria("HelpDesk_1st_Level", [

"helpdesk_standard:priority": "hoch"

], { ticketCriteria ->

ticketCriteria.setStatus(TicketCriteria.Status.OPEN)

})

Code-Beispiel 29: Suchen nach allen offenen Vorgänge der Queue „Helpdesk 1st Level“ mit der Priorität „hoch“

Abrufen und Setzen von Enum-Werten

Ein Feld des Typs ENUM ist ein Feld, in dem der Wert einer von mehreren vordefinierten Listenwerten ist, zum Beispiel von einer Liste mit Prioritäten. Sie können zum Abrufen des Wertes eines Enum-Feldes die gleiche Syntax verwenden wie für einfache Datentypen. Die Methode get liefert ein Objekt der Klasse EnumValue. Verwenden Sie die Methode getName(), oder .name in Groovy, um den technischen Namen des Wertes abzurufen.

def prio = ticket.get("helpdesk_standard.priority")

log.info 'Priority is now ' + prio.getName()

Code-Beispiel 30: Abrufen eines Enum-Wertes für ein Vorgangsfeld

Wenn Sie den lokalisierten Wert eines Enum-Feldes abrufen möchten, müssen Sie LocalizationService verwenden.

def my_enum_field = ticket.get("helpdesk_standard.priority")

def my_enum_field_localized = localizationService.getLocalizedProperty(EnumValue.class, "name", my_enum_field.id, engineerService.getCurrentLocale())

Code-Beispiel 31: Abrufen eines lokalisierten Enum-Wertes

Beim Setzen eines Enum-Wertes muss der zweite Parameter der technische Name eines vorhandenen Enum-Wertes des Enums, das vom Vorgangsfeld referenziert wird, sein.

ticket.set("helpdesk_standard.priority", "URGENT");

Code-Beispiel 32: Setzen eines Enum-Wertes

Abrufen von Werten und Pfaden hierarchischer Listen

Hierarchische Listen werden bezüglich des Abrufens und Setzens der Werte wie normale Enum-Felder behandelt.

Die folgenden Beispiele zeigen die grundlegenden Methoden:

Listen und Tabellen

Listen und Tabellen sind „Container“ für andere Datenfelder. Ein Datenfeld des Typs list enthält entweder ein Feld eines einfachen Datentyps oder ein Feld des Typs struct, das aus mehreren Feldern mit einfachen Datentypen besteht. Ein Listenfeld kann mehrere Werte enthalten, wobei es für jeden Wert eine Zeile gibt.

Listen

Jede Zeile einer Liste enthält einen Wert eines einfachen Datentyps. Im folgenden Beispiel ist es ein Vorgangsfeld des Typs date, das den Parameter Gehört zu hat, der auf die Liste zeigt.

Tabellen (Struct-Liste)

Die Datenstruktur Struct-Liste bildet die technische Grundlage für eine Tabellenstruktur mit mehreren Spalten. Die Liste ist das übergeordnete Objekt, das Zeilen enthält. Jede Zeile ist eine Instanz eines struct. Das struct enthält so viele Vorgangsfelder (Tabellenspalten) wie erforderlich.

Um die Daten aus einer Struct-Liste abzurufen, arbeiten Sie mit einer Iteration über die Zeilen. Im folgenden Beispiel arbeiten wir mit einer Tabelle, in der ...