I guess you are trying to use the same session you had after the modifications are applied. And unfortunately you can&#39;t do that using 5.0.1 :(. Since 5.1.M1 you can use the &quot;incremental change set processing&quot; 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 &quot;see&quot; 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&#39;t see the changes applied by the agent.</div>

<div>Using incremental change set processing the agent&#39;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">&lt;<a href="mailto:s0840449@sms.ed.ac.uk">s0840449@sms.ed.ac.uk</a>&gt;</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&#39;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(&quot;drools.assertBehaviour&quot;, &quot;equality&quot;);<br>
knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase(knowledgeBaseConfig);<br>
<br>
//create a new knowledgeAgent to track changes<br>
knowledgeAgent = KnowledgeAgentFactory.newKnowledgeAgent(<br>
&quot;knowledgeAgent&quot;, knowledgeBase );<br>
knowledgeAgent.applyChangeSet( ResourceFactory.newClassPathResource(<br>
&quot;changeSet.xml&quot; ) );<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&#39;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&#39;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 &lt;<a href="mailto:esteban.aliverti@gmail.com">esteban.aliverti@gmail.com</a>&gt;:<br>
<br>
&gt; Could you please try your example using latest SNAPSHOT or 5.1M2?<br>
&gt;<br>
&gt; Thanks<br>
&gt;<br>
&gt; On Thu, Jun 24, 2010 at 10:20 AM, Stephen Mcgruer<br>
&gt; &lt;<a href="mailto:s0840449@sms.ed.ac.uk">s0840449@sms.ed.ac.uk</a>&gt;wrote:<br>
&gt;<br>
&gt;&gt; Sorry, I&#39;m using Drools 5.0.1<br>
&gt;&gt;<br>
&gt;&gt; Cheers,<br>
&gt;&gt; Stephen<br>
&gt;&gt;<br>
&gt;&gt; Quoting Esteban Aliverti &lt;<a href="mailto:esteban.aliverti@gmail.com">esteban.aliverti@gmail.com</a>&gt;:<br>
&gt;&gt;<br>
&gt;&gt; &gt; Which version of drools are you using?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On Thu, Jun 24, 2010 at 5:33 AM, Stephen Mcgruer<br>
&gt;&gt; &gt; &lt;<a href="mailto:s0840449@sms.ed.ac.uk">s0840449@sms.ed.ac.uk</a>&gt;wrote:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; Hi there. I&#39;m trying to get automatic update of rules working in my<br>
&gt;&gt; &gt;&gt; project, and seem to<br>
&gt;&gt; &gt;&gt; have run into a problem. As far as I can tell, automatic polling and<br>
&gt;&gt; &gt;&gt; updating is turned<br>
&gt;&gt; &gt;&gt; on, and claims to update the knowledgebase, but changes to the rules<br>
&gt;&gt; &gt;&gt; don&#39;t seem to have<br>
&gt;&gt; &gt;&gt; any effect. A simple example - if I add the rule:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; rule &quot;TestRule&quot;<br>
&gt;&gt; &gt;&gt;         dialect &quot;mvel&quot;<br>
&gt;&gt; &gt;&gt;         when<br>
&gt;&gt; &gt;&gt;         then<br>
&gt;&gt; &gt;&gt;                 System.out.println(&quot;Hello, world!&quot;);<br>
&gt;&gt; &gt;&gt; end<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; And start my application, I get:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Firing all rules...<br>
&gt;&gt; &gt;&gt; Hello, world!<br>
&gt;&gt; &gt;&gt; All rules fired.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; As expected. If I then change the rule as follows:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; rule &quot;TestRule&quot;<br>
&gt;&gt; &gt;&gt;         dialect &quot;mvel&quot;<br>
&gt;&gt; &gt;&gt;         when<br>
&gt;&gt; &gt;&gt;         then<br>
&gt;&gt; &gt;&gt;                 System.out.println(&quot;I have changed!&quot;);<br>
&gt;&gt; &gt;&gt; end<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I get this output (timestamps trimmed for readability):<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; ResourceChangeScanner attempt to scan 1 resources<br>
&gt;&gt; &gt;&gt; ResourceChangeScanner modified resource=[UrlResource<br>
&gt;&gt; &gt;&gt; path=&#39;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; <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>
&gt;&gt; &gt;&gt; &#39;]<br>
&gt;&gt; &gt;&gt; :<br>
&gt;&gt; &gt;&gt; 1277371031000 : 1277371254000<br>
&gt;&gt; &gt;&gt; ResourceChangeNotification received ChangeSet notification<br>
&gt;&gt; &gt;&gt; ResourceChangeScanner thread is waiting for 60<br>
&gt;&gt; &gt;&gt; ResourceChangeNotification processing ChangeSet<br>
&gt;&gt; &gt;&gt; ResourceChangeNotification ChangeSet modified resource=[UrlResource<br>
&gt;&gt; &gt;&gt; path=&#39;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; <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>
&gt;&gt; &gt;&gt; &#39;]<br>
&gt;&gt; &gt;&gt; for listener=org.drools.agent.impl.KnowledgeAgentImpl@e2d0b2<br>
&gt;&gt; &gt;&gt; KnowledgeAgent received ChangeSet changed notification<br>
&gt;&gt; &gt;&gt; ResourceChangeNotification thread is waiting for queue update<br>
&gt;&gt; &gt;&gt; KnowledgAgent applying ChangeSet<br>
&gt;&gt; &gt;&gt; KnowledgeAgent ChangeSet requires KnowledgeBuilderKnowledgeAgent<br>
&gt;&gt; &gt;&gt; rebuilding KnowledgeBase<br>
&gt;&gt; &gt;&gt; using ChangeSet<br>
&gt;&gt; &gt;&gt; KnowledgeAgent building resource=[UrlResource<br>
&gt;&gt; &gt;&gt; path=&#39;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; <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>
&gt;&gt; &gt;&gt; &#39;]<br>
&gt;&gt; &gt;&gt; KnowledgeAgent adding KnowledgeDefinitionsPackage ERMIE<br>
&gt;&gt; &gt;&gt; KnowledgeAgent new KnowledgeBase now built and in use<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; So, this makes it seem like everything has worked. However, if I<br>
&gt;&gt; &gt;&gt; insert a new fact and<br>
&gt;&gt; &gt;&gt; fire all rules...<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Inserting new fact...<br>
&gt;&gt; &gt;&gt; Hello, World!<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; So, it hasn&#39;t worked. What might I have done wrong?<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; -Stephen<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; --<br>
&gt;&gt; &gt;&gt; The University of Edinburgh is a charitable body, registered in<br>
&gt;&gt; &gt;&gt; Scotland, with registration number SC005336.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; _______________________________________________<br>
&gt;&gt; &gt;&gt; rules-users mailing list<br>
&gt;&gt; &gt;&gt; <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
&gt;&gt; &gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; --<br>
&gt;&gt; &gt; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Esteban Aliverti<br>
&gt;&gt; &gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; The University of Edinburgh is a charitable body, registered in<br>
&gt;&gt; Scotland, with registration number SC005336.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; rules-users mailing list<br>
&gt;&gt; <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<br>
&gt;<br>
&gt; Esteban Aliverti<br>
&gt;<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>