Das ConSol CM Action Framework bietet die Möglichkeit, Aktionen zu starten, die sich nicht auf Workflow-Aktivitäten beziehen, d. h. Aktionen können in einem anderen Kontext als im Workflow-Kontext gestartet oder angestoßen werden.
Das Action Framework besteht (in ConSol CM-Version 6.10) aus drei Komponenten, die in den entsprechenden Handbuchabschnitten detailliert beschrieben sind.
Im vorliegenden Abschnitt erfahren Sie mehr über die Programmierung mit dem Action Framework.
Jede Aktion basiert auf einem Admin-Tool-Skript, wie in den oben erwähnten Abschnitten beschrieben. Für jedes Admin-Tool-Skript muss der richtige Skripttyp gesetzt werden.
Beachten Sie, dass für jedes Ausführungsskript ein Bedingungsskript definiert werden kann. Es muss im Admin Tool in der Definition der Aktion mit dem Ausführungsskript verknüpft werden. Das Bedingungsskript wird vor dem Ausführungsskript ausgeführt.
Daher wird das Ausführungsskript nur ausgeführt, wenn entweder
oder
Es stehen folgende Skripttypen für das Action Framework zur Verfügung:
Der Rückgabewert eines Bedingungsskripts muss entweder true oder false sein.
Der Rückgabewert eines manuellen Ausführungsskripts muss einer der folgenden PostActionTypes sein:
Eine detaillierte Beschreibung finden Sie im folgenden Abschnitt.
Eine Aktion kann von einem der folgenden Typen sein:
Eine Kernkomponente der Programmierungsskripte für manuelle Aktionen im ConSol CM Action Framework ist die Klasse ActionScriptResultFactory. Alle Instanzen dieser Klasse stehen in jedem Ausführungsskript als actionScriptResultFactory zur Verfügung. Der Typ des zurückgegebenen PostActionScriptResult, d. h. der PostActionType, definiert den Schritt, der direkt auf die Ausführung eines manuellen Ausführungsskripts folgt. Mithilfe des PostActionType können Sie das gewünschte Systemverhalten implementieren.
return actionScriptResultFactory.getPostAction(PostActionType.CREATE_TICKET, ticket, unit)
Leitet auf die Seite Neues Ticket weiter, auf der Felder mit Ticketdaten gefüllt sind und eine vorhandene Unit als Hauptkontakt ausgewählt ist.
Beispiel:
import com.consol.cmas.core.server.service.action.PostActionType
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")
ticket.set("queue_fields", "boolean", "true")
return actionScriptResultFactory.getPostAction(PostActionType.CREATE_TICKET, ticket)
//to additionally set main contact use
//return actionScriptResultFactory.getPostAction(PostActionType.CREATE_TICKET, ticket, unit)
Code-Beispiel 64: Öffnen der Seite Neues Ticket
Beispiel:
UnitCriteria unitCriteria = new UnitCriteria();
Unit companyPattern = new Unit("company", customerGroup);
mdcmCriteriaBuilder.setReferencedCompanyCriteria(unitCriteria, companyPattern);
Code-Beispiel 65: Öffnen der Ticketseite im Anzeigemodus
ActivityControlFormService.getExecutionContext(Ticket, String)
aufgerufenes Aktivitäts-Formular.Beispiel:
(...)
def executionContext = activityFormDefinitionService.getExecutionContext(newtic, "defaultScope/TaskInProgress/AcceptTask")
if (!executionContext) {
return actionScriptResultFactory.getPostAction(PostActionType.FAILURE, "action.fail.wrong.activity")
}
// Modify entities from the execution context - not the original ones
// - since the user may still press cancel.
executionContext.ticket.add("SpecialTasks_Fields","Deadline", new Date());
return actionScriptResultFactory.getPostAction(PostActionType.GOTO_TICKET, newtic, executionContext);
Code-Beispiel 66: Öffnen der Ticketseite im Anzeigemodus, nach Anzeige eines ACFs
Beachten Sie Folgendes: Die Implementierungsklasse für das Bean activityFormDefinitionService ist ActivityControlFormService. Weitere Informationen dazu finden Sie in der Dokumentation der Klasse. Die Verwendung in Skripten erfolgt über den Bean-Namen, siehe obiges Skript.
Beispiel:
import com.consol.cmas.common.model.customfield.Unit
import com.consol.cmas.core.server.service.action.PostActionType
Unit contact = new Unit("customer", unit.getCustomerGroup());
contact.set("firstname", "Luke");
contact.set("name", "Skywalker");
return actionScriptResultFactory.getPostAction(PostActionType.CREATE_UNIT, contact);
Code-Beispiel 67: Unit-Ausführungsskript (Kunde implizit verfügbar), um die Seite Neuer Kunde zu öffnen
Beispiel:
import com.consol.cmas.common.model.customfield.Unit
import com.consol.cmas.core.server.service.action.PostActionType
Unit contact = unitService.getByCustomerGroup(unit.getCustomerGroup()).get(0)
return actionScriptResultFactory.getPostAction(PostActionType.GOTO_UNIT, contact)
Code-Beispiel 68: Unit-Ausführungsskript (Unit implizit verfügbar), um die Kundenseite im Anzeigemodus zu öffnen
Beispiel:
import com.consol.cmas.common.model.resource.Resource
import com.consol.cmas.common.model.resource.meta.ResourceType
import com.consol.cmas.core.server.service.action.PostActionType
ResourceType type = resourceTypeService.getByName("resource type 1")
Resource resource = new Resource(type)
resource.setFieldValue("group1", "stringField1", "value1")
resource.setFieldValue("group2", "numberField1", 1L)
return actionScriptResultFactory.getPostAction(PostActionType.CREATE_RESOURCE, resource)
Code-Beispiel 69: Öffnen der Seite Neue Ressource
Beispiel:
import com.consol.cmas.common.model.resource.Resource
import com.consol.cmas.core.server.service.action.PostActionType
Resource resource = resourceService.getAll().iterator().next()
return actionScriptResultFactory.getPostAction(PostActionType.GOTO_RESOURCE, resource);
Code-Beispiel 70: Öffnen einer Ressourcenseite im Anzeigemodus
Beispiel:
import com.consol.cmas.core.server.service.action.PostActionType
return actionScriptResultFactory.getPostAction(PostActionType.GOTO_PAGE, "http://consol.de");
Code-Beispiel 71: Öffnen einer URL
Eine detaillierte Beschreibung finden Sie im Abschnitt Rückgabewerte und Rückgabemeldungen.
Eine detaillierte Beschreibung finden Sie im Abschnitt Rückgabewerte und Rückgabemeldungen.
Um den Rückgabewert einer ConSol CM-Aktion für den Bearbeiter im Web Client anzuzeigen, müssen Sie einen der beiden PostActionTypes verwenden:
Sie müssen für jedes Ausführungsskript einen Rückgabewert setzen. Es ist nicht möglich, ein Ausführungsskript ohne Rückgabewert zu beenden (in diesem Fall tritt ein Laufzeitfehler auf).
Beispiel für positives Feedback:
return actionScriptResultFactory.getPostAction(PostActionType.SUCCESS, "cmweb.search.assigned").withRefreshContent();
Abbildung 393: ConSol CM Web Client - Erfolgsmeldung nach Suche-Aktion
Beispiel für negatives Feedback:
return actionScriptResultFactory.getPostAction(PostActionType.FAILURE, "cmweb.search.assigned").withRefreshContent();
Abbildung 394: ConSol CM Web Client - Fehlermeldung nach Suche-Aktion
Der angezeigte Text (z. B. Aktion erfolgreich oder Aktion gescheitert) kann mit einer der folgenden beiden Methoden abgerufen werden:
action.result.success=Action succeeded
action.result.failure=Aktion gescheitert
Sie können Ihre eigenen Labels für die Anzeige von Meldungen im Web Client definieren. Eine detaillierte Erklärung dazu finden Sie im Abschnitt Bezeichnungen.