Bill,
I fixed this bug this morning and it will be included in 3.1M2. Also,
if you want to try, just checkout source code and build it. It will work
now.
Bill,
This is a bug. May I ask you please to report in JIRA?
The reason is a varible must be specified in each possible logical
branches to be usable in it or in the consequence. Anyway, I think the
way it is now, you can probably define it only once and use everywhere
and it will work, but that is not the correct behavior.
[]s
Edson
Bill Zhang wrote:
> Hi Edson,
>
> In the following part,
>
> $person : ( Person( $id : id,
> age > 35 | <25,
> zipCode == "23546" | == "68570",
> $lop : lastOrderPrice,
> $ton : totalOrderNumber,
> ( $lop > 300 || $ton > 2 ))
> OR
> Person( $id : id,
> lastOrderCategory == "098" | == "109",
> zipCode == "74567" | == "23756" ) )
> AND // this is optional, you can simply ommit it
> ...
>
> $id has been defined twice and Drools is giving the duplicate
> declaration error. I'll keep doing some more experiments...
>
> Thanks,
>
> Bill
>
>
>
> On 2/19/07, Edson Tirelli <tirelli(a)post.com> wrote:
>
>> Bill,
>>
>> Your case is a bit more complicated because what you want is to
>> match every single object which match a permutation of SETS of
>> constraints. What you need to do is to understand the differences
>> between conditional elements (and, &&, or, ||) and connective
>> constraints (&, |). Manual has details about the conditional elements
>> and the use of multiple patterns. Connective constraints is new, but it
>> is pretty obvious where they are used.
>>
>> So, I will write a possible solution for your rule, but without
>> fully understanding the above, it will be hard to understand, I think.
>> Also, for your use case, best would be to have
>>
http://jira.jboss.com/jira/browse/JBRULES-653 already implemented
>> (scheduled for m2), but we can work around it using an ID field for
>> person:
>>
>> rule ...
>> when
>> $person : ( Person( $id : id,
>> age > 35 | <25,
>> zipCode == "23546" | == "68570",
>> $lop : lastOrderPrice,
>> $ton : totalOrderNumber,
>> ( $lop > 300 || $ton > 2 ))
>> OR
>> Person( $id : id,
>> lastOrderCategory == "098" | == "109",
>> zipCode == "74567" | == "23756" ) )
>> AND // this is optional, you can simply ommit it
>> ( Person( id == $id,
>> status == "K",
>> delinquent == true )
>> OR
>> Person( id == $id,
>> status == "T",
>> delinquent == true,
>> delinquentBucket == "3" )
>> )
>> then
>> $person.setStatus( "KT" );
>> end
>>
>> I didn't tried to run the above example, but it should work fine
>> in M1.
>> After having the JBRULES-653 ready, the rule would be:
>>
>> rule ...
>> when
>> $person : ( Person( age > 35 | <25,
>> zipCode == "23546" | == "68570",
>> $lop : lastOrderPrice,
>> $ton : totalOrderNumber,
>> ( $lop > 300 || $ton > 2 ))
>> OR
>> Person( lastOrderCategory == "098" | == "109",
>> zipCode == "74567" | == "23756" ) )
>> AND // this is optional, you can simply ommit it
>> ( Person( this == $person,
>> status == "K",
>> delinquent == true )
>> OR
>> Person( this == $person,
>> status == "T",
>> delinquent == true,
>> delinquentBucket == "3" )
>> )
>> then
>> $person.setStatus( "KT" );
>> end
>>
>>
>> It is important to note that the above syntax avoid the need for you
>> to write all possible permutations of your AND/OR patterns, as the
>> engine is calculating the permutations for you. But if you want "simple
>> to read" rules, all you need to do is do the permutations yourself and
>> write down (in this case) 2 rules:
>>
>> rule R1
>> when
>> $person : ( Person( age > 35 | <25,
>> zipCode == "23546" | == "68570",
>> $lop : lastOrderPrice,
>> $ton : totalOrderNumber,
>> ( $lop > 300 || $ton > 2 ),
>> status == "K",
>> delinquent == true )
>> OR
>> Person( lastOrderCategory == "098" | == "109",
>> zipCode == "74567" | == "23756",
>> status == "K",
>> delinquent == true ) )
>> then
>> $person.setStatus( "KT" );
>> end
>>
>> rule R2
>> when
>> $person : ( Person( age > 35 | <25,
>> zipCode == "23546" | == "68570",
>> $lop : lastOrderPrice,
>> $ton : totalOrderNumber,
>> ( $lop > 300 || $ton > 2 ),
>> status == "T",
>> delinquent == true,
>> delinquentBucket == "3" )
>> OR
>> Person( lastOrderCategory == "098" | == "109",
>> zipCode == "74567" | == "23756",
>> status == "T",
>> delinquent == true,
>> delinquentBucket == "3" ) )
>> then
>> $person.setStatus( "KT" );
>> end
>>
>> Hope it helps.
>>
>> []s
>> Edson
>>
>>
>> Bill Zhang wrote:
>>
>> > Edson and Mark,
>> >
>> > Thank you for your help.
>> >
>> > I have the complete rule expressed in PASCAL-like language in the
>> > following. Mark mentioned that "and" is not needed at top level
but I
>> > am not sure what syntax I can use to express the top-level "and"
in
>> > the following rule when the top-level "and" is used to connect
Person
>> > objects with complex matching logic.
>> >
>> > Thank you for pointing out the diffrence between "and" in a rules
>> > engine vs. normal programming language - I will do some more
>> > experiments on that.
>> >
>> > IF
>> > (
>> > (
>> > (
>> > (Person.Age > 35 OR Person.Age < 25)
>> > AND
>> > (Person.ZipCode =23546 OR Person.ZipCode = 68590)
>> > )
>> > and
>> > (
>> > (Person.LastOrderPrice > 300)
>> > OR
>> > (Person.TotalOrderNumber > 2)
>> > )
>> > )
>> > OR
>> > (
>> > (
>> > (Person.LastOrderCategory in ("098", "109") ) AND
>> > (Person.ZipCode =74567 or Person.ZipCode = 23765)
>> > )
>> > and
>> > (
>> > (Person.LastOrderPrice > 1000 OR
>> > (Person.TotalOrderNumber > 1)
>> > )
>> > )
>> > )
>> >
>> > AND // Top Level AND
>> >
>> > (
>> > (Person.Status="K" AND Person.IsDelinquent = "true")
>> > OR
>> > (Person.Status="T" AND Person.IsDelinquent = "true"
AND
>> > Person.DelinquentBucket = "3")
>> > )
>> >
>> > THEN Person.Status = "KT";
>> >
>> >
>> >
>> >
>> > On 2/19/07, Edson Tirelli <tirelli(a)post.com> wrote:
>> >
>> >> Bill,
>> >>
>> >> The new version works fine with nested conditional elements and
>> allow
>> >> for any level of nesting. You simply must be very careful with OR
>> as the
>> >> semantics of OR in a rules engine are not exactly the same as most
>> >> people are used to in imperative programming.
>> >> Also, the syntax you showed bellow is not correct (but maybe it
>> was
>> >> simply a typo in the e-mail).
>> >>
>> >> Maybe if you can write your "intent" or a sample rule (in
english)
>> >> you are trying to implement it is easier to help.
>> >>
>> >> []s
>> >> Edson
>> >>
>> >>
>> >> Bill Zhang wrote:
>> >>
>> >> > Edson,
>> >> >
>> >> > Thanks for the reply. The rule you authored worked fine on my new
>> >> > Drools build from SVN.
>> >> >
>> >> > However, I did notice that the following pattern matching is not
>> >> working:
>> >> >
>> >> > $p: Person(
>> >> > (Person(some comparison logic) or Person(some comparison
>> logic) )
>> >> > and
>> >> > (Person(some comparison logic) or Person(some comparison
>> logic) )
>> >> > )
>> >> >
>> >> > Looks like althugh "or" is allowed, the new version does
not
>> use "and"
>> >> > within pattern matching. Am I right or did I do something wrong?
>> >> >
>> >> > Thanks,
>> >> >
>> >> > Bill
>> >> >
>> >> > On 2/19/07, Edson Tirelli <tirelli(a)post.com> wrote:
>> >> >
>> >> >> Bill,
>> >> >>
>> >> >> Unfortunatelly we are working hard to get all features
>> finished in
>> >> >> time for the release and the documentation will only be done
>> right
>> >> >> before release unless we get some help from community. So,
maybe
>> >> if you
>> >> >> (or anyone else) think you can help with that, we would gladly
>> >> provide
>> >> >> you with info that when written down would be usefull both for
>> your
>> >> >> users/team and to other drools users.
>> >> >>
>> >> >> You need to use bound variables when you want to do an OR
(||)
>> >> >> between constraints of different fields inside a single
Pattern.
>> >> So, in
>> >> >> your example, as you want to do:
>> >> >>
>> >> >> lastOrderPrice > 300 OR totalOrderNumber >2
>> >> >>
>> >> >> For the same Person object, it means you need to do either:
>> >> >>
>> >> >> Person( $lop: lastOrderPrice, $ton: totalOrderNumber, ( $lop
>
>> >> 300 ||
>> >> >> $ton >2 ))
>> >> >>
>> >> >> Or using a predicate without the bound variables:
>> >> >>
>> >> >> $p: Person( ($p.getLastOrderPrice() > 300 ||
>> >> $p.getTotalOrderNumber() >
>> >> >> 2 ) )
>> >> >>
>> >> >> Or use an eval (that I think is the least efficient way):
>> >> >>
>> >> >> $p: Person()
>> >> >> eval( $p.getLastOrderPrice() > 300 ||
$p.getTotalOrderNumber()
>> > 2 )
>> >> >>
>> >> >> From the above options, I would go with the first.
>> >> >> Unfortunatelly, there is no semantics currently defined for
>> the
>> >> >> syntax you used:
>> >> >>
>> >> >> Person( lastOrderPrice > 300 || totalOrderNumber >2 )
>> >> >>
>> >> >> We may eventually do it in the future, but for now (Mark
can
>> >> confirm
>> >> >> that), we don't have resources to add it to the next major
>> release
>> >> >> (again, unless community comes in to help).
>> >> >>
>> >> >> []s
>> >> >> Edson
>> >> >>
>> >> >>
>> >> >>
>> >> >>
>> >> >> Bill Zhang wrote:
>> >> >>
>> >> >> > That's it, Edson. I'll give it a try and I'll
let you know
>> >> whether I
>> >> >> > make it.
>> >> >> >
>> >> >> > Edson, I will appreciate if you can point to me where is
the
>> most
>> >> >> > recent syntax document. Thanks.
>> >> >> >
>> >> >> > I am not sure why I need to use bound variables ($lop:
>> >> >> > lastOrderPrice). Can I write it in the following:
>> >> >> >
>> >> >> > rule ...
>> >> >> > when
>> >> >> > $person : ( Person( age > 35 | <25,
>> >> >> > zipCode == "23546"
| == "68570",
>> >> >> > ( lastOrderPrice > 300 ||
>> >> >> > totalOrderNumber >2 ))
>> >> >> > or
>> >> >> > Person( lastOrderCategory ==
"098" | ==
>> "109",
>> >> >> > zipCode == "74567"
| ==
>> "23756" ) )
>> >> >> > then
>> >> >> > $person.setStatus( "KT" );
>> >> >> > end
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> > Thanks to everyone helping me. This is really a great
>> community.
>> >> >> >
>> >> >> > On 2/19/07, Edson Tirelli <tirelli(a)post.com> wrote:
>> >> >> >
>> >> >> >>
>> >> >> >> Bill,
>> >> >> >>
>> >> >> >> Your statement bellow can be written in 3.1M1 as:
>> >> >> >>
>> >> >> >> rule ...
>> >> >> >> when
>> >> >> >> $person : ( Person( age > 35 | <25,
>> >> >> >> zipCode ==
"23546" | == "68570",
>> >> >> >> $lop: lastOrderPrice,
>> >> >> >> $ton: totalOrderNumber,
>> >> >> >> ( $lop > 300 || $ton
>2 ))
>> >> >> >> or
>> >> >> >> Person( lastOrderCategory ==
"098" | ==
>> "109",
>> >> >> >> zipCode ==
"74567" | ==
>> "23756" ) )
>> >> >> >> then
>> >> >> >> $person.setStatus( "KT" );
>> >> >> >> end
>> >> >> >>
>> >> >> >> []s
>> >> >> >> Edson
>> >> >> >>
>> >> >> >> Bill Zhang wrote:
>> >> >> >>
>> >> >> >> > Hi Alex,
>> >> >> >> >
>> >> >> >> > Thank you for confirming this. Writing such a
builder may
>> >> take us a
>> >> >> >> > lot of time because our business user is used to
free style
>> >> >> >> > Pascal-like authoring using quite complex logic.
For
>> example,
>> >> >> >> >
>> >> >> >> > IF
>> >> >> >> > (
>> >> >> >> > (
>> >> >> >> > (Person.Age > 35 OR Person.Age < 25) AND
>> >> >> >> > (Person.ZipCode =23546 or Person.ZipCode =
68590)
>> >> >> >> > )
>> >> >> >> > and
>> >> >> >> > (
>> >> >> >> > (Person.LastOrderPrice > 300 OR
>> >> >> >> > (Person.TotalOrderNumber > 2)
>> >> >> >> > )
>> >> >> >> > )
>> >> >> >> > OR
>> >> >> >> > (
>> >> >> >> > (
>> >> >> >> > (Person.LastOrderCategory in ("098",
"109") ) AND
>> >> >> >> > (Person.ZipCode =74567 or Person.ZipCode =
23765)
>> >> >> >> > )
>> >> >> >> > and
>> >> >> >> > (
>> >> >> >> > (Person.LastOrderPrice > 1000 OR
>> >> >> >> > (Person.TotalOrderNumber > 1)
>> >> >> >> > )
>> >> >> >> > )
>> >> >> >> > ...
>> >> >> >> >
>> >> >> >> > THEN Person.Status = "KT";
>> >> >> >> >
>> >> >> >> > Before I set out to write the builder, I would
like to know
>> >> whether
>> >> >> >> > the new syntax can handle the above logic? Also,
where can I
>> >> find
>> >> >> >> > document for the new syntax?
>> >> >> >> >
>> >> >> >> > I am also trying to find some existing open
source Java
>> >> library to
>> >> >> >> > "flatten out" these complex logic - to
break these complex
>> >> logic to
>> >> >> >> > atomic ones that can be handled by Drools. Do you
have any
>> >> >> >> > recommendation?
>> >> >> >> >
>> >> >> >> > Thanks a lot for your help.
>> >> >> >> >
>> >> >> >> > Bill Y.
>> >> >> >> >
>> >> >> >> >
>> >> >> >> >
>> >> >> >> >
>> >> >> >> > On 2/19/07, Alexander Varakin
<avarakin(a)optonline.net>
>> wrote:
>> >> >> >> >
>> >> >> >> >> We built a Rule Builder which creates drl
with all possible
>> >> >> >> >> combinations. In any case, drl syntax is not
exactly
>> >> business user
>> >> >> >> >> friendly, so having such builder is not a bad
idea.
>> >> >> >> >> Simple Rule Builder can be implemented as an
Excel
>> spreadsheet,
>> >> >> which
>> >> >> >> >> can be easily parsed using POI library and
then drl file
>> >> produced.
>> >> >> >> >>
>> >> >> >> >> Steven Williams wrote:
>> >> >> >> >> > Hi Bill,
>> >> >> >> >> >
>> >> >> >> >> > To implement your rules in 3.0.5 you
would need to
>> implement
>> >> >> a rule
>> >> >> >> >> > for each combination of age and
zipCode.
>> >> >> >> >> >
>> >> >> >> >> > $a : Person(age > 35 zipCode ==
23546)
>> >> >> >> >> > then
>> >> >> >> >> > $a.setStatus("KT");
>> >> >> >> >> >
>> >> >> >> >> > $a : Person(age < 25, zipCode ==
23546 )
>> >> >> >> >> > then
>> >> >> >> >> > $a.setStatus("KT");
>> >> >> >> >> >
>> >> >> >> >> > $a : Person(age > 35, zipCode ==
68590)
>> >> >> >> >> > then
>> >> >> >> >> > $a.setStatus("KT");
>> >> >> >> >> >
>> >> >> >> >> > etc..
>> >> >> >> >> >
>> >> >> >> >> > Steve
>> >> >> >> >> >
>> >> >> >> >> > On 2/19/07, *Bill Zhang*
<billzhang2006(a)gmail.com
>> >> >> >> >> >
<mailto:billzhang2006@gmail.com>> wrote:
>> >> >> >> >> >
>> >> >> >> >> > So Alex, if I only want to use the
old syntax that
>> is in
>> >> >> >> >> production,
>> >> >> >> >> > there is no way to implement my
seemingly simple
>> logic
>> >> >> >> >> conditioning?
>> >> >> >> >> >
>> >> >> >> >> > Thanks for your help.
>> >> >> >> >> >
>> >> >> >> >> > On 2/18/07, Alexander Varakin <
>> avarakin(a)optonline.net
>> >> >> >> >> >
<mailto:avarakin@optonline.net>> wrote:
>> >> >> >> >> > > As far as I know this syntax is
new and is
>> available in
>> >> >> SVN
>> >> >> >> >> > only, you
>> >> >> >> >> > > will have to wait till 3.1 is
released or take
>> >> source from
>> >> >> >> SVN
>> >> >> >> >> > and build it.
>> >> >> >> >> > >
>> >> >> >> >> > > Bill Zhang wrote:
>> >> >> >> >> > > > Hi Steven,
>> >> >> >> >> > > >
>> >> >> >> >> > > > Thank you very much for
your help. Really
>> appreciate.
>> >> >> >> >> > > >
>> >> >> >> >> > > > I still got the same
error, Unexpected token
>> '|'. I
>> >> >> did not
>> >> >> >> >> > see "|" in
>> >> >> >> >> > > > the document, only saw
"||", which is supposed
>> to be
>> >> >> >> used with
>> >> >> >> >> > > > columns.
>> >> >> >> >> > > >
>> >> >> >> >> > > > Ye
>> >> >> >> >> > > >
>> >> >> >> >> > > > On 2/18/07, Steven
Williams <
>> >> >> >> stevenw(a)objectconsulting.com.au
>> >> >> >> >> >
<mailto:stevenw@objectconsulting.com.au>> wrote:
>> >> >> >> >> > > >> Hi Bill,
>> >> >> >> >> > > >>
>> >> >> >> >> > > >> I think it should be:
>> >> >> >> >> > > >>
>> >> >> >> >> > > >> $a : Person(age >
35 | < 25, zipCode == 23546
>> | ==
>> >> >> 68590)
>> >> >> >> >> > > >>
>> >> >> >> >> > > >> Edson, Mark or Michael
can probably confirm or
>> >> >> correct the
>> >> >> >> >> > above syntax.
>> >> >> >> >> > > >>
>> >> >> >> >> > > >> Make sure you are
running of the latest trunk.
>> >> >> >> >> > > >>
>> >> >> >> >> > > >> cheers
>> >> >> >> >> > > >> Steve
>> >> >> >> >> > > >>
>> >> >> >> >> > > >>
>> >> >> >> >> > > >> On 2/18/07, Bill Zhang
<billzhang2006(a)gmail.com
>> >> >> >> >> >
<mailto:billzhang2006@gmail.com>> wrote:
>> >> >> >> >> > > >> >
>> >> >> >> >> > > >> > I tried:
>> >> >> >> >> > > >> >
>> >> >> >> >> > > >> > $a : Person(age
> 35 || age < 25, zipCode
>> == 23546
>> >> >> || ==
>> >> >> >> >> 68590)
>> >> >> >> >> > > >> >
>> >> >> >> >> > > >> > Errors:
>> >> >> >> >> > > >> >
org.drools.rule.InvalidRulePackage :
>> unknown:39:30
>> >> >> >> >> > > >> Unexpected token
'||'
>> >> >> >> >> > > >> > unknown:39:40
mismatched token:
>> >> >> >> >> > > >>
[@246,1040:1041='<=',<47>,39:40];
>> >> >> >> >> > > >> > expecting type
'('
>> >> >> >> >> > > >> > unknown:39:92
mismatched token:
>> >> >> >> >> > > >>
[@258,1092:1092='<',<46>,39:92];
>> >> >> >> >> > > >> > expecting type
'('
>> >> >> >> >> > > >> >
>> >> >> >> >> > > >> > I also tried
>> >> >> >> >> > > >> >
>> >> >> >> >> > > >> > $a : Person(age
> 35 | age < 25, zipCode ==
>> 23546
>> >> >> | ==
>> >> >> >> >> 68590)
>> >> >> >> >> > > >> >
>> >> >> >> >> > > >> > Pretty much the
same error.
>> >> >> >> >> > > >> >
>> >> >> >> >> > > >> > Based on the
document, "||" is only valid for
>> >> >> columns...
>> >> >> >> >> > > >> >
>> >> >> >> >> > > >> >
>> >> >> >> >> > > >> > On 2/17/07, Bill
Zhang
>> <billzhang2006(a)gmail.com
>> >> >> >> >> >
<mailto:billzhang2006@gmail.com>> wrote:
>> >> >> >> >> > > >> > > Thank you
Steve. But I got syntax error
>> using
>> >> the
>> >> >> >> >> following.
>> >> >> >> >> > > >> > >
>> >> >> >> >> > > >> > > On 2/17/07,
Steven Williams
>> >> >> >> >> > <stevenw(a)objectconsulting.com.au
>> >> >> >> >> >
<mailto:stevenw@objectconsulting.com.au>> wrote:
>> >> >> >> >> > > >> > > > In
trunk I think you can use connective
>> >> >> constraints:
>> >> >> >> >> > > >> > > >
>> >> >> >> >> > > >> > > > $a :
Person(age > 35 | < 25, zipCode ==
>> 23546
>> >> >> | ==
>> >> >> >> >> 68590)
>> >> >> >> >> > > >> > > > then
>> >> >> >> >> > > >> > > >
$a.setStatus("KT");
>> >> >> >> >> > > >> > > >
>> >> >> >> >> > > >> > > >
>> >> >> >> >> > > >> > > >
>> >> >> >> >> > > >> > > >
>> >> >> >> >> > > >> > > > On
2/18/07, Bill Zhang <
>> >> billzhang2006(a)gmail.com
>> >> >> >> >> >
<mailto:billzhang2006@gmail.com>> wrote:
>> >> >> >> >> > > >> > > > >
>> >> >> >> >> > > >> > > > >
Hello,
>> >> >> >> >> > > >> > > > >
>> >> >> >> >> > > >> > > > > I
am a new Drools user trying to
>> convert the
>> >> >> >> >> > following simple
>> >> >> >> >> > > >> logic
>> >> >> >> >> > > >> into
>> >> >> >> >> > > >> > > > DRL:
>> >> >> >> >> > > >> > > > >
>> >> >> >> >> > > >> > > > > IF
(Person.Age > 35 OR Person.Age <
>> 25) AND
>> >> >> >> >> > (Person.ZipCode =
>> >> >> >> >> > > >> 23546
>> >> >> >> >> > > >> or
>> >> >> >> >> > > >> > > > >
Person.ZipCode = 68590)
>> >> >> >> >> > > >> > > > >
THEN
>> >> >> >> >> > > >> > > > >
Person.Status = "KT";
>> >> >> >> >> > > >> > > > >
>> >> >> >> >> > > >> > > > > I
found that it is not easy to
>> convert the
>> >> >> above
>> >> >> >> >> > logic into
>> >> >> >> >> > > >> ONE DRL
>> >> >> >> >> > > >> rule.
>> >> >> >> >> > > >> > > > >
>> >> >> >> >> > > >> > > > > I
tried something like this
>> >> >> >> >> > > >> > > > >
>> >> >> >> >> > > >> > > > >
when
>> >> >> >> >> > > >> > > > >
$a: Person(age>35) or Person (age<25)
>> >> >> >> >> > > >> > > > >
$b: Person(Zipcode==23456) or Person
>> >> >> (ZipCode ==
>> >> >> >> >> 68590)
>> >> >> >> >> > > >> > > > >
$c: $a and $b
>> >> >> >> >> > > >> > > > >
Then
>> >> >> >> >> > > >> > > > >
$c.setStatus("KT")
>> >> >> >> >> > > >> > > > >
>> >> >> >> >> > > >> > > > >
But looks like I can not use
>> >> >> >> >> > > >> > > > >
$c: $a and $b
>> >> >> >> >> > > >> > > > >
becaue in Drools, you can only bind
>> >> variable to
>> >> >> >> >> > column, not
>> >> >> >> >> > > >> to other
>> >> >> >> >> > > >> > > >
varaibles.
>> >> >> >> >> > > >> > > > >
>> >> >> >> >> > > >> > > > >
Please advise how to do this. I would
>> >> >> imagine this
>> >> >> >> >> > should be
>> >> >> >> >> > > >> quite
>> >> >> >> >> > > >> > > > >
simple, maybe I missed something quite
>> >> obvious.
>> >> >> >> >> > > >> > > > >
>> >> >> >> >> > > >> > > > > I
know that I can write custom Java
>> method
>> >> >> to do
>> >> >> >> >> > this, but if
>> >> >> >> >> > > >> I do
>> >> >> >> >> > > >> > > > >
that, I suppose I lose the power of
>> RETEOO
>> >> >> pattern
>> >> >> >> >> > matching
>> >> >> >> >> > > >> (pattern
>> >> >> >> >> > > >> > > >
resuing,
>> >> >> >> >> > > >> > > > >
etc.). So I prefer not to do that.
>> >> >> >> >> > > >> > > > >
>> >> >> >> >> > > >> > > > > I
also understand I can break the above
>> >> logic
>> >> >> >> into 4
>> >> >> >> >> > rules
>> >> >> >> >> > > >> and that
>> >> >> >> >> > > >> > > > >
would be quite easy, but our business
>> user
>> >> >> is not
>> >> >> >> >> used to
>> >> >> >> >> > > >> think in
>> >> >> >> >> > > >> > > > >
that way. Also, we have more complex
>> >> logic than
>> >> >> >> the
>> >> >> >> >> > above. So
>> >> >> >> >> > > >> what I
>> >> >> >> >> > > >> > > > >
want is to see if there is a way to
>> convert
>> >> >> this
>> >> >> >> >> > > >> > > > >
kind of logic in ONE DRL rule.
>> >> >> >> >> > > >> > > > >
>> >> >> >> >> > > >> > > > >
Thanks in advance.
>> >> >> >> >> > > >> > > > >
>> >> >> >> >> > > >> > > > >
Bill
>> >> >> >> >> > > >> > > > >
>> >> _______________________________________________
>> >> >> >> >> > > >> > > > >
rules-users mailing list
>> >> >> >> >> > > >> > > > >
rules-users(a)lists.jboss.org
>> >> >> >> >> >
<mailto:rules-users@lists.jboss.org>
>> >> >> >> >> > > >> > > > >
>> >> >> >> >> > > >>
>>
https://lists.jboss.org/mailman/listinfo/rules-users
>> >> >> >> >> > > >> > > > >
>> >> >> >> >> > > >> > > >
>> >> >> >> >> > > >> > > >
>> >> >> >> >> > > >> > > >
>> >> >> >> >> > > >> > > > --
>> >> >> >> >> > > >> > > > Steven
Williams
>> >> >> >> >> > > >> > > >
>> >> >> >> >> > > >> > > >
Supervising Consultant
>> >> >> >> >> > > >> > > >
>> >> >> >> >> > > >> > > > Object
Consulting
>> >> >> >> >> > > >> > > > Office:
8615 4500 Mob: 0439 898 668
>> Fax: 8615
>> >> >> 4501
>> >> >> >> >> > > >> > > >
stevenw(a)objectconsulting.com.au
>> >> >> >> >> >
<mailto:stevenw@objectconsulting.com.au>
>> >> >> >> >> > > >> > > >
www.objectconsulting.com.au
>> >> >> >> >> >
<
http://www.objectconsulting.com.au>
>> >> >> >> >> > > >> > > >
>> >> >> >> >> > > >> > > >
consulting | development | training |
>> support
>> >> >> >> >> > > >> > > > our
experience makes the difference
>> >> >> >> >> > > >> > > >
>> >> _______________________________________________
>> >> >> >> >> > > >> > > >
rules-users mailing list
>> >> >> >> >> > > >> > > >
rules-users(a)lists.jboss.org
>> >> >> >> >> >
<mailto:rules-users@lists.jboss.org>
>> >> >> >> >> > > >> > > >
>> >> >>
https://lists.jboss.org/mailman/listinfo/rules-users
>> >> >> >> >> > > >> > > >
>> >> >> >> >> > > >> > > >
>> >> >> >> >> > > >> > >
>> >> >> >> >> > > >> >
>> _______________________________________________
>> >> >> >> >> > > >> > rules-users
mailing list
>> >> >> >> >> > > >> >
rules-users(a)lists.jboss.org
>> >> >> >> >> >
<mailto:rules-users@lists.jboss.org>
>> >> >> >> >> > > >> >
>> >>
https://lists.jboss.org/mailman/listinfo/rules-users
>> >> >> >> >> > > >> >
>> >> >> >> >> > > >>
>> >> >> >> >> > > >>
>> >> >> >> >> > > >>
>> >> >> >> >> > > >> --
>> >> >> >> >> > > >> Steven Williams
>> >> >> >> >> > > >>
>> >> >> >> >> > > >> Supervising
Consultant
>> >> >> >> >> > > >>
>> >> >> >> >> > > >> Object Consulting
>> >> >> >> >> > > >> Office: 8615 4500 Mob:
0439 898 668 Fax: 8615
>> 4501
>> >> >> >> >> > > >>
stevenw(a)objectconsulting.com.au
>> >> >> >> >> >
<mailto:stevenw@objectconsulting.com.au>
>> >> >> >> >> > > >>
www.objectconsulting.com.au
>> >> >> >> >> <
http://www.objectconsulting.com.au>
>> >> >> >> >> > > >>
>> >> >> >> >> > > >> consulting |
development | training | support
>> >> >> >> >> > > >> our experience makes
the difference
>> >> >> >> >> > > >>
_______________________________________________
>> >> >> >> >> > > >> rules-users mailing
list
>> >> >> >> >> > > >>
rules-users(a)lists.jboss.org
>> >> >> >> >> <mailto:rules-users@lists.jboss.org>
>> >> >> >> >> > > >>
>>
https://lists.jboss.org/mailman/listinfo/rules-users
>> >> >> >> >> > > >>
>> >> >> >> >> > > >>
>> >> >> >> >> > > >
_______________________________________________
>> >> >> >> >> > > > rules-users mailing list
>> >> >> >> >> > > >
rules-users(a)lists.jboss.org
>> >> >> >> >> <mailto:rules-users@lists.jboss.org>
>> >> >> >> >> > > >
>>
https://lists.jboss.org/mailman/listinfo/rules-users
>> >> >> >> >> >
>> <
https://lists.jboss.org/mailman/listinfo/rules-users>
>> >> >> >> >> > > >
>> >> >> >> >> > >
>> >> >> >> >> > >
_______________________________________________
>> >> >> >> >> > > rules-users mailing list
>> >> >> >> >> > > rules-users(a)lists.jboss.org
>> >> >> >> <mailto:rules-users@lists.jboss.org>
>> >> >> >> >> > >
>>
https://lists.jboss.org/mailman/listinfo/rules-users
>> >> >> >> >> > >
>> >> >> >> >> >
_______________________________________________
>> >> >> >> >> > rules-users mailing list
>> >> >> >> >> > rules-users(a)lists.jboss.org
>> >> >> >> <mailto:rules-users@lists.jboss.org>
>> >> >> >> >> >
https://lists.jboss.org/mailman/listinfo/rules-users
>> >> >> >> >> >
>> >> >> >> >> >
>> >> >> >> >> >
>> >> >> >> >> >
>> >> >> >> >> > --
>> >> >> >> >> > Steven Williams
>> >> >> >> >> >
>> >> >> >> >> > Supervising Consultant
>> >> >> >> >> >
>> >> >> >> >> > Object Consulting
>> >> >> >> >> > Office: 8615 4500 Mob: 0439 898 668 Fax:
8615 4501
>> >> >> >> >> > stevenw(a)objectconsulting.com.au
>> >> >> >> >>
<mailto:stevenw@objectconsulting.com.au>
>> >> >> >> >> >
www.objectconsulting.com.au
>> >> <
http://www.objectconsulting.com.au>
>> >> >> >> >> >
>> >> >> >> >> > consulting | development | training |
support
>> >> >> >> >> > our experience makes the difference
>> >> >> >> >> >
>> >> >> >> >>
>> >> >> >>
>> >> >>
>> >>
>> ------------------------------------------------------------------------
>>
>> >> >> >> >> >
>> >> >> >> >> >
_______________________________________________
>> >> >> >> >> > 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
>> >> >> >> >>
>> >> >> >> > _______________________________________________
>> >> >> >> > 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
>> >> >> >>
>> >> >> > _______________________________________________
>> >> >> > 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
>> >> >>
>> >> > _______________________________________________
>> >> > 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
>> >>
>> > _______________________________________________
>> > 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
>>
> _______________________________________________
> 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 @