[rules-users] Convert logic to DRL rules

Edson Tirelli tirelli at post.com
Mon Feb 19 10:22:24 EST 2007


   Bill,

   The way of doing that is using connective constraints as explained by 
Steven previously:

$a : Person(age > 35 | < 25, zipCode == 23546 | == 68590)

   This is a new feature that only works in 3.1M1 and later versions.

   []s
   Edson


Bill Zhang wrote:

> Hi Steven,
>
> Yes I thought of that but our business user says this is unacceptable
> unless I can write a parser to automatically generate all these
> combinations.
>
> The example I use is quite simple. Our business user have quite
> complex logic expressions (imagin my example plus a lot of parenthesis
> to build up multiple level logic) already built using Pascal like
> language and it is not easy to do.
>
> Thanks,
>
> Ye
>
> On 2/19/07, Steven Williams <stevenw at objectconsulting.com.au> 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 at 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 at 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 at 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 at 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 at gmail.com> wrote:
>> > > >> > > Thank you Steve. But I got syntax error using the following.
>> > > >> > >
>> > > >> > > On 2/17/07, Steven Williams <stevenw at 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 at 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 at 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 at objectconsulting.com.au
>> > > >> > > > www.objectconsulting.com.au
>> > > >> > > >
>> > > >> > > > consulting | development | training | support
>> > > >> > > > our experience makes the difference
>> > > >> > > >
>> _______________________________________________
>> > > >> > > > rules-users mailing list
>> > > >> > > > rules-users at lists.jboss.org
>> > > >> > > >
>> https://lists.jboss.org/mailman/listinfo/rules-users
>> > > >> > > >
>> > > >> > > >
>> > > >> > >
>> > > >> > _______________________________________________
>> > > >> > rules-users mailing list
>> > > >> > rules-users at 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 at objectconsulting.com.au
>> > > >> www.objectconsulting.com.au
>> > > >>
>> > > >> consulting | development | training | support
>> > > >> our experience makes the difference
>> > > >> _______________________________________________
>> > > >> rules-users mailing list
>> > > >> rules-users at lists.jboss.org
>> > > >> https://lists.jboss.org/mailman/listinfo/rules-users
>> > > >>
>> > > >>
>> > > > _______________________________________________
>> > > > rules-users mailing list
>> > > > rules-users at lists.jboss.org
>> > > > https://lists.jboss.org/mailman/listinfo/rules-users
>> > > >
>> > >
>> > > _______________________________________________
>> > > rules-users mailing list
>> > > rules-users at lists.jboss.org
>> > > https://lists.jboss.org/mailman/listinfo/rules-users
>> > >
>> > _______________________________________________
>> > rules-users mailing list
>> > rules-users at 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 at objectconsulting.com.au
>> www.objectconsulting.com.au
>>
>> consulting | development | training | support
>> our experience makes the difference
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
> _______________________________________________
> rules-users mailing list
> rules-users at 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





More information about the rules-users mailing list