Executing a rule like (*1) in executable rule model, the rule is evaluated repeatedly. In this rule, re-evaluation occurs in executable model though $fact.point1 is not modified in modify($fact) block. This issue also occurs for rules written in Java dialect as well as MVEL dialect.
(*1)
package com.example.reproducer
dialect "mvel"
rule "rule9a"
when
$fact : Fact( $point1 : point1, $point2 : point2 )
then
System.out.println("***** Action of \"rule9a\" -- $fact = " + $fact + ", $point1 = " + $point1 + ", $point2 = " + $point2);
$point1 = $point1.add($point2);
$fact.point1 = $point1;
modify($fact){
point3 = $point1
}
end