A customer I was working with using Oracle BPM and SOA ran into an interesting issue with the unexpected automatic completion of a human workflow task. This article describes how to resolve this problem if you run into it.
Symptom: A human task (in a SOA/BPEL/BPM process) completes automatically while it should have been assigned to a proper user.There are no stack traces, no related exceptions in the logs.
Why: SOA 11g is designed to treat human tasks that don't have assignees as eligible for automatic completion. Because of this, no warning/error messages are recorded in the logs.
Usecase variant: A variant of this usecase, where an assignee doesn't exist in the repository, is treated as a recoverable error. You can find this in the 'pending recovery' instances in EM and reactivate the task by changing the assignees in the BPM workspace as a process owner /administrator.
But back to the usecase when tasks get completed automatically...
When: This happens when the users/groups assigned to a task are 'empty' or null. This is normally only see on tasks whose assignees are derived from an assignment expression - i.e. at runtime an XPath expression is used to determine who to assign the task to. (This should not happen if task assignees are populated via swim-lane roles.)
How to detect this in EM
For instances that are auto-completed like this, you will notice in the Audit Trail for the instance that the 'outcome' of the task is empty. The 'acquired by' element will also show as empty/null.
Enabling the oracle.soa.services.workflow.* logger in EM should print more verbose messages about this.
How to fix this
The application code needs two fixes: