[rules-users] execute particular rules programmatically and dynamically

Benson Fung benson.redhat at gmail.com
Thu Apr 14 10:06:39 EDT 2011


Hi Wolfgang,

Please see the following scenario.



On Thu, Apr 14, 2011 at 12:19 AM, Benson Fung <benson.redhat at gmail.com> wrote:
> Hi,
>
> Here is the scenario :
>
> If there are 2 edit boxes and 2 dropdown list at the frontend like.
>
>
> dropdown(minIssrdAge1)   editbox(age1)
> dropdown(minIssrdAge2)   editbox(age2)
>
> everytime when I lost focus the editbox(age1 or age2),  the
> editbox(age1 or age2) value will be validated against the following
> rules.
> i.e.  minIssrdAge1 and age1 will be validated together if lost focus
> the editbox age1.
>       minIssrdAge2 and age2 will be validated together if lost focus
> the editbox age2
>
> Rule1 is mandatory because both editbox are required field.
> However, editbox(age1) is only valid within the 0 and 100.  and
> editbox(age2) is only valid within 0 and 600.
>
> In other words, editbox(age1) have to be validated against Rule1 +
> Rule2.  However, editbox(age2) have to validated against Rule1 +
> Rule3.
>
> My question, how to design the rule attribute or at the java program
> side so that different editbox can be validated against different
> rule.
>
> Please help.  I can't find any solution by now.
>
> rule "Rule1"
>        salience 1
>        dialect "mvel"
>        when
>                ad : ApplicationData( age == "" || (  == null ))
>        then
>                ad.setReturnMsg( "\n age should not be null or empty" );
> end
>
>
> rule "Rule2"
>        dialect "mvel"
>        when
>                ad : ApplicationData( $age : age != null , age != "" , minIssrdAge
> == "Years" )
>                eval(Integer.parseInt($age) < 0) or eval(Integer.parseInt($age) > 100)
>        then
>                ad.setReturnMsg( "\nage is out of the range(i.e.  < 0 and > 100)" );
> end
>
> rule "Rule3"
>        dialect "mvel"
>        when
>                ad : ApplicationData( $age : age != null , age != "" , minIssrdAge
> == "Years" )
>                eval(Integer.parseInt($age) < 0) or eval(Integer.parseInt($age) > 600)
>        then
>                ad.setReturnMsg( "\nage is out of the range(i.e.  < 0 and > 600)" );
> end
>




More information about the rules-users mailing list