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