Hi Charles, Yes I am using a KieScanner to look for updates. Since I am using Spring I had to wrap it so that it could be properly initialized and started as a bean. I didn't include that bit in my original post as it didn't seem relevant to the problem at hand.
The other reason why I decided to use the bean notation instead of the kie namespace is so that I could reference the created session as a bean that could be injected as a property to another bean (the thread class that sets up the session for my application and actually calls fireAllRules). Perhaps I was not doing it right but Spring wasn't recognizing anything in the <kie> tags as a bean I could reference. In any case, my approach should be identical to setting up the session in Java directly as follows. KieServices kieServices = KieServices.Factory.get(); ReleaseId releaseId = kieServices.newReleaseId("mygroup", "myartifact", "version"); KieContainer kContainer = kieServices.newKieContainer(releaseId); Environment env = kieServices.newEnvironment(); env.set(ENTITY_MANAGER_FACTORY, entityManagerFactory); env.set(TRANSACTION_MANAGER, transactionManager); KieSession kSession = kContainer.newKieSession(env); This as far as I've read is exactly how the documentation recommends it be done. It just doesn't actually work for some reason or another. Jean-Philippe On Tue, May 27, 2014 at 11:42 PM, Charles Moulliard <ch0...@gmail.com>wrote: > 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 < > jpsteinm...@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 <ch0...@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 < >>> jpsteinm...@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@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 >> > > > > -- > 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