I guess you are trying to use the same session you had after the modifications are applied. And unfortunately you can't do that using 5.0.1 :(. Since 5.1.M1 you can use the "incremental change set processing" feature that allows you to do what you are looking for. Without this feature, kagent creates a new Knowledge Base every time a change set is processed. So if you want to "see" the changes you will need to do something like this:<div>
</div><div>knowledgeAgent.getKnowledgeBase().newStateful/StatelessKnowledgeSession();</div><div><br></div><div>and then insert all your facts again :(</div><div><br></div><div>If you try to use the original kbase, you won't see the changes applied by the agent.</div>
<div>Using incremental change set processing the agent's kbase is reused, allowing you (among other things) to reuse any previous session you have.</div><div><br></div><div>Best,</div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div>
<br><br><div class="gmail_quote">On Fri, Jun 25, 2010 at 4:48 AM, Stephen Mcgruer <span dir="ltr"><<a href="mailto:s0840449@sms.ed.ac.uk">s0840449@sms.ed.ac.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Unfortunately that might be quite tricky, although I can try if<br>
necessary. I do think that perhaps the problem lies in the way I<br>
handle the auto-updating, I think I'm doing it wrong. Originally I<br>
just created the knowledge base and knowledge agent like so, and<br>
started the ResourceChange Notifier and Scanner services:<br>
<br>
//construct a knowledgebase that uses Equality mode assert behaviour<br>
so that it can match beans properly<br>
KnowledgeBaseConfiguration knowledgeBaseConfig =<br>
KnowledgeBaseFactory.newKnowledgeBaseConfiguration();<br>
knowledgeBaseConfig.setProperty("drools.assertBehaviour", "equality");<br>
knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase(knowledgeBaseConfig);<br>
<br>
//create a new knowledgeAgent to track changes<br>
knowledgeAgent = KnowledgeAgentFactory.newKnowledgeAgent(<br>
"knowledgeAgent", knowledgeBase );<br>
knowledgeAgent.applyChangeSet( ResourceFactory.newClassPathResource(<br>
"changeSet.xml" ) );<br>
knowledgeBase = knowledgeAgent.getKnowledgeBase();<br>
<br>
ResourceFactory.getResourceChangeNotifierService().start();<br>
ResourceFactory.getResourceChangeScannerService().start();<br>
<br>
<br>
This seemed to claim to update the knowledge base, but nothing changed<br>
as I mentioned before. At the moment, I'm trying rebuilding the<br>
knowledgebase when I detect a change, but this involves re-inserting<br>
the entire database which could be big eventuallly... And it doesn't<br>
even work entirely correctly either XD.<br>
<br>
What are the correct steps to take to keep a knowledgeBase<br>
auto-updating, and do you have to re-create it each time?<br>
<br>
Thanks,<br>
<div><div></div><div class="h5">Stephen<br>
<br>
<br>
Quoting Esteban Aliverti <<a href="mailto:esteban.aliverti@gmail.com">esteban.aliverti@gmail.com</a>>:<br>
<br>
> Could you please try your example using latest SNAPSHOT or 5.1M2?<br>
><br>
> Thanks<br>
><br>
> On Thu, Jun 24, 2010 at 10:20 AM, Stephen Mcgruer<br>
> <<a href="mailto:s0840449@sms.ed.ac.uk">s0840449@sms.ed.ac.uk</a>>wrote:<br>
><br>
>> Sorry, I'm using Drools 5.0.1<br>
>><br>
>> Cheers,<br>
>> Stephen<br>
>><br>
>> Quoting Esteban Aliverti <<a href="mailto:esteban.aliverti@gmail.com">esteban.aliverti@gmail.com</a>>:<br>
>><br>
>> > Which version of drools are you using?<br>
>> ><br>
>> > On Thu, Jun 24, 2010 at 5:33 AM, Stephen Mcgruer<br>
>> > <<a href="mailto:s0840449@sms.ed.ac.uk">s0840449@sms.ed.ac.uk</a>>wrote:<br>
>> ><br>
>> >> Hi there. I'm trying to get automatic update of rules working in my<br>
>> >> project, and seem to<br>
>> >> have run into a problem. As far as I can tell, automatic polling and<br>
>> >> updating is turned<br>
>> >> on, and claims to update the knowledgebase, but changes to the rules<br>
>> >> don't seem to have<br>
>> >> any effect. A simple example - if I add the rule:<br>
>> >><br>
>> >> rule "TestRule"<br>
>> >> dialect "mvel"<br>
>> >> when<br>
>> >> then<br>
>> >> System.out.println("Hello, world!");<br>
>> >> end<br>
>> >><br>
>> >> And start my application, I get:<br>
>> >><br>
>> >> Firing all rules...<br>
>> >> Hello, world!<br>
>> >> All rules fired.<br>
>> >><br>
>> >> As expected. If I then change the rule as follows:<br>
>> >><br>
>> >> rule "TestRule"<br>
>> >> dialect "mvel"<br>
>> >> when<br>
>> >> then<br>
>> >> System.out.println("I have changed!");<br>
>> >> end<br>
>> >><br>
>> >> I get this output (timestamps trimmed for readability):<br>
>> >><br>
>> >> ResourceChangeScanner attempt to scan 1 resources<br>
>> >> ResourceChangeScanner modified resource=[UrlResource<br>
>> >> path='<br>
>> >><br>
>> <a href="http://localhost:1337/drools-guvnor/org.drools.guvnor.Guvnor/package/ERMIE/v0.1" target="_blank">http://localhost:1337/drools-guvnor/org.drools.guvnor.Guvnor/package/ERMIE/v0.1</a><br>
>> >> ']<br>
>> >> :<br>
>> >> 1277371031000 : 1277371254000<br>
>> >> ResourceChangeNotification received ChangeSet notification<br>
>> >> ResourceChangeScanner thread is waiting for 60<br>
>> >> ResourceChangeNotification processing ChangeSet<br>
>> >> ResourceChangeNotification ChangeSet modified resource=[UrlResource<br>
>> >> path='<br>
>> >><br>
>> <a href="http://localhost:1337/drools-guvnor/org.drools.guvnor.Guvnor/package/ERMIE/v0.1" target="_blank">http://localhost:1337/drools-guvnor/org.drools.guvnor.Guvnor/package/ERMIE/v0.1</a><br>
>> >> ']<br>
>> >> for listener=org.drools.agent.impl.KnowledgeAgentImpl@e2d0b2<br>
>> >> KnowledgeAgent received ChangeSet changed notification<br>
>> >> ResourceChangeNotification thread is waiting for queue update<br>
>> >> KnowledgAgent applying ChangeSet<br>
>> >> KnowledgeAgent ChangeSet requires KnowledgeBuilderKnowledgeAgent<br>
>> >> rebuilding KnowledgeBase<br>
>> >> using ChangeSet<br>
>> >> KnowledgeAgent building resource=[UrlResource<br>
>> >> path='<br>
>> >><br>
>> <a href="http://localhost:1337/drools-guvnor/org.drools.guvnor.Guvnor/package/ERMIE/v0.1" target="_blank">http://localhost:1337/drools-guvnor/org.drools.guvnor.Guvnor/package/ERMIE/v0.1</a><br>
>> >> ']<br>
>> >> KnowledgeAgent adding KnowledgeDefinitionsPackage ERMIE<br>
>> >> KnowledgeAgent new KnowledgeBase now built and in use<br>
>> >><br>
>> >> So, this makes it seem like everything has worked. However, if I<br>
>> >> insert a new fact and<br>
>> >> fire all rules...<br>
>> >><br>
>> >> Inserting new fact...<br>
>> >> Hello, World!<br>
>> >><br>
>> >> So, it hasn't worked. What might I have done wrong?<br>
>> >><br>
>> >><br>
>> >> -Stephen<br>
>> >><br>
>> >> --<br>
>> >> The University of Edinburgh is a charitable body, registered in<br>
>> >> Scotland, with registration number SC005336.<br>
>> >><br>
>> >><br>
>> >><br>
>> >> _______________________________________________<br>
>> >> rules-users mailing list<br>
>> >> <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
>> >> <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
>> >><br>
>> ><br>
>> ><br>
>> ><br>
>> > --<br>
>> > XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<br>
>> ><br>
>> > Esteban Aliverti<br>
>> ><br>
>><br>
>><br>
>><br>
>> --<br>
>> The University of Edinburgh is a charitable body, registered in<br>
>> Scotland, with registration number SC005336.<br>
>><br>
>><br>
>><br>
>> _______________________________________________<br>
>> rules-users mailing list<br>
>> <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
>> <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
>><br>
><br>
><br>
><br>
> --<br>
> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<br>
><br>
> Esteban Aliverti<br>
><br>
<br>
<br>
<br>
</div></div>--<br>
<div><div></div><div class="h5">The University of Edinburgh is a charitable body, registered in<br>
Scotland, with registration number SC005336.<br>
<br>
<br>
<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<br><br>Esteban Aliverti<br>
</div>