Wiedereröffnungsaktivitäten

Einführung in Wiedereröffnungsaktivitäten

Sobald ein Ticket technisch geschlossen ist, d. h. einen Endknoten im Workflow erreicht hat, kann es weder bearbeitet werden noch gibt es Aktivitäten für das Ticket. In einem Geschäftsprozess kann es aber erforderlich sein, solche Tickets wieder zu öffnen. Dies kann durch eine Wiedereröffnungsaktivität abgebildet werden.

Beispielhafte Anwendungsfälle für Wiedereröffnungsaktivitäten sind:

Wenn eine Wiedereröffnungsaktivität verwendet wird, kehrt das Ticket nicht zum Startknoten zurück, sondern tritt an der Stelle in den Prozess wieder ein, die durch die ausgehenden Verbindungen der Aktivität definiert sind. Wiedereröffnungsaktivitäten haben keine eingehenden Verbindungen. Sie sind im Bereich, in dem sie sich befinden, und in allen Unterbereichen dieses Bereichs sichtbar.

Eigenschaften einer Wiedereröffnungsaktivität

Wiedereröffnungsaktivitäten haben die folgenden Eigenschaften:

Abbildung 53: ConSol CM Process Designer - Eigenschaftseditor für eine Wiedereröffnungsaktivität

Die Symbole für Für Kunden freigeben und Für Benutzer freigeben sind identisch. Für Benutzer freigeben wird auf der linken Seite angezeigt und Für Kunden freigeben auf der rechten Seite:

Wenn weder Für Benutzer freigeben noch Für Kunden freigeben ausgewählt ist, kann die Wiedereröffnungsaktivität nur über ein Skript ausgeführt werden.

Prozesslogik von Wiedereröffnungsaktivitäten

Das Ticket wird wieder geöffnet, sobald die Wiedereröffnungsaktivität ausgeführt wurde. Die weitere Verarbeitung hängt von den ausgehenden Verbindungen der Wiedereröffnungsaktivität ab. Die Prozesslogik von Wiedereröffnungsaktivitäten ist dieselbe wie für normale Aktivitäten (siehe Prozesslogik von Aktivitäten).

Berücksichtigen Sie, welche Auswirkungen das Wiedereröffnen von geschlossenen Tickets auf den Workflow als Ganzes hat. Die folgende Liste zeigt einige Beispielbereiche, in denen Anpassungen nötig sein könnten, wenn Wiedereröffnungsaktivitäten eingeführt werden.

Verwenden Sie ein Skript in der Wiedereröffnungsaktivität oder platzieren Sie eine automatische Aktivität mit einem Skript hinter der Wiedereröffnungsaktivität, um die erforderliche Logik hinzuzufügen.

Beispiel für die Verwendung von Wiedereröffnungsaktivitäten

Beispiel 1: Wiedereröffnen eines geschlossenen Tickets bei Eintreffen einer E-Mail

Wenn eine E-Mail zu einem geschlossenen Ticket eintrifft, wird standardmäßig ein neues Ticket und eine Relation zwischen dem neuen Ticket und dem ursprünglichen Ticket, zu dem die E-Mail eingetroffen ist, erzeugt. Falls Sie stattdessen lieber das ursprüngliche Ticket wieder öffnen möchten, können Sie in den Bereich, in dem sich der Endknoten befindet, eine Wiedereröffnungsaktivität einfügen und diese Aktivität im Verarbeitungsskript für eingehende E-Mails ausführen.

Gehen Sie folgendermaßen vor:

  1. Fügen Sie eine Wiedereröffnungsaktivität in den Bereich bzw. die Bereiche mit Endknoten ein.
  2. Erzeugen Sie eine Verbindung von der Wiedereröffnungsaktivität zu der Aktivität, bei der die Ticketverarbeitung fortgesetzt werden soll.
  3. Bearbeiten Sie das Skript NimhIncomingMailRouting.groovy im Admin Tool, um die Logik für das Wiedereröffnen des Tickets hinzuzufügen.
  4. Installieren Sie den Workflow und testen Sie ihn.

Die folgende Abbildung zeigt den Teil des Workflows, in dem sich der Endbereich und die Wiedereröffnungsaktivität befinden.

Abbildung 60: ConSol CM Process Designer - Workflow mit einer Wiedereröffnungsaktivität

Das folgende Beispiel zeigt das Skript NimhIncomingMailRouting.groovy aus dem Admin Tool. Die rot hervorgehobenen Zeilen wurden hinzugefügt, um das Ticket wieder zu öffnen, wenn eine Wiedereröffnungsaktivität vorhanden ist.

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

 

mailLog.info("Routing " + mailHolder.getUid())

if (log.isDebugEnabled()) {

log.debug("Available endpoints for mail routing are " + endpoints.keySet().join(", "))

}

 

// Append to ticket if ticket id can be extracted

def ticketName = mailSupportService.extractTicketNameFromMail(mailHolder, pipeContext, TICKET_NAME_PATTERN_FORMAT)

if (ticketName) {

Ticket ticket = ticketService.getByName(ticketName)

if (ticket) {

pipeContext.setAttribute("ticket-id", ticket.getId())

if (ticket.getScopeInfo().isClosedOrDeleted()) {

 

//if ticket is closed, check if it can be reopened

if (ticketService.getNextActivities(ticket).name.contains("defaultScope/Service_Desk/End_positive/Reopen")) {

activity = ticketService.getNextActivities(ticket).first()

ticketService.executeActivity(ticket, activity)

return endpoints["appendToTicketScript"]

} else {

return endpoints["mailToClosedTicketScript"]

}

} else {

return endpoints["appendToTicketScript"]

}

}

}

 

// Default is creating a new ticket

return endpoints["createTicketScript"]

Code-Beispiel 6: NimhIncomingMailRouting.groovy - angepasst für das Wiedereröffnen eines Tickets bei Eintreffen einer E-Mail