Aktionsskripte
Mit Aktionsskripten kann Logik zu Aktionen, die für Kontakte, Ressourcen und Suchergebnisse ausgeführt werden können, hinzugefügt werden. Optional können Aktionen Bedingungsskripte haben, die die Verfügbarkeit der Aktion festlegen. Wenn für die Aktion ein Bedingungsskript definiert ist, ist die Aktion nur verfügbar, wenn das Bedingungsskript true zurückgibt. Für manuelle Aktionen bedeutet dies, dass die Aktion nicht im Web Client angezeigt wird. Für automatische Aktionen, bedeutet es, dass das Aktionsskript nicht ausgeführt wird.
Hintergrundwissen über Aktionen
Aktionen sind für drei Arten von Objekten verfügbar:
- Kontakte
Aktionen für Personen und Firmen, siehe Kontaktaktionen. - Ressourcen
Aktionen für Ressourcen, siehe Ressourcenaktionen. - Suchergebnisse
Aktionen für Vorgänge, Kontakte oder Ressourcen, die zum Ergebnis einer Detailsuche gehören, siehe Suche-Aktionen für Vorgänge, Kontaktaktionen und Ressourcenaktionen.
Aktionen für Vorgänge heißen Workflow-Aktivitäten und werden mit Skripten des Typs Workflow implementiert.
Aktionen können folgende Typen haben:
- Automatische Aktionen
Automatische Aktionen werden vom System ausgeführt, wenn die Situation, für die sie definiert sind, in einem Objekt eintritt. Es sind folgende automatische Aktionen verfügbar:- Erstellen: Aktion wird ausgeführt, wenn ein Objekt erstellt wird.
- Aktualisieren: Aktion wird ausgeführt, wenn ein Objekt geändert wird.
- Löschen: Aktion wird ausgeführt, wenn ein Objekt gelöscht wird.
- Relation: Aktion wird ausgeführt, wenn eine Relation zu einem Objekt erstellt oder gelöscht wird (Änderungen am Kommentar einer Relation werden nicht berücksichtigt). Wenn sowohl das Ausgangs- als auch das Zielobjekt einer Relation zu einem Typ mit einer Relationsaktion gehören, werden zwei Relationsaktionen ausgeführt.
- Manuelle Aktionen
Manuelle Aktionen werden von einem Benutzer ausgeführt, der im Web Client auf die entsprechende Aktion klickt. Es gibt zwei Arten von manuellen Aktionen:- Manuell: Für ein einzelnes Objekt durchgeführte Aktion.
- Suche: Für die Ergebnisse einer Detailsuche durchgeführte Aktion. Dies können ein oder mehrere Vorgänge, Kontakte oder Ressourcen sein. Die Aktion wird nur für die Objekte ausgeführt, die auf der aktuellen Seite der Ergebnistabelle angezeigt werden. Wenn das Attribut der Seitenanpassung enableRowSelection aus dem Typ detailSearch auf „true“ gesetzt ist, kann der Benutzer die Objekte auswählen, für die die Aktion ausgeführt werden soll.
Manuelle Aktionen können Formulare haben, die geöffnet werden, wenn der Benutzer im Web Client auf die Aktion klickt. Das Formular muss ausgefüllt werden, um die Aktion abzuschließen, siehe Aktionsformulare.
Verfügbare Skripttypen
Der für Aktionsskripte verwendete Skripttyp hängt von der Nutzung des Skripts ab. Es sind folgende Skripttypen verfügbar:
- Bedingung für Aktionsformular:
Skript, das bestimmt, ob ein Aktionsformular angezeigt wird. - Kontaktaktion:
Skript, das die Logik einer Aktion implementiert, die für einen Kontakt ausgeführt wird. - Kontaktbedingung:
Skript, das bestimmt, ob eine Kontaktaktion verfügbar ist. - Ressourcenaktion:
Skript, das die Logik einer Aktion implementiert, die für eine Ressource ausgeführt wird. - Ressourcenbedingung:
Skript, das bestimmt, ob eine Ressourcenaktion verfügbar ist. - Suche-Aktion für Kontakte:
Skript, das die Logik einer Aktion implementiert, die für die Ergebnisse einer Kontaktsuche ausgeführt wird. - Suche-Aktion für Ressourcen:
Skript, das die Logik einer Aktion implementiert, die für die Ergebnisse einer Ressourcensuche ausgeführt wird. - Suche-Aktion für Vorgänge:
Skript, das die Logik einer Aktion implementiert, die für die Ergebnisse einer Vorgangssuche ausgeführt wird. - Suche-Bedingung für Kontakte:
Skript, das bestimmt, ob eine Suche-Aktion für Kontaktergebnisse verfügbar ist. - Suche-Bedingung für Ressourcen:
Skript, das bestimmt, ob eine Suche-Aktion für Ressourcenergebnisse verfügbar ist. - Suche-Bedingung für Vorgänge:
Skript, das bestimmt, ob eine Suche-Aktion für Vorgangsergebnisse verfügbar ist. - Vorbelegung für Aktionsformular:
Skript, das die Felder eines Aktionsformulars mit vorbestimmten Werten füllt.
Logik von Aktionsskripten
Die Logik eines Aktionsskripts umfasst normalerweise zwei Aspekte:
- Ändern des aktuellen Objekts oder eines verknüpften Objekts, siehe Arbeiten mit dem aktuellen Objekt.
- Festlegen, was nach dem Ausführen der Aktion geschehen soll, siehe Definieren des Verhaltens nach der Aktion.
Wenn das Skript als Bedingungsskript verwendet wird, hat es folgenden Zweck:
-
Manuelle Aktionen: Festlegen, ob die Aktion im Web Client angezeigt wird.
-
Automatische Aktionen: Festlegen, ob das Aktionsskript ausgeführt wird.
-
Aktionsformulare: Festlegen, ob das Aktionsformular angezeigt wird.
Für Aktualisierungsaktionen müssen Sie sicherstellen, dass der Code des Aktionsskripts keine Endlosschleife auslöst. Das kann beispielsweise passieren, wenn Sie in einem Kontaktaktualisierungsskript die Methode unitService.update(Unit) aufrufen.
Arbeiten mit dem aktuellen Objekt
Das Objekt, für das die Aktion ausgeführt wird, ist implizit im Skript verfügbar. So kann das Objekt aktualisiert oder eine beliebige andere Aktion durchgeführt werden. Folgende Objekte sind verfügbar:
- Kontaktaktion: unit, contact, company, formFields (wenn ein Aktionsformular verwendet wird), controlForm (wenn ein Aktionsformular verwendet wird)
- Ressourcenaktion: resource, formFields (wenn ein Aktionsformular verwendet wird), controlForm (wenn ein Aktionsformular verwendet wird)
- Relationsaktion: relation für alle Relationen mit Ausnahme der Relation zwischen Vorgang und Kontakt, role (nur für Relationen zwischen Vorgang und Kontakt), actionType (mögliche Werte: ADD, wenn die Relation hinzugefügt wurde, oder REMOVE, wenn die Relation entfernt wurde), ticket |resource |unit (wenn ein solches Objekt Teil der Relation ist)
- Aktualisierungsaktion: changes (Klasse UnitChanges oder ResourceChanges)
- Löschaktion: deleteType (nur für Kontaktaktionen, mögliche Werte: delete oder delete_all
- Suche-Aktion für Vorgänge: tickets für Suchergebnisse, ticket (wenn ein Aktionsformular verwendet wird)
- Suche-Aktion für Kontakte: units für Suchergebnisse, contact und company (wenn ein Aktionsformular verwendet wird)
- Suche-Aktion für Ressourcen: resources für Suchergebnisse, resource (wenn ein Aktionsformular verwendet wird)
Definieren des Verhaltens nach der Aktion
In allen Aktionsskripten kann das Verhalten des Systems nach Abschluss der Aktion mithilfe von Methoden der Klasse OperationResponseBuilder definiert werden. Ein Objekt dieser Klasse mit dem Namen client ist implizit in allen Aktionsskripten verfügbar. Das gilt sowohl für manuelle als auch für automatische Aktionen. Das Objekt ist auch in Workflow-Skripten verfügbar.
Das Objekt client enthält Methoden für folgende Operationen:
- Öffnen einer bestimmten URL
- Öffnen der Seite zur Erstellung eines Vorgangs (mit oder ohne Kontakt), Kontakts oder einer Ressource
- Öffnen der Seite eines Vorgangs, Kontakts oder einer Ressource (mit oder ohne Anzeige eines Formulars)
- Anzeige einer Erfolgs- oder Fehlermeldung
- Rollback der im Aktionsskript vorgenommenen Änderungen
- Öffnen von CM/Doc
Details zu den verfügbaren Methoden finden Sie in der ConSol CM API-Dokumentation.
Definieren der Einbindung von Aktionsformularen
Mit der automatischen Einbindung können Sie die Werte des Ausgangsobjekts, d. h. des Vorgangs, Kontakts oder der Ressource, für die das Aktionsformular geöffnet wurde, direkt im Formular verändern. Nach dem Speichern des Formulars wird das Ausgangsobjekt automatisch entsprechend aktualisiert. Mit client.goToUnit(contact) oder client.goToResource(resource) können Sie die Web Client-Seite neu laden, um die im Formular geänderten Werte anzuzeigen.
Standardmäßig ist die automatische Einbindung aktiviert, wenn die Aktion kein Aktionsskript hat. Andernfalls müssen Sie sie im Skript aktivieren, indem Sie folgenden Code hinzufügen:
def isAutoBindingEnabled() {
return true;
}
Sie können die automatische Einbindung deaktivieren, indem Sie „false“ zurückgeben. Wenn die automatische Einbindung deaktiviert ist, werden im Formular vorgenommene Änderungen nicht im Objekt gespeichert.
Code-Beispiele
Öffnen der Seite zum Erstellen eines Vorgangs
Nutzen Sie eine der folgenden Methoden:
- client.goToCreateTicket(ticket)
- client.goToCreateTicket(ticket).withCustomer(unit)
Im folgenden Beispiel wird die Seite zur Erstellung eines Vorgangs geöffnet. Die Queue „Helpdesk“ ist vorausgewählt und einige Felder sind vorausgefüllt.
import com.consol.cmas.common.model.ticket.Ticket
Ticket ticket = new Ticket();
ticket.setQueue(queueService.getByName("Helpdesk"))
ticket.setSubject("sample subject")
ticket.set("queue_fields.string", "test")
client.goToCreateTicket(ticket)
//to additionally set the main contact use withCustomer()
//client.goToCreateTicket(ticket).withCustomer(unit)
Code-Beispiel 1: Öffnen der Seite zum Erstellen eines Vorgangs
Öffnen eines Vorgangs mit Anzeige eines Aktivitätsformulars
Nutzen Sie folgende Methode:
- client.goToTicket(ticket).openActivityForm("activity path")
Im folgenden Beispiel wird der Vorgang mit dem Namen „100270“ geöffnet und direkt das Aktivitätsformular von der Aktivität Vorgang verwerfen geöffnet.
client.goToTicket("100270").openActivityForm("defaultScope/Service_Desk/Ticket_dismissed/Dismiss_ticket_")
Code-Beispiel 2: Öffnen einer Ticketseite mit einem ACF
Anzeigen von Meldungen im Web Client
Sie können Melden mit einem grünen oder roten Hintergrund anzeigen.
Mit den folgenden Methoden wird eine Meldung mit einem grünen Hintergrund angezeigt. Der Text der Meldung kann als String oder Bezeichnung angegeben werden.
- client.success()
- client.showInfoMessage(string or label)
- client.showMessage(string or label)
- client.showMessage(String pMessageKey, OperationMessage.Severity.INFO)
Mit den folgenden Methoden wird eine Meldung mit einem roten Hintergrund angezeigt. Der Text der Meldung kann als String oder Bezeichnung angegeben werden.
- client.failure()
- client.showErrorMessage(string or label)
- client.showDebugMessage(string or label)
- client.showMessage(String pMessageKey, OperationMessage.Severity.WARN)
Standardmäßig aktualisieren die Methoden zum Anzeigen von Meldungen die Seite nicht. Deshalb sind Aktualisierungen des Objekts, die im Aktionsskript durchgeführt wurden, noch nicht sichtbar, wenn die Meldung angezeigt wird. Sie können withRefreshContent() an die Methode anhängen, um die Seite vor dem Anzeigen der Meldung zu aktualisieren:
client.showMessage("controlForm.info.executionOK").withRefreshContent()
Die folgende Abbildung zeigt eine Meldung mit einem grünen Hintergrund: