Nintex Workflows im «Office 365»-Umfeld (SharePoint Online) nutzen als Engine den sogenannten «Workflow Manager». Diese Engine hat, im Unterschied zur «Workflow Foundation»-Engine, die Unart, dass bei Fehlern im Workflow keine Benachrichtigung versendet wird. Somit ist es leider ziemlich schwierig, fehlgeschlagene Workflows aufzuspüren und neu zu starten.
Tomasz Poszytek, Nintex virtual Technical Evangelist aus Polen, hat einen Blogbeitrag verfasst, wie solche «angehaltene» Workflows per Microsoft Flow aufgespürt werden können.
Mit diesem Beitrag möchten wir zeigen, wie der Ansatz von Tomasz weiterverfolgt und anstatt Flow ein Nintex Workflow verwendet werden kann.
Grobe Lösungsskizze
Als erstes wird eine SharePoint-Liste («Workflowparameter») benötigt, in welcher die Listen- und Bibliotheken-IDs festgehalten werden, auf welchen Nintex Workflows laufen.
Anschliessend kann mittels Site-Workflow jedes Listenelement abgefragt werden, wobei alle Workflows im Zustand «2» zurückerhalten werden.
Wird ein angehaltener Workflow gefunden, versendet der Site-Workflow eine Nachricht, welche den Link zur Workflow-Status-Seite enthält.
Die Lösung im Detail
So könnte die «Workflowparameter»-Liste aussehen:
Im Site-Workflow schlagen wir als erstes den E-Mailempfänger nach:
Anschliessend nutzen wir eine «State-Machine», wobei jeder «State» einer Liste entspricht, auf welcher Nintex Workflows laufen:
Innerhalb von «State 1» schlagen wir die Listen-ID aus «Workflowparameter» sowie alle Elemente der betroffenen Listen (in diesem Beispiel «Ferienanträge») nach:
Nun werden alle Elemente mittels «For Each» abgefragt, ob sich ein darauf laufender Workflow im Zustand «2» befindet.
varWebrequestAddress:
{Workflow Context:Current site URL} _api/SP.WorkflowServices.WorkflowInstanceService.Current/ EnumerateInstancesForListItem(listid='{Variable:varListID}‘, itemid='{Variable:varObjektID}‘)?$Filter=Status eq 2&$select=Id,FaultInfo,WorkflowSubscriptionId,InstanceCreated,LastUpdated
varRequestHeaders:
HTTP-Webdienst aufrufen:
varResponseContentResult:
Count Items in a Dictionary:
varFaultInfo:
varFaultInfoTxt:
varFaultInfoTxt:
varURLWorkflowPage:
Die weiteren Zustände lauten:
0 = Note started
1 = Started
2 = Suspended
3 = Canceling
4 = Canceled
5 = Terminated
6 = Completed
7 = Not specified
8 = Invalid
Als letztes folgt der Übertrag auf den nächsten Zustand und die Abfrage beginnt von vorne:
Referenzen
- Workflows in SharePoint 2013, Part 1
- Einführung in den SharePoint-Workflow
- Discovering suspended workflows with Microsoft Flow
- How do I get workflow instances for list item on the client side
- Cancel Running workflows prior to saving an item
- Get List Workflow internal status for all lists/items in site
- WorkflowInstanceService methods
- Working with lists and list items with REST
Beitrag teilen
Geschrieben von
Raphael Bachmann
Teamleiter Apps & Services und Nintex virtual Technical Evangelist
Profil anzeigen