[rules-users] About String..."==" same as ".equals"?

Edson Tirelli tirelli at post.com
Tue Jan 9 17:44:22 EST 2007


   Joel,

   If it is the same object that you are trying to match against all of 
those constraints, just list all your constraints separated by ',' (comma):

rule "dtv_discount_request"
when
     mto : MegaTransferObject( orders_FkOrderTypeId == 
Constants.NEW_COMPLETED_ORDER_TYPE,
                               ct:other_ChannelType ->  ( ! 
ct.equalsIgnoreCase(Constants.CHANNEL_TYPE_RESELLER)),
                               orders_FkChannelId != 
Constants.ISP_CHANNEL_ID_PRW,
                               orders_FkChannelId != 
Constants.ISP_CHANNEL_ID_TLD,
                               orders_FkChannelId != 
Constants.ISP_CHANNEL_ID_AOL,
                               other_HasDtvDiscountRequest == false,
                               pl:phoneList_GovernmentAccount -> ( (pl 
== null) || ( pl.equals(Constants.FLAG_NO)) ),
                               cp:customerProfile_DtvDiscount -> ( (cp 
== null) || ( cp.equals(Constants.FLAG_NO)) ),
                               oa:other_AccountType -> ( ( oa == null) 
|| ( oa.equals( Constants.PHONE_TYPE_RESIDENTIAL)) ) )
then
        menu.add(new String[]{Constants.SERVICE_ASSURANCE_TREE_MENU_DSL, 
Constants.SERVICE_ASSURANCE_MENU_DTV_DISCOUNT_REQUEST});
end


    Just remember:

* you must have one and only one pattern for each single object you want 
to match in each rule, i.e., the mapping between patterns and object 
instances is always one-to-one.

* constraints are separated by ',' (comma), and ',' has an implicit 
meaning of AND between constraints

* version 3.0.x does not support OR between constraints, so the way 
around it is to use predicates like I demonstrated above. Version 3.2 
already has support for connective OR constraints.

    I hope it helps.

    []s
    Edson


Joel G. Rivera-González wrote:

> i see...that would works...but now if you add stuff and make a rule 
> that look like this, the binding will not work...
>
> rule "dtv_discount_request"
>     when
>         MegaTransferObject(orders_FkOrderTypeId == 
> Constants.NEW_COMPLETED_ORDER_TYPE) and
>         not MegaTransferObject(ct:other_ChannelType ->  
> (ct.equalsIgnoreCase(Constants.CHANNEL_TYPE_RESELLER))) and
>         (not MegaTransferObject(orders_FkChannelId == 
> Constants.ISP_CHANNEL_ID_PRW) and
>         not MegaTransferObject(orders_FkChannelId == 
> Constants.ISP_CHANNEL_ID_TLD) and
>         not MegaTransferObject(orders_FkChannelId == 
> Constants.ISP_CHANNEL_ID_AOL)) and
>         (MegaTransferObject(phoneList_GovernmentAccount == null) or 
> MegaTransferObject(phoneList_GovernmentAccount == Constants.FLAG_NO)) and
>         (MegaTransferObject(customerProfile_DtvDiscount == null) or 
> MegaTransferObject(customerProfile_DtvDiscount == Constants.FLAG_NO)) and
>         (MegaTransferObject(other_AccountType == null) or 
> MegaTransferObject(other_AccountType == 
> Constants.PHONE_TYPE_RESIDENTIAL)) and
>         MegaTransferObject(other_HasDtvDiscountRequest == false)
>     then
>         menu.add(new 
> String[]{Constants.SERVICE_ASSURANCE_TREE_MENU_DSL, 
> Constants.SERVICE_ASSURANCE_MENU_DTV_DISCOUNT_REQUEST});
> end
>  
> i was trying to bre creative and add megaTO: before all the 
> MegaTransferObject and it gave me the compilation error you 
> mention...but only after the third megaTO:
>
>
> Joel G. Rivera-Gonzalez
> PRT
>
> "The first 90% of a project takes 90% of the time, the last 10% takes 
> the other 90% of the time" - Murphy's Law
>
>
> ----- Original Message ----
> From: Edson Tirelli <tirelli at post.com>
> To: Rules Users List <rules-users at lists.jboss.org>
> Sent: Tuesday, January 9, 2007 4:39:57 PM
> Subject: Re: [rules-users] About String..."==" same as ".equals"?
>
>    Joel,
>
>    I just noticed in your last rule you do the binding to the same 
> variable:
>
> >         megaTO:MegaTransferObject(other_AccountType == "RMS")
> >         megaTO:MegaTransferObject(other_HasDtvDiscountRequest == false)
>
>    I thought that feature was already disabled... :( it should give you
> an error of duplicate variable declaration! is it not raising an error
> when compiling the rule??
>
>    The correct way of doing it if it is the same object is getting both
> constraints in the same pattern:
>
> megaTO: MegaTransferObject( other_AccountType == "RMS",
> other_HasDtvDiscountRequest == false)
>
>    So, rules 1 and 2 are correct in not firing, since you would need 2
> different objects to match the 2 patterns in them.
>    The mapping between patterns and objects is "one-to-one".
>
>    []s
>    Edson
>   
>
>
> Joel G. Rivera-González wrote:
>
> > 1. i downloaded the latest release from the download page...
> > 2. just one MTO...the returning arrayList should have arround 10 values.
> >
> > will do an example and (class and ruleFile) and send it to your email...
> >
> > thanks
> >  
> > Joel G. Rivera-Gonzalez
> > PRT
> >
> > "The first 90% of a project takes 90% of the time, the last 10% takes
> > the other 90% of the time" - Murphy's Law
> >
> >
> > ----- Original Message ----
> > From: Edson Tirelli <tirelli at post.com>
> > To: Rules Users List <rules-users at lists.jboss.org>
> > Sent: Tuesday, January 9, 2007 3:29:26 PM
> > Subject: Re: [rules-users] About String..."==" same as ".equals"?
> >
> >
> >    Joel,
> >
> >    Your rules seems to be correct.
> >    Questions:
> >
> > 1. What JBRules version are you using?
> >
> > 2. How many MTO instances are you asserting in the working memory, that
> > would match each Pattern in your rule?
> >
> >    It may be an issue with "or". Can you provide a self contained test
> > for me to investigate?
> >
> >    Thank you
> >       Edson
> >
> > Joel G. Rivera-González wrote:
> >
> > > i have to be doing something wrong...but it make no sense...
> > > a MegaTransferObject is asserted.
> > >
> > > case1: No rules fired.
> > > rule "dtv_discount_request"
> > >     when
> > >         MegaTransferObject(other_AccountType == null) or
> > >         MegaTransferObject(other_AccountType ==
> > > Constants.PHONE_TYPE_RESIDENTIAL)
> > >         MegaTransferObject(other_HasDtvDiscountRequest == false)
> > >     then
> > >         menu.add(new
> > > String[]{Constants.SERVICE_ASSURANCE_TREE_MENU_DSL,
> > > Constants.SERVICE_ASSURANCE_MENU_DTV_DISCOUNT_REQUEST});
> > > end
> > >
> > > case 2: no rule fired.
> > >
> > > rule "dtv_discount_request"
> > >     when
> > >         MegaTransferObject(other_AccountType == null) or
> > >         MegaTransferObject(other_AccountType == "RMS")
> > >         MegaTransferObject(other_HasDtvDiscountRequest == false)
> > >     then
> > >         menu.add(new
> > > String[]{Constants.SERVICE_ASSURANCE_TREE_MENU_DSL,
> > > Constants.SERVICE_ASSURANCE_MENU_DTV_DISCOUNT_REQUEST});
> > > end
> > >
> > > case 3: rule fired
> > >  
> > > rule "dtv_discount_request"
> > >     when
> > >         megaTO:MegaTransferObject(other_AccountType == "RMS")
> > >         megaTO:MegaTransferObject(other_HasDtvDiscountRequest == 
> false)
> > >     then
> > >         menu.add(new
> > > String[]{Constants.SERVICE_ASSURANCE_TREE_MENU_DSL,
> > > Constants.SERVICE_ASSURANCE_MENU_DTV_DISCOUNT_REQUEST});
> > > end
> > >
> > > i really dont get it...
> > > i must not be getting something...
> > > help...
> > >
> > >
> > > Joel G. Rivera-Gonzalez
> > > PRT
> > >
> > > "The first 90% of a project takes 90% of the time, the last 10% takes
> > > the other 90% of the time" - Murphy's Law
> > >
> > >
> > > ----- Original Message ----
> > > From: Edson Tirelli <tirelli at post.com>
> > > To: Rules Users List <rules-users at lists.jboss.org>
> > > Sent: Tuesday, January 9, 2007 7:26:35 AM
> > > Subject: Re: [rules-users] About String..."==" same as ".equals"?
> > >
> > >
> > >    Joel,
> > >
> > >    This is the correct syntax and it works (at least we didn't get a
> > > report for it not working yet):
> > >
> > > Object(variable == Constants.value)
> > >
> > >    Can you please elaborate about the problem you are having in order
> > > for us to help solving it? If it is a bug we need to fix.
> > >
> > >    Thank you,
> > >       Edson
> > >
> > > Joel G. Rivera-González wrote:
> > >
> > > > most (if not all) of my rules will have conditions like this:
> > > > Object(variable == Constants.value)
> > > > this is not working...
> > > > BUT if i change the Constants.value to corresponding value from the
> > > > constants class it will work...
> > > > is there any other way other than this Object(a:variable->  
> > > > (a.equals(Constants.value)) to do it?
> > > >
> > > >
> > > >
> > > >  
> > > > Joel G. Rivera-Gonzalez
> > > > PRT
> > > >
> > > > "The first 90% of a project takes 90% of the time, the last 10% 
> takes
> > > > the other 90% of the time" - Murphy's Law
> > > >
> > >
> > 
> >------------------------------------------------------------------------
> > > >
> > > >_______________________________________________
> > > >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 
> <http://www.jboss.com> <http://www.jboss.com>
> > <http://www.jboss.com>
> > >
> > >
> > > _______________________________________________
> > > rules-users mailing list
> > > rules-users at lists.jboss.org
> > > https://lists.jboss.org/mailman/listinfo/rules-users
> > >
> > 
> >------------------------------------------------------------------------
> > >
> > >_______________________________________________
> > >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 <http://www.jboss.com> 
> <http://www.jboss.com>
> >
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >------------------------------------------------------------------------
> >
> >_______________________________________________
> >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 <http://www.jboss.com>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>------------------------------------------------------------------------
>
>_______________________________________________
>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