Class FlowSubProcessResetService

java.lang.Object
com.codingapi.flow.service.impl.FlowSubProcessResetService

public class FlowSubProcessResetService extends Object
子流程数据重置服务(独立接口,不属于常规审批动作)。

重置以「已完成的子流程聚合记录」为目标:由选中的子流程实例流程id定位其所属聚合组, 旧聚合组标记为已取代(保留审计),新聚合组由继承实例(未选中,沿用原结果)与 重建实例(选中,基于旧实例数据从头重新发起的全新子流程)组成;当前记录作废, 主流程退回子流程节点重新等待,新聚合组完成后经既有结果判定恢复主流程。

可重置性由子流程节点的 SubProcessStrategy#isResettable() 配置控制,默认关闭; 同时要求当前操作记录位于该子流程触发锚点的真实下游记录链上(条件/并行分支中 不在该子流程之后的节点不可重置)。重建沿用子流程节点配置的创建脚本提交策略, 不迁移、不跳过任何历史数据,历史聚合组与旧实例记录保持有效可查。

  • Constructor Details

  • Method Details

    • reset

      public void reset()
      执行子流程数据重置。
    • canReset

      public static boolean canReset(FlowRecord record, IRepositoryHolder repositoryHolder)
      判断指定记录当前是否可以执行子流程重置(供详情数据计算重置标识)。

      满足全部条件时返回 true:记录为待办、所属流程存在未取代且已放行、全部实例已结束的 聚合组,该子流程节点配置了重置能力,且记录位于锁定合并节点(锚点之后首个产生业务 记录的节点,并行/包容分支扇出时按记录产生顺序取第一个分支节点)。

      Parameters:
      record - 当前记录
      repositoryHolder - 仓储持有者
      Returns:
      可重置返回 true