状态流转与自定义工作流
需求、缺陷、子需求各自在哪里改状态,按钮为什么是灰的,槽位认领,以及给项目配自己的工作流
适用角色:所有项目角色;配置工作流需「管理工作流配置」 · 最后更新:2026-08-11 · 约 6 分钟
项目里的三类对象——需求、缺陷、需求下的子需求——状态变更都走同一套工作流引擎:每一步流转有权限守卫、有留痕、可回溯。但三者的操作入口不在一处,这篇先把入口说清楚,再讲项目管理员怎么定制自己的工作流。
三类对象,三个入口
- 需求:进需求详情的「需求流程」区——点当前状态徽章(带 ▾)展开可去的状态,或点下面那排流转按钮。详见需求评审与流转。
- 缺陷:进「缺陷」页,在看板上把卡片拖到目标状态列,或点卡片上的状态点选一条出边;也可以打开缺陷详情,用「流程」区里的流转按钮。全项目只有缺陷页有看板。
- 子需求:子需求没有独立页面,它挂在需求详情概览里的清单上,那份清单是只读的。要改子需求状态,去「甘特排期」——在图上点中那一行,右侧检查器的「流程」区就是它的流转入口。
不管从哪个入口进,列表里只出现从当前状态出发的动作;选中目标状态,需要时填原因,原因会进入对象动态供回溯。默认缺陷/子需求流程里的「取消」强制填写原因,并进入已取消终态;完成或已取消后再次取消会明确返回 422,不会静默当成成功。流转后状态立即生效;如果工作流配了处理人路由,「当前处理人」会随之切换,轮到的人会收到站内通知。
按钮为什么是灰的
灰色动作代表「流转路径存在,但当前被拦住」。悬停能看到人话原因,常见三类:
- 权限不足
- 你的角色在这个模块的访问级别不够——找项目管理员在「项目设置 → 权限设置」调,级别与模块的对应关系见成员与角色。
- 必填字段为空
- 目标状态要求某个字段先填好(比如缺陷关单前要填处理结论)。
- 不能连续经手
- 工作流配置了「同一人不能连续两步经手」的岗位分离守卫,换个人来执行。
槽位与认领
工作流可以给状态配角色槽位(比如「开发」「QA」):槽位里是一组候选人,谁来处理靠认领。
- 卡片处于待认领状态时,槽位成员在详情页的「流程」区点「认领」即成为当前处理人;其他成员随后认领会提示已被抢先。
- 认领只改「当前处理人」,不改槽位成员名单;负责人(owner)单独由「负责人」字段管理,不走槽位。
自定义工作流(项目管理员)
内置工作流不够用时,在「项目设置 → 工作流」自己配:
- 新建模板:可从系统种子模板起步,也可从空白开始。一个模板服务一类对象——需求,或缺陷与子需求。
- 编辑草稿:增删状态、连流转边、配守卫(权限/必填字段/岗位分离)与槽位路由。草稿随便改,不影响线上。
- 校验并发布:发布前引擎会校验图的完整性(可达性、终态等);发布产生一个新版本,在途对象平滑迁移——已有卡片按映射落到新状态集,不丢数据。
- 绑定类型:把模板绑定到对象类型上,之后这类对象走新工作流。
常见问题
- 改了工作流,旧卡片会怎样?
- 发布时你会先看到迁移预览:每个旧状态映射到哪个新状态、影响多少张卡。确认后一次性平滑迁移,历史动态保持不变。
- 我用 API Token 调流转接口被拒?
- 早期用 all scope 签发的 token 可能不含工作流管理权限。在「项目设置 → API Token」重新生成即可;token 的实际权限永远不会超过你本人当下的角色权限。
- 需求和缺陷的工作流是一套吗?
- 同一个引擎、各自的模板。需求默认走内置 7 状态流程,缺陷与子需求默认走 6 状态流程(含需要原因的「已取消」终态),都可以被自定义模板替换。
- 为什么子需求只能在甘特图上改状态?
- 子需求是需求下的执行拆解,没有自己的列表页;甘特图是它唯一有流转入口的地方。需求详情里的子需求清单只做进度回显,点不动状态。