deploy-ease-platform/backend/docs/deploy-record-status-analysis.md
2025-11-04 22:37:01 +08:00

3.9 KiB
Raw Permalink Blame History

部署记录状态枚举分析

状态使用情况统计

需要保留的状态

状态 使用场景 来源 是否终态 备注
CREATED 1. 创建记录时初始状态
2. 工作流状态转换
3. 统计查询30分钟内视为运行中
4. isDeploying 判断
工作流状态 CREATED 初始状态30分钟内视为正在部署
PENDING_APPROVAL 1. 审批任务创建时设置 审批事件 审批阶段专用状态
RUNNING 1. 审批通过时设置
2. 工作流状态转换
3. 统计查询
4. isDeploying 判断
工作流状态 RUNNING
审批通过事件
运行中状态
SUCCESS 1. 工作流状态转换COMPLETED
2. 统计查询(成功计数)
工作流状态 COMPLETED 部署成功
FAILED 1. 工作流状态转换
2. 统计查询(失败计数)
工作流状态 FAILED 部署失败
PARTIAL_SUCCESS 1. 工作流状态转换COMPLETED_WITH_ERRORS
2. 统计查询(失败计数)
工作流状态 COMPLETED_WITH_ERRORS 部分成功(存在失败节点)
CANCELLED 1. 审批被拒绝时设置
2. 统计查询(失败计数)
审批拒绝事件 已取消(审批被拒)
TERMINATED 1. 工作流状态转换
2. 统计查询(失败计数)
工作流状态 TERMINATED 已终止(手动终止)

可能不需要的状态

状态 使用场景 来源 是否终态 问题分析
SUSPENDED 1. 工作流状态转换(但实际未使用) 工作流状态 SUSPENDED 问题
1. 未在 isFinalState() 中(不是终态)
2. 未在统计查询中使用
3. 未在 isDeploying 判断中使用
4. 部署场景中可能不需要暂停功能
5. 工作流层面支持,但部署业务中无用

详细分析

SUSPENDED 状态分析

当前实现

  • fromWorkflowStatus() 中支持转换:SUSPENDED -> SUSPENDED
  • 工作流层面支持:ProcessEventHandler 会处理 PROCESS_SUSPENDED 事件

未使用的地方

  1. 未在 isFinalState():说明它不是终态,可以恢复
  2. 未在统计查询中使用:部署统计不关心暂停状态
  3. 未在 isDeploying 判断中使用:暂停状态不视为正在部署
  4. 实际业务场景:部署流程一般不需要暂停功能

建议

可以考虑移除 SUSPENDED 状态,原因:

  1. 部署是一次性操作,不需要暂停/恢复功能
  2. 如果需要停止部署,应该使用 TERMINATEDCANCELLED
  3. 暂停功能更适合长流程(如审批流程),不适合部署

保留 SUSPENDED 的理由(如果保留)

  1. 未来可能支持部署暂停功能
  2. 保持与工作流状态枚举的一致性
  3. 如果移除,需要在 fromWorkflowStatus() 中处理 SUSPENDED 状态(可能转换为 RUNNING 或其他状态)

推荐方案

方案A移除 SUSPENDED推荐

优点

  • 简化状态模型
  • 符合实际业务需求
  • 减少不必要的状态转换

需要修改

  1. 从枚举中移除 SUSPENDED
  2. 修改 fromWorkflowStatus(),将 SUSPENDED 转换为其他状态(如 RUNNINGFAILED
  3. 更新文档

方案B保留 SUSPENDED保守

优点

  • 保持与工作流状态一致
  • 为未来扩展预留空间

需要完善

  1. isFinalState() 中明确处理(虽然不是终态,但需要明确逻辑)
  2. 在统计查询中明确如何处理(计入哪个分类)
  3. isDeploying 判断中明确处理

结论

推荐移除 SUSPENDED 状态,因为:

  1. 部署业务不需要暂停功能
  2. 当前完全未使用
  3. 简化状态模型,减少维护成本

如果未来需要暂停功能,可以再添加回来。