Skripte des Typs Text-Autovervollständigung

Mit Skripten des Typs Text-Autovervollständigung können Text-Autovervollständigungsfelder implementiert werden. Das sind Textfelder, die eine Liste mit Vorschlägen passend zum eingegebenen Text anzeigen.

Text-Autovervollständigungsfelder bieten viele Vorteile: 

Anwendungsbeispiele für Text-Autovervollständigungsfelder:

Schritte zur Verwendung eines Text-Autovervollständigungsskripts:

  1. Schreiben Sie auf der Seite Skripte ein Skript des Typs Text-Autovervollständigung, siehe Erstellen des Text-Autovervollständigungsskripts.
  2. Erstellen Sie das Datenfeld, für das das Skript verwendet werden soll, siehe Erstellen des Datenfeldes.

Erstellen des Text-Autovervollständigungsskripts

Text-Autovervollständigungsfelder speichern zwei Werte:

Dynamische Anzeigewerte verwenden Templates für die Darstellung in der Vorschlagsliste und im Datenfeld. Die folgenden Templates werden verwendet:

Struktur des Skripts

Das Skript muss die Methode onSearchInput implementieren. Diese Methode hat zwei Signaturen, eine für normale Datenfelder und eine für Datenfelder, die zu Listen gehören. Wenn Sie ein neues Skript des Typs Text-Autovervollständigung erstellen, wird die Vorlage der Methode automatisch eingefügt, sodass Sie die korrekte Methode leicht finden können.

Das Skript muss ein Objekt der Klasse ScriptAutocompleteResult zurückgeben, das die Suchergebnisse enthält. Die Objekte, die als Suchergebnisse hinzugefügt werden, müssen dem Objekttyp entsprechen, der für das Datenfeld definiert ist (siehe Erstellen des Datenfeldes), d. h. Sie können entweder Vorgänge oder Kontakte oder Ressourcen oder Benutzer oder Strings hinzufügen.

Die Meldung, die standardmäßig angezeigt wird, wenn die Suche keine Ergebnisse liefert, ist Keine Suchergebnisse. Mit der Methode noResults('String') können Sie die Meldung anpassen, z. B.:

return ScriptAutocompleteResult.noResults('No matching engineers found')

Methoden zum Hinzufügen von Werten zur Liste

Der Typ des Anzeigewerts (statisch oder dynamisch) hängt von der Methode ab, die verwendet wurde, um die Werte zur Liste hinzuzufügen.

Zuerst erstellen Sie ein Objekt der Klasse ScriptAutocompleteResult.

ScriptAutocompleteResult resultset = new ScriptAutocompleteResult();

Fügen Sie danach mit einer der folgenden Methoden Werte zur Liste hinzu:

Details über die Methoden-Signaturen finden Sie in der ConSol CM API Dokumentation der Klasse ScriptAutocompleteResult.

Anwendungsfälle für das Zurückgeben von Strings

Es gibt zwei zusätzliche Anwendungsfälle für Objekte des Typs ScriptAutocompleteResult, die Strings enthalten:

Arbeiten mit dem Kontext

Sie können die Variable pContext verwenden, um das Objekt abzurufen, zu dem das Datenfeld gehört. Der Inhalt von pContext hängt vom Typ des Objekts ab.

Dadurch können Sie die Suchergebnisse so beeinflussen, dass sie das Objekt, zu dem das Text-Autovervollständigungsskript gehört (Vorgang, Kontakt oder Ressource), berücksichtigen.

Erstellen des Datenfeldes

Text-Autovervollständigungsfelder können in Vorgangs-, Kontakt- und Ressourcenfeldern verwendet werden. Gehen Sie folgendermaßen vor, um ein neues Text-Autovervollständigungsfeld zu erstellen:

  1. Öffnen Sie die Seite Vorgangsfelder, Kontaktfelder oder Ressourcenfelder.
  2. Erstellen Sie ein Feld mit dem Datentyp Autocomplete.
  3. Wählen Sie das gewünschte Objekt aus der Drop-down-Liste Typ. Die verfügbaren Optionen sind Vorgang, Kontakt, Ressource, Benutzer oder Text.
  4. Wählen Sie das Skript in der Drop-down-Liste Skript. Es sind nur Skripte des Typs Text-Autovervollständigung verfügbar, siehe Erstellen des Text-Autovervollständigungsskripts.

