Eskalation/Freigabe-Workflow
Aufgabe
Dieses Tutorial beschreibt die Lösung in todo4teams für das folgende Szenario:
Eine als E-Mail eingehende Kundenanfrage erstellt ein Ticket für eine bestimmtes Team (z. B. Kundenanfragen). Ein Agent akzeptiert dieses Ticket. In den meisten Fällen bearbeiten die Agenten die Anfragen selbst direkt in einem einzigen Workflow-Schritt.
Hat der Kunde nun einen Wunsch, über den der Agent nicht selbst entscheiden kann (z. B. Rabattierung ab einem bestimmten Limit), muss er die Zustimmung eines Entscheiders (Manager) einholen. Der Kunde wird dann vom Vermittler per E-Mail darüber informiert, ob sein Wunsch erfüllt werden kann oder nicht.
Lösung
Zur Lösung des oben beschriebenen Szenarios kann in todo4teams folgender Workflow implementiert werden:
Im ersten Schritt muss in todo4teams eine neue Gruppe angelegt werden, die die Benutzer enthält, die weitere Entscheidungen und Freigaben treffen können. Im folgenden Beispiel ist dies das Team „Management“ mit der ID = 24. Zusätzlich wird ein Formular (im Beispiel „Freigabe“) angelegt, das diesen Workflow steuert.
- Der Agent bearbeitet die eingegangene E-Mail, erkennt, dass er eine Freigabe für die Anfrage des Kunden anfordern muss und wählt im Abschlussdialog das Formular „Freigabe“ aus. Im Feld „Anfrage“ gibt er Art und Umfang der Freigabe an. Anschließend wird dieses Ticket durch Klicken auf die Schaltfläche „Abschließen“ abgeschlossen. Der Agent hat außerdem die Möglichkeit, dem Kunden durch Bearbeiten der Registerkarte „E-Mail“ eine erste E-Mail zu senden und ihn darüber zu informieren, dass eine Freigabe angefordert wurde.
- Das Ticket wird nun automatisch an das Team „Manager“ weitergeleitet. Streng genommen wurde das Ticket geklont, das ursprüngliche Ticket blieb erhalten, um die Aktion des Agenten zu dokumentieren.
- Ein Mitglied dieses Teams ('Management') antwortet auf das Ticket, indem es im Formular "Genehmigung" auf "Genehmigt" oder "Abgelehnt" klickt, indem es das entsprechende Optionsfeld auswählt. Der "Manager" kann auch einen Kommentar in das Feld "Kommentar" des Formulars schreiben.
1.Das Ticket wird nun automatisch an das ursprüngliche Team weitergeleitet, die die Anfrage des Kunden ursprünglich bearbeitet hat. Der Besitzer dieses Tickets bleibt der ursprüngliche (erste) Agent. - Innerhalb dieses Tickets sieht der Agent nun die Entscheidung und die Genehmigung im angehängten Formular "Genehmigung". Jetzt kann er das Ticket bearbeiten, dem Kunden per E-Mail antworten und den Vorgang abschließen.
Während dieser Workflow-Schritte werden im System zwei weitere Tickets erstellt, die mit dem Ticket der ursprünglichen Kundenanfrage verknüpft sind. Diese Tickets dokumentieren die einzelnen Aktionen. Siehe die Registerkarte "Workflow" des Tickets. Darin werden sämtliche Workflow-Schritte inklusive ausführendem Benutzer, Terminen etc. aufgelistet. Am besten eignet sich hierfür die ursprüngliche Kundenanfrage und das daraus generierte Ticket. Sie können aber auch über eines der beiden Folgetickets in diesen Dialog einsteigen, also z.B. das Ticket mit der Anfrage an das Manager-Team.
Formular
Der Aufbau des Formulars ist recht unkompliziert: Oben ist ein Textfeld, in das der Agent die Anfrage stellen kann. Bei der Erstellung des Tickets ist eine Eingabe erforderlich (Feldname: Request).
Dem Manager steht ein Auswahlfeld für seine Entscheidung zur Verfügung (Feldname Decision) und ein Textfeld für einen optionalen Kommentar. Wenn der Manager versucht, seine Entscheidung zu übermitteln, ist die Auswahl einer Entscheidung obligatorisch.
Wie die Felder zu Pflichtfeldern gemacht werden, wird später im Skript gezeigt. Siehe auch dieses Tutorial.
Script-Programmierung
Absenden-Aktion
Um das Feld Anfrage zu einem Pflichtfeld zu machen, wird der Wert beim Senden (in der Absenden-Aktion) ermittelt und, wenn kein Wert eingetragen wurde, mit der helper.errorMessage() Methode eine Meldung angezeigt und das Absenden des Formulars verhindert, indem der result Wert result auf "error" gesetzt wird:
var name = form.getValueByFieldName("Request");
if(name.length()==0){
helper.errorMessage("Please enter a request!");
result="error";
}
Erledigen-Aktion
Die Erledigen-Aktion des Formulars wird in diesem Workflow dreimal ausgeführt: Einmal, wenn der Agent das Ticket in Schritt (2) an den Manager weiterleitet. Ein zweites Mal, wenn der Manager seine Antwort auf die Anfrage sendet (3) und dabei allerdings eine Auswahl für den Radiobutton „Entscheidung“ erzwungen werden soll.
Dazu prüft das System, an welche Gruppe das Ticket im aktuellen Schritt bearbeitet wird. Handelt es sich um das Team Manager (mit ID 24), wird zur Auswahl folgender Code benötigt, andernfalls wird das Formular nicht versendet:
var dec = form.getValueByFieldName("Decision");
if(dec==null || dec.length()==0){
helper.errorMessage("Please select a decision!");
result="error";
}
}
End-Aktion
Innerhalb der serverseitigen End-Aktion erfolgt die eigentliche Weiterleitung des Tickets. Dazu muss zunächst geprüft werden, welches Team das Ticket gerade bearbeitet. Dabei unterscheiden wir wieder zwischen den Fällen „Manager“ und „Non-Manager“ (also Agenten). Da wir keine spezielles Agententeam angeben, können wir das Approval-Formular später unterschiedlichen Agententeams zur Verfügung stellen!
Allerdings muss sich das Formular merken, an welches Agententeam das Ticket zurückgeschickt werden muss. Dies geschieht durch die Zeile
task.addProperty("origGroupId", ""+task.addressee.getAddressedWorkgroup().getId());
in der die ID des angesprochenen Teams in einer Task-Property (siehe hier) namens origGroupId gespeichert wird.
Die Zeile
helper.propagateTaskToGroup("Manager");
sorgt für die Weiterleitung des Tickets an das Team Manager. Beide Zeilen werden nur ausgeführt, wenn das aktuell angesprochene Team not ein Manager ist, siehe Bedingung if (gid == 24) {...
Im anderen Fall, dass aktuell das Team Manager angesprochen wird, wird das Ticket wieder an das ursprünglich angesprochene Team weitergeleitet, deren ID in der Task-Eigenschaft origGroupId gespeichert wurde und hier mit der Methode task.getProperty() ermittelt wird.
task.description=com.proxemo.xutl.XUTLStringTools.insertHtmlOnTop(task.description, "<div style='border: 1px solid red; font-weight: bold; '>Request for approval - please see form Approval!</div>");
task.addProperty("appMark","set");
}
if(task.addressee.isWorkgroup()){
var gid = task.addressee.getAddressedWorkgroup().getId();
if(gid==24){
// mananger answers request for approval
helper.propagateTaskToGroupById(new java.lang.Long(task.getProperty("origGroupId")));
task.addProperty("approvalFinished", "true");
} else if(task.getProperty("approvalFinished")==null){
// agent sends to managers
task.addProperty("origGroupId", ""+task.addressee.getAddressedWorkgroup().getId());
helper.propagateTaskToGroup("Manager");
}
}
}
In den ersten vier Zeilen wird ein Hinweis in die Ticketbeschreibung eingefügt, der den Manager über das angehängte Genehmigungs- Formular informieren und den Freigabe-Workflow kennzeichnen soll:
Wenn Sie den Workflow in todo4teams nutzen möchten, importieren Sie bitte das
und passen Sie es entsprechend Ihren Bedürfnissen an. Ändern Sie dazu die in den Skripten verwendete ID 24 in das eskalierte Team und den Namen Manager und ersetzen Sie diese durch Werte, die Ihrer todo4teams-Installation entsprechen.