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 @