<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">
<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>
                                <td>
                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="https://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>
                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
org.jbpm.workflow.instance.WorkflowRuntimeException: -- Illegal method call. This session was previously disposed.
</h3>
<span style="margin-bottom: 10px;">
created by <a href="https://community.jboss.org/people/bardelman">Feki Ahmed</a> in <i>jBPM Development</i> - <a href="https://community.jboss.org/message/798071#798071">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">
<div class="jive-rendered-content"><p>Hi, </p><p>i ve a simple java class with a main which i m using such as a test case.</p><p>All what i want to achieve is to get user task's from a loaded session which was previousely started and disposed.</p><p><span>i ve already seen questions asked about this issue(here:</span><a class="jive-link-external-small" href="https://community.jboss.org/thread/201901" target="_blank">https://community.jboss.org/thread/201901</a><span>) but still didn't find a solution for it anywhere. it s said that </span><span style="color: #555555; font-family: 'Lucida Sans', 'Lucida Sans Unicode', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">the session is <span style="color: #555555; font-family: 'Lucida Sans', 'Lucida Sans Unicode', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">dispose</span>d before transaction is completed which cause the mentioned error. and that the dispose must happen after transaction completion but i don't know what are <span style="color: #555555; font-family: 'Lucida Sans', 'Lucida Sans Unicode', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">transaction </span>boundaries and how to know when it is completed.</span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><span style="color: #555555; font-family: 'Lucida Sans', 'Lucida Sans Unicode', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;">this is the class with the main : </span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>*************************************************************************************************************************</p><p>package com.salaboy.jbpm5;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>import bitronix.tm.TransactionManagerServices;</p><p>import bitronix.tm.resource.jdbc.PoolingDataSource;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>import com.salaboy.model.Person;</p><p>import java.util.HashMap;</p><p>import java.util.List;</p><p>import java.util.Map;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>import javax.persistence.EntityManagerFactory;</p><p>import javax.persistence.Persistence;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>import org.drools.KnowledgeBase;</p><p>import org.drools.KnowledgeBaseFactory;</p><p>import org.drools.SystemEventListenerFactory;</p><p>import org.drools.builder.KnowledgeBuilder;</p><p>import org.drools.builder.KnowledgeBuilderError;</p><p>import org.drools.builder.KnowledgeBuilderFactory;</p><p>import org.drools.builder.ResourceType;</p><p>import org.drools.impl.EnvironmentFactory;</p><p>import org.drools.io.impl.ClassPathResource;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>import org.drools.persistence.jpa.JPAKnowledgeService;</p><p>import org.drools.runtime.*;</p><p>import org.drools.runtime.process.ProcessInstance;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>import org.jbpm.process.workitem.wsht.LocalHTWorkItemHandler;</p><p>import org.jbpm.task.Group;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>import org.jbpm.task.TaskService;</p><p>import org.jbpm.task.User;</p><p>import org.jbpm.task.query.TaskSummary;</p><p>import org.jbpm.task.service.local.LocalTaskService;</p><p>           </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>public class MytestMain {</p><p>    </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>          private static PoolingDataSource ds;</p><p>  </p><p>      </p><p>          public static void main(String[] args) {</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>                        ds = new PoolingDataSource();</p><p>   </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>                  //System.setProperty("java.naming.factory.initial", "bitronix.tm.jndi.BitronixInitialContextFactory");</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>                  ds.setUniqueName("jdbc/testDS1");</p><p>                  </p><p>                  </p><p>                  //NON XA CONFIGS</p><p>                  ds.setClassName("org.h2.jdbcx.JdbcDataSource");</p><p>                  ds.setMaxPoolSize(3);</p><p>                  ds.setAllowLocalTransactions(true);</p><p>                  ds.getDriverProperties().put("user", "sa");</p><p>                  ds.getDriverProperties().put("password", "sasa");</p><p>                  ds.getDriverProperties().put("URL", "jdbc:h2:mem:mydb");</p><p>                  //XA CONFIGS</p><p>//                  ds.setClassName("bitronix.tm.resource.jdbc.lrc.LrcXADataSource");</p><p>//                  ds.setMaxPoolSize(3);</p><p>//                  ds.setAllowLocalTransactions(true);</p><p>//                  ds.getDriverProperties().put("user", "sa");</p><p>//                  ds.getDriverProperties().put("password", "sasa");</p><p>//                  ds.getDriverProperties().put("Url", "jdbc:h2:mem:mydb");</p><p>//                  ds.getDriverProperties().put("driverClassName", "org.h2.Driver");</p><p>                  </p><p>                  ds.init();</p><p>                  </p><p>                  ///// FIN INITIALISATION</p><p>                  </p><p>                  </p><p>                  KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();</p><p>                  kbuilder.add(new ClassPathResource("process-async-interactions.bpmn"), ResourceType.BPMN2);</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>                  if (kbuilder.hasErrors()) {</p><p>                      for (KnowledgeBuilderError error : kbuilder.getErrors()) {</p><p>                          System.out.println(">>> Error:" + error.getMessage());</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>                      }</p><p>                      fail(">>> Knowledge couldn't be parsed! ");</p><p>                  }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>                  KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>                  kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());</p><p>                  Environment env = EnvironmentFactory.newEnvironment();</p><p>                  EntityManagerFactory emf = Persistence.createEntityManagerFactory("org.jbpm.runtime.ht");</p><p>                  env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);</p><p>                  env.set(EnvironmentName.TRANSACTION_MANAGER, TransactionManagerServices.getTransactionManager());</p><p>    </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>                  // Let's create a Persistence Knowledge Session</p><p>                  System.out.println(" >>> Let's create a Persistent Knowledge Session");</p><p>                  final StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession(kbase, null, env);</p><p>                  </p><p>                  </p><p>                  </p><p>                  int sessionId = ksession.getId();</p><p>//                  assertNotNull(sessionId);</p><p>//                  assertTrue(sessionId != 0);</p><p>                  // We need to register the WorkItems and Listeners that the session will use</p><p>                  TaskService client = createTaskService(emf);</p><p>                  LocalHTWorkItemHandler localHTWorkItemHandler = new LocalHTWorkItemHandler(client, ksession);</p><p>                  MockExternalServiceWorkItemHandler mockExternalServiceWorkItemHandler = new MockExternalServiceWorkItemHandler();</p><p>                  ksession.getWorkItemManager().registerWorkItemHandler("Human Task", localHTWorkItemHandler);</p><p>                  ksession.getWorkItemManager().registerWorkItemHandler("External Service Call", mockExternalServiceWorkItemHandler);</p><p>                  //KnowledgeRuntimeLoggerFactory.newConsoleLogger(ksession);</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>                  // Let's create a Process Instance</p><p>                  Person person = new Person("Salaboy", 29);</p><p>                  Map<String, Object> params = new HashMap<String, Object>();</p><p>                  params.put("person", person);</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>                  //Each Command will generate an interaction</p><p>                  System.out.println(">>> Let's Create Process Instance");</p><p>                  ProcessInstance processInstance = ksession.createProcessInstance("com.salaboy.process.AsyncInteractions", params);</p><p>                  System.out.println(">>> Let's Start the Process Instance");</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>                  processInstance = ksession.startProcessInstance(processInstance.getId());</p><p>                  </p><p>                  </p><p>                  </p><p>                  System.out.println(" >>> Looking for Salaboy's Tasks");</p><p>                  List<TaskSummary> salaboysTasks = client.getTasksAssignedAsPotentialOwner("salaboy", "en-UK");</p><p>                  //assertTrue(salaboysTasks.size() == 1);</p><p>                  System.out.println("salaboysTasks.size() : "+salaboysTasks.size());</p><p>                  </p><p>                  TaskSummary salaboyTask = salaboysTasks.get(0);</p><p>                  System.out.println(" >>> Starting Salaboy's Task");</p><p>                  client.start(salaboyTask.getId(), "salaboy");</p><p>                  </p><p>                  </p><p>                  </p><p>                  System.out.println(" >>> Completing Salaboy's Task");</p><p>                  client.complete(salaboyTask.getId(), "salaboy", null);</p><p>                  </p><p>                  </p><p>                  </p><p>                  System.out.println(">>> Disposing Session");</p><p>                  ksession.dispose();</p><p>                  </p><p>               // Let's reload the session and create a different process instance inside it</p><p>                  StatefulKnowledgeSession loadedKsession = JPAKnowledgeService.loadStatefulKnowledgeSession(sessionId, kbase, null, env);</p><p>                  // All the listeners and WorkItemHandlers are volatile, so we need to register them each time that we reload the session</p><p>                  //  from the DB.</p><p>                  LocalHTWorkItemHandler localHTWorkItemHandler2 = new LocalHTWorkItemHandler(client, ksession);</p><p>                  MockExternalServiceWorkItemHandler mockExternalServiceWorkItemHandler2 = new MockExternalServiceWorkItemHandler();</p><p>                  </p><p>                  loadedKsession.getWorkItemManager().registerWorkItemHandler("Human Task", localHTWorkItemHandler2);</p><p>                  loadedKsession.getWorkItemManager().registerWorkItemHandler("External Service Call", mockExternalServiceWorkItemHandler2);</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>                //Let's create another instance and start it.</p><p>                  System.out.println(">>> Let's Create Process Instance");</p><p>                  processInstance = loadedKsession.createProcessInstance("com.salaboy.process.AsyncInteractions", params);</p><p>                  System.out.println(">>> Let's Start the Process Instance");</p><p>                  long processInstanceTwo = processInstance.getId();</p><p>                  loadedKsession.startProcessInstance(processInstanceTwo);</p><p>                  System.out.println(">>> Disposing Session");</p><p>                  loadedKsession.dispose();</p><p>                  </p><p>                  </p><p>                  </p><p>                  List<TaskSummary> adminTasks = client.getTasksAssignedAsPotentialOwner("Administrator", "en-UK");</p><p>                  //assertTrue(adminTasks.size() == 1);</p><p>                  System.out.println("adminTasks.size() : "+adminTasks.size());</p><p>                  TaskSummary adminTask = adminTasks.get(0);</p><p>                  </p><p>                  client.start(adminTask.getId(), "Administrator");</p><p>                  </p><p>                  client.complete(adminTask.getId(), "Administrator", null);</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>                  processInstance = ksession.getProcessInstance(processInstance.getId());</p><p>                  //The process instance was completed and it should be out of the Ksession.</p><p>                  //assertNull(processInstance);</p><p>                  if(processInstance==null)</p><p>                  System.out.println("processInstance is null ");</p><p>    </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>          }</p><p>  </p><p>          private static TaskService createTaskService(EntityManagerFactory emf) {</p><p>        org.jbpm.task.service.TaskService taskService = new org.jbpm.task.service.TaskService(emf, SystemEventListenerFactory.getSystemEventListener());</p><p>        Map<String, User> users = new HashMap<String, User>();</p><p>        users.put("salaboy", new User("salaboy"));</p><p>        users.put("Administrator", new User("Administrator"));</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>        Map<String, Group> groups = new HashMap<String, Group>();</p><p>        taskService.addUsersAndGroups(users, groups);</p><p>        TaskService client = new LocalTaskService(taskService);</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>        return client;</p><p>    }</p><p>             </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>}</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>*************************************************************************************************************************</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>and this is the log :</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>log4j:WARN No appenders could be found for logger (bitronix.tm.resource.jdbc.PoolingDataSource).</p><p>log4j:WARN Please initialize the log4j system properly.</p><p><span>log4j:WARN See </span><a class="jive-link-external-small" href="http://logging.apache.org/log4j/1.2/faq.html#noconfig" rel="nofollow" target="_blank">http://logging.apache.org/log4j/1.2/faq.html#noconfig</a><span> for more info.</span></p><p> >>> Let's create a Persistent Knowledge Session</p><p>Hibernate: insert into SessionInfo (id, lastModificationDate, rulesByteArray, startDate, OPTLOCK) values (null, ?, ?, ?, ?)</p><p>Hibernate: select task0_.id as col_0_0_, deadline1_.id as col_1_0_, deadline1_.deadline_date as col_2_0_ from Task task0_, Deadline deadline1_ where task0_.archived=0 and (deadline1_.id in (select startdeadl2_.id from Deadline startdeadl2_ where task0_.id=startdeadl2_.Deadlines_StartDeadLine_Id) or deadline1_.id in (select enddeadlin3_.id from Deadline enddeadlin3_ where task0_.id=enddeadlin3_.Deadlines_EndDeadLine_Id)) and deadline1_.escalated=0 order by deadline1_.deadline_date</p><p>Hibernate: select user0_.id as id8_0_ from OrganizationalEntity user0_ where user0_.id=? and user0_.DTYPE='User'</p><p>Hibernate: insert into OrganizationalEntity (DTYPE, id) values ('User', ?)</p><p>Hibernate: select user0_.id as id8_0_ from OrganizationalEntity user0_ where user0_.id=? and user0_.DTYPE='User'</p><p>Hibernate: insert into OrganizationalEntity (DTYPE, id) values ('User', ?)</p><p>>>> Let's Create Process Instance</p><p>Hibernate: insert into ProcessInstanceInfo (InstanceId, OPTLOCK, processId, startDate, lastReadDate, lastModificationDate, state, processInstanceByteArray) values (null, ?, ?, ?, ?, ?, ?, ?)</p><p>Hibernate: update SessionInfo set lastModificationDate=?, rulesByteArray=?, startDate=?, OPTLOCK=? where id=? and OPTLOCK=?</p><p>Hibernate: update ProcessInstanceInfo set OPTLOCK=?, processId=?, startDate=?, lastReadDate=?, lastModificationDate=?, state=?, processInstanceByteArray=? where InstanceId=? and OPTLOCK=?</p><p>>>> Let's Start the Process Instance</p><p>Hibernate: select processins0_.InstanceId as InstanceId0_0_, processins0_.OPTLOCK as OPTLOCK0_0_, processins0_.processId as processId0_0_, processins0_.startDate as startDate0_0_, processins0_.lastReadDate as lastRead5_0_0_, processins0_.lastModificationDate as lastModi6_0_0_, processins0_.state as state0_0_, processins0_.processInstanceByteArray as processI8_0_0_ from ProcessInstanceInfo processins0_ where processins0_.InstanceId=?</p><p>Hibernate: insert into WorkItemInfo (workItemId, creationDate, name, processInstanceId, state, OPTLOCK, workItemByteArray) values (null, ?, ?, ?, ?, ?, ?)</p><p>Hibernate: select user_.id from OrganizationalEntity user_ where user_.id=?</p><p>Hibernate: insert into Task (id, archived, allowedToDelegate, taskInitiator_id, priority, activationTime, actualOwner_id, completedOn, createdBy_id, createdOn, documentAccessType, documentContentId, documentType, expirationTime, faultAccessType, faultContentId, faultName, faultType, outputAccessType, outputContentId, outputType, parentId, previousStatus, processId, processInstanceId, processSessionId, skipable, status, workItemId, OPTLOCK) values (null, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)</p><p>Hibernate: insert into I18NText (id, language, shortText, text) values (null, ?, ?, ?)</p><p>Hibernate: insert into I18NText (id, language, shortText, text) values (null, ?, ?, ?)</p><p>Hibernate: insert into Content (id, content) values (null, ?)</p><p>Hibernate: update SessionInfo set lastModificationDate=?, rulesByteArray=?, startDate=?, OPTLOCK=? where id=? and OPTLOCK=?</p><p>Hibernate: select eventtypes0_.InstanceId as InstanceId0_, eventtypes0_.element as element0_ from EventTypes eventtypes0_ where eventtypes0_.InstanceId=?</p><p>Hibernate: update ProcessInstanceInfo set OPTLOCK=?, processId=?, startDate=?, lastReadDate=?, lastModificationDate=?, state=?, processInstanceByteArray=? where InstanceId=? and OPTLOCK=?</p><p>Hibernate: update WorkItemInfo set creationDate=?, name=?, processInstanceId=?, state=?, OPTLOCK=?, workItemByteArray=? where workItemId=? and OPTLOCK=?</p><p>Hibernate: update Task set archived=?, allowedToDelegate=?, taskInitiator_id=?, priority=?, activationTime=?, actualOwner_id=?, completedOn=?, createdBy_id=?, createdOn=?, documentAccessType=?, documentContentId=?, documentType=?, expirationTime=?, faultAccessType=?, faultContentId=?, faultName=?, faultType=?, outputAccessType=?, outputContentId=?, outputType=?, parentId=?, previousStatus=?, processId=?, processInstanceId=?, processSessionId=?, skipable=?, status=?, workItemId=?, OPTLOCK=? where id=? and OPTLOCK=?</p><p>Hibernate: update I18NText set Task_Descriptions_Id=? where id=?</p><p>Hibernate: insert into PeopleAssignments_BAs (task_id, entity_id) values (?, ?)</p><p>Exception in thread "main" Hibernate: insert into PeopleAssignments_PotOwners (task_id, entity_id) values (?, ?)</p><p>Hibernate: update I18NText set Task_Subjects_Id=? where id=?</p><p> >>> Looking for Salaboy's Tasks</p><p>Hibernate: select task0_.id as col_0_0_, task0_.processInstanceId as col_1_0_, names5_.text as col_2_0_, subjects3_.text as col_3_0_, descriptio4_.text as col_4_0_, task0_.status as col_5_0_, task0_.priority as col_6_0_, task0_.skipable as col_7_0_, user2_.id as col_8_0_, user1_.id as col_9_0_, task0_.createdOn as col_10_0_, task0_.activationTime as col_11_0_, task0_.expirationTime as col_12_0_, task0_.processId as col_13_0_, task0_.processSessionId as col_14_0_ from Task task0_ left outer join OrganizationalEntity user1_ on task0_.createdBy_id=user1_.id left outer join OrganizationalEntity user2_ on task0_.actualOwner_id=user2_.id left outer join I18NText subjects3_ on task0_.id=subjects3_.Task_Subjects_Id left outer join I18NText descriptio4_ on task0_.id=descriptio4_.Task_Descriptions_Id left outer join I18NText names5_ on task0_.id=names5_.Task_Names_Id, OrganizationalEntity organizati6_ where task0_.archived=0 and (organizati6_.id=? or organizati6_.id in (?)) and (organizati6_.id in (select potentialo7_.entity_id from PeopleAssignments_PotOwners potentialo7_ where task0_.id=potentialo7_.task_id)) and (names5_.language=? or (select count(names8_.Task_Names_Id) from I18NText names8_ where task0_.id=names8_.Task_Names_Id)=0) and (subjects3_.language=? or (select count(subjects9_.Task_Subjects_Id) from I18NText subjects9_ where task0_.id=subjects9_.Task_Subjects_Id)=0) and (descriptio4_.language=? or (select count(descriptio10_.Task_Descriptions_Id) from I18NText descriptio10_ where task0_.id=descriptio10_.Task_Descriptions_Id)=0) and (task0_.status in ('Created' , 'Ready' , 'Reserved' , 'InProgress' , 'Suspended')) and (task0_.expirationTime is null)</p><p>Hibernate: select user0_.id as id8_0_ from OrganizationalEntity user0_ where user0_.id=? and user0_.DTYPE='User'</p><p>salaboysTasks.size() : 1</p><p> >>> Starting Salaboy's Task</p><p>Hibernate: update Task set archived=?, allowedToDelegate=?, taskInitiator_id=?, priority=?, activationTime=?, actualOwner_id=?, completedOn=?, createdBy_id=?, createdOn=?, documentAccessType=?, documentContentId=?, documentType=?, expirationTime=?, faultAccessType=?, faultContentId=?, faultName=?, faultType=?, outputAccessType=?, outputContentId=?, outputType=?, parentId=?, previousStatus=?, processId=?, processInstanceId=?, processSessionId=?, skipable=?, status=?, workItemId=?, OPTLOCK=? where id=? and OPTLOCK=?</p><p> >>> Completing Salaboy's Task</p><p>Hibernate: update Task set archived=?, allowedToDelegate=?, taskInitiator_id=?, priority=?, activationTime=?, actualOwner_id=?, completedOn=?, createdBy_id=?, createdOn=?, documentAccessType=?, documentContentId=?, documentType=?, expirationTime=?, faultAccessType=?, faultContentId=?, faultName=?, faultType=?, outputAccessType=?, outputContentId=?, outputType=?, parentId=?, previousStatus=?, processId=?, processInstanceId=?, processSessionId=?, skipable=?, status=?, workItemId=?, OPTLOCK=? where id=? and OPTLOCK=?</p><p>Hibernate: select workitemin0_.workItemId as workItemId16_0_, workitemin0_.creationDate as creation2_16_0_, workitemin0_.name as name16_0_, workitemin0_.processInstanceId as processI4_16_0_, workitemin0_.state as state16_0_, workitemin0_.OPTLOCK as OPTLOCK16_0_, workitemin0_.workItemByteArray as workItem7_16_0_ from WorkItemInfo workitemin0_ where workitemin0_.workItemId=?</p><p>Hibernate: select processins0_.InstanceId as InstanceId0_0_, processins0_.OPTLOCK as OPTLOCK0_0_, processins0_.processId as processId0_0_, processins0_.startDate as startDate0_0_, processins0_.lastReadDate as lastRead5_0_0_, processins0_.lastModificationDate as lastModi6_0_0_, processins0_.state as state0_0_, processins0_.processInstanceByteArray as processI8_0_0_ from ProcessInstanceInfo processins0_ where processins0_.InstanceId=?</p><p>Hibernate: insert into WorkItemInfo (workItemId, creationDate, name, processInstanceId, state, OPTLOCK, workItemByteArray) values (null, ?, ?, ?, ?, ?, ?)</p><p>>>> Completing an External Interaction</p><p>Hibernate: insert into WorkItemInfo (workItemId, creationDate, name, processInstanceId, state, OPTLOCK, workItemByteArray) values (null, ?, ?, ?, ?, ?, ?)</p><p>Hibernate: select user_.id from OrganizationalEntity user_ where user_.id=?</p><p>Hibernate: insert into Task (id, archived, allowedToDelegate, taskInitiator_id, priority, activationTime, actualOwner_id, completedOn, createdBy_id, createdOn, documentAccessType, documentContentId, documentType, expirationTime, faultAccessType, faultContentId, faultName, faultType, outputAccessType, outputContentId, outputType, parentId, previousStatus, processId, processInstanceId, processSessionId, skipable, status, workItemId, OPTLOCK) values (null, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)</p><p>Hibernate: insert into I18NText (id, language, shortText, text) values (null, ?, ?, ?)</p><p>Hibernate: insert into I18NText (id, language, shortText, text) values (null, ?, ?, ?)</p><p>Hibernate: insert into Content (id, content) values (null, ?)</p><p>Hibernate: select eventtypes0_.InstanceId as InstanceId0_, eventtypes0_.element as element0_ from EventTypes eventtypes0_ where eventtypes0_.InstanceId=?</p><p>Hibernate: update ProcessInstanceInfo set OPTLOCK=?, processId=?, startDate=?, lastReadDate=?, lastModificationDate=?, state=?, processInstanceByteArray=? where InstanceId=? and OPTLOCK=?</p><p>Hibernate: update WorkItemInfo set creationDate=?, name=?, processInstanceId=?, state=?, OPTLOCK=?, workItemByteArray=? where workItemId=? and OPTLOCK=?</p><p>Hibernate: insert into EventTypes (InstanceId, element) values (?, ?)</p><p>Hibernate: delete from WorkItemInfo where workItemId=? and OPTLOCK=?</p><p>Hibernate: delete from WorkItemInfo where workItemId=? and OPTLOCK=?</p><p>Hibernate: update Task set archived=?, allowedToDelegate=?, taskInitiator_id=?, priority=?, activationTime=?, actualOwner_id=?, completedOn=?, createdBy_id=?, createdOn=?, documentAccessType=?, documentContentId=?, documentType=?, expirationTime=?, faultAccessType=?, faultContentId=?, faultName=?, faultType=?, outputAccessType=?, outputContentId=?, outputType=?, parentId=?, previousStatus=?, processId=?, processInstanceId=?, processSessionId=?, skipable=?, status=?, workItemId=?, OPTLOCK=? where id=? and OPTLOCK=?</p><p>Hibernate: update I18NText set Task_Descriptions_Id=? where id=?</p><p>Hibernate: insert into PeopleAssignments_BAs (task_id, entity_id) values (?, ?)</p><p>Hibernate: insert into PeopleAssignments_PotOwners (task_id, entity_id) values (?, ?)</p><p>Hibernate: update I18NText set Task_Subjects_Id=? where id=?</p><p>>>> Disposing Session</p><p>Hibernate: select sessioninf0_.id as id15_0_, sessioninf0_.lastModificationDate as lastModi2_15_0_, sessioninf0_.rulesByteArray as rulesByt3_15_0_, sessioninf0_.startDate as startDate15_0_, sessioninf0_.OPTLOCK as OPTLOCK15_0_ from SessionInfo sessioninf0_ where sessioninf0_.id=?</p><p>>>> Let's Create Process Instance</p><p>Hibernate: insert into ProcessInstanceInfo (InstanceId, OPTLOCK, processId, startDate, lastReadDate, lastModificationDate, state, processInstanceByteArray) values (null, ?, ?, ?, ?, ?, ?, ?)</p><p>Hibernate: update SessionInfo set lastModificationDate=?, rulesByteArray=?, startDate=?, OPTLOCK=? where id=? and OPTLOCK=?</p><p>Hibernate: update ProcessInstanceInfo set OPTLOCK=?, processId=?, startDate=?, lastReadDate=?, lastModificationDate=?, state=?, processInstanceByteArray=? where InstanceId=? and OPTLOCK=?</p><p>>>> Let's Start the Process Instance</p><p>Hibernate: select processins0_.InstanceId as InstanceId0_0_, processins0_.OPTLOCK as OPTLOCK0_0_, processins0_.processId as processId0_0_, processins0_.startDate as startDate0_0_, processins0_.lastReadDate as lastRead5_0_0_, processins0_.lastModificationDate as lastModi6_0_0_, processins0_.state as state0_0_, processins0_.processInstanceByteArray as processI8_0_0_ from ProcessInstanceInfo processins0_ where processins0_.InstanceId=?</p><p>Hibernate: insert into WorkItemInfo (workItemId, creationDate, name, processInstanceId, state, OPTLOCK, workItemByteArray) values (null, ?, ?, ?, ?, ?, ?)</p><p>org.jbpm.workflow.instance.WorkflowRuntimeException: [com.salaboy.process.AsyncInteractions:2 - User Interaction 1:2] -- Illegal method call. This session was previously disposed.</p><p>          at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:132)</p><p>          at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)</p><p>          at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)</p><p>          at org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49)</p><p>          at org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41)</p><p>          at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)</p><p>          at org.jbpm.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:35)</p><p>          at org.jbpm.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:194)</p><p>          at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:309)</p><p>          at org.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:170)</p><p>          at org.drools.common.AbstractWorkingMemory.startProcessInstance(AbstractWorkingMemory.java:1108)</p><p>          at org.drools.impl.StatefulKnowledgeSessionImpl.startProcessInstance(StatefulKnowledgeSessionImpl.java:330)</p><p>          at org.drools.command.runtime.process.StartProcessInstanceCommand.execute(StartProcessInstanceCommand.java:46)</p><p>          at org.drools.command.runtime.process.StartProcessInstanceCommand.execute(StartProcessInstanceCommand.java:25)</p><p>          at org.drools.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36)</p><p>          at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:373)</p><p>          at org.drools.command.impl.CommandBasedStatefulKnowledgeSession.startProcessInstance(CommandBasedStatefulKnowledgeSession.java:237)</p><p>          at com.salaboy.jbpm5.MytestMain.main(MytestMain.java:171)</p><p>Caused by: java.lang.IllegalStateException: Illegal method call. This session was previously disposed.</p><p>          at org.drools.reteoo.DisposedReteooWorkingMemory.getProcessInstance(DisposedReteooWorkingMemory.java:382)</p><p>          at org.drools.impl.StatefulKnowledgeSessionImpl.getProcessInstance(StatefulKnowledgeSessionImpl.java:297)</p><p>          at org.drools.command.runtime.process.GetProcessInstanceCommand.execute(GetProcessInstanceCommand.java:48)</p><p>          at org.drools.command.runtime.process.GetProcessInstanceCommand.execute(GetProcessInstanceCommand.java:25)</p><p>          at org.drools.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36)</p><p>          at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:373)</p><p>          at org.drools.command.impl.CommandBasedStatefulKnowledgeSession.getProcessInstance(CommandBasedStatefulKnowledgeSession.java:125)</p><p>          at org.jbpm.process.workitem.wsht.AbstractHTWorkItemHandler.createTaskBasedOnWorkItemParams(AbstractHTWorkItemHandler.java:105)</p><p>          at org.jbpm.process.workitem.wsht.GenericHTWorkItemHandler.executeWorkItem(GenericHTWorkItemHandler.java:178)</p><p>          at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.internalExecuteWorkItem(JPAWorkItemManager.java:55)</p><p>          at org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:107)</p><p>          at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)</p><p>          ... 17 more</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><span style="color: #555555; font-family: 'Lucida Sans', 'Lucida Sans Unicode', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; background-color: #ffffff;"><br/></span></p></div>
<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
<p style="margin: 0;">Reply to this message by <a href="https://community.jboss.org/message/798071#798071">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in jBPM Development at <a href="https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2035">Community</a></p>
</div></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>