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@post.com>
> To: Rules Users List <rules-users@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@post.com>
> > To: Rules Users List <rules-users@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@post.com>
> > > To: Rules Users List <rules-users@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@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@lists.jboss.org
> > >
https://lists.jboss.org/mailman/listinfo/rules-users> > >
> >
> >------------------------------------------------------------------------
> > >
> > >_______________________________________________
> > >rules-users mailing list
> > >rules-users@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@lists.jboss.org
> >
https://lists.jboss.org/mailman/listinfo/rules-users> >
> >------------------------------------------------------------------------
> >
> >_______________________________________________
> >rules-users mailing list
> >rules-users@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@lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users>
>------------------------------------------------------------------------
>
>_______________________________________________
>rules-users mailing list
>rules-users@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_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users