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 <ch007m(a)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...
Regards,
On Tue, May 27, 2014 at 7:38 PM, Steinmetz, Jean-Philippe <
jpsteinmetz(a)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(a)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...
>>
>> Regards,
>>
>> Charles
>>
>>
>> On Thu, May 22, 2014 at 8:00 PM, Steinmetz, Jean-Philippe <
>> jpsteinmetz(a)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(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
>>
>
>
> _______________________________________________
> 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