Programmierbeispiel

Das folgende Beispielskript implementiert ein Text-Autovervollständigungsfeld, das Suchergebnisse für Ressourcen enthält. Die Variable pSearchStr wird verwendet, um zu prüfen, wie viele Zeichen eingegeben wurden. In diesem Beispiel zeigt die Drop-down-Liste eine Meldung an, dass mindestens drei Zeichen erforderlich sind, wenn der Benutzer nicht genügend Zeichen eingibt, um die Suche zu starten. Wenn keine Ergebnisse gefunden werden, wird eine benutzerdefinierte Meldung angezeigt. Ansonsten enthält die Drop-down-Liste die Suchergebnisse. Das Skript arbeitet mit dynamischen Anzeigewerten.

import com.consol.cmas.common.model.autocomplete.script.*

 

/**

* This method is called by web client when the user clicks or types into the autocomplete field

* @param pSearchStr the search String types or NULL if user clicked into field without typing

* @param pKey fieldKey

* @param pContext (Ticket/Unit/Resource) holder. More about this later in the specification (Context section)

*/

 

ScriptAutocompleteResult onSearchInput(String pSearchStr, FieldKey pKey, Context pContext) {

ScriptAutocompleteResult resultset = new ScriptAutocompleteResult();

// Add matching resource when entering more than 2 characters

if (pSearchStr.length() < 3) {

return new ScriptAutocompleteResult("NOTE: Please enter at least 3 characters!");

} else {

ResourceCriteria criteria = new ResourceCriteria();

criteria.setPattern("*"+pSearchStr+"*")

def resources = resourceService.getByCriteria(criteria)

if(resources.size() < 1){

return ScriptAutocompleteResult.noResults('No matching resources found')

} else {

resultset.add(resources);

}

}

return resultset;

}

Code-Beispiel 9: Skript eines Text-Autovervollständigungsfelds für ein Ressourcenfeld

Abrufen und Setzen von Werten von Text-Autovervollständigungsfeldern

Der Wert eines Text-Autovervollständigungsfelds gehört zur Klasse AutocompleteValue. Er kann über die Methoden getInternalValue() und getDisplayValue() dieser Klasse abgerufen werden.

Das folgende Beispiel zeigt, wie der Wert des Text-Autovervollständigungsfelds engineers_autocomplete in die Log-Datei geschrieben wird. Das Feld enthält eine Referenz auf einen Benutzer und gehört zu einem Vorgang.

// display engineer of ticket field (not engineer field in header!)

def ticket = workflowApi.ticket

 

AutocompleteValue myAutocompleteValue = ticket.get("serviceDesk_fields.engineers_autocomplete")

def intValue = myAutocompleteValue.getInternalValue()

log.info 'The internal value is ' + intValue

def dispValue = myAutocompleteValue.getDisplayValue()

log.info 'The display value is ' + dispValue

Code-Beispiel 10: Skript, das die Werte eines Text-Autovervollständigungsfelds in die Datei server.log schreibt

Um die Werte eines Text-Autovervollständigungsfelds zu setzen, müssen Sie ein Objekt der Klasse AutocompleteValue mit dem internen Wert und dem Anzeigewert erstellen. Verwenden Sie die Methode setDynamicDisplayValue(true), um ein Feld mit einem dynamischen Anzeigewert zu erstellen.

Das folgende Beispiel zeigt, wie der Benutzer Susan ServiceDesk mit der ID 26 unter Verwendung eines dynamischen Anzeigewerts im Vorgangs-Autovervollständigungsfeld engineers_autocomplete referenziert wird.

def ticket = workflowApi.ticket

 

myAutocompleteValue = new AutocompleteValue()

myAutocompleteValue.setInternalValue("26")

myAutocompleteValue.setDynamicDisplayValue(true)

 

