Verwaltung von Datenobjektgruppenfeldern und GUI-Design für Kundendaten

Einleitung

Eine der Stärken der Versionen 6.9 und höher von ConSol CM ist die große Flexibilität des Kundendatenmodells (FlexCDM) und GUI-Designs. Als Administrator können Sie alle benötigten Datenfelder definieren und an der gewünschten Stelle der Benutzeroberfläche platzieren. Das Grundprinzip ist jetzt das gleiche, das Sie bereits von den Benutzerdefinierten Feldern für Ticketdaten kennen: völlige Flexibilität.

Die Verwaltung des Ticketdatenmodells und das GUI-Design werden im Abschnitt Verwaltung von Benutzerdefinierten Feldern (Einrichten des Ticketdatenmodells) erklärt. Die Verwaltung von Objekten innerhalb des Kundendatenmodells wird im Abschnitt Einrichten des Kundendatenmodells detailliert erklärt. Bitte lesen Sie dort die entsprechenden Abschnitte. In diesem Kapitel gehen wir davon aus, dass Sie mit diesen Themen bereits vertraut sind.

Definieren von Datenobjektgruppenfeldern für Kundendaten mit dem Admin Tool

GUI des Admin Tools

Die Definition von Kundendatenfeldern ist Bestandteil der Definition des gesamten Kundendatenmodells, siehe Abschnitt Einrichten des Kundendatenmodells. Das Datenmodell wird im Admin Tool im Navigationselement Datenmodelle der Navigationsgruppe Kunden definiert.

Die Datenfelder für Datenobjekte innerhalb des Kundendatenmodells heißen Datenobjektgruppenfelder. Die Arbeit mit Datenobjektgruppenfeldern basiert auf den gleichen Prinzipien wie die Arbeit mit Ticketdatenfeldern (Benutzerdefinierten Feldern): Die Datenfelder werden in Gruppen verwaltet und sowohl die Gruppen als auch die einzelnen Felder können annotiert werden.

Abbildung 220: ConSol CM Admin Tool - Definition von Datenobjektgruppenfeldern

Datenobjektgruppen

Wie die Benutzerdefinierten Felder, die Sie bereits aus früheren CM-Versionen kennen, werden auch die Datenobjektgruppenfelder in Gruppen angelegt, den Datenobjektgruppen. Jedes Datenobjekt eines Kundendatenmodells kann so viele Datenobjektgruppen haben, wie nötig sind. So kann zum Beispiel eine Firma im Händlerdatenmodell eine Datenobjektgruppe für allgemeine Daten haben, eine für Vertragsdaten und eine für die Personen, die für diesen Händler zuständig sind. Für die Kontakte innerhalb des Händlerdatenmodells wird eine Datenobjektgruppe mit allgemeinen Daten definiert.

Abbildung 221: ConSol CM Admin Tool - Kundendatenmodell mit mehreren Datenobjektgruppen

Die Organisation der Datenfelder in Gruppen hat mehrere Auswirkungen. Stellen Sie sicher, dass das Design des Datenmodells den Bedürfnissen der Benutzer entspricht.

Eine Datenobjektgruppe...

Abbildung 222: ConSol CM Web Client - Firmendaten in Tabs (basierend auf Datenobjektgruppen)

Definieren von Datenobjektgruppenfeldern

Die Definition von Datenobjektgruppenfeldern (d. h. Datenfeldern wie Name, Adresse oder Telefonnummer) basiert auf dem bewährten Prinzip, das seit der ersten CM6-Version bereits für die Benutzerdefinierten Felder verwendet wurde.

Ein Datenobjektgruppenfeld...

Im Gegensatz zu den Benutzerdefinierten Feldern und dem Layout von Tickets, wo für die Datenfelder nur drei Spalten zur Verfügung stehen, können Sie für die Definition von Datenobjektgruppenfeldern so viele Spalten verwenden, wie Sie möchten.

Beachten Sie bitte, dass bis einschließlich CM-Version 6.10.4 das Business Card Feature greift, d. h. um Kundendaten immer bündig anzuordnen, werden alle Felder einer Zeile immer linksbündig angeordnet (d. h. beginnend mit Spalte 0), auch wenn das erste Feld in der Zeile erst in Spalte 2 (oder einer anderen) positioniert ist (Annotation position).

Labels für Datenobjektgruppenfelder

In CM-Versionen vor 6.9.4 wurden die Labels von Datenobjektgruppenfeldern (z. B. Name, Adresse) im Web Client standardmäßig als Wasserzeichen angezeigt. Wenn ein anderes Label benötigt wird, muss ein eigenes Datenobjektgruppenfeld des Typs string mit der Annotation text-type = label verwendet werden, wie in den folgenden Abbildungen dargestellt ist.

