We have a form which is used for requesting leave. We were asked to put a cancel button on it so that the requester could cancel their request if it has not been approved yet. This would need to cancel any attached workflows. The approval workflow is a standard SharePoint approval workflow.
The workflow is based around a task assigned to an approver in the workflow.
This task would be created by Start Approval Process in the workflow.
Unfortunately SharePoint does not provide a good solution for deleting this.
You could write an event handler but that’s hard to manage.
You could show users how to manually cancel workflows but that’s too complicated for some users.
You could create some whacky workflows that manage themselves but that’s too messy.
In the form create a status field. This field will have the following possible values: pending, cancelled, approved, rejected.
When a user cancels the leave request by clicking cancel in the form, we will update the status of the form to be cancelled. There will still be a task assigned to the approver that needs to be cancelled.
change the behaviour of the task
to check when the status field in the form changes to anything but pending.
Once it changes you can End Task Process to cancel the task.