CM.Resource Pool - Ressourcenaktionen

Einleitung

Ressourcenaktionen sind Teil des ConSol CM Action Frameworks. Ressourcenaktionen sind Aktionen, die für eine Ressource ausgeführt werden, d. h. für ein im Ressourcenpool gespeichertes Objekt. Die Aktionen können automatisch vom System durchgeführt werden oder manuell von einem Bearbeiter mit den entsprechenden Berechtigungen angestoßen werden. Mögliche Anwendungsfälle für Ressourcenaktionen sind beispielsweise:

Sie können folgende Typen von Ressourcenaktionen verwenden:

Beachten Sie, dass nur Bearbeiter, die mindestens eine Rolle mit den folgenden Zugangsberechtigungen für den entsprechenden Ressourcentyp haben, die Ressourcenaktionen verwenden dürfen, d. h. nur bei ihnen werden die Aktivitäten im Web Client angezeigt!

Abbildung 536: ConSol CM Web Client - Ressourcenaktion (auf der Ressourcenseite)

Ressourcenaktionen werden als Groovy-Skripte definiert, die im Abschnitt Skripte und Templates des Admin Tools gespeichert werden.

Die Ausführung von Ressourcenaktionen kann mit Bedingungsskripten gesteuert werden, d. h. Sie können ein Bedingungsskript implementieren, das vor der Ressourcenaktion selber ausgeführt wird. Das Ausführungsscript wird nur ausgeführt, wenn das Bedingungsskript true zurückgibt.

Es gibt also zwei Arten von Skripten, mit denen Sie im Zusammenhang mit ConSol CM-Ressourcenaktionen arbeiten:

Führen Sie zur Implementierung einer Ressourcenaktion folgende drei Schritte durch:

  1. Erstellen Sie ein Skript für die Ressourcenaktion (entweder nur ein Ausführungsskript oder ein Ausführungsskript und ein Bedingungsskript).
  2. Erstellen Sie die Ressourcenaktionen, die die Skripte verwenden.
  3. Weisen Sie die Ressourcenaktionen den Ressourcentypen zu, in denen sie verfügbar sein sollen.

In den folgenden Abschnitten sind diese drei Schritte detailliert beschrieben.

Erstellen von Ressourcenaktionen mit dem Admin Tool

Schritt 1: Schreiben des Ressourcen-Ausführungsskripts

Erstellen Sie ein neues Admin-Tool-Skript des Typs Ressourcen-Aktion. Falls erforderlich, erstellen Sie ein anderes Skript des Typs Ressourcen-Bedingung.

Eine detaillierte Beschreibung der Admin-Tool-Skripte finden Sie im Abschnitt Admin-Tool-Skripte.

Abbildung 537: ConSol CM Admin Tool - Ressourcen-Ausführungsskripte im Bereich Skripte

// this script creates a new ticket for the resource from which the activity is executed, i.e., creates new ticket and links it to resource

// resource - ticket relation must be configured beforehand!

 

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

import com.consol.cmas.common.model.customfield.Unit

import com.consol.cmas.common.model.resource.*

import com.consol.cmas.common.service.resource.*

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

import com.consol.cmas.common.model.resource.meta.*

 

println 'CreateTicketForResource.groovy started ...'

 

Ticket newtic = new Ticket()

 

Queue qu = queueService.getByName("ServiceDesk")

newtic.setQueue(qu)

 

newtic.setSubject("New Ticket for Resource: " + resource.getId())

newtic.set("helpdesk_standard.priority","low")

 

// use main contact person of the resource as main contact for the ticket

Unit maincont = new Unit()

def crit = new ResourceRelationWithTargetUnitCriteria()

crit.setResource(resource)

List<ResourceRelationWithTargetUnit> cont_list = resourceRelationService.getByCriteria(crit)

if (cont_list.size() == 0) {

//cmweb.rp.resource.action.no_contact_set has to be configured as label in the AT

return actionScriptResultFactory.getPostAction(PostActionType.FAILURE, "cmweb.rp.resource.action.no_contact_set")

} else {

def cont_rel = cont_list[0]

maincont = cont_rel.getTargetUnit()

}

 

