sequencing by business logic/ classcastexception in consequence
by Joost de Vries
no problem. shall I mail it to you?
2007/1/12, Michael Neale <michael.neale(a)gmail.com>:
>
> Hi Joost. No problems re the names...
>
> I just think its happening there as its the "extractor" generated class
> causing it.
>
> Any chance you can wrap this up as a unit testable unit so we can try it
> out and see what/where the cast is happening?
>
> Ta,
>
> Michael
> (PS I am offline all week, so don't feel ignored !)
>
> On 1/12/07, Joost de Vries < drools(a)ziener.org> wrote:
> >
> > Hi Michael,
> >
> > The list is defined in terms of the superclass that both classes share.
> > And the previous and next methods both have the superclass as the return
> > type.
> >
> > So I'd expect
> > PreventieveInsluitingsTitel(previous==secondPosition [...]
> > to evaluate to
> > <instance of superclass> == <instance of subclass>
> > I'd expect this check to just fail when the objectreferences do not
> > refer to the same object. Not to cause a classcastexception.
> >
> > But the exception is thrown in the consequence part of the rule during
> > an invocation of modify( ).....
> >
> > So I'm not sure why this construction would be wrong and what would be
> > the right way to do it.
> >
> > oh, by the way; sorry for the dutch classnames. That must make the
> > problem harder to understand. In fact it's about convictions and the
> > subclasses are types of convictions.
> >
> > regards,
> >
> > Joost
> >
> > 2007/1/12, Michael Neale <michael.neale(a)gmail.com>:
> > >
> > > In terms of your problem, it seems to be to do with:
> > > PreventieveInsluitingsTitel(previous==secondPosition
> > > the secondPosition is not a compatible class with previous?
> > >
> > > I don't have any specific thoughts on computing a sequence in rules,
> > > unfortunately... maybe someone else does ? ;)
> > >
> > >
> > >
> > >
> > > On 1/11/07, Joost de Vries < drools(a)ziener.org> wrote:
> > >
> > > > Hi,
> > > >
> > > > I'm new to jBoss Rules and I'm hitting a few snags. I appreciate
> > > > your insight.
> > > >
> > > > Among other things I want to use business rules to compute the right
> > > > sequence of actions that conforms to legal business rules.
> > > > The only way I could think of to implement this using rules is to
> > > > use rewriting production rules similar to:
> > > > input: ACCAAAC
> > > > rule: CA -> AC
> > > >
> > > > My first question is: what other ways are there to compute a
> > > > sequence that conforms to sequencing business rules?
> > > >
> > > > My second question concerns the nullpointerexceptions and
> > > > classcastexceptions I'm encountering in my rules.
> > > > I've got a sequence of C's who are either B's or A's. I.e. C is the
> > > > common superclass. This superclass has the methods:
> > > >
> > > > public C getPrevious();
> > > > public C getNext();
> > > >
> > > > Actually it's in dutch so it's
> > > >
> > > > public class Straf extends InsluitingsTitel {}
> > > > and
> > > > public class PreventieveInsluitingsTitel extends InsluitingsTitel {}
> > > >
> > > > and
> > > > public abstract class InsluitingsTitel{
> > > > public C getPrevious();
> > > > public C getNext();
> > > > }
> > > >
> > > > The rule is as follows:
> > > >
> > > > rule "WSV 68.1"
> > > > when
> > > > // any PreventieveInsluitingsTitel should precede all Straf
> > > > secondPosition: Straf ( firstPosition: previous )
> > > > thirdPosition:
> > > > PreventieveInsluitingsTitel(previous==secondPosition, fourthPosition:next)
> > > > then
> > > > System.out.println( "switching wsv 68.1 "+secondPosition+"
> > > > "+thirdPosition);
> > > > thirdPosition.switchWithPrevious();
> > > > if(firstPosition!=null){
> > > > modify(firstPosition);
> > > > }
> > > > modify( secondPosition);
> > > > modify( thirdPosition);
> > > > if(fourthPosition!=null){
> > > > //in the next statement a classcastexception is thrown
> > > > modify(fourthPosition);
> > > > }
> > > > end
> > > >
> > > > results in a classcastexception. The sequence is at that moment {
> > > > Straf, Straf, PreventieveInsluitingsTitel, Straf } and the middle two items
> > > > are matched by the LHS secondPosition and thirdPosition.
> > > >
> > > > Here's the stacktrace.
> > > >
> > > > java.lang.ClassCastException: org.dji.domein.insgro.Straf
> > > > at
> > > > org.drools.base.org.dji.domein.insgro.PreventieveInsluitingsTitel$getPrevious.getValue(Unknown
> > > > Source)
> > > > at org.drools.base.ClassFieldExtractor.getValue (Unknown Source)
> > > > at org.drools.rule.Declaration.getValue(Unknown Source)
> > > > at com.sample.Rule_WSV_68_1_0ConsequenceInvoker.evaluate
> > > > (Rule_WSV_68_1_0ConsequenceInvoker.java:22)
> > > > at org.drools.common.DefaultAgenda.fireActivation (Unknown
> > > > Source)
> > > > at org.drools.common.DefaultAgenda.fireNextItem(Unknown Source)
> > > > at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown
> > > > Source)
> > > > at org.drools.common.AbstractWorkingMemory.fireAllRules (Unknown
> > > > Source)
> > > > at org.dji.domein.insgro.VolgordeTest.main(VolgordeTest.java:32)
> > > > org.drools.spi.ConsequenceException: java.lang.ClassCastException:
> > > > org.dji.domein.insgro.Straf
> > > > at org.drools.common.DefaultAgenda.fireActivation (Unknown
> > > > Source)
> > > > at org.drools.common.DefaultAgenda.fireNextItem(Unknown Source)
> > > > at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown
> > > > Source)
> > > > at org.drools.common.AbstractWorkingMemory.fireAllRules (Unknown
> > > > Source)
> > > > at org.dji.domein.insgro.VolgordeTest.main(VolgordeTest.java:32)
> > > > Caused by: java.lang.ClassCastException: org.dji.domein.insgro.Straf
> > > > at
> > > > org.drools.base.org.dji.domein.insgro.PreventieveInsluitingsTitel$getNext.getValue(Unknown Source)
> > > > at org.drools.base.ClassFieldExtractor.getValue(Unknown Source)
> > > > at org.drools.rule.Declaration.getValue(Unknown Source)
> > > > at com.sample.Rule_WSV_68_1_0ConsequenceInvoker.evaluate(Rule_WSV_68_1_0ConsequenceInvoker.java:22)
> > > >
> > > > ... 5 more
> > > >
> > > > Thanks in advance for your insight.
> > > >
> > > > Regards,
> > > >
> > > > --
> > > > Joost de Vries
> > > >
> > > >
> > > > _______________________________________________
> > > > 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
> > >
> > >
> > >
> >
> >
> > --
> > Joost de Vries
> > 06 22375323
> > werk: joost.de.vries(a)ordina.nl
> > privé: joost(a)ziener.org
> >
> > --
> > Joost de Vries
> > 06 22375323
> > werk: joost.de.vries(a)ordina.nl
> > privé: joost(a)ziener.org
> > _______________________________________________
> > 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
>
>
>
--
Joost de Vries
06 22375323
werk: joost.de.vries(a)ordina.nl
privé: joost(a)ziener.org
--
Joost de Vries
06 22375323
werk: joost.de.vries(a)ordina.nl
privé: joost(a)ziener.org
17 years, 11 months
sequencing by business logic/ classcastexception in consequence
by Joost de Vries
Hi Michael,
The list is defined in terms of the superclass that both classes share. And
the previous and next methods both have the superclass as the return type.
So I'd expect
PreventieveInsluitingsTitel(previous==secondPosition [...]
to evaluate to
<instance of superclass> == <instance of subclass>
I'd expect this check to just fail when the objectreferences do not refer to
the same object. Not to cause a classcastexception.
But the exception is thrown in the consequence part of the rule during an
invocation of modify( ).....
So I'm not sure why this construction would be wrong and what would be the
right way to do it.
oh, by the way; sorry for the dutch classnames. That must make the problem
harder to understand. In fact it's about convictions and the subclasses are
types of convictions.
regards,
Joost
2007/1/12, Michael Neale <michael.neale(a)gmail.com>:
>
> In terms of your problem, it seems to be to do with:
> PreventieveInsluitingsTitel(previous==secondPosition
> the secondPosition is not a compatible class with previous?
>
> I don't have any specific thoughts on computing a sequence in rules,
> unfortunately... maybe someone else does ? ;)
>
>
>
>
> On 1/11/07, Joost de Vries < drools(a)ziener.org> wrote:
>
> > Hi,
> >
> > I'm new to jBoss Rules and I'm hitting a few snags. I appreciate your
> > insight.
> >
> > Among other things I want to use business rules to compute the right
> > sequence of actions that conforms to legal business rules.
> > The only way I could think of to implement this using rules is to use
> > rewriting production rules similar to:
> > input: ACCAAAC
> > rule: CA -> AC
> >
> > My first question is: what other ways are there to compute a sequence
> > that conforms to sequencing business rules?
> >
> > My second question concerns the nullpointerexceptions and
> > classcastexceptions I'm encountering in my rules.
> > I've got a sequence of C's who are either B's or A's. I.e. C is the
> > common superclass. This superclass has the methods:
> >
> > public C getPrevious();
> > public C getNext();
> >
> > Actually it's in dutch so it's
> >
> > public class Straf extends InsluitingsTitel {}
> > and
> > public class PreventieveInsluitingsTitel extends InsluitingsTitel {}
> > and
> > public abstract class InsluitingsTitel{
> > public C getPrevious();
> > public C getNext();
> > }
> >
> > The rule is as follows:
> >
> > rule "WSV 68.1"
> > when
> > // any PreventieveInsluitingsTitel should precede all Straf
> > secondPosition: Straf ( firstPosition: previous )
> > thirdPosition:
> > PreventieveInsluitingsTitel(previous==secondPosition, fourthPosition:next)
> > then
> > System.out.println( "switching wsv 68.1 "+secondPosition+"
> > "+thirdPosition);
> > thirdPosition.switchWithPrevious();
> > if(firstPosition!=null){
> > modify(firstPosition);
> > }
> > modify( secondPosition);
> > modify( thirdPosition);
> > if(fourthPosition!=null){
> > //in the next statement a classcastexception is thrown
> > modify(fourthPosition);
> > }
> > end
> >
> > results in a classcastexception. The sequence is at that moment { Straf,
> > Straf, PreventieveInsluitingsTitel, Straf } and the middle two items are
> > matched by the LHS secondPosition and thirdPosition.
> >
> > Here's the stacktrace.
> >
> > java.lang.ClassCastException: org.dji.domein.insgro.Straf
> > at
> > org.drools.base.org.dji.domein.insgro.PreventieveInsluitingsTitel$getPrevious.getValue(Unknown
> > Source)
> > at org.drools.base.ClassFieldExtractor.getValue (Unknown Source)
> > at org.drools.rule.Declaration.getValue(Unknown Source)
> > at com.sample.Rule_WSV_68_1_0ConsequenceInvoker.evaluate
> > (Rule_WSV_68_1_0ConsequenceInvoker.java:22)
> > at org.drools.common.DefaultAgenda.fireActivation (Unknown Source)
> > at org.drools.common.DefaultAgenda.fireNextItem(Unknown Source)
> > at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown
> > Source)
> > at org.drools.common.AbstractWorkingMemory.fireAllRules (Unknown
> > Source)
> > at org.dji.domein.insgro.VolgordeTest.main(VolgordeTest.java:32)
> > org.drools.spi.ConsequenceException: java.lang.ClassCastException:
> > org.dji.domein.insgro.Straf
> > at org.drools.common.DefaultAgenda.fireActivation (Unknown Source)
> > at org.drools.common.DefaultAgenda.fireNextItem(Unknown Source)
> > at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown
> > Source)
> > at org.drools.common.AbstractWorkingMemory.fireAllRules (Unknown
> > Source)
> > at org.dji.domein.insgro.VolgordeTest.main(VolgordeTest.java:32)
> > Caused by: java.lang.ClassCastException: org.dji.domein.insgro.Straf
> > at
> > org.drools.base.org.dji.domein.insgro.PreventieveInsluitingsTitel$getNext.getValue(Unknown Source)
> > at org.drools.base.ClassFieldExtractor.getValue(Unknown Source)
> > at org.drools.rule.Declaration.getValue(Unknown Source)
> > at com.sample.Rule_WSV_68_1_0ConsequenceInvoker.evaluate(Rule_WSV_68_1_0ConsequenceInvoker.java:22)
> >
> > ... 5 more
> >
> > Thanks in advance for your insight.
> >
> > Regards,
> >
> > --
> > Joost de Vries
> >
> >
> > _______________________________________________
> > 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
>
>
>
--
Joost de Vries
06 22375323
werk: joost.de.vries(a)ordina.nl
privé: joost(a)ziener.org
--
Joost de Vries
06 22375323
werk: joost.de.vries(a)ordina.nl
privé: joost(a)ziener.org
17 years, 11 months
sequencing by business logic/ classcastexception in consequence
by Joost de Vries
Hi,
I'm new to jBoss Rules and I'm hitting a few snags. I appreciate your
insight.
Among other things I want to use business rules to compute the right
sequence of actions that conforms to legal business rules.
The only way I could think of to implement this using rules is to use
rewriting production rules similar to:
input: ACCAAAC
rule: CA -> AC
My first question is: what other ways are there to compute a sequence that
conforms to sequencing business rules?
My second question concerns the nullpointerexceptions and
classcastexceptions I'm encountering in my rules.
I've got a sequence of C's who are either B's or A's. I.e. C is the common
superclass. This superclass has the methods:
public C getPrevious();
public C getNext();
Actually it's in dutch so it's
public class Straf extends InsluitingsTitel {}
and
public class PreventieveInsluitingsTitel extends InsluitingsTitel {}
and
public abstract class InsluitingsTitel{
public C getPrevious();
public C getNext();
}
The rule is as follows:
rule "WSV 68.1"
when
// any PreventieveInsluitingsTitel should precede all Straf
secondPosition: Straf ( firstPosition: previous )
thirdPosition: PreventieveInsluitingsTitel(previous==secondPosition,
fourthPosition:next)
then
System.out.println( "switching wsv 68.1 "+secondPosition+"
"+thirdPosition);
thirdPosition.switchWithPrevious();
if(firstPosition!=null){
modify(firstPosition);
}
modify( secondPosition);
modify( thirdPosition);
if(fourthPosition!=null){
//in the next statement a classcastexception is thrown
modify(fourthPosition);
}
end
results in a classcastexception. The sequence is at that moment { Straf,
Straf, PreventieveInsluitingsTitel, Straf } and the middle two items are
matched by the LHS secondPosition and thirdPosition.
Here's the stacktrace.
java.lang.ClassCastException: org.dji.domein.insgro.Straf
at
org.drools.base.org.dji.domein.insgro.PreventieveInsluitingsTitel$getPrevious.getValue(Unknown
Source)
at org.drools.base.ClassFieldExtractor.getValue(Unknown Source)
at org.drools.rule.Declaration.getValue(Unknown Source)
at com.sample.Rule_WSV_68_1_0ConsequenceInvoker.evaluate
(Rule_WSV_68_1_0ConsequenceInvoker.java:22)
at org.drools.common.DefaultAgenda.fireActivation(Unknown Source)
at org.drools.common.DefaultAgenda.fireNextItem(Unknown Source)
at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown Source)
at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown Source)
at org.dji.domein.insgro.VolgordeTest.main(VolgordeTest.java:32)
org.drools.spi.ConsequenceException: java.lang.ClassCastException:
org.dji.domein.insgro.Straf
at org.drools.common.DefaultAgenda.fireActivation(Unknown Source)
at org.drools.common.DefaultAgenda.fireNextItem(Unknown Source)
at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown Source)
at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown Source)
at org.dji.domein.insgro.VolgordeTest.main(VolgordeTest.java:32)
Caused by: java.lang.ClassCastException: org.dji.domein.insgro.Straf
at
org.drools.base.org.dji.domein.insgro.PreventieveInsluitingsTitel$getNext.getValue(Unknown
Source)
at org.drools.base.ClassFieldExtractor.getValue(Unknown Source)
at org.drools.rule.Declaration.getValue(Unknown Source)
at com.sample.Rule_WSV_68_1_0ConsequenceInvoker.evaluate
(Rule_WSV_68_1_0ConsequenceInvoker.java:22)
... 5 more
Thanks in advance for your insight.
Regards,
--
Joost de Vries
17 years, 11 months
Beginner looking for help with some Drools/Rule concepts
by Kabe
Hi, i've been attempting to use Drools/JBossRules (3.0.5) in a project i'm
working on and i've run into a few issues that i could use some help with.
For the most part i'm struggling with design patterns on how to structure my
facts and my programs object model.
I'm struggling a bit with how to properly introduce my object model into the
working memory. For example, lets say i have an object model such as:
Car(
Engine(
boolean : running
) : engine,
color,
Door(
boolean : open
)[]:doors
)[] : cars
This would model a list of cars and some fields such as engine, color, and
doors. Now how would i create a rule that would return every car with a
running engine? I can't seem to figure out how to correctly reference a
field of a field of a fact. i would want to do something like Car(
engine.running == true ) or Car( Engine( running == true ) ) but that
doesn't work. I can't make the Engine itself a fact because it has to be a
field of the Car, and i can't give the car a field that holds the state of
the engine because then that breaks encapsulation and makes the Car class
very bloated with the state of all of its many components.
Is there a way to do this correctly? i could use a real messy predicate or
something like this:
$car : Car()
eval( isCarRunning( $car ) )
But then what is the point of using Rete? doesn't that just equate down to
about the same amount of work if i just put this in some standard java
if/else code?
Thanks for the help,
....
Kabe
17 years, 11 months
Re: [rules-users] bounded variable...
by Joel G. Rivera-González
well our product is very mature and its been ruining drools for quite some time...
so i need to change the versions to see if it give better performance and memory usage...
and while i need to rewrite the rules, the results need to be the same...
remember the main rule lib is about 2.4 megs but we have several other smaller rule files...so i can say we have over 3 megs of xml rules...
and thats BIG...
now the big question...
when is the next release scheduled?
we i'll be able to use the or the right way?
i'm inclined to wait for next version...
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: Wednesday, January 10, 2007 3:06:53 PM
Subject: Re: [rules-users] bounded variable...
Joel,
In 3.0.x, you can not use inside a predicate, any other variable bound
in the same pattern, besides the one that is bound to the predicate. To
do that, you need to use an eval:
rule "modem_warranty_menu"
when
megaTO:MegaTransferObject(other_EffectiveOrderTypeDsl ==
Constants.NEW_COMPLETED_ORDER_TYPE, at:other_IsAdaAltaTraslado,
nm:orders_NewModem )
eval( nm.equals(Constants.FLAG_YES) ||
(nm.equals(Constants.FLAG_NO) && at.equals(Constants.FLAG_YES)) )
then
menu.add(new String[]{Constants.SERVICE_ASSURANCE_TREE_MENU_DSL,
Constants.SERVICE_ASSURANCE_MENU_WARRANTY});
end
Seems you are doing great in pushing the limitations of drools 3.0. :)
This is also a limitation that is already solved in trunk for the
next release.
[]s
Edson
Joel G. Rivera-González wrote:
> rule "modem_warranty_menu"
> when
> megaTO:MegaTransferObject(other_EffectiveOrderTypeDsl ==
> Constants.NEW_COMPLETED_ORDER_TYPE,
> at:other_IsAdaAltaTraslado, nm:orders_NewModem ->
> (nm.equals(Constants.FLAG_YES) || (nm.equals(Constants.FLAG_NO) &&
> at.equals(Constants.FLAG_YES))))
> then
> menu.add(new
> String[]{Constants.SERVICE_ASSURANCE_TREE_MENU_DSL,
> Constants.SERVICE_ASSURANCE_MENU_WARRANTY});
> end
>
> this rule cause a compilation error...
> the reason appears to be at:other_IsAdaAltaTraslado,
> why it doesnt allow me to have 2 bounded variables on the same rule?
>
> 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
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
17 years, 11 months
bounded variable...
by Joel G. Rivera-González
rule "modem_warranty_menu"
when
megaTO:MegaTransferObject(other_EffectiveOrderTypeDsl == Constants.NEW_COMPLETED_ORDER_TYPE,
at:other_IsAdaAltaTraslado, nm:orders_NewModem -> (nm.equals(Constants.FLAG_YES) || (nm.equals(Constants.FLAG_NO) && at.equals(Constants.FLAG_YES))))
then
menu.add(new String[]{Constants.SERVICE_ASSURANCE_TREE_MENU_DSL, Constants.SERVICE_ASSURANCE_MENU_WARRANTY});
end
this rule cause a compilation error...
the reason appears to be at:other_IsAdaAltaTraslado,
why it doesnt allow me to have 2 bounded variables on the same rule?
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
17 years, 11 months
Anti-rules and infinate loops
by Myles Goodhue
Hello,
I have a set of rules that determine a target date for a business object
based on which rule criteria the object matches. When the business
object is asserted, the target date field may or may not be null. My
problem is if the business object does not match any of the rules I
would like the target date set to null and since there are multiple rule
possibly affecting the same object I would rather not create an
"anti-rule" for each rule which sets the target date to null.
I've tried creating a rule with a higher salience value which sets the
target date to null, if it is not already, and modifies the object but
when the object matches another rule and modifies the object again it
goes into an infinite loop. I could probably set the target date to
null before asserting it into the rule engine but I was hoping to keep
it self contained.
Here's an example of what I'm talking about:
rule "Pre"
salience 10
no-loop true
when
$bo : MyObject( targetDate != null )
then
Date tmp = null;
$bo.setTargetDate(tmp);
modify($bo);
end
rule "Post a"
no-loop true
when
$bo : MyObject( targetDate == null, criteriaMatches == "A")
$someDate : ThisDateObject();
then
$bo.setTargetDate($someDate);
modify($bo);
end
rule "Post b"
no-loop true
when
$bo : MyObject( targetDate == null, criteriaMatches == "B" )
$someDate : ThatDateObject();
then
$bo.setTargetDate($someDate);
modify($bo);
end
etc...
I'm pretty sure there is a simple answer but it just won't come to me.
Thanks for any help.
Myles
--
eBusiness Solutions Engineer
CGI ISMC - DynaDocs
DynaDocs Global Solutions
160 Elgin St., 17th Floor
Ottawa,ON
K2C 2P4
Office: (613) 781-4338
Fax: (613) 781-3821
CONFIDENTIALITY NOTICE: Proprietary/Confidential Information belonging to CGI Group Inc. and its affiliates may be contained in this message. If you are not a recipient indicated or intended in this message (or responsible for delivery of this message to such person), or you think for any reason that this message may have been addressed to you in error, you may not use or copy or deliver this message to anyone else. In such case, you should destroy this message and are asked to notify the sender by reply email.
17 years, 11 months
Re: [rules-users] About String..."==" same as ".equals"?
by Joel G. Rivera-González
ok...
there is something wrong (in my opinion) with the rule parser..
this is a rule i would write...
rule "change_bandwidth_menu"
when
megaTO:MegaTransferObject(other_EffectiveOrderTypeDsl == Constants.NEW_COMPLETED_ORDER_TYPE,
other_HasBandwidthChangeOrderOpen == false,
eotp:other_EffectiveOrderTypePos ->(
eotp == null
))
then
menu.add(new String[]{Constants.SERVICE_ASSURANCE_TREE_MENU_DSL, Constants.SERVICE_ASSURANCE_MENU_CHANGE_BANDWIDTH});
end
this rule doesnt compile...
now this rule does compile
rule "change_bandwidth_menu"
when
megaTO:MegaTransferObject(other_EffectiveOrderTypeDsl == Constants.NEW_COMPLETED_ORDER_TYPE,
other_HasBandwidthChangeOrderOpen == false,
eotp:other_EffectiveOrderTypePos ->(eotp == null))
then
menu.add(new String[]{Constants.SERVICE_ASSURANCE_TREE_MENU_DSL, Constants.SERVICE_ASSURANCE_MENU_CHANGE_BANDWIDTH});
end
same rule...but the italic text is on a single line on the last one instead of two lines...
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 8:12:05 PM
Subject: Re: [rules-users] About String..."==" same as ".equals"?
Joel,
No. Your mistake is on the mapping of objects x patterns. Let me show
you an example:
If you write a rule like this:
rule "expensive muzzarela"
when
Cheese( type == "muzzarela", price > 50 )
then
// so something
end
You are saying the engine: "- match each SINGLE instance of Cheese
that is BOTH type == "muzzarela" AND whose price is greater than 50".
If you write a rule like this:
rule "one muzzarela and one expensive cheese"
when
Cheese( type == "muzzarela" )
Cheese( price > 50 )
then
// do something
end
You are saying the engine: "- match each PAIR of Cheese instances,
where the FIRST instance is of type == "muzzarela" and the SECOND
instance is of any cheese that has price greater than 50".
Do you see the difference?
So, if you do:
workingMemory.assert( new Cheese("muzzarela", 70) );
workingMemory.fireAllRules();
Only the first rule will fire, because the second rule requires 2
objects, one matching each constraint.
If you do:
workingMemory.assert( new Cheese("muzzarela", 10) );
workingMemory.assert( new Cheese("brie", 70) );
workingMemory.fireAllRules();
Only the second rule will fire, because the first rule requires that
a single object match BOTH constraints.
So, the above has nothing to do with variable bindings, but to make
clear, you can bind variables to each of the patterns you write, but you
can't use the same variable name for different patterns as each pattern
will match a different object.
Also, please note that top level AND operator is optional as it is
already implicitly handled. So, the bellow rule is IDENTICAL to the one
I wrote above:
rule "one muzzarela and one expensive cheese"
when
Cheese( type == "muzzarela" ) AND
Cheese( price > 50 )
then
// do something
end
I hope it clarified things a little bit. Let me know if you still
have questions.
[]s
Edson
Joel G. Rivera-González wrote:
> i see...
> when 3.2 will be available?
> :-)
>
> ok...
> so i'm writing the rules the wrong way?
> i need to put the and's on the same line separated by ','?
> i if wanted to the it the way i wrote the rules i would have to put a
> different name to each of the objects right? (mto1:MegaTransferObject
> mto2:MegaTransferObject, ect)
>
> this is a little complicated and i dindt saw it on the
> documentation...where i can read about it?
> i will rewrite the rules to match the right way...
>
> 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 6:44:22 PM
> Subject: Re: [rules-users] About String..."==" same as ".equals"?
>
> 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>
> > > <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>
> > <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
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
17 years, 11 months
Re: [rules-users] About String..."==" same as ".equals"?
by Joel G. Rivera-González
got it...
i guess ive been using drools 2.x for too long...since beta 2.0 beta 17...
any other way to do the or's?
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 8:12:05 PM
Subject: Re: [rules-users] About String..."==" same as ".equals"?
Joel,
No. Your mistake is on the mapping of objects x patterns. Let me show
you an example:
If you write a rule like this:
rule "expensive muzzarela"
when
Cheese( type == "muzzarela", price > 50 )
then
// so something
end
You are saying the engine: "- match each SINGLE instance of Cheese
that is BOTH type == "muzzarela" AND whose price is greater than 50".
If you write a rule like this:
rule "one muzzarela and one expensive cheese"
when
Cheese( type == "muzzarela" )
Cheese( price > 50 )
then
// do something
end
You are saying the engine: "- match each PAIR of Cheese instances,
where the FIRST instance is of type == "muzzarela" and the SECOND
instance is of any cheese that has price greater than 50".
Do you see the difference?
So, if you do:
workingMemory.assert( new Cheese("muzzarela", 70) );
workingMemory.fireAllRules();
Only the first rule will fire, because the second rule requires 2
objects, one matching each constraint.
If you do:
workingMemory.assert( new Cheese("muzzarela", 10) );
workingMemory.assert( new Cheese("brie", 70) );
workingMemory.fireAllRules();
Only the second rule will fire, because the first rule requires that
a single object match BOTH constraints.
So, the above has nothing to do with variable bindings, but to make
clear, you can bind variables to each of the patterns you write, but you
can't use the same variable name for different patterns as each pattern
will match a different object.
Also, please note that top level AND operator is optional as it is
already implicitly handled. So, the bellow rule is IDENTICAL to the one
I wrote above:
rule "one muzzarela and one expensive cheese"
when
Cheese( type == "muzzarela" ) AND
Cheese( price > 50 )
then
// do something
end
I hope it clarified things a little bit. Let me know if you still
have questions.
[]s
Edson
Joel G. Rivera-González wrote:
> i see...
> when 3.2 will be available?
> :-)
>
> ok...
> so i'm writing the rules the wrong way?
> i need to put the and's on the same line separated by ','?
> i if wanted to the it the way i wrote the rules i would have to put a
> different name to each of the objects right? (mto1:MegaTransferObject
> mto2:MegaTransferObject, ect)
>
> this is a little complicated and i dindt saw it on the
> documentation...where i can read about it?
> i will rewrite the rules to match the right way...
>
> 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 6:44:22 PM
> Subject: Re: [rules-users] About String..."==" same as ".equals"?
>
> 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>
> > > <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>
> > <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
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
17 years, 11 months
Re: [rules-users] About String..."==" same as ".equals"?
by Joel G. Rivera-González
got it...
i guess ive been using drools 2.x for too long...since beta 2.0 beta 17...
any other way to do the or's?
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 8:12:05 PM
Subject: Re: [rules-users] About String..."==" same as ".equals"?
Joel,
No. Your mistake is on the mapping of objects x patterns. Let me show
you an example:
If you write a rule like this:
rule "expensive muzzarela"
when
Cheese( type == "muzzarela", price > 50 )
then
// so something
end
You are saying the engine: "- match each SINGLE instance of Cheese
that is BOTH type == "muzzarela" AND whose price is greater than 50".
If you write a rule like this:
rule "one muzzarela and one expensive cheese"
when
Cheese( type == "muzzarela" )
Cheese( price > 50 )
then
// do something
end
You are saying the engine: "- match each PAIR of Cheese instances,
where the FIRST instance is of type == "muzzarela" and the SECOND
instance is of any cheese that has price greater than 50".
Do you see the difference?
So, if you do:
workingMemory.assert( new Cheese("muzzarela", 70) );
workingMemory.fireAllRules();
Only the first rule will fire, because the second rule requires 2
objects, one matching each constraint.
If you do:
workingMemory.assert( new Cheese("muzzarela", 10) );
workingMemory.assert( new Cheese("brie", 70) );
workingMemory.fireAllRules();
Only the second rule will fire, because the first rule requires that
a single object match BOTH constraints.
So, the above has nothing to do with variable bindings, but to make
clear, you can bind variables to each of the patterns you write, but you
can't use the same variable name for different patterns as each pattern
will match a different object.
Also, please note that top level AND operator is optional as it is
already implicitly handled. So, the bellow rule is IDENTICAL to the one
I wrote above:
rule "one muzzarela and one expensive cheese"
when
Cheese( type == "muzzarela" ) AND
Cheese( price > 50 )
then
// do something
end
I hope it clarified things a little bit. Let me know if you still
have questions.
[]s
Edson
Joel G. Rivera-González wrote:
> i see...
> when 3.2 will be available?
> :-)
>
> ok...
> so i'm writing the rules the wrong way?
> i need to put the and's on the same line separated by ','?
> i if wanted to the it the way i wrote the rules i would have to put a
> different name to each of the objects right? (mto1:MegaTransferObject
> mto2:MegaTransferObject, ect)
>
> this is a little complicated and i dindt saw it on the
> documentation...where i can read about it?
> i will rewrite the rules to match the right way...
>
> 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 6:44:22 PM
> Subject: Re: [rules-users] About String..."==" same as ".equals"?
>
> 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>
> > > <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>
> > <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
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
17 years, 11 months