[rules-users] qualified identifiers in constraints: not commutative?
Michael Whidden
mwhidden at thebluew.com
Fri Dec 31 17:50:17 EST 2010
Thanks again, but your read of the "small print" perhaps explains why
the parens make (o.q > (o.b.maxQ)) work, but does not explain why
(o.q > o.b.maxQ) does not work while (o.b.maxQ < o.q) does work.
On 12/31/2010 3:18 PM, Wolfgang Laun wrote:
> On 31 December 2010 19:05, Michael Whidden <mwhidden at thebluew.com
> <mailto:mwhidden at thebluew.com>> wrote:
>
> Thank you! That fixes it, without using getter methods. So did I make a
> mistake, or is this a workaround for a bug?
>
>
> Very careful reading of the very, very small print in the Expert manual
> section describing the various forms of field constraints will tell you
> that one of the forms of single value restrictions is the "Return Value
> Restriction", a parhenthesized expressiion, which is the form where any
> Java expression is permitted. (The alternatives use either a literal, a
> variable or a qualified identifier. Your construct would qualify
> syntactically for the latter - I'm not sure where the current Drools
> version draws the line; future releases might relax this limitation.)
>
> Seemingly unnecessary parentheses are the distinction for the Drools
> parser to throw the contents into the generated Java code "as is".
>
> -W
>
>
> These work:
> $o:Order(q > (b.maxQ))
> $o:Order($o.q > ($o.b.maxQ))
> $o:Order(b.maxQ > q)
> $o:Order($o.b.maxQ > $o.q)
>
> These don't:
> $o:Order(q > b.maxQ)
> $o:Order($o.q > $o.b.maxQ)
>
> Is this proper behavior, or a bug? I can't find anything in the docs
> that describes the parens as required when a qualified identifier
> appears on the right side of a binary operator in a constraint.
>
>
> On 12/31/2010 11:47 AM, Wolfgang Laun wrote:
> > Try parenthesizing the right hand side but note that you may have
> to use
> > getters to access the fields
> > $o:Order($o.q > ($o.getB().getMaxQ() ) )
> >
> > It's possible that using dialect "mvel" might be a way to avoid using
> > the getX() instead of x.
> >
> > -W
> >
> >
> > On 31 December 2010 17:30, Michael Whidden <mwhidden at thebluew.com
> <mailto:mwhidden at thebluew.com>
> > <mailto:mwhidden at thebluew.com <mailto:mwhidden at thebluew.com>>> wrote:
> >
> > At Mr. Legendre's suggestion, I removed the $o from my
> constraints, but
> > with the same result: (b.maxQ < q) works, but (q > b.maxQ)
> fails. I get
> > the error:
> > "Unable to create restriction '[QualifiedIndentifierRestr: <
> b.maxQ ]'
> > for field 'quantity' in the rule 'MaxQty'"
> >
> >
> >
> > On 12/30/2010 2:32 PM, Michael Whidden wrote:
> > > I notice an unexpected behavior when creating a technical DRL in
> > Guvnor.
> > >
> > > If I have a fact with a sub-fact, then binary operators don't
> > seem to be
> > > commutative.
> > >
> > > Eg.,
> > >
> > > declare Broker
> > > maxQ: Integer
> > >
> > > declare Order
> > > q: Integer
> > > b: Broker
> > >
> > > The rule
> > > $o:Order($o.b.maxQ < $o.q)
> > > validates fine, but
> > > $o:Order($o.q > $o.b.maxQ)
> > > returns an error "Unable to create restriction
> > > '[QualifiedIndentifierRestr: > $o.broker.maxQ ]' for field '$o.q'
> > in the
> > > rule"
> > >
> > > I'm new, so I want to make sure I'm not missing something obvious
> > here...
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
> <mailto: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
>
> _______________________________________________
> 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
> https://lists.jboss.org/mailman/listinfo/rules-users
More information about the rules-users
mailing list