<br> If I understood correctly, all you need to do (in Drools 5) is to use rule inheritance. Also, in case your "non-leaf" rules have nothing to do in their consequences, you can mark them with attribute "enabled false".<br>
<br><a href="https://svn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/extend_rule_test.drl">https://svn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/extend_rule_test.drl</a><br>
<br> So, have rule 1.2 extend rule 1. Have rule 1.2.1 extend rule 1.2 and so on. Mark the ones that don't have consequence actions with enabled false just to avoiding creating useless activations. You still need to prioritize rules with salience or whatever you are using for that.<br>
<br> That should do the trick. Report back your findings please, as this is a new feature in Drools 5. <br><br> Hope it helps,<br> Edson<br><br><div class="gmail_quote">2009/4/13 Charles Binford <span dir="ltr"><<a href="mailto:Charles.Binford@sun.com">Charles.Binford@sun.com</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">All, I'm trying to figure out a better way to solve this problem. I<br>
have a batch of objects that I want matched against a hierarchy of<br>
rules. I check the rules in order, and as soon as I find a match I'm<br>
done for that level of the hierarchy. In other words, If the object<br>
matches a rule, we'll check the rules children, but not the siblings.<br>
Example:<br>
<br>
rule 1<br>
rule 1.1<br>
rule 1.2<br>
rule 1.2.1<br>
rule 1.2.2<br>
rule 1.3<br>
rule 2<br>
<br>
If an object matches rule 1, check for a match at level "1.*", but rule<br>
2 will never be checked. If an object matches 1, 1.2, and 1.2.1, we're<br>
done as 1.2.1 has no children.<br>
<br>
My current implementation with drools works, but is very inefficient. I<br>
have a "level" string in the objects and whenever I find a match I<br>
update the level of the object and force an object update. Each rule<br>
tests that the level string is correct, e.g. rule 1.2.1 works as follows:<br>
rule "1.2.1"<br>
when<br>
obj(level matches "1.2.*",.....)<br>
...<br>
then<br>
objSetLevel("1.2.1.*");<br>
....<br>
end<br>
<br>
I'm also using saliance to keep the evaluation order like I want it.<br>
<br>
Changing the contents of the object and doing the update is not good for<br>
drools performance as I understand it so I'm looking for a better way.<br>
The hierarchy and the order of the matching is key to my application so<br>
I'm not wanting to redesign that part of things.<br>
<br>
I tried using activation-groups. That worked great as long as I only<br>
had a single object to run through the hierarchy, but given the way the<br>
rest of the system is design I need to load up 10-100 objects before<br>
each call to fireallrules() for performance purposes.<br>
<br>
Any suggestions are appreciated.<br>
<br>
Charles Binford<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>
</blockquote></div><br><br clear="all"><br>-- <br> Edson Tirelli<br> JBoss Drools Core Development<br> JBoss, a division of Red Hat @ <a href="http://www.jboss.com">www.jboss.com</a><br>