Class SubProcessRecord

java.lang.Object
com.codingapi.flow.domain.SubProcessRecord

public class SubProcessRecord extends Object
子流程节点的一次执行记录(聚合根)。

一个子流程节点(SUB_PROCESS)每次执行时创建一条记录,内部实例列表 instances 记录本次创建的全部子流程实例。当全部实例结束且结果脚本确认通过时置为 SubProcessRecord.State.PASSED 并恢复主流程;全部实例结束但结果未通过时置为 SubProcessRecord.State.ERROR 并跳转异常节点。

  • Constructor Details

    • SubProcessRecord

      public SubProcessRecord(long id, String groupId, String parentProcessId, long parentRecordId, long parentWorkRuntimeId, String nodeId, int totalCount, List<SubProcessRecord.Instance> instances, SubProcessRecord.State state, long createTime, long finishTime)
      全字段构造(持久化转换使用)。
      Parameters:
      id - 记录id
      groupId - 本次子流程执行的分组id
      parentProcessId - 父流程(主流程)的流程id
      parentRecordId - 父流程中子流程节点的执行记录id
      parentWorkRuntimeId - 父流程(主流程)的运行实例id
      nodeId - 父流程中子流程节点的节点id
      totalCount - 本次创建的子流程实例总数
      instances - 本次创建的全部子流程实例
      state - 本次子流程执行的聚合状态
      createTime - 创建时间(毫秒时间戳)
      finishTime - 结束时间(毫秒时间戳),未结束时为 0
    • SubProcessRecord

      public SubProcessRecord(long id, String groupId, String parentProcessId, long parentRecordId, long parentWorkRuntimeId, String nodeId, int totalCount, List<SubProcessRecord.Instance> instances, SubProcessRecord.State state, long createTime, long finishTime, boolean superseded)
      全字段构造(含已取代标记)。
      Parameters:
      superseded - 是否已被重置取代
    • SubProcessRecord

      public SubProcessRecord(String groupId, FlowRecord parentRecord, String nodeId, List<SubProcessRecord.Instance> instances)
      创建子流程执行记录,初始状态为等待子流程结果。
      Parameters:
      groupId - 本次子流程执行的分组id
      parentRecord - 父流程中子流程节点的执行记录
      nodeId - 父流程中子流程节点的节点id
      instances - 本次创建的子流程实例
  • Method Details

    • supersede

      public void supersede()
      标记本次执行已被重置取代。

      聚合状态保持不变(保留审计语义),仅置位已取代标记。

    • isSuperseded

      public boolean isSuperseded()
      是否已被重置取代。
    • snapshot

      public SubProcessRecord snapshot()
      生成本记录的不可变快照(供事件携带,避免异步消费时被后续状态变更污染)。
      Returns:
      字段相同的副本,实例列表不可变
    • containsChildProcess

      public boolean containsChildProcess(String processId)
      判断本次执行是否包含指定子流程。
      Parameters:
      processId - 子流程的流程id
      Returns:
      包含返回 true;否则返回 false
    • complete

      public boolean complete(FlowRecord finalRecord)
      完成一个子流程实例。

      将指定子流程实例标记为最终状态(正常结束或终止),并记录结束时间。

      Parameters:
      finalRecord - 子流程的最终执行记录
      Returns:
      实例存在且处于运行中并完成时返回 true;否则返回 false
    • isAllFinished

      public boolean isAllFinished()
      是否全部子流程实例已结束(正常结束或终止)。
    • isWaiting

      public boolean isWaiting()
      是否仍处于等待子流程结果状态。
    • isPassed

      public boolean isPassed()
      是否已通过(结果脚本确认通过,主流程已恢复)。
    • isError

      public boolean isError()
      是否已异常(结果未通过,已跳转异常节点)。
    • pass

      public void pass()
      标记本次执行通过:结果脚本确认后恢复主流程。
    • error

      public void error()
      标记本次执行异常:全部实例结束但结果未通过时跳转异常节点。
    • findFinishedRecordIds

      public List<Long> findFinishedRecordIds()
      查找全部已结束实例的最终记录id。
      Returns:
      已结束实例的最终记录id列表