I believe Wolfgang&#39;s (and my) fear is that you are re-inventing the wheel.<br><br>Writing your own AgendaFilter is in essence achieving the same function as having an additional Fact in your rule that prevents the rule&#39;s activation appearing on the agenda in the first place.<br>
<br>Using an AgendaFilter will allow you to prevent a rule that has been matched and placed on the agenda from executing.<br><br>Not that it won&#39;t work; it&#39;s just that if smells bad.<br><br>Just trying to be helpful :)<br>
<br>Mike<br><br><br><div class="gmail_quote">On 14 April 2011 18:51, Benson Fung <span dir="ltr">&lt;<a href="mailto:benson.redhat@gmail.com">benson.redhat@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hi Bob,<br>
<br>
Let me try to implement the AgendaFIlter :<br>
<br>
import java.util.List;<br>
<br>
import org.drools.runtime.rule.Activation;<br>
import org.drools.runtime.rule.AgendaFilter;<br>
<br>
public class RuleNameContainsAgendaFilter implements AgendaFilter {<br>
<br>
<br>
        private List&lt;String&gt; rules;<br>
<br>
        public RuleNameContainsAgendaFilter(List&lt;String&gt; rules) {<br>
                this.rules = rules;<br>
        }<br>
<br>
        public boolean accept(Activation activation) {<br>
                // TODO Auto-generated method stub<br>
                String activationRuleName = activation.getRule().getName();<br>
                if(rules.contains(activationRuleName)) {<br>
                        return true;<br>
                } else {<br>
                        return false;<br>
                }<br>
        }<br>
<br>
}<br>
<br>
I think the above the AgendaFilter can resolve the particular rule<br>
execution value, i.e.  Just pass all the specific rule into a List<br>
object and create the above AgendaFilter, then those particular rule<br>
can be executed.<br>
<br>
<br>
Please comment.<br>
<font color="#888888"><br>
<br>
Benson<br>
</font><div><div></div><div class="h5"><br>
On Thu, Apr 14, 2011 at 5:38 PM, Robert Christenson &lt;<a href="mailto:rac@akc.org">rac@akc.org</a>&gt; wrote:<br>
&gt; We&#39;ve come across something similar in our project just recently as well.<br>
&gt;<br>
&gt; We have a requirement to have some rules activate based on a tab-off action but also at a higher level (such as validating an entire event entry in the GUI). I also need these rules to activate if initiated from an external webservice (no GUI at all).<br>

&gt;<br>
&gt; What we&#39;ve decided to utilize is a meta identifier in certain rules called FieldsAffected which may contain a delimited list of field identifiers.<br>
&gt;<br>
&gt; An AgendaFilter implementation is created for GUI side requests and passed to fireAllRules. The filter implementation compares any/all field identifiers passed within the request and keeps only those activations which contain the field identifier in it&#39;s metadata field.<br>

