[rules-users] Jboss rules: or with binding issue?

Rahul Phadnis rahul.phadnis at yahoo.com
Wed Oct 24 18:25:04 EDT 2007


Hello Edson,

I was not aware that 

$binding : ( A(...) or A(...) ) // this is valid

works. But now I know and I like this much better than
the workaround I was using. I think this is more
intuitive.

The way I stumbled into this is I had the following
$binding :  A(...) or A(...) 

(note the missing brackets at the start and end)

This doesn't complain at rule compilation time.
However I was getting a NPE at rule execution time.

Rahul



--- Edson Tirelli <tirelli at post.com> wrote:

>     Rahul,
> 
>     Sorry, seems there is an error in the docs. You
> can only use the
> up-front binding notation when you use infix OR, not
> the prefixed OR:
> 
> $binding : ( A(...) or A(...) ) // this is valid
> $binding : (or A(...) A(...) ) // this is not
> 
>     Maybe we need to start supporting prefix
> notation for this too, but I
> really don't like this up-front binding notation.
> This is handled as a
> special case in the grammar, where you can't nest
> other CEs, etc... in other
> words, it is not orthogonal. It was good when we
> didn't supported nesting,
> but now that we do support, it makes things
> dangerous. Example: this is not
> valid:
> 
> $x : ( X(...) or ( X(...) and Y(...) ) ) //
> obviously, not valid
> 
>     But if you remove the binding or move the
> binding inside, it is valid:
> 
> ( X(...) or ( X(...) and Y(...) ) ) // valid
> ( $x : X(...) or ( $x : X(...) and Y(...) ) ) //
> valid
> 
>     Problem is that Mark does like that up-front
> notation, and he is the
> boss... ;)
>     Anyway, I would like to hear your opinion about
> it (and possibly other
> users too), if you prefer this up-front notation
> even being handled as a
> special case, or the multi-binding is ok for you.
> 
>    Meanwhile, the workaround is either use the
> multi-bind as you are using
> or the infix OR as I showed above.
> 
>    []s
>    Edson
> 
> 2007/10/23, Rahul Phadnis <rahul.phadnis at yahoo.com>:
> >
> > I am using Jboss Rules 4.0.2 version.
> >
> > I am trying to using or with binding. However the
> > following doesn't work
> > rule "RulesTest"
> >     # the if part
> >     activation-group  "ActivationGroup1"
> >     salience 50
> >     when
> >         $eventType: EventType(id ==
> > Constants.EVENT_DEVCOM_ID)
> >         $result : Result()
> >         $param  : Parameter($thresh:threshold)
> >                           # difference exceeds
> threshold value and
> > it is still day time
> >         context: (or DevContext(difference >
> $thresh,
> > dayTime == true)
> >                              DevContext(difference
> > $thresh, sleepy
> > == false, dayTime == false) )
> >
> >     then
> >         # do something here
> >
> > end
> >
> > I get rule compilation errors:
> > SEVERE: CheckedDroolsException
> > org.drools.CheckedDroolsException: There were
> errors
> > in the rule source: [320,18]: unknown:320:18
> > mismatched token:
> > [@1949,12142:12143='or',<34>,320:18]; expecting
> type
> > ID[321,15]: unknown:321:15 mismatched token:
> > [@1967,12215:12227='DevContext',<7>,321:15];
> expecting
> > type RIGHT_PAREN[321,86]: unknown:321:86
> mismatched
> > token: [@1990,12286:12286=')',<12>,321:86];
> expecting
> > type THEN
> >         at
> >
>
org.drools.compiler.RuleBaseLoader.makeRuleBase(RuleBaseLoader.java:6
> >
> > Is this a known bug ?
> >
> > I can work around by using the alternate syntax
> > suggested in the documentation which is:
> >
> > or $context : DevContext(difference > $thresh,
> dayTime
> > == true)
> >    $context : DevComContext(difference > $thresh,
> > sleepy == false, dayTime == false) )
> >
> > Rahul.
> >
> >
> > _______________________________________________
> > 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 3529-6000
>   Mobile: +55 11 9287-5646
>   JBoss, a division of Red Hat @ www.jboss.com
> > _______________________________________________
> 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