Abbildung 223: ConSol CM Web Client - Standardanzeige der Labels von Datenobjektgruppenfeldern in Versionen vor 6.9.4

Abbildung 224: ConSol CM Web Client - Label als eigenständige Datenobjektgruppenfelder in Versionen vor 6.9.4

Ab CM-Version 6.9.4 können Sie als Administrator entscheiden, ob Wasserzeichen oder Labels (oder beides) verwendet werden sollen. Labels sind jetzt auf eine ähnliche Weise implementiert wie die Labels von Benutzerdefinierten Feldern (d. h. Datenfeldern für Ticketdaten). Außerdem können Tooltips hinzugefügt werden. Der Anzeigemodus der Labels von Datenobjektgruppenfeldern wird über Annotationen gesteuert. Annotationen können für Datenobjektgruppen oder einzelne Datenobjektgruppenfelder gesetzt werden. Die Feldannotationen überschreiben dabei die Gruppenannotationen. Auf diese Weise können Sie ein Verhalten für die Anzeige der Gruppe definieren und es für ein oder mehrere Einzelfelder ändern. Dies ist im folgenden Beispiel erklärt.

Annotationen für Datenobjektgruppen:

Annotationen für Datenobjektgruppenfelder:

Abbildung 225: ConSol CM Admin Tool - Konfiguration der Datenobjektgruppe Reseller, ein Feld mit eigener Konfiguration

Abbildung 226: ConSol CM Web Client - Ansicht der Datenobjektgruppe Reseller, ein Feld (company_name) mit eigener Annotation (Bearbeitungsmodus)

Abbildung 227: ConSol CM Web Client - Ansicht der Datenobjektgruppe Reseller, ein Feld (company_name) mit eigener Annotation (Beispiel: keine Auswirkungen auf Ansichtsmodus)

Die Labels werden automatisch eingefügt, sodass es am Ende bis zu sechs Spalten geben kann. Im folgenden Beispiel werden zwei Spalten verwendet.

Abbildung 228: Beispiel für die Position von Datenobjektgruppenfeldern im Raster

Label-Modus nach einem Update von einer CM-Version vor 6.9.4 auf Version 6.9.4 und höher

Das Layout des Kundenmodells wird beim Update beibehalten! Alle Annotationen werden entsprechend gesetzt und können später geändert werden.

Für alle vorhandenen Datenobjektgruppen wird die layout-Annotation: show-labels-in-edit = false (mit der die Standard-Labels im Bearbeitungsmodus ausgeblendet werden) beim Update gesetzt.

Standardmodus für neue Datenobjektgruppen und Datenobjektgruppenfelder

Alle neuen Datenobjektgruppen werden entsprechend der neuen Standardkonfiguration angezeigt. Das bedeutet:

Abbildung 229: ConSol CM Web Client - Standardanzeigemodus für Datenobjektgruppenfelder

Verwendung von Objekten aus FlexCDM in Skripten

In diesem Handbuch werden die Begriffe Kunde und Kundendefinition verwendet. Die entsprechenden Skripte verwenden allerdings den Begriff Datenobjekt und die Namen der entsprechenden Java-Klassen sind Unit und UnitDefinition. Alle anderen Java-Klassen, die Kundenobjekte verarbeiten, heißen ebenfalls noch Unit... Beachten Sie dies bei Ihrer Arbeit als ConSol CM-Administrator und -Programmierer. Details finden Sie in der ConSol CM Java API Doc.

Neue Skriptfunktionen ab ConSol CM-Version 6.9

Bis ConSol CM-Version 6.8 konnte eine Unit nur eine Benutzerdefinierte Feldgruppe haben. Der Ausdruck unit.get("name") war immer gültig, weil ein Benutzerdefiniertes Feld mit einem bestimmten Namen nur einmal vorkommen konnte, zum Beispiel group1.name.

Ab ConSol CM-Version 6.9 kann ein Datenobjekt (Unit) ein oder mehrere Datenobjektgruppenfelder mit dem gleichen Namen haben. So kann sich z. B. "name" auf "group1.name" oder "group2.name" beziehen. In solchen Fällen ist der Ausdruck Unit.get("name") nicht gültig und führt zu einer Exception.

Für die Rückwärtskompatibilität funktioniert der Code unit.get("name"), solange das Benutzerdefinierte Feld "name" eindeutig ist. Wenn ein weiteres Benutzerdefiniertes Feld mit dem gleichen Namen hinzugefügt wird, funktioniert der Code unit.get("name") nicht mehr!

