<br>      Although I noticed the other day that this is not documented yet, Drools 5.0.x does support rule inheritance. In your case, it would be written as:<br><br>rule r1<br>when<br>   A()<br>then<br>   // do something<br>
end<br><br>rule r2 extends r1<br>when<br>   B()<br>then<br>   // do something else<br>end<br><br>    When using inheritance, the subrule will inherit the whole LHS of the parent rule.<br><br>    Integration test here:<br>
<br><a href="http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/extend_rule_test.drl">http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/extend_rule_test.drl</a><br>
<a href="http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_RuleExtend.drl">http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_RuleExtend.drl</a><br>
<br>    In your case, you have an extra requirement that if a child rule fires, you don&#39;t want the parent rule to fire. My suggestion is either doing this with a logical condition, or adding drools.halt() on the consequence of rules that should stop subsequent firings, or using activation-groups + salience. Example, in the above case, you could have:<br>
<br>rule r1<br>   activation-group &quot;example rules&quot;<br>   salience 10<br>
when<br>
   A()<br>
then<br>
   // do something<br>
end<br>
<br>
rule r2 extends r1<br>
   activation-group &quot;example rules&quot;<br>
   salience 20<br>

when<br>
   B()<br>
then<br>
   // do something else<br>
end<br>
<br>   Since rule 2 has a higher salience, if it activates it will fire first, and due to the activation-group, it will cancel the activation of r1 preventing it to fire.<br><br>   Hope it helps.<br><br>   Edson<br><br><div class="gmail_quote">
2010/3/5 malkhafaji <span dir="ltr">&lt;<a href="mailto:moe.alkhafaji@medcpu.com">moe.alkhafaji@medcpu.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;">
<br>
Hello,<br>
<br>
I know, from searching this forum and posting before, that the concept of<br>
inheritance does not exist today in Drools. However, I have a need for it.<br>
Here is my specific situation:<br>
<br>
I have certain rules that have some generic conditions to be fired:<br>
<br>
Rule 1<br>
If A Then X end<br>
<br>
Rule 2<br>
If A, B Then Y end<br>
<br>
What I would like to do is, if Rule 2 is true, then I don&#39;t want Rule 1 to<br>
execute. I have many and many of those rules, so combining all the<br>
conditions in less number of rules violates our design having rules being<br>
mutually exclusive. That is why I wanted to include this behavior as a<br>
natural inheritance behavior rather than forcing the flow with logic inside<br>
the rule itself (you will make rules aware of others this way).<br>
<br>
So, since there is not built-in feature that allows you to do that, do<br>
people suggest anything that I can do without having to mix Rule 1 and Rule<br>
2 into one rule with complex conditional statements? Any ideas?<br>
<br>
The only thing I can think of is taking this logic processing outside of<br>
drools, which is something that I am not too excited about.<br>
<br>
Thanks.<br>
<font color="#888888"><br>
--<br>
View this message in context: <a href="http://n3.nabble.com/Inheritance-Like-Design-Question-tp430848p430848.html" target="_blank">http://n3.nabble.com/Inheritance-Like-Design-Question-tp430848p430848.html</a><br>
Sent from the Drools - User mailing list archive at Nabble.com.<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>
</font></blockquote></div><br><br clear="all"><br>-- <br>  Edson Tirelli<br>  JBoss Drools Core Development<br>  JBoss by Red Hat @ <a href="http://www.jboss.com">www.jboss.com</a><br>