Thank you in advance.
2014-06-04 18:29 GMT+02:00 Charles Moulliard <ch007m(a)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 <scerquido(a)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(a)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(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users