[rules-users] execute particular rules programmatically and dynamically

Michael Anstis michael.anstis at gmail.com
Wed Apr 13 12:39:39 EDT 2011


Changed below; I forgot to change the draft I'd saved...

On 13 April 2011 17:37, Michael Anstis <michael.anstis at gmail.com> wrote:

> Here's a quick (and probably sub-optimal way) ;)
>
> When you copy values from the UI to Facts for validation you also include
> the context of the validation.
>
> I've also removed the inline evals you were using.
>
>
> rule "Rule1"
>   salience 1
>   dialect "mvel"
>     when
>       *ApplicationContext( context in ("screen1.panel1.editbox1",
> "screen1.panel1.editbox2") )*
>       ad : ApplicationData( age == "" || (  == null ))
>     then
>       ad.setReturnMsg( "\n age should not be null or empty" );
> end
>
> rule "Rule2"
>   dialect "mvel"
>     when
>        *ApplicationContext( context == "screen1.panel1.editbox1" )*
>       ad : ApplicationData( $age : age != null , age != "" , age < 0 || >
> 100, minIssrdAge == "Years" )
>
>     then
>        ad.setReturnMsg( "\nage is out of the range(i.e.  < 0 and > 100)" );
> end
>
> rule "Rule3"
>    dialect "mvel"
>      when
>         *ApplicationContext( context == "screen1.panel1.editbox2" )*
>        ad : ApplicationData( $age : age != null , age != "" , age <0 || >
> 600, minIssrdAge == "Years" )
>      then
>         ad.setReturnMsg( "\nage is out of the range(i.e.  < 0 and > 600)"
> );
> end
>
> On 13 April 2011 17:19, 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
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110413/bb5fb2ca/attachment.html 


More information about the rules-users mailing list