[rules-dev] Constraint efficiency: (was: "New in 5.2.0" - What works, what doesn't?)

Wolfgang Laun wolfgang.laun at gmail.com
Mon May 9 07:40:19 EDT 2011


So I take it that all of these permit indexing:
  <fieldname> == <literal>
  <fieldname> == <variable>
  <fieldname> == <qualified-identifier>
  <fieldname> == <expression>    # not necessarily parenthesized any more!
as well as the same using "!=".

But the following does not permit indexing:
  <any RHS expression from above> == <fieldname>

Correct?

-W


On 9 May 2011 03:55, Mark Proctor <mproctor at codehaus.org> wrote:

>  On 06/05/2011 07:14, Wolfgang Laun wrote:
>
> Edson,
>
> On 6 May 2011 01:14, Edson Tirelli <ed.tirelli at gmail.com> wrote:
>
>>
>>     Wolfgang,
>>
>>     These are remaining bugs that must be fixed before final. Goal is to
>> support free form expressions as long as they return a boolean value (for
>> traditional constraints), or any value (for positional). Period.
>>
>
> (Well, as it's past 5.2.0M2...)
>
> Given that any expression is valid, will there still be a distinction
> w.r.t. efficiency, as there was with traditional constraints as opposed to
> eval()? If yes, how can I tell whether a constraint expression is "good" or
> "bad"?
>
> Only expressions that are equality constraints on direct fields are
> currently indexed.
>
> Mark
>
>
> One might assume that all legacy forms will be handled as efficiently as
> now, but it's possible that not only
>    field == ($var + 1)
> but also
>    field == $var + 1
> is efficient. Or, similarly,
>    field == $var
> and (now) also
>    $var == field
>
> But certainly not
>    field - 1 == $var
> Or, at least, not until some later version ;-)
>
> I repeat this quote (from 5.2.0 Drools Introduction and General User
> Guide) and my question, what does it mean? Where is this "documented"? Is
> this somehow related to the efficiency issue?
>
> <quote>
> As previously we had to document the restricted limitations of a field
> constraint on the LHS compared to expressions used inside of an 'eval' or
> used on the RHS.
>  </quote>
>
> Wolfgang
>
>
>
>>
>>     Edson
>>
>>  2011/5/5 Wolfgang Laun <wolfgang.laun at gmail.com>
>>
>>>  In the 5.2.0 Drools Introduction and General User Guide, there's
>>> section 2.1.3.1, Free Form expressions in Constraints (New Parser). It
>>> contains several examples:
>>>  #1 Person( age * 2 > $anotherPersonsAge + 2 )
>>> #2 Person( addresses["home"].streetName.startsWith( "High Park" ) )
>>> #3 Person( isAdult() )
>>>
>>> #1 does not compile: Unable to build constraint as  'age * 2' is invalid
>>> : [Rule name='exa1']
>>>
>>> #2 works - although I'd very much prefer not to be swamped with MVEL
>>> extensions unless I ask for it.
>>>
>>> #3 does not compile: Unable to Analyse Expression isAdult():
>>> [Error: no such identifier: isAdult]
>>> [Near : {... isAdult() ....}]
>>>
>>> Neither rule name nor line number is provided.
>>>
>>> Would it please be possible to have a precise statement what one *can*write as a constraint?
>>>
>>>
>>> <quote>
>>> As previously we had to document the restricted limitations of a field
>>> constraint on the LHS compared to expressions used inside of an 'eval' or
>>> used on the RHS.
>>>  </quote>
>>>
>>> I'm sorry, but I do not understand the meaning of this sentence. What
>>> does it mean, please?
>>>
>>> Cheers
>>> Wolfgang
>>>
>>>
>>
>
> _______________________________________________
> rules-dev mailing listrules-dev at lists.jboss.orghttps://lists.jboss.org/mailman/listinfo/rules-dev
>
>
>
> _______________________________________________
> rules-dev mailing list
> rules-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-dev/attachments/20110509/29cd240d/attachment.html 


More information about the rules-dev mailing list