It seems that the EvalNode in 5.5 is buggy with respect to this behavior.
A 5.6 release is scheduled for immediately after 6.0.CR1 - some time
next week -
so it will be fixed there.
Thanks for reporting
Davide
p.s. you may want to clear the KnowledgeBuilder in between incremental
additions.
In your example, the second "addKnowledgePackages" also readds the
pre-existing ones.
On 07/14/2013 07:52 PM, k wrote:
Hi,
basically it's the same problem this guy had
http://stackoverflow.com/questions/11485122/non-template-dynamic-rules-in...
<
http://stackoverflow.com/questions/11485122/non-template-dynamic-rules-in...
, but the links in that question don't work.
I'd like to dynamically add rules to a running session, but can use 'eval'
only in the very first one. If I add a second rule like the following, it
won't execute:
---
String test2 =
"\nrule id4" +
"\nwhen" +
"\neval(0 == 0)" + // if this eval is removed, "done2" is inserted
"\nthen" +
"\ninsertLogical( \"done2\" );" +
"\nend";
kbuilder.add(ResourceFactory.newByteArrayResource(test2.getBytes()),
ResourceType.DRL);
session.getKnowledgeBase().addKnowledgePackages(kbuilder.getKnowledgePackages());
fired = session.fireAllRules();
System.out.println(fired); // 0
effects = session.getObjects();
assertTrue("fired", effects.contains("done2")); // fails
---
You can see the complete Test at
http://codetidy.com/6206/
I'm also not sure if this is the correct way to dynamically add rules, so
please let me know, if there's a better way to add rules from strings.
How can I dynamically add new rules to a running session and still use eval?
--
View this message in context:
http://drools.46999.n3.nabble.com/Dynamic-Rules-and-Eval-tp4024908.html
Sent from the Drools: User forum mailing list archive at
Nabble.com.
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
.