I will have a look to your use case as it is not yet covered and will perhaps require that we modify the kie-camel component
On Wed, Jun 4, 2014 at 6:02 PM, s b <scerqu...@gmail.com> wrote: > I'm testing the drools new version (6.1.0.Beta4) but I have a problem with > the Stateful Drools Session. > > I have deployed in JBoss Fuse ESB the last versión of the drools (drools > camel, jbpm, spring, etc), I have atached my camel context bundle (It's a > maven project). > > This is my camel-context > > <?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:kie="http://drools.org/schema/kie-spring" > xsi:schemaLocation=" > http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-3.0.xsd > http://drools.org/schema/kie-spring > http://drools.org/schema/kie-spring.xsd > http://camel.apache.org/schema/spring > http://camel.apache.org/schema/spring/camel-spring.xsd"> > > > > <kie:kmodule id="kModule"> > <kie:kbase name="rules" packages="rules"> > <kie:ksession name="ksession1" type="stateful"> > <!--<kie:batch> > <kie:fire-all-rules/> > </kie:batch> --> > <kie:configuration> > <kie:jpa-persistence> > <kie:transaction-manager ref="txManager"/> > <kie:entity-manager-factory ref="myEmf"/> > </kie:jpa-persistence> > </kie:configuration> > > > </kie:ksession> > </kie:kbase> > </kie:kmodule> > > <kie:environment id="env"> > <kie:entity-manager-factory ref="myEmf"/> > <kie:transaction-manager ref="txManager"/> > </kie:environment> > > > <bean class="org.postgresql.ds.PGPoolingDataSource" id="jbpm-ds"> > <property name="serverName" value="localhost"></property> > <property name="databaseName" value="drools"></property> > <property name="portNumber" value="5432"></property> > <property name="user" value="DWP"></property> > <property name="password" value="DWP"></property> > </bean> > > > <bean id="myEmf" > class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> > <property name="dataSource" ref="jbpm-ds"/> > <property name="persistenceUnitName" > value="org.jbpm.persistence.jpa.local"/> > </bean> > > <bean id="txManager" > class="org.springframework.orm.jpa.JpaTransactionManager"> > <property name="entityManagerFactory" ref="myEmf"/> > </bean> > > <bean id="kiePostProcessor" > class="org.drools.osgi.spring.OsgiKModuleBeanFactoryPostProcessor"/> > > <bean id="fireALlRulesCommand" > class="com.execute.command.FireAllRules"/> > > <camelContext xmlns="http://camel.apache.org/schema/spring"> > <route trace="false" id="testRoute"> > <from uri="timer:testRoute?period=10s"/> > <to uri="log:message"/> > <to uri="kie:ksession1?action=insertBody" id="AgeVerification"/> > > <bean method="fireAllRules" ref="fireALlRulesCommand"/> > <to uri="kie:ksession1?action=execute"/> > > </route> > </camelContext> > > </beans> > > As you can see it is an scenario where Drools is in an stateful session > with persistence configured. > > The bundle is executed without errors but I want that Drools executes my > rules each time that the route is executed ( fireUntilHalt mode but I > wasn't able as seems that this command is not availble in a persisted > environment ), for this reason I've created a bean with the command: > fireAllRules and I use <to uri="kie:ksession1?action=execute"/> to execute > the rules but the problem is that the rules are only executed the first > time, only the first time and never in subsequents executions of the route. > > The persistece seems to work well ( I can see the datamodel created and > populated as expeted in the DB ). > > However if I change to use stateless mode ( no persistence then ), the > rules are executed each time that route is executed ( as expected ), and > therefore I don´t need the command fireAllRules > <bean method="fireAllRules" ref="fireALlRulesCommand"/> > <to uri="kie:ksession1?action=execute"/> > > > > Questions: > > Is it possible to have a stateful fireUntilHalt drools session that keeps > using the same knowledge session in subsequent camel route executions? > > If it is not possible, Can I have a stateful ( persisted )drools session > and invoke "fireAllRules" whenever I make changes in the knowledge session > ( new Facts are inserted )? > > I've deep dived into the web looking for examples or documentation of this > scenario both in Spring and Blueprint. Does anyone of you have any pointers > to documentation on the matter? > > Kind Regards, > > _______________________________________________ > rules-users mailing list > rules-users@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/rules-users > -- Charles Moulliard Apache Committer / Architect @RedHat Twitter : @cmoulliard | Blog : http://cmoulliard.github.io
_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users