Thank you in advance.
2014-06-04 18:29 GMT+02:00 Charles Moulliard <ch0...@gmail.com>: > 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 >
_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users