[rules-users] execute particular rules programmatically and dynamically

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


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 == "*" )
      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.ed" )
      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
       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/4e355a2a/attachment.html 


More information about the rules-users mailing list