Mit der Version K2 Five 5.5 wurde eine neue, meiner Meinung nach überfälliges, Feature zur Behandlung von Workflowfehlern eingeführt.
Die neue Version ermöglicht den Start eines beliebigen Workflows sobald bei einem der vorhandenen Workflows ein Fehler auftritt.
Der Workflow, der beim Auftreten eines Fehlers gestartet wird, verfügt hierzu über eine Handvoll Eigenschaften, über die fehlerhafte Workflowinstanz.
So stehen z.B. folgende Informationen zu Verfügung:
Mit diesen Informationen kann die Fehlerhafte Instanz eindeutig identifiziert werden und entsprechende Aktionen ausgelöst werden.
Der Worfklow, der bei einem auftretenden Fehler gestartet werden soll, benötigt bei der EInstellung des Starttriggers lediglich die Einstellung „Start when any Workflow Error“.
Wird diese Option ausgewählt, kann man sich vom System automatisch die o.a. Variablen erstellen lassen.
Nachfolgend möchte ich Euch eine kleine Anwendung zeigen, die ich für die Workflow-Fehlerbehandlung erstellt habe.
1. Ziel
Das Ziel der Anwendung ist, Fehler möglichst zeitnah zu registrieren, zu protokollieren und natürlich zu beheben. Dabei sollen die verantwortlichen Personen möglichst zielgerichtet benachrichtigt werden können.
2. Beschreibung
Um das Ziel zu erreichen, besteht die Anwendung im Wesentlichen aus 3 Teilen.
a) Ein Formular zur Registrierung eines Workflows und der Zuordnung von verantwortlichen Personen
b) Ein Formular zur Bearbeitung/Protokollierung ermittelter Fehler
c) Eine Workflow, der auf auftretende Fehler reagiert, diese protkolliert und entsprechende Benachrichtigungen und/oder Aufgaben zur Behebung verschickt/anlegt
In der Praxis bedeutet das, dass für jeden angelegten Workflow auf dem System festgelgt werden kann, wer eine entsprechende Information/Aufgabe zur Behebung bekommen soll.
Dies ist insbesondere dann hilfreich, wenn mehrere Personen mit dem K2-System arbeiten und für verschiedene Workflows unterschiedliche Personen verantwortlich sind.
Außerdem können die registrierten Workflows mit einer Reminder und/oder Eskalationsregel ausgestattet werden.
Für alle nicht registrierten Workflows wird eine allgemeine Fehlermeldung an einen generischen Mailverteiler verschickt.
Registration eines Workflows (cw.ErrorCatchWorkflows)
1) Liste aller registrierten Workflows, für die ein oder mehrere Empfänger definiert wurden
2) Formular zur Anlage eines registrierten Workflows.
Alle auf dem System vorhandenen Workflows können mit der Autocomplete-Funktion durchsucht werden. Nach Auswahl werden die Workflowdaten in das Formular übernommen
3) Falls gewünscht können für die Aufgaben zur Problembehebung Reminder angelegt werden – das kann bei kritischen Workflows Sinn machen. Es kann definiert werden wieviel Tage nach dem Auftreten des Fehlers und Nichtbearbeitung eine Erinnerung verschickt werden soll, und wie oft das geschehen soll.
4) Es ist außerdem möglich, einen nicht bearbeiteten Workflowfehler zu eskalieren. D.h. ein hier definierter Empfänger (sollte von den eigentlich definierten Empfängern abweichen) bekommt nach der angegebenen Zeitspanne eine Eskalations-Aufgabe
5) (cw.ErrorCatchResponsibilities) Hier können die zuständigen Personen definiert werden, die im Fehlerfall die entsprechende Aufgabe zur Behebung des Fehlers bekommen sollen. Es können beliebig viele Personen definiert werden. Derjenige, der einen Workflow erstmalig anleget, wird automatisch zur Liste der Zuständigen hinzugefügt.
6) (cw.ErrorCatchLog) LOG – hier kann das LOG zum registrierten Workflow aufgerufen werden. Alle Fehler werden hier protokolliert. Auch die Kommentare, die bei der Behebung des Fehlers hinterlassen wurden kann man hier einsehen – zudem auch wer den Fehler behoben hat und wann. Sollten Bilder oder Ähnliches an das Log gehängt worden sein, so werden auch diese unter „Attachments“ angezeigt.
7) Mit „Manage quick solutions“ können Textbausteine angelegt werden, um die Protokollierung des Fehlers bei der Behebung zu vereinfachen. Es empfiehlt sich hier Bausteine zu definieren, die immer wieder zur Lösung des Problems beitragen. Bei der Behebung/Bearbeitung der Aufgabe muss auf diese Weise lästiger, wiederkehrender Text nicht ständig erneut eingetippt werden. Beispiele dafür könnten sein: „Workflow instance deleted“, „Workflow restarted“ ….
Fehler bearbeiten (cw.ErrorFixTask)
Sofern ein registrierter Workflow einen Fehler produziert, werden die definierten Personen banachrichtigt bzw. erhalten eine Aufgabe zur Bearbeitung/Behebung des Fehlers. Diese erscheint auch ganz regulär in der K2-Worklist.
1) Details zum Fehler (Betroffener Workflow, ID der Prozessinstanz, Datum des Fehlers, Datum des Workflowstarts, Fehlermeldung)
2) Anzeige des gesamten Fehlerlogs zu diesem Workflow (so kann man z.B. frühere Lösungen bei gleichen Fehlern einsehen)
3) Anzeige des Viewflows der betroffenen Workflowinstanz
4) Öffnen des betroffenen Workflow im K2-Management Userinterface (setzt natürlich entsprechende Rechte für den Worfklow voraus)
5) Auswahl eines Quick-Bausteins (wiederkehrende Texte müssen so nicht jedes mal wieder eingetippt werden –> siehe auch Punkt 8. unter „Registration eines Workflows“
6) Der Text aus der Textbausteinauswahl wird hier rein kopiert, es kann natürlich auch jederzeit ein eigener Text hier eingeben werden. Es empfiehlt sich anzugeben, wie der Fehler aufgelöst wurde.
7) Die Aufgabe wird aufgelöst mit den definierten Angaben
8) Falls keine Aktion notwendig ist (z.B. Problem hat sich von selbst erledigt), kann einfach der Button „No intgervention required“ geklickt werden. Die Aufgabe wird somit ebenfalls als erledigt gekennzeichnet.
9) Sollten komplexere Lösungswege zur Behebung des Fehlers notwendig sein, ist auch möglich z.B. Screenshots etc. hochzuladen um die Dokumentation so gut wie möglich zu sichern. Im Falle das der gleiche Fehler erneut auftreten sollte, hat so auch eine andere Person gute Chancen das Problem schnell zu beheben.
10) Eine Liste aller offenen Aufgaben zur Behebung von Fehlern. Mit Doppelklick kann die jeweilige Aufgabe direkt aufgerufen werden.
Installation
Die Anwendung steht hier zum Download bereit. Das ZIP-File enthält folgende
a) Ein SQL-Script zur Anlage der notwendigen Tabellen auf einer SQL-Datenbank
b) Das KSPX-File für das Deployment der K2-App auf dem K2-Server
Auf folgende Punkte sollte bei der Installation geachtet werden:
1) Für die Tabellen ist im Script ein eigenes Schema definiert. In der ersten Zeile sollte zudem der Name der korrekten Datenbank eingetragen werden.
2) Es muss natürlich eine entsprechende Serviceinstanz für den SQL-Server vorhanden sein, die Zuweisung beim Deployment wird händisch angepasst werden müssen (z.B. mit den Variablen – siehe Bild unten).
3) Es werden 2 Einträge in der Environment Library angelegt (BAS.ViewFlow.BaseUrl –> die Basis-Url zur Workflow-ViewFlow-Ansicht / CW.ErrorCatch.DefaulReceiver –> Eine E-Mailadresse ( Mailverteiler, der die Fehler erhalten soll, die nicht separat in der Anwendung angelegt werden soll – beide Variablen müssen angepasst werden (z.B. mit den Variablen – siehe Bild unten).
4) Es werden weitere Konfigurationswerte des K2-Systems verwendet. Diese sollten vor dem Deployen entsprechend geprüft werden. Normalerweise handelt es sich um K2-Standard-Einträge, die vom Zielsystem entsprechend übernommen werden.
Neben dem Workflow zur Steuerung der Fehlerbehebung (ErrorCatch.WF) befindet sich in dem Package noch ein weiterer Workflow (ErroCatchSimulate.WF). Mit diesem Workflow kann auf einfache Weise ein Fehler erzeugt werden. Dazu einfach den Workflow über das Management-Interface starten und es wird direkt ein Workflowfehler provoziert. Der Workflow versucht ein 0-Division, was natürlich in einer Ausnahme endet. Sollte dieser Workflow nicht benötigt werden, so kann dieser einfach gelöscht werden. Es hat keine Auswirkung auf die restliche Applikation.
Beispiel einer Benachrichtigungs-Mail: