Hi,

When I started to using drools flow persistence, I was getting the same error "java.lang.IllegalStateException: EntityManager is closed". After a lot of time I figured out that I was using the command "ksession.dispose();" and when I removed this command everything worked fine.

Regards,
Anderson

2010/11/23 raic <agomezcom@gmail.com>

Hi,

I'm having problems using drools flow persistance with human tasks. I'm
using drools server.

On one hand, I have my test application, which starts a MinaTaskServer for
registering human tasks, and then, the application generates JSON commands
for executing a flow with human tasks on the execution server.

Without using flow persistence, this is working ok, i'm able to retrieve the
pending tasks and completing them without problems.

When I try to configure flow persistence on the execution server, i can
start the process, the tasks are registered ok and drools flow tables are
generated in my database (processinstanceinfo,sessioninfo,workiteminfo...)
with the correct flow information. The problem appears when i retrieve a
pending task, and then, i want to complete it. It seems that the
communication between MinaTaskServer and ExecutionServer is not ok.

The error i'm getting is the following:


[2010:11:327 18:11:661:debug] Message receieved on client :
EventTriggerResponse

[2010:11:327 18:11:661:debug] Arguments :
[org.drools.task.event.EventPayload@1b2df13]
Task completed 1
[2010:11:327 18:11:661:debug] Message receieved on client :
EventTriggerResponse
[2010:11:327 18:11:661:debug] Arguments :
[org.drools.task.event.EventPayload@1f7c6e1]
Task completed 1
[2010:11:327 18:11:770:debug] Message receieved on client : GetTaskResponse
[2010:11:327 18:11:770:debug] Arguments : [org.drools.task.Task@d17fbb51]
[2010:11:327 18:11:770:exception] Uncaught exception on client
java.lang.IllegalStateException: EntityManager is closed
at org.hibernate.ejb.EntityManagerImpl.getSession(EntityManagerImpl.java
:66)
       at
org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:182)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
       at java.lang.reflect.Method.invoke(Unknown Source)
       at
org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:358)
       at $Proxy132.find(Unknown Source)
       at
org.drools.persistence.processinstance.JPAWorkItemManager.completeWorkItem(JPAWorkItemManager.java:88)
       at
org.drools.process.workitem.wsht.WSHumanTaskHandler$GetCompletedTaskResponseHandler.execute(WSHumanTaskHandler.java:250)
       at
org.drools.task.service.TaskClientHandler.messageReceived(TaskClientHandler.java:80)
       at
org.drools.task.service.mina.MinaTaskClientHandler.messageReceived(MinaTaskClientHandler.java:47)
       at
org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:713)
       at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
       at
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
       at
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:793)
       at
org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flush(ProtocolCodecFilter.java:375)
       at
org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:229)
       at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
       at
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
       at
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:793)
       at
org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119)
       at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
       at
org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426)
       at
org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:638)
       at
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:598)
       at
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:587)
       at
org.apache.mina.core.polling.AbstractPollingIoProcessor.access$400(AbstractPollingIoProcessor.java:61)
       at
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:969)
       at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
       at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
Source
)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown
Source)
       at java.lang.Thread.run(Unknown Source)




And here is my configuration:


knowledge-services.xml  (spring configuration)



<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:drools="http://drools.org/schema/drools-spring"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
                       http://drools.org/schema/drools-spring
http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring-1.0.0.xsd">

       <bean id="ds"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
               <property name="driverClassName" value="com.mysql.jdbc.Driver" />
               <property name="url" value="jdbc:mysql://localhost:3306/drools_flow" />
               <property name="username" value="user" />
               <property name="password" value="pass" />


       </bean>

       <drools:connection id="connection1" type="local" />
       <drools:execution-node id="node1" connection="connection1" />

       <drools:kbase id="kbProcessWorkItems" node="node1">
           <drools:resources>
                                   <drools:resource  type="CHANGE_SET"
source="classpath:changeset.xml"/>
               </drools:resources>
       </drools:kbase>

       <bean id="myEmf"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
               <property name="dataSource" ref="ds" />
               <property name="persistenceUnitName"
value="org.drools.persistence.jpa.local" />
       </bean>

       <bean id="txManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
               <property name="entityManagerFactory" ref="myEmf" />
       </bean>

       <drools:kstore id="kstore1" />

       <drools:ksession id="ksession1" type="stateful"  kbase="kbProcessWorkItems"
node="node1">
           <drools:configuration>
                       <drools:jpa-persistence>
                   <drools:transaction-manager ref="txManager" />
                   <drools:entity-manager-factory ref="myEmf" />
                               <drools:variable-persisters>
                                       <drools:persister for-class="javax.persistence.Entity"
implementation="org.drools.persistence.processinstance.persisters.JPAVariablePersister"/>
                               </drools:variable-persisters>
                   </drools:jpa-persistence>
           </drools:configuration>
       </drools:ksession>

</beans>



And here my persistence.xml:


<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"
               xmlns:orm="http://java.sun.com/xml/ns/persistence/orm"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="
                               http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd
                               http://java.sun.com/xml/ns/persistence/orm
http://java.sun.com/xml/ns/persistence/orm_1_0.xsd">

       <persistence-unit name="org.drools.persistence.jpa.local"
transaction-type="RESOURCE_LOCAL">
               <provider>org.hibernate.ejb.HibernatePersistence</provider>

               <class>org.drools.persistence.session.SessionInfo</class>
               <class>org.drools.persistence.processinstance.ProcessInstanceInfo</class>

<class>org.drools.persistence.processinstance.WorkItemInfo</class>

<class>org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo</class>

<class>org.drools.persistence.processinstance.variabletypes.JPAPersistedVariable</class>

               <!-- my persistent variables -->
               <class>com.sample.bussiness.model.ClientModel</class>
               <properties>
                       <property name="hibernate.dialect"
value="org.hibernate.dialect.MySQL5Dialect"/>
                       <property name="hibernate.max_fetch_depth" value="3" />
                       <property name="hibernate.hbm2ddl.auto" value="create" />
                       <property name="hibernate.show_sql" value="false" />
               </properties>
       </persistence-unit>
</persistence>



I've seen some examples that uses bitronix but i'm not using it, i don't
know if that is the problem...


Some ideas?

Thanks







--
View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Problem-persisting-human-tasks-tp1954934p1954934.html
Sent from the Drools - User mailing list archive at Nabble.com.
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users