Should the JbpmSession instance
JbpmSession jbpms = JbpmSessionFactory.getInstance().openJbpmSession();
There should be one JbpmSession per thread. When you openJbpmSession(), the session is associated to the current thread, and you can retrieve it at any time later with JbpmSession.getCurrentJbpmSession(). You might want to read the topic Transaction demarcation with EJB/CMT to get more details about working with transactions.