ticketService.createWithUnit(newtic,maincont)

 

println 'New Ticket created for resource with ID' + resource.getId()

 

// link ticket to resource

 

def resRelationDefCriteria = new ResourceRelationDefinitionCriteria()

resRelationDefCriteria.addDefinitionName("PC_Desktop_to_Ticket_Relation")

def s_res_type = resource.getResourceType()

resRelationDefCriteria.addSourceResourceType(s_res_type)

resRelationDefCriteria.addTargetQueue(qu)

 

//log.info "resRelationDefCriteria = " + resRelationDefCriteria

//log.info "resRelationDefCriteria.definitionName = " + resRelationDefCriteria.getDefinitionsNames()

 

def resRelationDef = resourceRelationDefinitionService.getByCriteriaUniqueResult(resRelationDefCriteria)

def resRelation = new ResourceTicketRelation(resRelationDef, resource, newtic)

// log.info "resRelation" + resRelation

resourceRelationService.create(resRelation)

Code-Beispiel 80: Ressourcen-Ausführungsskript

Schritt 2: Erstellen der Ressourcenaktionen, die das Skript verwenden

Öffnen Sie zum Erstellen, Editieren oder Löschen von Ressourcenaktionen das Navigationselement Aktionen der Navigationsgruppe Ressourcen im Admin Tool.

Um eine neue Aktion zu erstellen oder hinzuzufügen, klicken Sie auf den Button Hinzufügen und geben Sie die erforderlichen Daten im Pop-up-Fenster ein. Es wird das gleiche Pop-up-Fenster für das Hinzufügen und das Editieren von einer Ressourcenaktion angezeigt.

Abbildung 538: ConSol CM Admin Tool - Erstellen einer Ressourcenaktion

Speichern Sie die Aktion. Danach können Sie sie Ressourcentypen zuweisen. Siehe folgenden Schritt.

Schritte 3: Zuweisen von Ressourcenaktionen zu Ressourcentypen

Um bereits definierte Ressourcen-Ausführungs- und/oder Ressourcen-Bedingungsskripte den Ressourcentypen zuzuweisen, müssen die entsprechenden manuellen oder automatischen Aktionen einem Ressourcentyp zugewiesen werden. Öffnen Sie das Navigationselement Datenmodelle der Navigationsgruppe Ressourcen im Admin Tool. Wählen Sie den Ressourcentyp, den Sie editieren möchten, und klicken Sie auf den Button Bearbeiten, um das Pop-up-Fenster zu öffnen, in dem Sie die Ressourcenaktionen zuweisen können. Eine Aktion kann nur ein Ressourcen-Ausführungsskript enthalten oder sowohl ein Ressourcen-Ausführungsskript als auch ein Ressourcen-Bedingungsskript.

Im folgenden Beispiel (nächste Abbildung) wird eine manuelle Ressourcenaktion dem Ressourcentyp PC_Desktops zugewiesen.

Abbildung 539: ConSol CM Admin Tool - Zuweisen von manuellen Ressourcenaktionen zu einem Ressourcentyp

Sie können Ressourcenaktionen folgender Aktionstypen zuweisen:

Verwendung von Ressourcenaktionen im Web Client (als Bearbeiter)

Als Bearbeiter (Benutzer) sind die beiden Ressourcenaktionstypen relevant für Sie, die als Aktivitäten im Web Client angezeigt werden:

Die Aktionen Löschen, Aktualisieren und Erzeugen laufen im Hintergrund.

Programmieren von Ressourcen-Ausführungs- und Bedingungsskripten

Eine allgemeine Einführung in die Grundprinzipien, Klassen und Methoden für Ausführungs- und Bedingungsskripte finden Sie im Abschnitt Skripte für das Action Framework.

Beispiele für Ressourcenaktionen

Beispiel 1: Einfache manuelle Aktion

