Package com.codingapi.flow.context
Class LoopTriggerTraceContext
java.lang.Object
com.codingapi.flow.context.LoopTriggerTraceContext
循环触发点内存跟踪上下文(被动式循环检测)。
触发点执行时(子流程创建、抄送自动流转等)将标识记录到内存 Map,在时间窗口内同一标识 (同一流程实例 + 同一节点 + 同一触发类型)再次执行即判定为循环。循环产生通常极快, 不会跨越太长的周期,因此标记在时间窗口后由共享调度线程自动清理,内存有界。
相比主动查询(沿 parentId 回溯 / 全量流程记录统计),该机制不主动访问数据库, 仅在触发点记录与对照,运行期开销可忽略。
-
Field Summary
Fields -
Method Summary
-
Field Details
-
DEFAULT_WINDOW_MILLIS
public static final long DEFAULT_WINDOW_MILLIS默认检测窗口:30 秒。窗口内重复触发即判定循环,窗口外视为新触发。- See Also:
-
-
Method Details
-
trace
记录触发点并检查是否在默认窗口内重复触发。- Parameters:
key- 触发点标识(流程实例 + 节点 + 触发类型)- Returns:
- true 表示窗口内重复触发(循环)
-
trace
记录触发点并检查是否在指定窗口内重复触发。- Parameters:
key- 触发点标识windowMillis- 检测窗口(毫秒)- Returns:
- true 表示窗口内重复触发(循环)
-
clearExpired
public void clearExpired()清理窗口外的过期标记。 -
clear
public void clear()清空全部标记(测试隔离用)。
-