Verwenden Sie folgende Notation, um Daten aus Unit-Feldern (Datenobjektgruppenfeldern) abzurufen:

unit.get("contactFields:companyReference.companyFields:name")

Code-Beispiel 14: Beispiel für den Abruf des Firmennamens eines Kontakts

Erweiterung der Custom Field Expression Language (CFEL)

Ab ConSol CM-Version 6.9 wurde die Custom Field Expression Language (CFEL) verbessert, um einfachen Zugriff auf viele Objekte zu ermöglichen. Dies betrifft Skripte für Tickets und andere Objekte sowie Objekte aus dem Kundendatenmodell, d. h. Units (Datenobjekte: Objekte auf Kontakt- oder Firmenstufe). Im Folgenden werden die Verbesserungen bezüglich Units (Datenobjekten) erklärt. Eine detaillierte Beschreibung über das Schreiben von Java- oder Groovy-Code, der Objekte aus dem Kundendatenmodell verwendet, finden Sie im ConSol CM Process Designer Handbuch.

Sie können aus unterschiedlichen Skripten auf Objekte des Kundendatenmodells zugreifen:

Änderungen in den Skripten von ConSol CM-Version 6.8 auf Version 6.9

In ConSol CM-Version 6.9 wurden einige Methoden für veraltet (deprecated) erklärt und müssen durch neue Methoden ersetzt werden. Dies ist nur relevant, wenn Sie Skripte aus Version 6.8 oder älter haben. In diesem Fall müssen die Skripte unter Verwendung der neuen Methoden umgeschrieben werden.

AbstractField

Die Zugriffsmethoden für die einzelnen Typen von Benutzerdefinierten Feldern wurden entfernt.

Entfernte/geänderte Methode

Ersatz

StringField.getStringValue()

StringField.getValue()

NumberField.getNumberValue()

NumberField.getValue()

ActivityFormFieldsSet

Die Zugriffsmethoden über die reine FieldDefinition wurden entfernt; verwenden Sie stattdessen ActivityFormElement.

Entfernte/geänderte Methode

Ersatz

ActivityFormFieldsSet.addFieldDefinition(new FieldDefinition)

ActivityFormFieldsSet.addElement(new ActivityFormElement(new FieldDefinition()))

ActivityFormFieldsSet.getFields() returns List<FieldDefinition>

ActivityFormFieldsSet.getElements() returns List<ActivityFormElement>

ActivityFormFieldsSet.setFields(List<FieldDefinition>)

ActivityFormFieldsSet.setElements(List<ActivityFormElement>)

ActivityFormFieldsSet.removeFieldDefinition(FieldDefinition)

ActivityFormFieldsSet.removeElement(ActivityFormElement)

ActivityFormFieldsSet.removeAllFieldDefinitions()

ActivityFormFieldsSet.removeAllElements()

ActivityFormFieldsSet.getFieldDefinition(index) returns FieldDefinition

ActivityFormFieldsSet.getElement(index) returns ActivityFormElement

ActivityFormFieldsSet.addFieldDefinition(new FieldDefinition, index)

ActivityFormFieldsSet.setElements(ordered list of elements)

ContentFile

Der Größenparameter wurde für inputstream-Methoden hinzugefügt.

Entfernte/geänderte Methode

Ersatz

new ContentFile(filename, inputstream)

new ContentFile(filename, inputstream, streamsize)

ContentFile.setInputStream(inputstream)

ContentFile.setInputStream(inputstream, streamsize)

ContentResource

Die gleichen Änderungen wie für ContentFile.

Entfernte/geänderte Methode

Ersatz

new ContentResource(filename, inputstream)

new ContentResource(filename, inputstream, streamsize)

ContentResource.setInputStream(inputstream)

ContentResource.setInputStream(inputstream, streamsize)

FieldLogEntry

Die Zugriffsmethoden auf Änderungen wurden entfernt.

Entfernte/geänderte Methode

Ersatz

FieldLogEntry.setModification(Modification)

FieldLogEntry.setValue(value) + FieldLogEntry.setPreviousValue(value)

FieldLogEntry.getModification()

FieldLogEntry.getValue() + FieldLogEntry.getPreviousValue()

Ticket

Die umbenannten Zugriffsmethoden auf Benutzerdefinierte Felder wurden entfernt und weitere Änderungen.

Entfernte/geänderte Methode

Ersatz

Ticket.getField(), Ticket.setFieldValue(), Ticket.removeField()

Zuvor funktionierte das Vermischen der Parameter groupName und fieldName, jetzt wird nur noch die Reihenfolge groupName, fieldName akzeptiert.

Ticket.setField(AbstractField)

