We are currently trying to build an approval workflow for employees to request training.
The idea is to first have the employee's supervisor approve (or reject) the training, and if the supervisor approves, to ask the HR department for approval.
It all seemed so simple, until my supervisor came up with the idea to have the entire workflow run with a deadline, so if the supervisor or HR department forgets to approve (or e.g. the supervisor is on vacation or something), the workflow terminates and sends an email to the employee to re-submit the request (possibly naming a different person as the supervisor).
Unfortunately, due to the more convenient approval process in 2010 workflows, we pretty much have to implement this in a SharePoint 2010 workflow. (With a 2010 approval task, you get two Yes/No buttons in Outlook and can approve or reject the request by clicking on them, in 2013 you get a Link to the Task item, then need to click on "Edit", and then click on Approve/Reject, which for some reason our users cannot be bothered with...)
In a 2013 workflow, we could use a parallel block with a CompletionCondition to assign the approval task (and wait for its completion) and wait for a given timeout in parallel. But in 2010 Workflows, Parallel blocks apparently block until all parallel steps have completed.
My next idea was to use a loop, waiting for a short time (an hour or so), check if the task has been completed (and terminate the task) or the deadline has passed (and terminate the workflow). But again, I am out of luck - apparently SharePoint 2010 workflows don't support loops of this kind.
My next idea was to write a small-ish program running outside the SharePoint that regularly (again, once an hour or so) goes through all items in the request lists, checks if any of them are past their deadline without having been approved (or rejected) and if so, terminates the associated workflow(s) and sends emails to the employees that requested training.
Unfortunately, my boss does not like "custom" solutions (as if a workflow was somehow "off-the-shelf"), so I can only use this approach if I can show that no other solution will do. (It is a rather crude hack, too, so I would be reasonably happy if there was a more elegant solution.)
So is there any other way to have a task or a list workflow time out in a SharePoint 2010 workflow?
Thank you very much in advance for any ideas you might be able to share,