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

Mark Proctor mproctor at codehaus.org
Sun May 8 21:55:35 EDT 2011


On 06/05/2011 07:14, Wolfgang Laun wrote:
> Edson,
>
> On 6 May 2011 01:14, Edson Tirelli <ed.tirelli at gmail.com 
> <mailto: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.0Drools 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
>     <mailto: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 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/829696cf/attachment.html 


More information about the rules-dev mailing list