1. Teil SharePoint Workflow 2013: Statuswechsel erkennen und dokumentieren

Dies wird eine Beitragsserie, in der wir das Zusammenspiel von Listen und SharePoint Workflows 2013 vorstellen – Workflows starten wenn ein Eintrag erstellt oder geändert wird, Workflows regelmäßig ausführen und der Aufruf von einem 2013er Workflow in einem 2013er Workflow via REST API. Diese neue Funktionalität bei den 2013er Workflows von SharePoint bringt viele Möglichkeiten mit sich. Verfügbar ist der Webdienst nur bei den 2013er Workflows, die es nur bei/ab SharePoint 2013 On-Premise oder SharePoint Online gibt.

 

Anforderung

Wir haben eine Site Collection mit einer Liste. In dieser Liste sollen Einträge erfasst werden. Beim erstellen oder ändern eines Listeintrags soll in einem Historie Feld dokumentiert werden, dass der Eintrag geändert wurde. Zusätzlich soll in der Historie festgehalten werden, wenn das Feld Status sich ändert und dementsprechend auch eine E-Mail versendet werden. Außerdem soll einmal täglich geprüft werden, ob es Einträge in der Liste gibt die schon länger als x Tagen keinen Statuswechsel aufweisen. Wenn dies der Fall ist, soll eine E-Mail an eine bestimmte Person versendet werden.

Die Liste kann unterschiedliche Funktionen haben:

  • zeitnahe Aufgaben
  • Kundenbeschwerden welche bearbeitet werden müssen

 

Liste erstellen

NameTypeBesonderheitBeschreibung
TitleSingle line of TextPflichtfeldEinfaches Textfeld für den Titel des Elements, ist beim erstellen der Liste vorhanden und kann verwendet werden.
DescriptionMultiple lines of TextPflichtfeldTextarea für eine Beschreibung des Eintrags
StatusChoicePflichtfeldWerte: None, Running, Completed
Hier verwenden wir Radio Buttons, setzen den Standard-Wert auf None
HistoryMultiple lines of TextkeineDieses Feld soll über einen Workflow befüllt werden. Es dient der Dokumentation der Änderungen
PreviousStatusSingle line of Textverstecktes FeldDieses Feld wird über einen Workflow befüllt mit dem Status bevor der Eintrag geändert wurde. Somit kann man auch erkennen, ob der Eintrag neu ist, denn zu diesem Zeitpunkt ist das Feld leer.
PreviousStatusTimestampDate and Timeverstecktes FeldDieses Feld wird auch via Workflow befüllt mit dem Wert des Änderungsdatum von SharePoint. Dies wird für die Überprüfung des Workflows verwendet. Das Änderungsdatum kann für die täglich Überprüfung nicht verwendet werden, da durch Workflow die Status-Änderungen zu den Elementen hinzugefügt werden und dadurch auch das Änderungsdatum aktualisiert wird.
Screenshot der erstellten Liste: Kundenbeschwerde
Die leere Liste und die Ansicht aus den Einstellungen

 

Listen Workflow mit SharePoint Designer erstellen

1. Workflow erstellen

Es wird ein neuer Listen-Workflow erstellt. Dabei die zuvor erstellte Liste auswählen, damit der Workflow dieser Liste zugeordnet ist.

Screenshot für die Erstellen eines 2013er List Workflows mit dem Sharepoint Designer

Es muss ein 2013er Workflow erstellt werden

 

2. Logging für den Start und Variable History definieren

Zunächst setzen wir den Workflow Status zu “Running”. Damit können wir in der Workflow History sehen, dass der Workflow gestartet ist.

Danach erstellen wir die Action “Set Workflow Variable”, erstellen eine neue Variable StrHistory und weisen dieser Variable den nachfolgenden Wert zu:

changed by [%Current Item:Modified By%] - [%Current Item:Modified%] [%Current Item:Modified%] status to <strong>[%Current Item:Status%]</strong>
[%Current Item:History%]<br />

02-workflow-log-set-variabl

Die Variablen müssen über den “Add or Change Lookup” Button hinzugefügt werden.

Die Variable wird somit am Anfang gesetzt und im späteren Verlauf des Workflows je nach Bedingung überschrieben. Wir schreiben in das History-Feld den aktuellen Änderungsstatus – von wem und wann dieser durchgeführt wurde – und den Status. In letzter Zeile fügen wir das History-Feld ein, dass die schon vorhanden Einträge chronologisch ausgegeben werden.

 

3. Status überwachen und erkennen

Als nächstes fügen wir einen Step hinzu und benennen diesen zu “Status change detected”. In diesem Step erstellen wir eine If-Abfrage, die den Wert im Feld Status mit dem Wert im Feld PreviousState vergleicht. Es wird überprüft ob diese zwei Werte nicht gleich sind. Nur wenn sich der Status geändert hat und somit diese Bedingung wahr ist, soll der Workflow die nachfolgenden Befehle ausführen. Auf gleicher Ebene wird noch eine Else-Zweig erstellt. Dieser setzt nur das History Feld ohne den Status darin. Damit ist das reine bearbeiten des Elements ohne Statuswechsel dokumentiert.

Item Status überwachen und erkennen

 

4. Erstellung eines Listeneintrags

In der nächsten If-Schleife stellen wir mit der Bedingung ob die Variable PreviousStatus leer ist das Erstellen eines Elements fest. Der PreviousStatus ist nicht sichtbar und somit leer beim erstellen des Elements. Wir schreiben einen Eintrag in das Feld History, dass das Element erstellt wurde und verschicken eine E-Mail. Diese Bedingung wird in einem Step zusammengefasst.

04-workflow-item-created

 

5. Änderung eines Listeneintrags

Auf gleicher Ebene erstellen wir einen weiteren Step, der das ändern eines Eintrags bearbeitet. Starten wir mit einer If-Abfrage, ob der PreviousStatus nicht leer ist. Dies sollte immer der Fall sein, außer im Schritt davor. Aber nach dem erstellen des Eintrags ist das Feld gefüllt – dazu später mehr.
Eine weitere If-Abfrage stellt fest, ob der Status Running oder Completed ist. Ist dies der Fall wird eine E-Mail versendet, dass der Status sich geändert hat. Ist dies nicht der Fall wird nur die Variable History gesetzt, da es damit keine Status-Änderung gab sondern ein anderes Feld aktualisiert wurde.

05-workflow-item-modified

 

6. Eintrag Updaten

Nach diesen beiden If-Abfragen werden die Variablen PreviousStatus und PreviousStatusTimestamp gesetzt. Der Variablen PreviousStatus wird der Wert der Variable Status zugewiesen, PreviousStatusTimestamp der Modified Wert.

06-update-list-item

 

7. Workflow beenden

Zum Schluss aktualisieren wir das Feld History mit dem Wert der Variablen StrHistory, setzen den Workflow-Status auf Completed und beenden den Workflow. Nachfolgend ein Screenshot vom kompletten Workflow.

07-workflow-complete

 

8. Einstellungen des Workflows

In den Eigenschaften des Workflows müssen die Haken

  • Für diesen Workflow zulassen, dass er manuell gestartet wird
  • Diesen Workflow automatisch starten, wenn ein neues Element erstellt wird
  • Diesen Workflow automatisch jedes Mal starten, wenn ein Element geändert wird

gesetzt sein.

Im nächsten Artikel beschreiben wir, wie wir einen Site Workflow erstellen.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.