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