3.9 KiB
3.9 KiB
部署记录状态枚举分析
状态使用情况统计
✅ 需要保留的状态
| 状态 | 使用场景 | 来源 | 是否终态 | 备注 |
|---|---|---|---|---|
| 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事件
未使用的地方
- 未在
isFinalState()中:说明它不是终态,可以恢复 - 未在统计查询中使用:部署统计不关心暂停状态
- 未在
isDeploying判断中使用:暂停状态不视为正在部署 - 实际业务场景:部署流程一般不需要暂停功能
建议
可以考虑移除 SUSPENDED 状态,原因:
- 部署是一次性操作,不需要暂停/恢复功能
- 如果需要停止部署,应该使用
TERMINATED或CANCELLED - 暂停功能更适合长流程(如审批流程),不适合部署
保留 SUSPENDED 的理由(如果保留)
- 未来可能支持部署暂停功能
- 保持与工作流状态枚举的一致性
- 如果移除,需要在
fromWorkflowStatus()中处理SUSPENDED状态(可能转换为RUNNING或其他状态)
推荐方案
方案A:移除 SUSPENDED(推荐)
优点:
- 简化状态模型
- 符合实际业务需求
- 减少不必要的状态转换
需要修改:
- 从枚举中移除
SUSPENDED - 修改
fromWorkflowStatus(),将SUSPENDED转换为其他状态(如RUNNING或FAILED) - 更新文档
方案B:保留 SUSPENDED(保守)
优点:
- 保持与工作流状态一致
- 为未来扩展预留空间
需要完善:
- 在
isFinalState()中明确处理(虽然不是终态,但需要明确逻辑) - 在统计查询中明确如何处理(计入哪个分类)
- 在
isDeploying判断中明确处理
结论
推荐移除 SUSPENDED 状态,因为:
- 部署业务不需要暂停功能
- 当前完全未使用
- 简化状态模型,减少维护成本
如果未来需要暂停功能,可以再添加回来。