Feki Ahmed [
https://community.jboss.org/people/bardelman] created the discussion
"org.jbpm.workflow.instance.WorkflowRuntimeException: -- Illegal method call. This
session was previously disposed."
To view the discussion, visit:
https://community.jboss.org/message/798071#798071
--------------------------------------------------------------
Hi,
i ve a simple java class with a main which i m using such as a test case.
All what i want to achieve is to get user task's from a loaded session which was
previousely started and disposed.
i ve already seen questions asked about this issue(here:
https://community.jboss.org/thread/201901 https://community.jboss.org/thread/201901) but
still didn't find a solution for it anywhere. it s said that the session is disposed
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 transaction boundaries
and how to know when it is completed.
this is the class with the main :
*************************************************************************************************************************
package com.salaboy.jbpm5;
import bitronix.tm.TransactionManagerServices;
import bitronix.tm.resource.jdbc.PoolingDataSource;
import com.salaboy.model.Person;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.SystemEventListenerFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderError;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.impl.EnvironmentFactory;
import org.drools.io.impl.ClassPathResource;
import org.drools.persistence.jpa.JPAKnowledgeService;
import org.drools.runtime.*;
import org.drools.runtime.process.ProcessInstance;
import org.jbpm.process.workitem.wsht.LocalHTWorkItemHandler;
import org.jbpm.task.Group;
import org.jbpm.task.TaskService;
import org.jbpm.task.User;
import org.jbpm.task.query.TaskSummary;
import org.jbpm.task.service.local.LocalTaskService;
public class MytestMain {
private static PoolingDataSource ds;
public static void main(String[] args) {
ds = new PoolingDataSource();
//System.setProperty("java.naming.factory.initial",
"bitronix.tm.jndi.BitronixInitialContextFactory");
ds.setUniqueName("jdbc/testDS1");
//NON XA CONFIGS
ds.setClassName("org.h2.jdbcx.JdbcDataSource");
ds.setMaxPoolSize(3);
ds.setAllowLocalTransactions(true);
ds.getDriverProperties().put("user", "sa");
ds.getDriverProperties().put("password", "sasa");
ds.getDriverProperties().put("URL",
"jdbc:h2:mem:mydb");
//XA CONFIGS
//
ds.setClassName("bitronix.tm.resource.jdbc.lrc.LrcXADataSource");
// ds.setMaxPoolSize(3);
// ds.setAllowLocalTransactions(true);
// ds.getDriverProperties().put("user", "sa");
// ds.getDriverProperties().put("password", "sasa");
// ds.getDriverProperties().put("Url",
"jdbc:h2:mem:mydb");
// ds.getDriverProperties().put("driverClassName",
"org.h2.Driver");
ds.init();
///// FIN INITIALISATION
KnowledgeBuilder kbuilder =
KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(new
ClassPathResource("process-async-interactions.bpmn"), ResourceType.BPMN2);
if (kbuilder.hasErrors()) {
for (KnowledgeBuilderError error : kbuilder.getErrors()) {
System.out.println(">>> Error:" +
error.getMessage());
}
fail(">>> Knowledge couldn't be parsed! ");
}
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
Environment env = EnvironmentFactory.newEnvironment();
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("org.jbpm.runtime.ht");
env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);
env.set(EnvironmentName.TRANSACTION_MANAGER,
TransactionManagerServices.getTransactionManager());
// Let's create a Persistence Knowledge Session
System.out.println(" >>> Let's create a Persistent
Knowledge Session");
final StatefulKnowledgeSession ksession =
JPAKnowledgeService.newStatefulKnowledgeSession(kbase, null, env);
int sessionId = ksession.getId();
// assertNotNull(sessionId);
// assertTrue(sessionId != 0);
// We need to register the WorkItems and Listeners that the session will
use
TaskService client = createTaskService(emf);
LocalHTWorkItemHandler localHTWorkItemHandler = new
LocalHTWorkItemHandler(client, ksession);
MockExternalServiceWorkItemHandler mockExternalServiceWorkItemHandler =
new MockExternalServiceWorkItemHandler();
ksession.getWorkItemManager().registerWorkItemHandler("Human
Task", localHTWorkItemHandler);
ksession.getWorkItemManager().registerWorkItemHandler("External
Service Call", mockExternalServiceWorkItemHandler);
//KnowledgeRuntimeLoggerFactory.newConsoleLogger(ksession);
// Let's create a Process Instance
Person person = new Person("Salaboy", 29);
Map<String, Object> params = new HashMap<String, Object>();
params.put("person", person);
//Each Command will generate an interaction
System.out.println(">>> Let's Create Process
Instance");
ProcessInstance processInstance =
ksession.createProcessInstance("com.salaboy.process.AsyncInteractions",
params);
System.out.println(">>> Let's Start the Process
Instance");
processInstance =
ksession.startProcessInstance(processInstance.getId());
System.out.println(" >>> Looking for Salaboy's
Tasks");
List<TaskSummary> salaboysTasks =
client.getTasksAssignedAsPotentialOwner("salaboy", "en-UK");
//assertTrue(salaboysTasks.size() == 1);
System.out.println("salaboysTasks.size() :
"+salaboysTasks.size());
TaskSummary salaboyTask = salaboysTasks.get(0);
System.out.println(" >>> Starting Salaboy's
Task");
client.start(salaboyTask.getId(), "salaboy");
System.out.println(" >>> Completing Salaboy's
Task");
client.complete(salaboyTask.getId(), "salaboy", null);
System.out.println(">>> Disposing Session");
ksession.dispose();
// Let's reload the session and create a different process instance
inside it
StatefulKnowledgeSession loadedKsession =
JPAKnowledgeService.loadStatefulKnowledgeSession(sessionId, kbase, null, env);
// All the listeners and WorkItemHandlers are volatile, so we need to
register them each time that we reload the session
// from the DB.
LocalHTWorkItemHandler localHTWorkItemHandler2 = new
LocalHTWorkItemHandler(client, ksession);
MockExternalServiceWorkItemHandler mockExternalServiceWorkItemHandler2 =
new MockExternalServiceWorkItemHandler();
loadedKsession.getWorkItemManager().registerWorkItemHandler("Human
Task", localHTWorkItemHandler2);
loadedKsession.getWorkItemManager().registerWorkItemHandler("External Service
Call", mockExternalServiceWorkItemHandler2);
//Let's create another instance and start it.
System.out.println(">>> Let's Create Process
Instance");
processInstance =
loadedKsession.createProcessInstance("com.salaboy.process.AsyncInteractions",
params);
System.out.println(">>> Let's Start the Process
Instance");
long processInstanceTwo = processInstance.getId();
loadedKsession.startProcessInstance(processInstanceTwo);
System.out.println(">>> Disposing Session");
loadedKsession.dispose();
List<TaskSummary> adminTasks =
client.getTasksAssignedAsPotentialOwner("Administrator", "en-UK");
//assertTrue(adminTasks.size() == 1);
System.out.println("adminTasks.size() : "+adminTasks.size());
TaskSummary adminTask = adminTasks.get(0);
client.start(adminTask.getId(), "Administrator");
client.complete(adminTask.getId(), "Administrator", null);
processInstance = ksession.getProcessInstance(processInstance.getId());
//The process instance was completed and it should be out of the
Ksession.
//assertNull(processInstance);
if(processInstance==null)
System.out.println("processInstance is null ");
}
private static TaskService createTaskService(EntityManagerFactory emf) {
org.jbpm.task.service.TaskService taskService = new
org.jbpm.task.service.TaskService(emf,
SystemEventListenerFactory.getSystemEventListener());
Map<String, User> users = new HashMap<String, User>();
users.put("salaboy", new User("salaboy"));
users.put("Administrator", new User("Administrator"));
Map<String, Group> groups = new HashMap<String, Group>();
taskService.addUsersAndGroups(users, groups);
TaskService client = new LocalTaskService(taskService);
return client;
}
}
*************************************************************************************************************************
and this is the log :
log4j:WARN No appenders could be found for logger
(bitronix.tm.resource.jdbc.PoolingDataSource).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See
http://logging.apache.org/log4j/1.2/faq.html#noconfig
http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
>> Let's create a Persistent Knowledge Session
Hibernate: insert into SessionInfo (id, lastModificationDate, rulesByteArray,
startDate, OPTLOCK) values (null, ?, ?, ?, ?)
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
Hibernate: select user0_.id as id8_0_ from OrganizationalEntity user0_ where user0_.id=?
and user0_.DTYPE='User'
Hibernate: insert into OrganizationalEntity (DTYPE, id) values ('User', ?)
Hibernate: select user0_.id as id8_0_ from OrganizationalEntity user0_ where user0_.id=?
and user0_.DTYPE='User'
Hibernate: insert into OrganizationalEntity (DTYPE, id) values ('User', ?)
>> Let's Create Process Instance
Hibernate: insert
into ProcessInstanceInfo (InstanceId, OPTLOCK, processId, startDate, lastReadDate,
lastModificationDate, state, processInstanceByteArray) values (null, ?, ?, ?, ?, ?, ?, ?)
Hibernate: update SessionInfo set lastModificationDate=?, rulesByteArray=?, startDate=?,
OPTLOCK=? where id=? and OPTLOCK=?
Hibernate: update ProcessInstanceInfo set OPTLOCK=?, processId=?, startDate=?,
lastReadDate=?, lastModificationDate=?, state=?, processInstanceByteArray=? where
InstanceId=? and OPTLOCK=?
>> Let's Start the Process Instance
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=?
Hibernate: insert into WorkItemInfo (workItemId, creationDate, name, processInstanceId,
state, OPTLOCK, workItemByteArray) values (null, ?, ?, ?, ?, ?, ?)
Hibernate: select user_.id from OrganizationalEntity user_ where user_.id=?
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, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: insert into I18NText (id, language, shortText, text) values (null, ?, ?, ?)
Hibernate: insert into I18NText (id, language, shortText, text) values (null, ?, ?, ?)
Hibernate: insert into Content (id, content) values (null, ?)
Hibernate: update SessionInfo set lastModificationDate=?, rulesByteArray=?, startDate=?,
OPTLOCK=? where id=? and OPTLOCK=?
Hibernate: select eventtypes0_.InstanceId as InstanceId0_, eventtypes0_.element as
element0_ from EventTypes eventtypes0_ where eventtypes0_.InstanceId=?
Hibernate: update ProcessInstanceInfo set OPTLOCK=?, processId=?, startDate=?,
lastReadDate=?, lastModificationDate=?, state=?, processInstanceByteArray=? where
InstanceId=? and OPTLOCK=?
Hibernate: update WorkItemInfo set creationDate=?, name=?, processInstanceId=?, state=?,
OPTLOCK=?, workItemByteArray=? where workItemId=? and OPTLOCK=?
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=?
Hibernate: update I18NText set Task_Descriptions_Id=? where id=?
Hibernate: insert into PeopleAssignments_BAs (task_id, entity_id) values (?, ?)
Exception in thread "main" Hibernate: insert into PeopleAssignments_PotOwners
(task_id, entity_id) values (?, ?)
Hibernate: update I18NText set Task_Subjects_Id=? where id=?
>> Looking for Salaboy's Tasks
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)
Hibernate: select user0_.id as id8_0_ from OrganizationalEntity user0_ where user0_.id=?
and user0_.DTYPE='User'
salaboysTasks.size() : 1
>> Starting Salaboy's Task
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=?
>> Completing Salaboy's Task
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=?
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=?
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=?
Hibernate: insert into WorkItemInfo (workItemId, creationDate, name, processInstanceId,
state, OPTLOCK, workItemByteArray) values (null, ?, ?, ?, ?, ?, ?)
>> Completing an External Interaction
Hibernate: insert
into WorkItemInfo (workItemId, creationDate, name, processInstanceId, state, OPTLOCK,
workItemByteArray) values (null, ?, ?, ?, ?, ?, ?)
Hibernate: select user_.id from OrganizationalEntity user_ where user_.id=?
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, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: insert into I18NText (id, language, shortText, text) values (null, ?, ?, ?)
Hibernate: insert into I18NText (id, language, shortText, text) values (null, ?, ?, ?)
Hibernate: insert into Content (id, content) values (null, ?)
Hibernate: select eventtypes0_.InstanceId as InstanceId0_, eventtypes0_.element as
element0_ from EventTypes eventtypes0_ where eventtypes0_.InstanceId=?
Hibernate: update ProcessInstanceInfo set OPTLOCK=?, processId=?, startDate=?,
lastReadDate=?, lastModificationDate=?, state=?, processInstanceByteArray=? where
InstanceId=? and OPTLOCK=?
Hibernate: update WorkItemInfo set creationDate=?, name=?, processInstanceId=?, state=?,
OPTLOCK=?, workItemByteArray=? where workItemId=? and OPTLOCK=?
Hibernate: insert into EventTypes (InstanceId, element) values (?, ?)
Hibernate: delete from WorkItemInfo where workItemId=? and OPTLOCK=?
Hibernate: delete from WorkItemInfo where workItemId=? and OPTLOCK=?
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=?
Hibernate: update I18NText set Task_Descriptions_Id=? where id=?
Hibernate: insert into PeopleAssignments_BAs (task_id, entity_id) values (?, ?)
Hibernate: insert into PeopleAssignments_PotOwners (task_id, entity_id) values (?, ?)
Hibernate: update I18NText set Task_Subjects_Id=? where id=?
>> Disposing Session
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=?
>> Let's Create Process Instance
Hibernate: insert
into ProcessInstanceInfo (InstanceId, OPTLOCK, processId, startDate, lastReadDate,
lastModificationDate, state, processInstanceByteArray) values (null, ?, ?, ?, ?, ?, ?, ?)
Hibernate: update SessionInfo set lastModificationDate=?, rulesByteArray=?, startDate=?,
OPTLOCK=? where id=? and OPTLOCK=?
Hibernate: update ProcessInstanceInfo set OPTLOCK=?, processId=?, startDate=?,
lastReadDate=?, lastModificationDate=?, state=?, processInstanceByteArray=? where
InstanceId=? and OPTLOCK=?
>> Let's Start the Process Instance
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=?
Hibernate: insert into WorkItemInfo (workItemId, creationDate, name, processInstanceId,
state, OPTLOCK, workItemByteArray) values (null, ?, ?, ?, ?, ?, ?)
org.jbpm.workflow.instance.WorkflowRuntimeException:
[com.salaboy.process.AsyncInteractions:2 - User Interaction 1:2] -- Illegal method call.
This session was previously disposed.
at
org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:132)
at
org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:279)
at
org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:238)
at
org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49)
at
org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41)
at
org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
at
org.jbpm.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:35)
at
org.jbpm.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:194)
at
org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:309)
at
org.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:170)
at
org.drools.common.AbstractWorkingMemory.startProcessInstance(AbstractWorkingMemory.java:1108)
at
org.drools.impl.StatefulKnowledgeSessionImpl.startProcessInstance(StatefulKnowledgeSessionImpl.java:330)
at
org.drools.command.runtime.process.StartProcessInstanceCommand.execute(StartProcessInstanceCommand.java:46)
at
org.drools.command.runtime.process.StartProcessInstanceCommand.execute(StartProcessInstanceCommand.java:25)
at
org.drools.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36)
at
org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:373)
at
org.drools.command.impl.CommandBasedStatefulKnowledgeSession.startProcessInstance(CommandBasedStatefulKnowledgeSession.java:237)
at com.salaboy.jbpm5.MytestMain.main(MytestMain.java:171)
Caused by: java.lang.IllegalStateException: Illegal method call. This session was
previously disposed.
at
org.drools.reteoo.DisposedReteooWorkingMemory.getProcessInstance(DisposedReteooWorkingMemory.java:382)
at
org.drools.impl.StatefulKnowledgeSessionImpl.getProcessInstance(StatefulKnowledgeSessionImpl.java:297)
at
org.drools.command.runtime.process.GetProcessInstanceCommand.execute(GetProcessInstanceCommand.java:48)
at
org.drools.command.runtime.process.GetProcessInstanceCommand.execute(GetProcessInstanceCommand.java:25)
at
org.drools.command.impl.DefaultCommandService.execute(DefaultCommandService.java:36)
at
org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:373)
at
org.drools.command.impl.CommandBasedStatefulKnowledgeSession.getProcessInstance(CommandBasedStatefulKnowledgeSession.java:125)
at
org.jbpm.process.workitem.wsht.AbstractHTWorkItemHandler.createTaskBasedOnWorkItemParams(AbstractHTWorkItemHandler.java:105)
at
org.jbpm.process.workitem.wsht.GenericHTWorkItemHandler.executeWorkItem(GenericHTWorkItemHandler.java:178)
at
org.drools.persistence.jpa.processinstance.JPAWorkItemManager.internalExecuteWorkItem(JPAWorkItemManager.java:55)
at
org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:107)
at
org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:126)
... 17 more
--------------------------------------------------------------
Reply to this message by going to Community
[
https://community.jboss.org/message/798071#798071]
Start a new discussion in jBPM Development at Community
[
https://community.jboss.org/choose-container!input.jspa?contentType=1&...]