Anwendungsfall: Der Bearbeiter soll in der Lage sein, ein neues ServiceDesk-Ticket direkt auf der Ressourcenseite eines PCs zu erstellen. Das neue Ticket soll mit der Ressource (PC) verknüpft sein. Der Hauptkontakt des neuen ServiceDesk-Tickets soll die für den PC verantwortliche Person sein. Dies wird als Ressource-Kontakt-Relation im Ressourcentyp PC_Desktop implementiert. Um die Ressourcenaktion zu implementieren, führen Sie folgende Schritte durch.

Schreiben Sie das Ressourcen-Ausführungsskript:

// this script creates a new ticket for the resource from which the activity is executed, i.e., creates new ticket and links it to resource

// resource - ticket relation must be configured beforehand!

 

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

import com.consol.cmas.common.model.customfield.Unit

import com.consol.cmas.common.model.resource.*

import com.consol.cmas.common.service.resource.*

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

import com.consol.cmas.common.model.resource.meta.*

import com.consol.cmas.core.server.service.action.*

 

println 'CreateTicketForResource.groovy started ...'

 

Ticket newtic = new Ticket()

 

Queue qu = queueService.getByName("ServiceDesk")

newtic.setQueue(qu)

 

 

def subj = resource.get("PC_Desktop_Fields_basic.name")

 

// newtic.setSubject("New Ticket for Resource: " + resource.getId())

newtic.setSubject("New Ticket for Resource: " + subj)

 

newtic.set("helpdesk_standard.priority","low")

 

// use main contact person of the resource as main contact for the ticket

Unit maincont = new Unit()

def crit = new ResourceRelationWithTargetUnitCriteria()

crit.setResource(resource)

List<ResourceRelationWithTargetUnit> cont_list = resourceRelationService.getByCriteria(crit)

if (cont_list.size() == 0) {

workflowApi.addValidationError("ERRROR","No contact set!")

} else {

def cont_rel = cont_list[0]

maincont = cont_rel.getTargetUnit()

}

 

ticketService.createWithUnit(newtic,maincont)

 

println 'New Ticket created for resource with ID' + resource.getId()

 

// link ticket to resource

 

def resRelationDefCriteria = new ResourceRelationDefinitionCriteria()

resRelationDefCriteria.addDefinitionName("PC_Desktop_to_Ticket_Relation")

def s_res_type = resource.getResourceType()

resRelationDefCriteria.addSourceResourceType(s_res_type)

resRelationDefCriteria.addTargetQueue(qu)

 

log.info "resRelationDefCriteria = " + resRelationDefCriteria

log.info "resRelationDefCriteria.definitionName = " + resRelationDefCriteria.getDefinitionsNames()

 

def resRelationDef = resourceRelationDefinitionService.getByCriteriaUniqueResult(resRelationDefCriteria)

def resRelation = new ResourceTicketRelation(resRelationDef, resource, newtic)

log.info "resRelation" + resRelation

resourceRelationService.create(resRelation)

 

// go to new ticket

return actionScriptResultFactory.getPostAction(PostActionType.GOTO_TICKET, newtic)

Code-Beispiel 81: Ressourcen-Ausführungsskript für PC_Desktops zur Erstellung eines neuen ServiceDesk-Tickets für den Kontakt, der für den PC zuständig ist

Erstellen Sie eine Ressourcenaktion, die auf dem Skript basiert:

Abbildung 540: ConSol CM Admin Tool - Erstellen einer Ressourcenaktion

Weisen Sie die Aktion dem richtigen Ressourcentyp zu:

Abbildung 541: ConSol CM Admin Tool - Zuweisen der Ressourcenaktion zum richtigen Ressourcentyp

Überprüfen Sie die Funktion mit dem Web Client:

Abbildung 542: ConSol CM Web Client - Ressourcenseite mit der Ressourcenaktion

Abbildung 543: ConSol CM Web Client - Mit der Ressourcenaktion erstelltes, neues ServiceDesk-Ticket

Abbildung 544: ConSol CM Web Client - Ressourcenseite mit einer oder mehreren Ticketrelationen (neues ServiceDesk-Ticket)

Beispiel 2: Öffnen eines Wartungstickets aus einer Ressource, mit ACF