ticket.set("serviceDesk_fields.engineers_autocomplete", myAutocompleteValue);

Berechtigungen in Text-Autovervollständigungsfeldern

Die Berechtigungen werden während der Ausführung des Text-Autovervollständigungsskripts beim Editieren des Felds im Web Client oder CM/Track überprüft, d. h. der Benutzer kann nur Einträge sehen und auswählen, die zu Objekten gehören, die er mit den ihm zugewiesenen Rollen sehen darf. Beim Anzeigen von Text-Autovervollständigungsfeldern findet keine Überprüfung der Berechtigungen statt. Das bedeutet, dass der Benutzer in Text-Autovervollständigungsfeldern und Protokolleinträgen Bezeichnungen sehen könnte, die sich auf Objekte beziehen, für die er keine Berechtigung hat.

Hinweis zu Berechtigungen in CM/Track:

Berechtigungen für Text-Autovervollständigungsfelder funktionieren wie im Web Client. Spezifische Einschränkungen für CM/Track, insbesondere die Einschränkung, dass der Benutzer nur seine eigenen Vorgänge (oder Vorgänge anderer Personen seiner Firma, sofern konfiguriert) und Personen seiner Firma sieht, gehören nicht zur Standardkonfiguration. Dies bedeutet, dass der Benutzer standardmäßig die Berechtigung hat, Einträge zu sehen und auszuwählen, die sich auf Vorgänge beziehen, die sich in Queues befinden, für die der Track-Benutzer mindestens Leseberechtigungen hat, und die sich auf Kontakte beziehen, die Kundengruppen angehören, für die der Track-Benutzer mindestens Leseberechtigungen hat. Zusammengefasst, der Kunde würde Daten sehen, die zu anderen Kunden gehören.

Wenn dies nicht erwünscht ist, muss das Autovervollständigungsskript mithilfe der Methoden der neuen Klasse customerSecurityCriteriaBuilder angepasst werden. Weitere Details dazu im Beispielskript unten.

Anpassen der Berechtigungen für CM/Track

Die Klasse customerSecurityCriteriaBuilder enthält Methoden, um das Verhalten von Text-Autovervollständigungsfeldern an die standardmäßigen Berechtigungen in CM/Track anzupassen, sodass die Benutzer nur Ergebnisse sehen können, die sich auf ihre Vorgänge oder Personen, die zu ihrer Firma gehören, beziehen.

Das folgende Beispiel zeigt, wie die Suchergebnisse eines in CM/Track verwendeten Text-Autovervollständigungsfelds auf die Vorgänge beschränkt werden können, die dem Benutzer gehören.

ScriptAutocompleteResult onSearchInput(String pSearchStr, FieldKey pKey, Context pContext) {

def result = new ScriptAutocompleteResult();

def criteria= new TicketCriteria();

criteria.setPattern(pSearchStr+ "*");

customerSecurityCriteriaBuilder.setMyCaseCriteria(criteria);

for (Ticket ticket : ticketService.getByCriteria(criteria)) {

result.add(ticket);

}

return result;

}

Code-Beispiel 11: Skript eines Text-Autovervollständigungsfelds, das in CM/Track angezeigt werden kann

Allgemeine Informationen über Text-Autovervollständigungsfelder

Diese neue Methode der Konfiguration von Text-Autovervollständigungsfeldern ersetzt die alte Methode, die die Einstellung Textdarstellung mit dem Wert Autocomplete verwendet hat. Vorhandene Felder, die die alte Methode verwenden, bleiben funktionsfähig. Diese Felder werden bei einer Aktualisierung nicht verändert. Die vorher verwendete Methode onEditDisplayEntered funktioniert für vorhandene Felder weiterhin. Sie wird allerdings nicht mehr benötigt und in einer zukünftigen Version von ConSol CM entfernt.

Bei der Verwendung der neuen Methode zum Konfigurieren von Text-Autovervollständigungsfeldern gibt es folgende Einschränkungen:

Informationen über die bisherige Art und Weise, Text-Autovervollständigungsfelder zu konfigurieren, finden Sie im ConSol CM Administratorhandbuch Version 6.11.1.0.