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 23: 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 24: 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 25: 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 26: 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 27: 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 28: Suchen nach allen offenen Vorgänge der Queue „Helpdesk 1st Level“ mit der Priorität „hoch“

Suchen nach leeren Feldern

Sie können nach Vorgängen, Kontakten und Ressourcen suchen, bei denen ein bestimmtes Feld nicht gesetzt ist, indem Sie ein null-Kriterium zu den Suchkriterien hinzufügen.

TicketCriteria ticketCriteria = new TicketCriteria();

ticketCriteria.fields = new CustomFieldCriteriaBuilder()

.set("helpdesk_standard:myBoolean", CriteriaWithCustomFields.NOT_SET_BOOLEAN)

.build();

Code-Beispiel 29: Suche nach allen Vorgängen, bei denen das Feld „myBoolean“ leer ist

Das Objekt, das in CriteriaWithCustomFields genutzt wird, hängt vom Typ des Datenfeldes ab:

Die Suche nach leeren Feldern funktioniert nur für einfache Felder. Verschachtelte Felder, wie Felder, die zu Listen oder Tabellen gehören, können nur durchsucht werden, wenn das criteria-Objekt mindestens ein anderes Kriterium enthält, das nach einem nicht-leeren Feld sucht, das zum gleichen übergeordneten Feld gehört.

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

Die gleiche Syntax kann für hierarchische Listen verwendet werden, sofern der technische Name des Enum-Wertes innerhalb der hierarchischen Liste nur einmal vorkommt.

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 ...