[rules-users] Dynamic Rules and Eval

k rrdh at gmx.net
Sun Jul 14 13:52:46 EDT 2013


Hi,
basically it's the same problem this guy had 
http://stackoverflow.com/questions/11485122/non-template-dynamic-rules-in-drools
<http://stackoverflow.com/questions/11485122/non-template-dynamic-rules-in-drools> 
, 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.


More information about the rules-users mailing list