Ticket.addField(AbstractField)

Ticket.addOrUpdateField(AbstractField)

Ticket.setFieldValue(pGroupName, pFieldName, Object pValue)

Ticket.getEnumValue

EnumValue enumValue = getFieldValue(String pGroupName, String pFieldName)

String enumName = enumValue.getName();

Ticket.setEnumValue(fieldName, groupName, enumName)

EnumValue enumValue = enumService.getEnumValue(enumGroupName, enumValueName);

Ticket.setFieldValue(pGroupName, pFieldName, enumValue);

Für Verwendung im Workflow:

Ticket.setFieldValue(pGroupName, pFieldName, getEnumValueByName(enumGroupName, enumValueName));

TimerTrigger

Die Methode setDuedate wurde entfernt.

Entfernte/geänderte Methode

Ersatz

TimerTrigger.setDuedate

TimerTrigger.setDueTime

Unit

Die umbenannten Zugriffsmethoden auf Benutzerdefinierte Felder wurden entfernt.

Entfernte/geänderte Methode

Ersatz

Unit.getFieldsSet()

Unit.getFields()

Unit.setFieldsMap(Map)

Unit.addFields(Set)

Unit.setField(AbstractField)

Unit.addField(AbstractField)

Neue (Convenience-) Methoden

Beispiele für neue Methoden:

Object.Method Erklärung

def contacts = unit.get("contacts()")

List contacts = company.getContacts()

Mit CFEL ("contacts()") wird eine Liste aller Kontakt aus der Firma (Unit) abgerufen.
Unit company = mainContact.getCompany() Für einen Kontakt kann die Firma einfach abgerufen werden.
newContact.set("company()", newCompany)

Für einen (neuen) Kontakt wird der Firma der CFEL-Ausdruck "company()" zugewiesen, der einen einfachen Zugriff auf das Firmenobjekt ermöglicht.

List tickets = company.get("tickets()") Es werden alle Tickets für eine Firma abgerufen.

Ticket ticket = getTicket();

Unit mainContact = ticket.getMainContact()

List tickets = mainContact.get("tickets()")

Es werden alle Tickets für einen Kontakt abgerufen.

Integer count = contact.get("company().contacts()[0].tickets()[count]"); Ein Kettenausdruck, mit dem die Anzahl der Tickets für einen bestimmten Kontakt abgerufen wird.

TicketCriteria ticketCriteria = new TicketCriteria();

Unit patternContact = new Unit("contact", customerGroup);

mdcmCriteriaBuilder.setReferencedContactCriteria(ticketCriteria, patternContact);

Code-Beispiel 15: Beispiel 1: Suche nach den Tickets eines Kontakts oder einer Firma

TicketCriteria ticketCriteria = new TicketCriteria();

Unit contactPattern = new Unit("contact", customerGroup);

mdcmCriteriaBuilder.setReferencedContactCriteria(ticketCriteria, contactPattern);

Unit companyPattern = new Unit("company", customerGroup);

companyPattern.setFieldValue("name", „ConSol");

mdcmCriteriaBuilder.setReferencedCompanyCriteria(contactPattern, companyPattern);

Code-Beispiel 16: Suche nach den Tickets eines Kontakts, der zu einer bestimmten Firma gehört

UnitCriteria unitCriteria = new UnitCriteria();

Unit companyPattern = new Unit("company", customerGroup);

mdcmCriteriaBuilder.setReferencedCompanyCriteria(unitCriteria, companyPattern);

Code-Beispiel 17: Suche nach Kontakten einer bestimmten Firma

Detaillierte Informationen über die Methoden einschließlich der Eingabeparameter (Methodensignaturen) und der Ausgabedatentypen finden Sie in der ConSol CM Java API Doc.

Neue Objekte in ConSol CM 6.9 und höher

Welche Objekte im Skript verfügbar sind, hängt natürlich vom Kontext des Skripts ab. Die folgenden Beispiele zeigen einige mögliche Anwendungsfälle:

Ausgangspunkt Skript Objekte Beispiel
Firmenseite

Datenobjekt-Aktionsskript

unit

steht für die Firma

def contacts = unit.get("contacts()")
Kontaktseite

Datenobjekt-Aktionsskript

unit

steht für den Kontakt

List tickets = unit.get("tickets()")
Workflow-Aktivität Skript für Workflow-Aktion oder -Bedingung ticket def id = ticket.getId()
Workflow-Aktivität mit Admin-Tool-Skript Skript für Workflow-Aktion oder -Bedingung ticket ist nicht implizit vorhanden!

import com.consol.cmas.common.model.ticket.Ticket

def id = ticket.getId()