Did you re-get the process instance by using executionService.findProcessInstanceById()? The process instance won't synchronize data from database automaticly, Once we modify the process instance, as variable or signaling, we need re-get process instance.
Hope this may be help.
Yes I did re-get the process instance. It did not help.
However, I found a workaround. Instead of calling
ExecutionService.setVariable(executionId, "X", "new value");
I pass a map of variables (and their new values) to the TaskService.completeTask() call. This works just fine for me since I only need those new values in the subsequent steps.