It will be hard to offer any advice on this without a test case.
But, the message you are getting is typically thrown if you have not actually "started" the task.
A typical usage scenario might look like this:
1st unit of work ("process instantiation"):
businessProcess.setVariable("billingId", "1"); // setting variables before starting the process
2nd unit of work ("perform a user task"):
businessProcess.startTask(id); // now we have associated a task with the current conversation
... // this allows us to retrieve and change process variables
// and @BusinessProcessScoped beans
businessProcess.setVariable("billingDetails", "someValue"); // these changes are cached in the conversation
businessProcess.completeTask(); // now all changed process variables are flushed
Notice, startTask() is called before completing the task.
Hope this helps,