[rules-users] OR with multiple binding in LHS

Edson Tirelli tirelli at post.com
Tue Mar 13 18:48:06 EDT 2007


    Francesco,

    You need to be careful when doing that, if you are using 3.0.x version.
    First thing is that both sides of your "or" must be perfectly 
"balanced", i.e., the same classes in the same order. I didn't tried 
that, but I think it works if you simply declare your binding once:

rule "orCondition"
    when
        myObj : (MyObject(field1 == "a", $field2 : field2, $field3 : 
field3) or MyObject(field1 == "b"))    //correct column
        AnotherPattern( attr2 == $field2, attr3 == $field3 )
    then
        System.out.println("fields = "+ field2 + field3);
end

    This is a workaround for the 3.0.x versions.Try it and let me know plz.

    In 3.1M1 and later, all this is fixed and the correct is to declare 
the variable in all logical branches:

rule "orCondition"
    when
        myObj : (MyObject(field1 == "a", $field2 : field2, $field3 : 
field3) or MyObject(field1 == "b", $field2 : field2, $field3 : 
field3))    //correct column
        AnotherPattern( attr2 == $field2, attr3 == $field3 )
    then
        System.out.println("fields = "+ field2 + field3);
end

   []s
   Edson


Francesco Campagnola wrote:

> Hi,
>
> I'd like to write a rule that contains an OR condition in the LHS, to 
> match the presence in the working memory of an object with particular 
> values of a specific field.  In the rest of LHS, i need to bind other 
> values of the specific object matched. Is there a particular sintax to 
> use for the binding?
>
> For example:
>
> rule "orCondition"
>     when
>         myObj : (MyObject(field1 == "a") or MyObject(field1 == 
> "b"))    //correct column
>        
>         field2: myObj.getField2 ()    // how to correctly get
>         field3: myObj.getField3()    // those values?
>     then
>         System.out.println("fields = "+ field2 + field3);
>
> Thanks in advance, FC.
>
>------------------------------------------------------------------------
>
>_______________________________________________
>rules-users mailing list
>rules-users at lists.jboss.org
>https://lists.jboss.org/mailman/listinfo/rules-users
>  
>


-- 
 Edson Tirelli
 Software Engineer - JBoss Rules Core Developer
 Office: +55 11 3124-6000
 Mobile: +55 11 9218-4151
 JBoss, a division of Red Hat @ www.jboss.com





More information about the rules-users mailing list