When LifecycleTransitionActionHandler changes the lifecycle state, it's done in a different session, but the main calling session may not see changes in a non-shared session setting (non-pooled: jetty/tomcat).
So when doing a jbpm operation and expecting to see a different state immediately, the main session must process its pending invalidations by calling save().