SELECTED ANSWER
replied on February 15, 2018
Here is how I ended up doing this.
When the process starts, it assigns the user task and also starts a "listener" workflow in parallel.
The listener workflow uses Wait for Entry Change to monitor a field on the applicant packet folder.
If the packet gets voided, workflow proceeds and sets the Form BP variable "Voided" to Yes, which is then evaluated in the Exclusive Gateway that follows. The gateway then throws a signal event, which is caught by the user task.
This works fine, except there are two things about it that I don't like:
- Each Forms instance will need to have a listener workflow, so we could in theory have over a hundred WF instances just waiting on Wait for Entry Change for days/weeks. I'm concerned about the performance implications.
- If we terminate a Forms BP instance from Forms, we also need to go into WF instances and find the corresponding WF that is waiting, and terminate it. If we don't, we might end up with orphaned Workflows that are stuck in Waiting status perpetually.
Hopefully there will be a way to terminate BP instances from WF directly at some point soon.