&gt;<br>
&gt; Our RHS creates a validation msg which contains the field identifiers so that the calling GUI can display the proper msgs to the field.<br>
&gt;<br>
&gt; This allows us to support multiple call scenarios without duplicating the logic in multiple rules just based on context info.<br>
&gt;<br>
&gt; Hope this helps,<br>
&gt;<br>
&gt; Bob Christenson<br>
&gt;<br>
&gt;<br>
&gt;&gt; ------------------------------<br>
&gt;&gt;<br>
&gt;&gt; Message: 2<br>
&gt;&gt; Date: Thu, 14 Apr 2011 15:23:44 +0800<br>
&gt;&gt; From: Benson Fung &lt;<a href="mailto:benson.redhat@gmail.com">benson.redhat@gmail.com</a>&gt;<br>
&gt;&gt; Subject: Re: [rules-users] execute particular rules programmatically<br>
&gt;&gt;    and    dynamically<br>
&gt;&gt; To: Rules Users List &lt;<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>&gt;<br>
&gt;&gt; Message-ID: &lt;BANLkTi=OGO=<a href="mailto:rWFEnYBHM144GVSt%2BP_KVtQ@mail.gmail.com">rWFEnYBHM144GVSt+P_KVtQ@mail.gmail.com</a>&gt;<br>
&gt;&gt; Content-Type: text/plain; charset=ISO-8859-1<br>
&gt;&gt;<br>
&gt;&gt; Thanks Michael, let me think about your solution seriously afterwards.<br>
&gt;&gt;  Actually, I am using GWT.<br>
&gt;&gt; I would like to say that sometimes customer&#39;s requirement is picky and<br>
&gt;&gt; unexpectable.  They really want to have close coupling between UI and<br>
&gt;&gt; Rules.  haha.....  :)    Do you think it is helpless as a<br>
&gt;&gt; consultant???   :~(<br>
&gt;&gt;<br>
&gt;&gt; If anyone has another idea of this scenario, you are welcome to post<br>
&gt;&gt; your idea out there.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Thank you very much<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; 2011/4/14 Michael Anstis &lt;<a href="mailto:michael.anstis@gmail.com">michael.anstis@gmail.com</a>&gt;:<br>
&gt;&gt;&gt; In my example Rule 1 was shared between &quot;screen1.panel1.editbox1&quot; and<br>
&gt;&gt;&gt; &quot;screen1.panel1.editbox2&quot;:-<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; rule &quot;Rule1&quot;<br>
&gt;&gt;&gt; ? salience 1<br>
&gt;&gt;&gt; ? dialect &quot;mvel&quot;<br>
&gt;&gt;&gt; ??? when<br>
&gt;&gt;&gt; ????? ApplicationContext( context in (&quot;screen1.panel1.editbox1&quot;,<br>
&gt;&gt;&gt; &quot;screen1.panel1.editbox2&quot;) )<br>
&gt;&gt;&gt; ? ? ? ad : ApplicationData( age == &quot;&quot; || ( ?== null ))<br>
&gt;&gt;&gt; ? ? then<br>
&gt;&gt;&gt; ? ??? ad.setReturnMsg( &quot;\n age should not be null or empty&quot; );<br>
&gt;&gt;&gt; end<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; This is an approach and may not be the best available; I was trying to<br>
&gt;&gt;&gt; demonstrate how your problem can be solved without having to worry about<br>
&gt;&gt;&gt; explicitly executing individual rules.For example, depending on what UI<br>
&gt;&gt;&gt; technology you are using (Swing, JSF) you could subclass the UI components<br>
&gt;&gt;&gt; and use these as facts - but such close coupling between UI and Rules may be<br>
&gt;&gt;&gt; undesirable.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; With kind regards,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Mike<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On 14 April 2011 03:52, Benson Fung &lt;<a href="mailto:benson.redhat@gmail.com">benson.redhat@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Good, Michael.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; &#39;context&#39; is used to distinguish which part of the UI which will be<br>
&gt;&gt;&gt;&gt; validated, right? ?The customer will ask if they have 10000 rules in<br>
&gt;&gt;&gt;&gt; the rulebase. ?And some of them are redundant, so they want to make<br>
&gt;&gt;&gt;&gt; some of the rules share with several part of UI, e.g. ?editbox 6,<br>
&gt;&gt;&gt;&gt; editbox 7 and editbox 8 these 3 boxes&#39; value range is within 0 and<br>
&gt;&gt;&gt;&gt; 600. ?Therefore, Rule3 can be shared for these 3 editbox validation,<br>
&gt;&gt;&gt;&gt; right? ?However, for the context variable approach, it seems Rule3<br>
&gt;&gt;&gt;&gt; cannot be shared for another editbox with same value range validation.<br>
&gt;&gt;&gt;&gt; ?So these could be a key for the BRMS/Drools.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Benson<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; 2011/4/14 Michael Anstis &lt;<a href="mailto:michael.anstis@gmail.com">michael.anstis@gmail.com</a>&gt;:<br>
&gt;&gt;&gt;&gt;&gt; Sure, whenever you copy values from your UI to your model for validation<br>
&gt;&gt;&gt;&gt;&gt; you<br>
&gt;&gt;&gt;&gt;&gt; also enter a fact representing the &quot;context&quot; of the values.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Using your example you have two edit boxes on one screen and your rule<br>
&gt;&gt;&gt;&gt;&gt; simply checks for the value of a single edit box; in this case the<br>
&gt;&gt;&gt;&gt;&gt; context<br>
&gt;&gt;&gt;&gt;&gt; differentiates the two.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Walking your example:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; (1) When editbox 1 looses focus you copy the value from the dropdown and<br>
&gt;&gt;&gt;&gt;&gt; edit box 1 into your model, plus you enter a &quot;context&quot; fact stating that<br>
&gt;&gt;&gt;&gt;&gt; these values relate to that part of the UI (say<br>
&gt;&gt;&gt;&gt;&gt; &quot;screen1.panel1.editbox1&quot;).<br>
&gt;&gt;&gt;&gt;&gt; You then insert these facts into WM and call fireAllRules. The rules<br>
&gt;&gt;&gt;&gt;&gt; check<br>
&gt;&gt;&gt;&gt;&gt; the &quot;context&quot; and only execute if the values are for the (rule)<br>
&gt;&gt;&gt;&gt;&gt; applicable<br>
&gt;&gt;&gt;&gt;&gt; context. (2) Editbox 2 works in a similar way, but has a different<br>
&gt;&gt;&gt;&gt;&gt; context<br>
&gt;&gt;&gt;&gt;&gt; ((say &quot;screen1.panel1.editbox2&quot;).<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Have a look at Plugtree - I believe they&#39;re quite well customed to<br>
&gt;&gt;&gt;&gt;&gt; writing<br>
&gt;&gt;&gt;&gt;&gt; UIs backed with rules; salaboy or esteban (or IRC #drools) might be able<br>
&gt;&gt;&gt;&gt;&gt; to<br>
&gt;&gt;&gt;&gt;&gt; offer more practical advice.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; With kind regards,<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Mike<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; On 13 April 2011 17:48, Benson Fung &lt;<a href="mailto:benson.redhat@gmail.com">benson.redhat@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; Hi Michael,<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; Can you elaborate more for the uses of the ApplicationContext? ?I<br>
&gt;&gt;&gt;&gt;&gt;&gt; can&#39;t follow its uses.<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; Thanks<br>
&gt;&gt;&gt;&gt;&gt;&gt; Benson<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; 2011/4/14 Michael Anstis &lt;<a href="mailto:michael.anstis@gmail.com">michael.anstis@gmail.com</a>&gt;:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Here&#39;s a quick (and probably sub-optimal way) ;)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; When you copy values from the UI to Facts for validation you also<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; include<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; the context of the validation.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; I&#39;ve also removed the inline evals you were using.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; rule &quot;Rule1&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? salience 1<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? dialect &quot;mvel&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ??? when<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ????? ApplicationContext( context == &quot;*&quot; )<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ad : ApplicationData( age == &quot;&quot; || ( ?== null ))<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? then<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ??? ad.setReturnMsg( &quot;\n age should not be null or empty&quot; );<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; end<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; rule &quot;Rule2&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? dialect &quot;mvel&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ??? when<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ??? ApplicationContext( context == &quot;screen1.panel1.ed&quot; )<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ad : ApplicationData( $age : age != null , age != &quot;&quot; , age &lt; 0<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ||<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; 100, minIssrdAge == &quot;Years&quot; )<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? then<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ??? ad.setReturnMsg( &quot;\nage is out of the range(i.e. ?&lt; 0 and &gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; 100)&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; );<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; end<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; rule &quot;Rule3&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ?? dialect &quot;mvel&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ?? when<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ?? ad : ApplicationData( $age : age != null , age != &quot;&quot; , age &lt;0<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ||<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; 600, minIssrdAge == &quot;Years&quot; )<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ?? then<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ?? ad.setReturnMsg( &quot;\nage is out of the range(i.e. ?&lt; 0 and &gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; 600)&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; );<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; end<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; On 13 April 2011 17:19, Benson Fung &lt;<a href="mailto:benson.redhat@gmail.com">benson.redhat@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Hi,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Here is the scenario :<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; If there are 2 edit boxes and 2 dropdown list at the frontend like.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; dropdown(minIssrdAge1) ? editbox(age1)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; dropdown(minIssrdAge2) ? editbox(age2)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; everytime when I lost focus the editbox(age1 or age2), ?the<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; editbox(age1 or age2) value will be validated against the following<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; rules.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; i.e. ?minIssrdAge1 and age1 will be validated together if lost focus<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; the editbox age1.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? minIssrdAge2 and age2 will be validated together if lost focus<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; the editbox age2<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Rule1 is mandatory because both editbox are required field.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; However, editbox(age1) is only valid within the 0 and 100. ?and<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; editbox(age2) is only valid within 0 and 600.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; In other words, editbox(age1) have to be validated against Rule1 +<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Rule2. ?However, editbox(age2) have to validated against Rule1 +<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Rule3.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; My question, how to design the rule attribute or at the java program<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; side so that different editbox can be validated against different<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; rule.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Please help. ?I can&#39;t find any solution by now.<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; rule &quot;Rule1&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ?salience 1<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ?dialect &quot;mvel&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ?when<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ? ? ? ? ?ad : ApplicationData( age == &quot;&quot; || ( ?== null ))<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ?then<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ? ? ? ? ?ad.setReturnMsg( &quot;\n age should not be null or empty&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; );<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; end<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; rule &quot;Rule2&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ?dialect &quot;mvel&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ?when<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ? ? ? ? ?ad : ApplicationData( $age : age != null , age != &quot;&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; minIssrdAge<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; == &quot;Years&quot; )<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ? ? ? ? ?eval(Integer.parseInt($age) &lt; 0) or<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; eval(Integer.parseInt($age) &gt; 100)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ?then<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ? ? ? ? ?ad.setReturnMsg( &quot;\nage is out of the range(i.e. ?&lt; 0<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; and &gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 100)&quot; );<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; end<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; rule &quot;Rule3&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ?dialect &quot;mvel&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ?when<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ? ? ? ? ?ad : ApplicationData( $age : age != null , age != &quot;&quot;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ,<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; minIssrdAge<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; == &quot;Years&quot; )<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ? ? ? ? ?eval(Integer.parseInt($age) &lt; 0) or<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; eval(Integer.parseInt($age) &gt; 600)<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ?then<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ? ? ? ? ? ? ? ?ad.setReturnMsg( &quot;\nage is out of the range(i.e. ?&lt; 0<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; and &gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 600)&quot; );<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; end<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; rules-users mailing list<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; rules-users mailing list<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt;&gt; rules-users mailing list<br>
&gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
&gt;&gt;&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt; rules-users mailing list<br>
&gt;&gt;&gt;&gt;&gt; <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
&gt;&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt; rules-users mailing list<br>
&gt;&gt;&gt;&gt; <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; rules-users mailing list<br>
&gt;&gt;&gt; <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; rules-users mailing list<br>
&gt; <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
&gt;<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>
</div></div></blockquote></div><br>