Yes, It creates the exact same infinite loop that this code does:

rule "MyRule"
  when
    $p : Person(name = "Yoda")
  then
    $p.setAge(300);
    update($p);   
end

As 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