You're using jBPM 3.0.x, right? There is a bug in the TaskInstance.setActorId() method: it fires the task-assign event before setting the previousActorId field. This has been fixed in 3.1. It seems simple to backport, so let us know if you cannot or do not want to migrate to 3.1.
Yes I am using 3.0.2. I have not yet moved to 3.1. I have also tested the process-state, i.e. the process-state name must match the sub-process name in order for it to work. Simply setting sub-process state name does not work. Are these issues already fixed in 3.1? cause if it is, i think i will consider migrating.
P.S. There is a also little typo error in this version. In the JBPM_TASKINSTANCE table, the field there is SWIMLANINSTANCE_, it should have been SWIMLANEINSTANCE_. It took me a while to figure it out in my SQL queries. FYI.