[rules-users] Convert logic to DRL rules

Alexander Varakin avarakin at optonline.net
Mon Feb 19 01:04:54 EST 2007


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 at gmail.com
> <mailto: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
>     <mailto: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
>     <mailto: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
>     <mailto: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
>     <mailto: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
>     <mailto: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
>     <mailto: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
>     <mailto: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
>     <mailto:stevenw at 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 at lists.jboss.org
>     <mailto:rules-users at lists.jboss.org>
>     > >> > > > https://lists.jboss.org/mailman/listinfo/rules-users
>     > >> > > >
>     > >> > > >
>     > >> > >
>     > >> > _______________________________________________
>     > >> > rules-users mailing list
>     > >> > rules-users at lists.jboss.org
>     <mailto: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
>     <mailto:stevenw at 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 at lists.jboss.org <mailto:rules-users at lists.jboss.org>
>     > >> https://lists.jboss.org/mailman/listinfo/rules-users
>     > >>
>     > >>
>     > > _______________________________________________
>     > > rules-users mailing list
>     > > rules-users at lists.jboss.org <mailto:rules-users at 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 at lists.jboss.org <mailto:rules-users at lists.jboss.org>
>     > https://lists.jboss.org/mailman/listinfo/rules-users
>     >
>     _______________________________________________
>     rules-users mailing list
>     rules-users at lists.jboss.org <mailto: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 <mailto:stevenw at 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 at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>   




More information about the rules-users mailing list