Relationsgraphen
Einführung in Relationsgraphen in ConSol CM
Relationsgraphen sind eine Möglichkeit zur Visualisierung der Relationen zwischen Vorgängen, Kontakten und Ressourcen in ConSol CM. Sie können in allen Abschnitten des Web Clients, die Relationen enthalten, eingeblendet werden. Zusätzlich ist es möglich, einen eigenen Abschnitt mit einem benutzerdefinierten Relationsgraphen zu erstellen.
Konzepte, Begriffe und Definitionen
Konzept |
Andere Begriffe |
Definition |
---|---|---|
Relation |
|
Verknüpfung zwischen zwei Objekten in ConSol CM. Die Objekte können vom gleichen oder unterschiedlichen Typen sein. |
Zweck und Verwendung
Der Inhalt der Web Client-Abschnitte, die Relationen enthalten, kann entweder als Liste oder als Graph angezeigt werden. Der Benutzer kann den Anzeigemodus auswählen, indem er in der Kopfzeile des Abschnitts auf den Link Graph oder Liste klickt.
Relationsgraphen zeigen die Verknüpfungen des aktuellen Objekts (Vorgang, Kontakt oder Ressource) als Graph. Das heißt, jedes Objekt ist ein mit einem Icon dargestellter Knoten und es gibt Kanten zwischen den verknüpften Objekten. Die Knoten und Kanten haben Label, die die Art der Verknüpfung angeben.
Relationsgraphen haben folgende Zwecke:
- Alternative Möglichkeit zur Anzeige von Relationen.
- Erweitern der angezeigten Informationen, z. B. um Relationen auf der zweiten Ebene.
Relationsgraphen basieren auf der Bibliothek Network von vis.js, siehe https://visjs.github.io/vis-network/docs/network/.
Die folgenden Abbildungen zeigen den Abschnitt Verknüpfte Vorgänge eines Vorgangs im Listen- und Graphenmodus. Im Graphenmodus wird auch ein Vorgang angezeigt, der nicht mit dem aktuellen Vorgang verknüpft ist, sondern mit einem verknüpften Vorgang.
Abbildung 26: ConSol CM Web Client - Normale Anzeige des Abschnitts mit den verknüpften Vorgängen
Abbildung 27: ConSol CM Web Client - Graph im Abschnitt mit den verknüpften Vorgängen
Verfügbare Einstellungen
Abschnitte zur Anzeige von Relationsgraphen
Relationsgraphen sind für alle Abschnitte, die Relationen enthalten, verfügbar.
- Vorgänge:
Kontakte, verknüpfte Vorgänge und Ressourcen - Kontakte:
Vorgänge, Personen der Firma, verknüpfte Kontakte und Ressourcen - Ressourcen:
Verknüpfte Vorgänge, Kontakte und Ressourcen
Die Graphenansicht kann in der Seitenanpassung aktiviert werden, siehe Aktivieren von Relationsgraphen. Standardmäßig zeigt sie die direkten Relationen zwischen dem aktuellen Objekt und den anderen Objekten und einige Relationen auf der zweiten Ebene. Sie können die Anzeige erweitern und ändern, siehe Ändern von Relationsgraphen.
Sie können einen benutzerdefinierten Abschnitt mit einem Relationsgraphen zu Vorgangs-, Kontakt- und Ressourcenseiten hinzufügen. Der Inhalt dieses Graphen ist nicht vordefiniert, Sie müssen ihn in einem Skript vorgeben, siehe Hinzufügen eines eigenen Abschnitts mit einem Relationsgraphen.
Verfügbare Konfigurationsparameter
Die folgenden Attribute sind für die meisten Arten von Relationen verfügbar:
-
maximumStepsFromRoot:
Gibt die Anzahl der Ebenen an. Beispiele:"maximumStepsFromRoot" : 1;
Nur Objekte, die direkt mit dem aktuellen Objekt verknüpft sind, werden angezeigt.
"maximumStepsFromRoot" : 2;
Es werden Relationen auf der ersten und zweiten Ebene angezeigt, d. h. Objekte, die direkt mit dem aktuellen Objekt verknüpft sind, und Objekte, die mit den verknüpften Objekten verknüpft sind.
-
relation:
Gibt die Art der Relation an. Die Werte sind entweder fest vorgegeben (siehe nächster Abschnitt) oder hängen von den definierten Relationstypen ab. Im letzteren Fall wird der technische Name der Relationsdefinition verwendet.
Relationen auf Vorgangsseiten
-
Relationen zu anderen Vorgängen:
"ticketTickets" : {
"maximumStepsFromRoot" : 2,
"relations" : [ "reference", "parent", "child", "master", "slave" ],
"includedQueues" : [ "queue1", "queue2" ],
"excludedQueues" :[ "queue1", "queue2" ]
}
Es sind folgende Relationstypen möglich:
- reference: Vorgang referenziert den aktuellen Vorgang
- parent: Vorgang ist der übergeordnete Vorgang (fest) des aktuellen Vorgangs
- child: Vorgang ist ein Subvorgang (fest) des aktuellen Vorgangs
- master: Vorgang ist der übergeordnete Vorgang des aktuellen Vorgangs
- slave: Vorgang ist ein Subvorgang des aktuellen Vorgangs
Verwenden Sie entweder includedQueues oder excludedQueues, um die technischen Namen der Queues anzugeben, deren Vorgänge ein- oder ausgeschlossen werden sollen.
-
Kontakte des Vorgangs:
"ticketCustomers" : {
"maximumStepsFromRoot" : 2,
"relations" : [ "main", "default", "contactTicketRoleName" ],
"includedCustomerGroups" : [ "customerGroup1", "customerGroup2" ],
"excludedCustomerGroups" : [ "customerGroup1", "customerGroup2" ]
}
Es sind folgende Relationstypen möglich
- main: Kontakt ist der Hauptkontakt des Vorgangs
- default: Kontakt ist ein Zusatzkontakt ohne Rolle
- technischer Name der Kontaktrolle
Verwenden Sie entweder includedCustomerGroups oder excludedCustomerGroups, um die technischen Namen der Kundengruppen anzugeben, deren Kontakte ein- oder ausgeschlossen werden sollen.
-
Relationen zu Ressourcen:
"ticketResources" : {
"maximumStepsFromRoot" : 2,
"relations" : [ "related", "resourceRelationDefinition" ],
"includedResourceTypes" : [ "resourceType1", "resourceType2" ],
"excludedResourceTypes" : [ "resourceType1", "resourceType2" ]
}
Es sind folgende Relationstypen möglich
- related: eine beliebige Art von Relation
- technischer Name der Relationsdefinition
Verwenden Sie entweder includedResourceTypes oder excludedResourceTypes, um die technische Namen der Ressourcentypen anzugeben, die ein- oder ausgeschlossen werden sollen.
Relationen auf Kontaktseiten
-
Vorgänge des Kontakts:
"customerTickets" : {
"maximumStepsFromRoot" : 2,
"relations" : [ "main", "default", "contactTicketRoleName" ],
"includedQueues" : [ "queue1", "queue2" ],
"excludedQueues" : [ "queue1", "queue2" ]
}
Es sind folgende Relationstypen möglich
- main: Kontakt ist der Hauptkontakt des Vorgangs
- default: Kontakt ist ein Zusatzkontakt ohne Rolle
- technischer Name der Kontaktrolle
Verwenden Sie entweder includedQueues oder excludedQueues, um die technischen Namen der Queues anzugeben, deren Vorgänge ein- oder ausgeschlossen werden sollen.
-
Relationen zu anderen Kontakten:
"unitUnits" : {
"maximumStepsFromRoot" : 2,
"relations" : [ "unitRelationDefinition1", "unitRelationDefinition2" ],
"includedCustomerGroups" : [ "customerGroup1", "customerGroup2" ],
"excludedCustomerGroups" : [ "customerGroup1", "customerGroup2" ]
}
Der Typ der Relation wird anhand des technischen Namens der Relationsdefinition angegeben.
Bei gerichteten Relationen ist es möglich, die Richtung anzugeben, d. h. ob die im Graphen verknüpften Objekte die Quelle oder das Ziel der Relation sein sollen. Die Syntax ist folgendermaßen:
Die verknüpften Kontakte sind die Quelle der Relation und der Stammknoten ist das Ziel:
"relations" : [ "unitRelationDefinition:source"]
Die verknüpften Kontakte sind das Ziel der Relation und der Stammknoten ist die Quelle:
"relations" : ["unitRelationDefinition:target"]
Verwenden Sie entweder includedCustomerGroups oder excludedCustomerGroups, um die technischen Namen der Kundengruppen anzugeben, deren Kontakte ein- oder ausgeschlossen werden sollen.
-
Firma der Person:
"contactCompany" : {
"maximumStepsFromRoot" : 2
}
-
Personen der Firma:
"companyContacts" : {
"maximumStepsFromRoot" : 2
}
-
Relationen zu Ressourcen:
"unitResources" : {
"maximumStepsFromRoot" : 2,
"relations" : [ "related", "resourceRelationDefinition" ],
"includedResourceTypes" : [ "resourceType1", "resourceType2" ],
"excludedResourceTypes" : [ "resourceType1", "resourceType2" ]
}
Es sind folgende Relationstypen möglich
- related: eine beliebige Art von Relation
- technischer Name der Relationsdefinition
Verwenden Sie entweder includedResourceTypes oder excludedResourceTypes, um die technische Namen der Ressourcentypen anzugeben, die ein- oder ausgeschlossen werden sollen.
Relationen auf Ressourcenseiten
-
Relationen zu anderen Ressourcen:
"resourceResources" : {
"maximumStepsFromRoot" : 2,
"relations" : [ "related", "resourceRelationDefinition" ],
"includedResourceTypes" : [ "resourceType1","resourceType2" ],
"excludedResourceTypes" : [ "resourceType1", "resourceType2" ]
}
Es sind folgende Relationstypen möglich
- related: eine beliebige Art von Relation
- technischer Name der Relationsdefinition
Der Typ der Relation wird anhand des technischen Namens der Relationsdefinition angegeben.
Bei gerichteten Relationen ist es möglich, die Richtung anzugeben, d. h. ob die im Graphen verknüpften Objekte die Quelle oder das Ziel der Relation sein sollen. Die Syntax ist folgendermaßen:
Die verknüpften Ressourcen sind die Quelle der Relation und der Stammknoten ist das Ziel:
"relations" : ["resourceRelationDefinition:source"]
Die verknüpften Ressourcen sind das Ziel der Relation und der Stammknoten ist die Quelle:
"relations" : ["resourceRelationDefinition:target"]
Verwenden Sie entweder includedResourceTypes oder excludedResourceTypes, um die technische Namen der Ressourcentypen anzugeben, die ein- oder ausgeschlossen werden sollen.
-
Relationen zu Kontakten:
resourceUnits" : {
"maximumStepsFromRoot" : 2,
"relations" : [ "related", "resourceRelationDefinition" ],
"includedCustomerGroups" : [ "customerGroup1", "customerGroup2" ],
"excludedCustomerGroups" : [ "customerGroup1", "customerGroup2" ]
}
Es sind folgende Relationstypen möglich
- related: eine beliebige Art von Relation
- technischer Name der Relationsdefinition
Verwenden Sie entweder includedCustomerGroups oder excludedCustomerGroups, um die technischen Namen der Kundengruppen anzugeben, deren Kontakte ein- oder ausgeschlossen werden sollen.
-
Relationen zu Vorgängen:
"resourceTickets" : {
"maximumStepsFromRoot" : 2,
"relations" : [ "related", "resourceRelationDefinition" ],
"includedQueues" : [ "queue1", "queue2" ],
"excludedQueues" : [ "queue1", "queue2" ]
}
Es sind folgende Relationstypen möglich
- related: eine beliebige Art von Relation
- technischer Name der Relationsdefinition
Verwenden Sie entweder includedQueues oder excludedQueues, um die technischen Namen der Queues anzugeben, deren Vorgänge ein- oder ausgeschlossen werden sollen.
Grundlegende Aufgaben
Aktivieren von Relationsgraphen
Standardmäßig sind die Relationsgraphen deaktiviert, d. h. der Link Graph wird nicht angezeigt. Gehen Sie folgendermaßen vor, um Relationsgraphen zu aktivieren:
- Melden Sie sich als Administrator an.
- Öffnen Sie die Seite, auf der Sie einen Relationsgraphen anzeigen möchten.
- Klicken Sie im Hauptmenü auf Seitenanpassung aktivieren.
- Gehen Sie im Abschnitt der Seitenanpassung zum Typ relationGraph und öffnen Sie den Unterbereich des Abschnitts, in dem der Graph angezeigt werden soll.
- Setzen Sie das Attribut graph auf On (standardmäßig wird der Abschnitt als Liste angezeigt) oder Default (standardmäßig wird der Abschnitt als Graph angezeigt). In beiden Fällen kann der Benutzer die Ansicht wechseln.
Erweiterte Aufgaben
Ändern von Relationsgraphen
Es gibt zwei Möglichkeiten zum Ändern eines Relationsgraphen:
- Geben Sie im Attribut der Seitenanpassung graphConfiguration einen JSON-Ausdruck an. Dieses Attribut ermöglicht die Definition des Umfangs des Relationsgraphen, d. h. welche Relationen angezeigt werden. Eine Liste der möglichen Konfigurationen finden Sie in Verfügbare Konfigurationsparameter.
- Geben Sie den Namen eines Skripts des Typs Relationsgraph im Attribut graphScriptNameein. Das Skript muss die JSON-Konfiguration zurückgeben. Mit dem Skript können sowohl der Umfang als auch das Layout des Relationsgraphen definiert werden.
Skript-Codierung
Das Skript, mit dem ein Relationsgraph definiert wird, muss ein Objekt der Klasse RelationGraph zurückgeben. Mit Methoden der Klasse RelationCriteria definieren Sie den Umfang des Graphen, d. h. die Arten von Relationen und die Tiefe (wie viele Ebenen von Relationen der verknüpften Objekte). Optional können Sie das Layout des Graphen mit den Klassen RelationNode und RelationEdge definieren. Die Methode load() der Klasse RelationService wird benötigt, um den Graphen zu laden. Weitere Details finden Sie in der ConSol CM-API-Dokumentation.
Abhängig von der Seite, auf der der Graph angezeigt wird, sind folgende Objekte implizit im Skript verfügbar:
- ticketId (auf Vorgangsseiten)
- unitId (auf Kontaktseiten)
- resourceId (auf Ressourcenseiten)
Hinzufügen eines eigenen Abschnitts mit einem Relationsgraphen
Sie können einen eigenen Abschnitt mit einem Relationsgraphen zu Vorgangs-, Kontakt- und Ressourcenseiten hinzufügen. Gehen Sie folgendermaßen vor, um so einen benutzerdefinierten Abschnitt zu erstellen:
- Melden Sie sich als Administrator an.
- Öffnen Sie die Seite, auf der Sie den neuen Abschnitt hinzufügen möchten.
- Klicken Sie im Hauptmenü auf Seitenanpassung aktivieren.
- Gehen Sie im Abschnitt der Seitenanpassung zum Typ section und öffnen Sie den Unterbereich customRelationGraphSection.
- Setzen Sie das Attribut state auf collapsed oder expanded.
- Gehen Sie zum neu erstellten Typ customRelationGraph und nehmen Sie folgende Einstellungen vor:
- Geben Sie den Namen des Skripts des Typs Relationsgraph, das die Graphenkonfiguration zurückgibt, im Attribut graphScriptName ein.
- Geben Sie den Text, der in der Kopfzeile des Abschnitts angezeigt werden soll, im Attribut sectionHeader ein.
- Falls nötig, ändern Sie die Höhe des Abschnitts im Attribut sectionHeight, damit der Graph in den Abschnitt passt. Der Standardwert 0 bedeutet, dass die Standardhöhe verwendet wird.
Der angezeigte Graph hängt komplett vom angegebenen Skript ab, das Zugriff auf die gesamte ConSol CM-API hat.
Beispielskript, das die Relationen der aktuellen Ressource und die Relationen der verknüpften Ressourcen anzeigt:
import com.consol.cmas.common.model.relation.*
//create criteria using java api
def relationCriteria = new RelationCriteria()
.withResourceTickets(new RelationCriteria.ResourceTickets()
.withMaximumStepsFromRoot(2))
.withTicketResources(new RelationCriteria.TicketResources()
.withMaximumStepsFromRoot(2))
.withResourceUnits(new RelationCriteria.ResourceUnits()
.withMaximumStepsFromRoot(2))
.withResourceResources(new RelationCriteria.ResourceResources()
.withMaximumStepsFromRoot(2));
//variables available in script: ticketId, unitId, resourceId (depending on page)
def resource = resourceService.getById(resourceId)
def relationGraph = relationService.load(resource, relationCriteria);
//modify graph nodes, edges and visjs property
for (RelationNode node : relationGraph.getNodes()) {
node.withProperty("font", [size:9,color:"black"]) //change default property
}
for (RelationEdge edge : relationGraph.getEdges()) {
edge.withProperty("font", [size:12, color:"red"]); //change default property
}
relationGraph.withProperty("layout", [improvedLayout:true]) //change default property
return relationGraph;