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
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 @