泳道图怎么画异常流程:驳回、回退、重试、超时的落点写法

很多泳道图“看起来很顺”,一落地就崩:一旦出现驳回、资料缺失、系统超时、重复提交、对账差异,大家只剩一句话——“那就回去重走一遍”。异常没画清楚,实际上等于没有流程。

异常流程画得清楚不在于画得多复杂,而在于三件事:

  1. 异常属于哪一类(触发条件一句话能说清)
  2. 回退/恢复的落点明确到“哪一个节点”
  3. 每次回退都带着交接物与验收标准(否则就会变成踢皮球)。

下面按“驳回、回退、重试、超时”四类最常见的异常,把可操作的画法、常见反例、以及发布前的验收清单一次讲透。

先把话说死:异常流程在泳道图里到底要交付什么

把异常画进泳道图,目标不是“把所有可能性都画完”,而是让读者在 30 秒内回答这些问题:

如果泳道图能让团队对上面 6 个问题达成一致,异常流程就算画成功了。

四类异常的“标准落点写法”

异常看似千奇百怪,但落在泳道图里,基本都能归到四类。每类都建议用“触发条件 + 动作 + 落点 + 交接物 + 验收”的句式写节点。

1)驳回(Reject):不是结束,是“带原因返回”

适用场景:审批不通过、资料不合规、风控拒绝、合同条款不接受、发票抬头不对等。

最容易画错的地方:把“驳回”画成流程终止,或者只写“驳回”两个字,不写为什么、不写回哪里。

推荐画法(把驳回拆成两个动作节点):

落点怎么写才算清楚

交接物建议写在节点里(让读者一眼知道“带什么回去”):

验收标准(别省略):

如果团队经常出现“驳回后再提交,还是被同一个点驳回”,通常不是人员问题,而是泳道图里驳回原因与验收标准写得不够具体

2)回退(Rollback/Return):回到“产生差异的节点”,不是随便回

适用场景:对账差异、数据口径不一致、验收不通过、测试未过、上线失败回滚、付款失败需重新发起等。

回退有两种:

推荐画法:把回退落点固定为三选一,避免每次临时决定。

  1. 回退到“补齐输入”节点(输入不完整/不合规)
  2. 回退到“复核/重新计算”节点(计算逻辑/口径差异)
  3. 回退到“重新执行动作”节点(执行失败:提交、支付、写入、发布)

节点写法模板(可以直接用):

回退最怕什么:回退链条没止损点。建议加一个“升级/中断”条件:

需要快速把“异常分支 + 回退落点 + 升级条件”画出来时,可以直接用在线编辑工具把节点与泳道拖出来再微调:

3)重试(Retry):把“重试策略”写成流程的一部分

适用场景:接口调用失败、异步任务失败、消息队列消费失败、支付发起失败、外部系统不可用等。

重试画法的关键,不是画一个“重试”圈,而是回答四个问题:

推荐画法:把重试拆成“失败检测 → 重试队列/重试动作 → 成功/失败分流”。

为什么要写“请求号/订单号/错误码”:这三个东西决定了人工介入时是不是能快速定位,而不是凭感觉重复点。

反直觉但很常见的坑:重试成功后“没有把状态回写到业务泳道”。

4)超时(Timeout):不要只写“等待”,要写“等待到什么时候”

适用场景:审批逾期、供应商未响应、客户未回签、系统处理超时、对账未完成、工单 SLA 超时等。

超时最容易画成一条“等待”线,读者看完依旧不知道下一步。

推荐画法:把超时拆成“等待条件 + 到期动作 + 升级路径”。

超时的验收标准也要写清:

一张泳道图里,异常到底画到什么粒度合适

常见争论是:“异常太多,画了显得乱;不画,落地又不行。”

一个可用的折中标准是:画到“会改变责任边界、会改变交接物、会改变交付时间”的异常。反过来,如果某个异常只是在同一泳道里多点一次按钮、并不会影响别人,就没必要把它当作分支单独画出来。

可以用这三问来决定要不要画:

  1. 发生后是否需要跨泳道通知
  2. 是否需要重新提交/重新审批/重新验收
  3. 是否会引入新的交接物(差异明细、原因说明、日志号)?

只要有一个回答是“是”,就值得在泳道图里明确。

典型反例:看似画了异常,其实等于没画

下面这些反例,在团队里非常常见,尤其是流程图从“文档交付”转到“日常执行”时。

反例 1:把异常画成“回到上一步”

“回到上一步”在视觉上很省事,但执行上会引发三种混乱:

修正方式:回退必须指向一个命名明确的节点,例如“回到【补齐材料】/【复核并重算】/【回归验证】”。

反例 2:异常只有动作,没有原因与证据

节点写“驳回/失败/异常”,但没有“原因/证据”,会导致:

修正方式:把“原因与证据”当成交接物,写进节点:

反例 3:重试没有上限,也没有兜底

“失败 → 重试”无限循环,最终会造成:

修正方式:给出上限与兜底:

反例 4:超时没有到期动作,只有“等待”

“等待”并不是动作。没有到期动作,流程就没有管理。

修正方式:明确到期动作:提醒、升级、暂停、取消、改期,并写清由谁执行。

把异常画得更“可执行”的 6 条落地规则

  1. 异常分支尽量从决策节点出来:主流程动作后接“成功/失败”的决策,读者更好找入口。
  2. 异常入口写触发条件:例如“校验不通过(缺少发票代码)”,比“校验失败”更像现场。
  3. 回退落点必须指向命名节点:不要指向线段或“上一步”。
  4. 每次回退都带交接物:原因、证据、差异明细、请求号、单据号。
  5. 给重试一个上限与兜底:超过上限就要有人工或降级路径。
  6. 超时必须有到期动作与升级路径:否则只是画了一个“沉默”。

场景拆解:以“报销”异常为例,怎么把回退写得不扯皮

报销流程里常见异常:票据不合规、超预算、审批超时、付款失败。

把异常写清楚,建议把“错误归因”和“责任归属”分开:

这四种异常,其实分别对应“驳回/回退/超时/重试”。一旦类别定了,落点写法就会自然。

发布前验收清单:这张泳道图真的能用吗

拿着下面清单,从左到右过一遍,能快速发现“看起来完整,实际不可执行”的点:

需要把这份清单对应的节点快速补齐时,直接在浏览器里拖拽泳道和分支会更省时间:

FAQ:画异常流程时最常被问到的几个问题

Q1:异常分支是不是越多越好?

不是。异常分支越多,读者越容易迷路。更好的做法是:把异常先归类到“驳回/回退/重试/超时”,然后把落点写清楚。真正需要展开的,通常是会引发跨部门协作的那部分。

Q2:同一个异常可能既是回退又是重试,怎么画?

可以按“先自动后人工”的顺序:

这样读者不会纠结“到底叫什么”,只会按顺序执行。

Q3:异常回退会不会让流程图太长?

如果异常回退把主图拉得过长,有两个办法:

重点不是长度,而是落点和责任边界清不清楚。

Q4:审批被驳回,回到“谁”的泳道?

回到谁,取决于“谁能把问题修掉”。

泳道图里要避免一种情况:异常回到了一个“只能转发、不能解决”的泳道,最后只能继续踢回去。

Q5:有没有一个简单办法,快速判断异常画得是否到位?

把流程图给一个不熟悉流程的人看,让他只回答三句话:

如果他能不猜、不问就说出来,异常流程基本就到位了。


异常流程画得好,团队会少很多“临时群里问一句”的噪音:每个人知道什么时候该出手、该交接什么、哪里算修好。真正让流程跑起来的,从来不是“主干多顺”,而是“出问题时不乱”。