3.0 KiB
3.0 KiB
模块 3:工单状态流转规则实现
工单状态不能靠临时 if else。必须先设计状态机,再实现接口和校验。
created
已创建
已创建
→
processing
处理中
处理中
→
pending_verify
待验证
待验证
→
closed
已关闭
已关闭
pending_verify → rejected → processing
状态流转表
| 当前状态 | 动作 | 目标状态 | 允许角色 | 前置条件 | 失败提示 |
|---|---|---|---|---|---|
| created | 指派 | processing | 管理员/负责人 | 必须选择指派人 | 请选择指派人 |
| processing | 提交验证 | pending_verify | 研发/负责人 | 必须填写处理说明 | 请填写处理说明 |
| pending_verify | 关闭 | closed | 测试/负责人 | 验证通过 | 当前工单不可关闭 |
| pending_verify | 驳回 | rejected | 测试/负责人 | 必须填写驳回原因 | 请填写驳回原因 |
| rejected | 重新处理 | processing | 研发/负责人 | 必须填写处理说明 | 请填写重新处理说明 |
非法流转清单
| 当前状态 | 尝试动作 | 系统响应 | 验收 |
|---|---|---|---|
| closed | 重新处理 | 返回非法状态流转 | 状态不变 |
| created | 关闭 | 返回非法状态流转 | 页面提示原因 |
| processing | 驳回 | 返回非法状态流转 | 状态不变 |
| pending_verify | 驳回但无原因 | 返回参数错误 | 提示填写原因 |
| 任意状态 | 无权限流转 | 返回权限拒绝 | 不完成操作 |
状态流转接口契约
POST /workOrder/assign
字段:id、assignee、remark
POST /workOrder/transition
字段:id、action、targetStatus、remark、version
验收:
合法流转成功;非法流转失败;状态不被错误修改;审计日志可查。