Wouldn't it be great(?) and an optimisation that with "true modify" (i.e. no longer a remove and insert) that we could only re-evaluate rules that contained a pattern on a constraint affected by the update?
So,
rule "MyRule"
when
$p : Person(name = "Yoda")
then
modify ($p) {
setAge(300);
}
end
would not cause "MyRule" to re-evaluate as there's enough information present to ascertain that the modify does not alter the match.
Tell me Wolfgang, why this is such a bad idea - I just know you'll have a good explanation :)
Cheers,
Mike
Yes, It creates the exact same infinite loop that this code does:rule "MyRule"$p.setAge(300);
when
$p : Person(name = "Yoda")
thenupdate($p);endAs far as I know, the results are the same. The modify() is a more compact way to do a lot of set() invocations and an update(). Maybe there are also some other advantages of using modify(), like optimization for example.Best Regards,
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Esteban Aliverti
- Developer @ http://www.plugtree.com
- Blog @ http://ilesteban.wordpress.com
On Fri, Apr 8, 2011 at 8:39 AM, Geoffrey De Smet <ge0ffrey.spam@gmail.com> wrote:Related to the modify expression,
I 've always wondered about this code:
rule "MyRule"
when
$p : Person(name = "Yoda")
then
modify ($p) {
setAge(300)
}
end
Doesn't this create an infinite loop? (In my experience it does or at
least it takes a lot longer)
Because the modify ($p) schedules any rule using a Person back on the
agenda to be re-evaluated,
so also that rule, which is evaluated and executed again, modifying $p
again, ... hence the infinite loop?
--
With kind regards,
Geoffrey De Smet
_______________________________________________
rules-dev mailing list
rules-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev
_______________________________________________
rules-dev mailing list
rules-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev