Hi , <br><br>I'm trying to use the <b>Exists </b>keyword within my rules with the following snippet : <br><br>// Create a session<br>KnowledgeBaseConfiguration config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();<br>
((RuleBaseConfiguration)config).setRuleBaseUpdateHandler( null ); *<br> KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(config);<br>StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();<br><br>
// Add some objects<br>for (int i=0; i<5; i++) {<br> session.insert(new Foo());<br>}<br><br>// Add a DRL to the kbase<br>KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();<br>kbuilder.add( ResourceFactory.newClassPathResource( "test/existsTest.drl" ), ResourceType.DRL);<br>
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );<br><br>// Fire rules<br>int fireCount = session.fireAllRules();<br><br><br><b><u>existsTest.drl</u></b> :<br><br>rule "existsTest"<br> when <br>
exists (Foo());<br> //not ( not ( Foo() ) ); (2)<br> then <br> System.out.println("Rule fired...");<br>end<br><br>When launched , the rule is not fired (no messages , fireCount 0), but it is when changing<br>
exists with a double not condition (2).<br>If the working memory is populated after adding the rules file, the exists CE works as expected.<br>* I've used no RuleBaseUpdateHandler preventing automatic activations to be executed so fireAllRules can be used to get the fireCount, but commenting this line out doesn't change the results.<br>
<br>Probably i'm doing something wrong so a little help would be very appreciated.<br><br>Regards,<br>Manuel.<br><br>