<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
<pre wrap="">Cheese ( name == $p.favouriteFoods.favouriteCheese )        
That is a different thing, because a rule engine can only understand the asserted facts and their direct properties, so where as one is a short cut for a standard variable constraint, the other in the expression above, would have to be swapped out for a return value constraint with the expression executed by MVEL. That is also planned. However be aware that excessive use of deep nested graphs will really just turn drools into a standard scripting engine.
Mark
</pre>
<br>
Anstis, Michael (M.) wrote:
<blockquote
cite="mid:6CE83AFC8500B641AE00AC1674A3B4AC0164BC5F@eu1wam08.warley.ford.com"
type="cite">
<pre wrap="">For what it's worth I like the thought of:-
$p : Person()
Cheese ( name == $p.favouriteCheese )
I like even more:-
$p : Person()
Cheese ( name == $p.favouriteFoods.favouriteCheese )        <-- i.e. object
model navigation
And possibly (subject to constrains such as "must be a Map" - I think
there's a similar requirement for extension of "contains"):-
$p : Person()
Cheese ( name == $p.favouriteFoods["cheese"] )
I'm with Edson (given my limited use) regarding pattern matches - it's
easier for me (as a user) to understand.
I can't say I understand what the cross-product issue is though (I know
"cross-product==bad").
Cheers,
Mike
-----Original Message-----
From: <a class="moz-txt-link-abbreviated" href="mailto:rules-dev-bounces@lists.jboss.org">rules-dev-bounces@lists.jboss.org</a>
[<a class="moz-txt-link-freetext" href="mailto:rules-dev-bounces@lists.jboss.org">mailto:rules-dev-bounces@lists.jboss.org</a>] On Behalf Of Edson Tirelli
Sent: 20 March 2007 23:22
To: Rules Dev List
Subject: Re: [rules-dev] sugar
Yes, that is the part that I agreed.... :)
I just would NOT want:
Cheese( name == Person().favouriteCheese )
[]s
Edson
Michael Neale wrote:
</pre>
<blockquote type="cite">
<pre wrap="">I am not sure about the "danger", but I do like anything that avoids
extra binding.
So lets not throw the baby out with the bathwater.
I really like:
$p : Person()
Cheese( name == $p.favouriteCheese )
I think that should definately be allowed.
On 3/21/07, *Edson Tirelli* <<a class="moz-txt-link-abbreviated" href="mailto:tirelli@post.com">tirelli@post.com</a>
<a class="moz-txt-link-rfc2396E" href="mailto:tirelli@post.com"><mailto:tirelli@post.com></a>> wrote:
I think it is a dangerous move.
It is easy for users to understand that each pattern matches a
fact:
A( ... )
B( ... )
C( ... )
If you start moving patterns to inside other patterns, you risk
</pre>
</blockquote>
<pre wrap=""><!---->to
</pre>
<blockquote type="cite">
<pre wrap=""> lose the legibility:
A( b == B( ... ), c == C(...) )
Main problem I see is with cross product abuses:
A( oneb == B(...), thesameb == B(...) )
The above may match the same B as intended, but may also match
other
Bs, leading to errors and bugs that will be hard to track.
I would continue making patterns explicit and not nested.
Although, the object navigability is desired and much waited I
think:
$b : B(...)
A( c == $b.c )
Also, there are some cases that we would do good allowing
</pre>
</blockquote>
<pre wrap=""><!---->nesting:
</pre>
<blockquote type="cite">
<pre wrap=""> $c : Cheesery( ... )
$s : List( size < 3 ) from collect( Cheese( type == "stilton" )
</pre>
</blockquote>
<pre wrap=""><!---->from
</pre>
<blockquote type="cite">
<pre wrap=""> $c.getCheeses() )
Just my .02 c.
[]s
Edson
Olenin, Vladimir (MOH) wrote:
>Don't have any antlr experience, but I'd say that would be a very
valuable
>addition - probably more BAs would be able to pick it up this way
(without
>having to fallback on custom DSL)
>
>Vlad
>
>-----Original Message-----
>From: <a class="moz-txt-link-abbreviated" href="mailto:rules-dev-bounces@lists.jboss.org">rules-dev-bounces@lists.jboss.org</a>
<a class="moz-txt-link-rfc2396E" href="mailto:rules-dev-bounces@lists.jboss.org"><mailto:rules-dev-bounces@lists.jboss.org></a>
>[<a class="moz-txt-link-freetext" href="mailto:rules-dev-bounces@lists.jboss.org">mailto:rules-dev-bounces@lists.jboss.org</a>
<a class="moz-txt-link-rfc2396E" href="mailto:rules-dev-bounces@lists.jboss.org"><mailto:rules-dev-bounces@lists.jboss.org></a>] On Behalf Of Mark
</pre>
</blockquote>
<pre wrap=""><!---->Proctor
</pre>
<blockquote type="cite">
<pre wrap=""> >Sent: 20 March 2007 15:54
>To: Rules Dev List
>Subject: Re: [rules-dev] sugar
>
>Could also allow:
>Cheese( name = Person( location == "london").favourCheese )
>
>Can also use this to constrain on the fact itself, instead of
just a field:
>Person( cheese = Cheese( type == "stilton ) )
>
>This could be use in config options:
>Call( duration < CallConf().minDuration )
>
>But as Edson pointed out it is open to abuse and
misunderstanding, how
>long till people do:
>Call( duration < CallConf().maxDuration, duration >
CallConf().maxDuration )
>
>Which is more like doing the following which has cross product
issues:
>CallConf( $maxDuration1 : maxDuration )
>CallConf( $maxDuration2 : maxDuration )
>Call( duration < ,$maxDuration1 duration > $maxDuration2 )
>
>Mark
>Mark Proctor wrote:
>
>
>>I've been thinking of an idea to make rules more expressive, its
just
>>syntax sugar at the parser level, but thought i'd ask feedback -
</pre>
</blockquote>
<pre wrap=""><!---->if
</pre>
<blockquote type="cite">
<pre wrap=""> >>anyone with antlr skills wants to make this work, let us know :)
>>
>>Instead of doing:
>>$p : Person($favouriteCheese : favouriteCheese )
>>Cheese( name == $favouriteCheese )
>>
>>We should allow the following:
>>$p : Person()
>>Cheese( name == $p.favouriteCheese )
>>
>>We could take this further and in places where a pattern is not
used
>>elsewhere allow:
>>Cheese( name == Person().favouriteCheese )
>>
>>Mark
>>
>>
>>
>>_______________________________________________
>>rules-dev mailing list
>><a class="moz-txt-link-abbreviated" href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a> <a class="moz-txt-link-rfc2396E" href="mailto:rules-dev@lists.jboss.org"><mailto:rules-dev@lists.jboss.org></a>
>><a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-dev">https://lists.jboss.org/mailman/listinfo/rules-dev</a>
>>
>>
>>
>
>_______________________________________________
>rules-dev mailing list
><a class="moz-txt-link-abbreviated" href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a> <a class="moz-txt-link-rfc2396E" href="mailto:rules-dev@lists.jboss.org"><mailto:rules-dev@lists.jboss.org></a>
> <a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-dev">https://lists.jboss.org/mailman/listinfo/rules-dev</a>
>_______________________________________________
>rules-dev mailing list
><a class="moz-txt-link-abbreviated" href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a> <a class="moz-txt-link-rfc2396E" href="mailto:rules-dev@lists.jboss.org"><mailto:rules-dev@lists.jboss.org></a>
><a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-dev">https://lists.jboss.org/mailman/listinfo/rules-dev</a>
>
>
>
--
Edson Tirelli
Software Engineer - JBoss Rules Core Developer
Office: +55 11 3124-6000
Mobile: +55 11 9218-4151
JBoss, a division of Red Hat @ <a class="moz-txt-link-abbreviated" href="http://www.jboss.com">www.jboss.com</a>
</pre>
</blockquote>
<pre wrap=""><!----><a class="moz-txt-link-rfc2396E" href="http://www.jboss.com"><http://www.jboss.com></a>
</pre>
<blockquote type="cite">
<pre wrap="">
_______________________________________________
rules-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a> <a class="moz-txt-link-rfc2396E" href="mailto:rules-dev@lists.jboss.org"><mailto:rules-dev@lists.jboss.org></a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-dev">https://lists.jboss.org/mailman/listinfo/rules-dev</a>
-----------------------------------------------------------------------
</pre>
</blockquote>
<pre wrap=""><!---->-
</pre>
<blockquote type="cite">
<pre wrap="">_______________________________________________
rules-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-dev">https://lists.jboss.org/mailman/listinfo/rules-dev</a>
</pre>
</blockquote>
<pre wrap=""><!---->
</pre>
</blockquote>
<br>
</body>
</html>