Workflow Cancelled Event abfangen

Zu den Fragen, auf die das Internet die Antwort nicht weiß, gehört auch die Folgende: Wie fange ich das Abbrechen eines Workflows durch den User im serverseitigen Code ab, um beispielsweise Clean-Up-Operationen durchzuführen?

Die Vorschläge reichen vom Ersetzen der Workflow-Statusseite im Layouts-Ordner bis zum Abfangen des Eintrags in der Workflow-History-Liste. Ein Blick in die SharePoint DLL offenbart, dass die Methode SPWorkflowManager.CancelWorkflow(..) abschließend ein WorkflowEvent vom Typ WorkflowComplete feuert auslöst und seinem Property-Objekt den Grund für die Fertigstellung durch die Eigenschaft CompletionType=ExternallyTerminated mitteilt.

Dieser Event Receiver lässt sich in Visual Studio leicht über Add New Item > Event Receiver > List Workflow Event Receiver erstellen.

Et voilà: Cancel Event abgefangen.

workfloweventreceiver.png 

Comments