Das Action Framework bietet die Möglichkeit, ein ACF (Activity Control Form) zu öffnen, wenn ein Ticket erstellt wird. Mit dem ACF werden Daten für die folgende Workflow-Aktivität gesammelt, d. h. das Ticket kann erstellt und einfach durch den ersten Workflow-Schritt bewegt werden. Diese Funktion wird im folgenden Beispiel dargestellt. Für die Ressource HP-Drucker soll ein Wartungsticket erstellt werden. Während dieses Vorgangs soll ein ACF geöffnet werden, um nach Daten zu fragen, die danach in der nächsten Workflow-Aktivität verwendet werden.

Um die Ressourcenaktion zu implementieren, führen Sie folgende Schritte durch.

Schreiben Sie das Ressourcen-Ausführungsskripts:

// this script creates a new ticket for the resource from which the activity is executed, i.e., creates new ticket and links it to resource

// resource - ticket relation must be configured beforehand!

// CreateTicketForHP_PrinterWithACF.groovy

 

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

import com.consol.cmas.common.model.customfield.Unit

import com.consol.cmas.common.model.resource.*

import com.consol.cmas.common.service.resource.*

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

import com.consol.cmas.common.model.resource.meta.*

import com.consol.cmas.core.server.service.action.*

import com.consol.cmas.common.service.*

 

println 'CreateTicketForHP_PrinterWithACF.groovy started ...'

 

Ticket newtic = new Ticket()

 

Queue qu = queueService.getByName("SpecialTasks")

newtic.setQueue(qu)

 

newtic.setSubject("New Ticket for HP Printer: " + resource.getId())

newtic.set("SpecialTasks_Fields.SpecialTasksPrio","normal")

 

// use main contact person of the resource as main contact for the ticket

Unit maincont = new Unit()

def crit = new ResourceRelationWithTargetUnitCriteria()

crit.setResource(resource)

List<ResourceRelationWithTargetUnit> cont_list = resourceRelationService.getByCriteria(crit)

if (cont_list.size() == 0) {

log.info("ERRROR in script CreateTicketForHP_PrinterWithACF -- No contact set!")

} else {

def cont_rel = cont_list[0]

maincont = cont_rel.getTargetUnit()

}

 

ticketService.createWithUnit(newtic,maincont)

 

println 'New Ticket created for resource with ID' + resource.getId()

 

// link ticket to resource

 

def resRelationDefCriteria = new ResourceRelationDefinitionCriteria()

resRelationDefCriteria.addDefinitionName("HP_Printer_ToTicket_Relation")

def s_res_type = resource.getResourceType()

resRelationDefCriteria.addSourceResourceType(s_res_type)

resRelationDefCriteria.addTargetQueue(qu)

 

log.info "resRelationDefCriteria = " + resRelationDefCriteria

log.info "resRelationDefCriteria.definitionName = " + resRelationDefCriteria.getDefinitionsNames()

 

def resRelationDef = resourceRelationDefinitionService.getByCriteriaUniqueResult(resRelationDefCriteria)

def resRelation = new ResourceTicketRelation(resRelationDef, resource, newtic)

log.info "resRelation" + resRelation

resourceRelationService.create(resRelation)

 

// go to new ticket, but fill ACF before

 

def executionContext = activityFormDefinitionService.getExecutionContext(newtic, "defaultScope/TaskInProgress/Aufgabe_annehmen")

 

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 82: Ressourcen-Ausführungsskript, das ein Ticket mit ACF öffnet

Erstellen Sie eine Ressourcenaktion, die auf dem Skript basiert.

Abbildung 545: ConSol CM Admin Tool - Erstellen der Ressourcenaktion für das HP-Drucker-Wartungsticket

Weisen Sie die Aktion dem richtigen Ressourcentyp zu:

Abbildung 546: ConSol CM Admin Tool - Zuweisen der Ressourcenaktion zum richtigen Ressourcentyp (HP-Drucker)

Überprüfen Sie die Funktion mit dem Web Client:

Abbildung 547: ConSol CM Web Client - Ressourcenaktion für HP-Drucker

Abbildung 548: ConSol CM Web Client - Neues Wartungsticket für Ressource (HP-Drucker), ACF