[rules-users] Persistence in Drools 6

Charles Moulliard ch007m at gmail.com
Wed May 28 02:42:13 EDT 2014


Hi Jean-Philippe,

To pickup new updates, then you should use KieScanner (part of kie-ci
project) which allows you to do incremental build if a new kjar has been
published/released. Here is an example :
https://github.com/droolsjbpm/drools/blob/master/kie-ci/src/test/java/org/kie/scanner/KieScannerIncrementalCompilationTest.java

Regards,



On Tue, May 27, 2014 at 7:38 PM, Steinmetz, Jean-Philippe <
jpsteinmetz at theworkshop.us.com> wrote:

> Hi Charles,
>
> Thanks for your reference. I had tried using kie-spring but was unable to
> use it as it currently does not support creating sessions from a release id
> and container. I did this in order to be able to pick up on updates to the
> kjar from maven while the application is running the same way it used to
> work in Drools 5. Has anyone else with similar needs to mine gotten
> persistence working?
>
> Jean-Philippe
>
>
> On Thu, May 22, 2014 at 11:23 PM, Charles Moulliard <ch007m at gmail.com>wrote:
>
>> Hi Jean Philippe,
>>
>> I have recently created a project to persist bpmn process using Spring &
>> JPA / Hibernate. This config is working using kie-spring
>>
>>
>> https://github.com/cmoulliard/droolsjbpm-osgi-examples/blob/master/spring-jbpm-persistence/src/main/resources/META-INF/spring/context.xml
>>
>> Regards,
>>
>> Charles
>>
>>
>> On Thu, May 22, 2014 at 8:00 PM, Steinmetz, Jean-Philippe <
>> jpsteinmetz at theworkshop.us.com> wrote:
>>
>>> Hello All,
>>>
>>> I am trying to set up persistence for a standalone Drools (6.0.1.Final)
>>> application that uses JPA, Hibernate (4.3.5.Final) and Bitronix (2.1.4) via
>>> Spring (4.0.3.RELEASE).
>>>
>>> On the persistence side everything appears to be set up correctly. For
>>> my Drools session I use a KieContainer to create a new stateful session
>>> using an environment set up with the EntityManagerFactory and
>>> TransactionManager set. The problem that I am experiencing however is that
>>> nothing is getting persisted to the database. I have poured over the docs
>>> at least two dozen times and searched the net for anything related.
>>>
>>> Here is what my Spring context file looks like when creating the Drools
>>> session...
>>>
>>>     <bean id="kReleaseId" factory-bean="kieServices"
>>> factory-method="newReleaseId">
>>>         <constructor-arg index="0" value="groupId"/>
>>>         <constructor-arg index="1" value="artifactId"/>
>>>         <constructor-arg index="2" value="1.0-SNAPSHOT"/>
>>>     </bean>
>>>     <bean id="kContainer" factory-bean="kieServices"
>>> factory-method="newKieContainer">
>>>         <constructor-arg index="0" ref="kReleaseId"/>
>>>     </bean>
>>>     <bean id="kEnvironment" factory-bean="kieServices"
>>> factory-method="newEnvironment">
>>>         <constructor-arg index="0">
>>>             <map>
>>>                 <entry>
>>>                     <key><util:constant
>>> static-field="org.kie.api.runtime.EnvironmentName.ENTITY_MANAGER_FACTORY"/></key>
>>>                     <ref bean="entityManagerFactory"/>
>>>                 </entry>
>>>                 <entry>
>>>                     <key><util:constant
>>> static-field="org.kie.api.runtime.EnvironmentName.TRANSACTION_MANAGER"/></key>
>>>                     <ref bean="jtaTransactionManager"/>
>>>                 </entry>
>>>             </map>
>>>         </constructor-arg>
>>>     </bean>
>>>     <bean id="kSession" factory-bean="kContainer"
>>> factory-method="newKieSession">
>>>         <constructor-arg index="0" ref="kEnvironment"/>
>>>      </bean>
>>>
>>> Since the application is standalone I execute fireAllRules on the
>>> session at a regular interval (I use this instead of fireUntilHalt as it
>>> dramatically reduces the CPU load on the machine). With each call I wrap it
>>> in a transaction. Thus, the code looks as follows:
>>>
>>>     while (!Thread.currentThread().isInterrupted()) {
>>>         // Start a new transaction
>>>         UserTransaction utx = utx = (UserTransaction)new
>>> InitialContext().lookup("java:comp/UserTransaction");
>>>        utx.begin();
>>>
>>>         // Tick the session
>>>         kSession.fireAllRules();
>>>
>>>         // Close the transaction
>>>         utx.commit();
>>>
>>>             // Sleep so that other applications can use the CPU
>>>             try {
>>>                 Thread.sleep(1);
>>>             } catch (InterruptedException e) {
>>>                 // When our sleep is interrupted it's because the
>>> executor wants us to shut down.
>>>                 Thread.currentThread().interrupt();
>>>             }
>>>         }
>>>
>>> When I inspect kSession in the debugger I can see the environment is
>>> properly set. I have tried digging down into the execute a bit but can't
>>> find any point at which the TransactionManager or EntityManagerFactory are
>>> used. As I said above I know Hibernate is set up correctly as well as
>>> Bitronix. I can see them working just fine in the logs and they definitely
>>> are hitting the database (and create tables for sessioninfo and
>>> workingmemory as they should). I just get nothing actually in the database
>>> stored, ever.
>>>
>>> Any help here is appreciated. It seems like it should work but it just
>>> doesn't.
>>>
>>> Thanks in advance,
>>>
>>> Jean-Philippe Steinmetz
>>>
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users at 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 at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>



-- 
Charles Moulliard
Apache Committer / Architect @RedHat
Twitter : @cmoulliard | Blog :  http://cmoulliard.github.io
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20140528/c627ca81/attachment.html 


More information about the rules-users mailing list