Workflow History, eigenes Log des Workflows erstellen

In der Workflow History kann man den Fortschritt eines Workflows einfach nachvollziehen. Man sieht genau, welche Tasks erstellt und wann von wem bearbeitet wurden. Zudem kann man als Entwickler zahlreiche Informationen hier protokollieren um den aktuellen Fortschritt darzustellen.

Die History wird allerdings nach einer gewissen Zeit gelöscht und steht somit nur begrenzte Zeit zur Verfügung. Je nach Geschäftsprozess ist es aber relevant, Entscheidungen (wer hat wann entschieden), dauerhaft zu protokollieren.

Lösung

Die einfachste Variante ist aus meiner Sicht, ein eigenes Protokoll in einer separaten Listenspalte zu führen. Diese Spalte wird auf den Formularen vor Änderungen geschützt (read-only), damit es nicht nachträglich manipuliert werden kann.

Das Protokoll selbst kann dann nur durch den Workflow selbst fortgeschrieben werden. Zunächst wird eine Spalte vom Typ Text, mehrere Textzeilen erstellt. Die Protokollierung selbst besteht aus folgenden Schritten:

  1. Lesen der bisherigen Daten
  2. Erstellen des neuen Protokolleintrags (Zeile)
  3. Anhängen des neuen Eintrags
  4. Sichern des neuen Journals

Am besten vereint man diese Schritte in einem Action Set. Somit kann man durch kopieren des gesamten Action Sets das Journal an beliebigen Workflow Stellen einbauen.

Zunächst wird über eine "Set variable" Action die aktuelle Zeit in die Variable "now" übernommen.

Anschließend mit einer "Set variable" Action das bisherige Journal auslesen

Mit einer "Build String" Action kann nun der neue Eintrag erstellt und in der Variablen "new Entry" gesichert werden.

Über eine weitere "Build String" Action wird das bisherige Journal um den neuen Eintrag erweitert

Und abschließend mit einer "Set Field in current item" Action wieder zurück geschrieben

Der gesamte Prozess stellt sich so dar