[rules-users] Problem persisting human tasks

Anderson Neves anderson.ufal at gmail.com
Mon Mar 7 18:29:29 EST 2011


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 at 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 at 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 at 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 at 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 at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110307/8af0c0ed/attachment.html 


More information about the rules-users mailing list