<br>   If I understood correctly, all you need to do (in Drools 5) is to use rule inheritance. Also, in case your &quot;non-leaf&quot; rules have nothing to do in their consequences, you can mark them with attribute &quot;enabled false&quot;.<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&#39;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">&lt;<a href="mailto:Charles.Binford@sun.com">Charles.Binford@sun.com</a>&gt;</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&#39;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&#39;m<br>
done for that level of the hierarchy.  In other words, If the object<br>
matches a rule, we&#39;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 &quot;1.*&quot;, but rule<br>
2 will never be checked.  If an object matches 1, 1.2, and 1.2.1, we&#39;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 &quot;level&quot; 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 &quot;1.2.1&quot;<br>
when<br>
    obj(level matches &quot;1.2.*&quot;,.....)<br>
    ...<br>
then<br>
    objSetLevel(&quot;1.2.1.*&quot;);<br>
    ....<br>
end<br>
<br>
I&#39;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&#39;m looking for a better way.<br>
The hierarchy and the order of the matching is key to my application so<br>
I&#39;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>