泳道图怎么画异常流程:驳回、回退、重试、超时的落点写法
很多泳道图“看起来很顺”,一落地就崩:一旦出现驳回、资料缺失、系统超时、重复提交、对账差异,大家只剩一句话——“那就回去重走一遍”。异常没画清楚,实际上等于没有流程。
异常流程画得清楚不在于画得多复杂,而在于三件事:
- 异常属于哪一类(触发条件一句话能说清);
- 回退/恢复的落点明确到“哪一个节点”;
- 每次回退都带着交接物与验收标准(否则就会变成踢皮球)。
下面按“驳回、回退、重试、超时”四类最常见的异常,把可操作的画法、常见反例、以及发布前的验收清单一次讲透。
先把话说死:异常流程在泳道图里到底要交付什么
把异常画进泳道图,目标不是“把所有可能性都画完”,而是让读者在 30 秒内回答这些问题:
- 异常从哪里冒出来?(在哪个节点发现、由谁发现)
- 谁负责兜底?(责任泳道不含糊)
- 回到哪一步?(不是“回到上一步”,而是回到“补材料/复核/重算/改配置”这种可执行节点)
- 带什么东西回去?(交接物:原因、证据、差异明细、截图、日志号、单据号)
- 怎么算修好了?(验收标准:通过校验/复核签字/系统状态变更/金额一致)
- 有没有止损点?(超过次数/超过时限/影响范围扩大时,升级到谁)
如果泳道图能让团队对上面 6 个问题达成一致,异常流程就算画成功了。
四类异常的“标准落点写法”
异常看似千奇百怪,但落在泳道图里,基本都能归到四类。每类都建议用“触发条件 + 动作 + 落点 + 交接物 + 验收”的句式写节点。
1)驳回(Reject):不是结束,是“带原因返回”
适用场景:审批不通过、资料不合规、风控拒绝、合同条款不接受、发票抬头不对等。
最容易画错的地方:把“驳回”画成流程终止,或者只写“驳回”两个字,不写为什么、不写回哪里。
推荐画法(把驳回拆成两个动作节点):
- 决策节点(审批/校验)分支:
- 通过 → 走主流程
- 不通过 → 进入异常分支
- 异常分支至少包含两步:
- 生成驳回原因与证据(审批人/系统/风控泳道)
- 申请人补充/修改并重新提交(申请人泳道)
落点怎么写才算清楚:
- “驳回 → 回到【补充材料】”比“驳回 → 回到上一步”可执行
- “驳回 → 回到【重新定价/重新核算】”比“驳回 → 修改后再提”更一致
交接物建议写在节点里(让读者一眼知道“带什么回去”):
- 驳回原因(结构化:字段/条款/金额/日期)
- 证据(截图/日志号/条款编号/差异明细)
- 处理建议(可选:必须改什么才能再过)
验收标准(别省略):
- 补材料后重新校验通过
- 或者审批人确认“已按驳回原因修正”
如果团队经常出现“驳回后再提交,还是被同一个点驳回”,通常不是人员问题,而是泳道图里驳回原因与验收标准写得不够具体。
2)回退(Rollback/Return):回到“产生差异的节点”,不是随便回
适用场景:对账差异、数据口径不一致、验收不通过、测试未过、上线失败回滚、付款失败需重新发起等。
回退有两种:
- 业务回退:资料/规则/口径问题,回到业务动作节点(补充、复核、重新核算)
- 技术回退:发布/配置/数据写入问题,回到技术动作节点(回滚版本、恢复配置、重放任务)
推荐画法:把回退落点固定为三选一,避免每次临时决定。
- 回退到“补齐输入”节点(输入不完整/不合规)
- 回退到“复核/重新计算”节点(计算逻辑/口径差异)
- 回退到“重新执行动作”节点(执行失败:提交、支付、写入、发布)
节点写法模板(可以直接用):
- “发现差异 → 生成差异明细(含字段、口径、来源) → 回到【复核并重算】”
- “验收不通过 → 记录失败用例/日志号 → 回到【修复并回归验证】”
- “上线失败 → 触发回滚(版本号/变更单号) → 恢复监控绿色 → 回到【复盘并重新评审】”
回退最怕什么:回退链条没止损点。建议加一个“升级/中断”条件:
- “回退次数 ≥ 2 次 → 升级到负责人评审是否暂停/改方案”
- “回退超过 24 小时 → 通知相关方并更新交付日期”
需要快速把“异常分支 + 回退落点 + 升级条件”画出来时,可以直接用在线编辑工具把节点与泳道拖出来再微调:
3)重试(Retry):把“重试策略”写成流程的一部分
适用场景:接口调用失败、异步任务失败、消息队列消费失败、支付发起失败、外部系统不可用等。
重试画法的关键,不是画一个“重试”圈,而是回答四个问题:
- 谁触发重试?(系统自动/人工点按钮/定时任务)
- 重试间隔是多少?(立即/5 分钟/指数退避)
- 重试次数上限?(1 次/3 次/无限不行)
- 失败后走哪条兜底路径?(告警、人工介入、降级方案)
推荐画法:把重试拆成“失败检测 → 重试队列/重试动作 → 成功/失败分流”。
- 主流程动作节点:例如“调用支付接口”
- 决策节点:
- 成功 → 继续
- 失败 → 进入异常分支
- 异常分支节点建议这样写:
- “记录失败原因(错误码/请求号/订单号)”
- “加入重试队列(间隔 5 分钟,最多 3 次)”
- 决策节点:“重试成功?”
- 是 → 回到主流程下一节点
- 否 → “告警并转人工处理”
为什么要写“请求号/订单号/错误码”:这三个东西决定了人工介入时是不是能快速定位,而不是凭感觉重复点。
反直觉但很常见的坑:重试成功后“没有把状态回写到业务泳道”。
- 结果是:技术层面成功了,业务侧依然认为失败。
- 所以在泳道图里要明确“成功后由谁更新状态、通知谁”。
4)超时(Timeout):不要只写“等待”,要写“等待到什么时候”
适用场景:审批逾期、供应商未响应、客户未回签、系统处理超时、对账未完成、工单 SLA 超时等。
超时最容易画成一条“等待”线,读者看完依旧不知道下一步。
推荐画法:把超时拆成“等待条件 + 到期动作 + 升级路径”。
- 等待节点写清楚:
- “等待供应商回传发票(截止 T+3 工作日)”
- “等待审批(超过 24 小时自动提醒)”
- “等待异步处理完成(超过 10 分钟判定超时)”
- 超时后的动作必须落到某个泳道:
- “自动提醒(系统泳道)”
- “升级审批(系统/HR/管理者泳道)”
- “暂停流程并通知相关方(流程 owner 泳道)”
超时的验收标准也要写清:
- 提醒发出算不算完成?通常不算。
- 真正的完成标准是“拿到回传/审批通过/处理完成/明确拒绝”。
一张泳道图里,异常到底画到什么粒度合适
常见争论是:“异常太多,画了显得乱;不画,落地又不行。”
一个可用的折中标准是:画到“会改变责任边界、会改变交接物、会改变交付时间”的异常。反过来,如果某个异常只是在同一泳道里多点一次按钮、并不会影响别人,就没必要把它当作分支单独画出来。
可以用这三问来决定要不要画:
- 发生后是否需要跨泳道通知?
- 是否需要重新提交/重新审批/重新验收?
- 是否会引入新的交接物(差异明细、原因说明、日志号)?
只要有一个回答是“是”,就值得在泳道图里明确。
典型反例:看似画了异常,其实等于没画
下面这些反例,在团队里非常常见,尤其是流程图从“文档交付”转到“日常执行”时。
反例 1:把异常画成“回到上一步”
“回到上一步”在视觉上很省事,但执行上会引发三种混乱:
- 不同人理解的“上一步”不一致
- 回退会绕过关键节点(比如复核/登记/通知)
- 一旦流程扩展,所谓“上一步”会变化
修正方式:回退必须指向一个命名明确的节点,例如“回到【补齐材料】/【复核并重算】/【回归验证】”。
反例 2:异常只有动作,没有原因与证据
节点写“驳回/失败/异常”,但没有“原因/证据”,会导致:
- 申请人不知道该改什么,只能反复试
- 审批人也记不住上次驳回的点
- 流程 owner 无法统计主要问题来源
修正方式:把“原因与证据”当成交接物,写进节点:
- “记录驳回原因(条款编号/字段)+ 附证据(截图/日志号)”
反例 3:重试没有上限,也没有兜底
“失败 → 重试”无限循环,最终会造成:
- 系统资源被拖死
- 人工介入永远不发生
- 业务侧只看到“在处理”,但没有明确时间
修正方式:给出上限与兜底:
- “最多 3 次,每次间隔 5 分钟;仍失败 → 告警并转人工”
反例 4:超时没有到期动作,只有“等待”
“等待”并不是动作。没有到期动作,流程就没有管理。
修正方式:明确到期动作:提醒、升级、暂停、取消、改期,并写清由谁执行。
把异常画得更“可执行”的 6 条落地规则
- 异常分支尽量从决策节点出来:主流程动作后接“成功/失败”的决策,读者更好找入口。
- 异常入口写触发条件:例如“校验不通过(缺少发票代码)”,比“校验失败”更像现场。
- 回退落点必须指向命名节点:不要指向线段或“上一步”。
- 每次回退都带交接物:原因、证据、差异明细、请求号、单据号。
- 给重试一个上限与兜底:超过上限就要有人工或降级路径。
- 超时必须有到期动作与升级路径:否则只是画了一个“沉默”。
场景拆解:以“报销”异常为例,怎么把回退写得不扯皮
报销流程里常见异常:票据不合规、超预算、审批超时、付款失败。
把异常写清楚,建议把“错误归因”和“责任归属”分开:
-
票据不合规(输入问题)
- 发现者:财务/系统校验
- 交接物:不合规原因(发票类型/抬头/金额/日期)+ 证据
- 回退落点:回到【补齐/更换票据】(员工泳道)
- 验收:校验通过 + 复核通过
-
超预算(规则问题/决策问题)
- 发现者:系统/财务
- 交接物:预算占用明细、可用额度、差异金额
- 回退落点:回到【申请追加预算】或【调整报销金额】
- 验收:预算审批通过或金额调整后复核通过
-
审批超时(时限管理问题)
- 到期动作:系统提醒 → 升级审批 → 流程 owner 介入
- 验收:审批完成或明确拒绝(有原因)
-
付款失败(执行失败)
- 交接物:付款请求号、错误码、银行回执
- 回退落点:回到【重新发起付款】(出纳泳道)
- 重试策略:最多 2 次;仍失败 → 转人工核对账户信息
这四种异常,其实分别对应“驳回/回退/超时/重试”。一旦类别定了,落点写法就会自然。
发布前验收清单:这张泳道图真的能用吗
拿着下面清单,从左到右过一遍,能快速发现“看起来完整,实际不可执行”的点:
- 每个关键动作节点后,是否有“成功/失败”的分流(至少在高风险节点)?
- 每条异常分支的入口,是否写了触发条件(缺什么、差什么、错什么)?
- 驳回是否包含“原因与证据”的节点,而不是只写“驳回”?
- 回退是否指向命名明确的节点,而不是“回到上一步/回到发起人”?
- 回退时交接物是否明确(差异明细/日志号/单据号/截图)?
- 重试是否写清:触发者、间隔、次数上限、失败兜底?
- 超时是否写清:截止时间、到期动作、升级路径?
- 是否存在无限循环(重试/回退)且没有止损点?
- 是否有节点把“技术成功”同步为“业务状态已更新”(避免两边认知不一致)?
- 读者是否能在 30 秒内回答:异常发生后找谁、回哪里、带什么、怎么验收?
需要把这份清单对应的节点快速补齐时,直接在浏览器里拖拽泳道和分支会更省时间:
FAQ:画异常流程时最常被问到的几个问题
Q1:异常分支是不是越多越好?
不是。异常分支越多,读者越容易迷路。更好的做法是:把异常先归类到“驳回/回退/重试/超时”,然后把落点写清楚。真正需要展开的,通常是会引发跨部门协作的那部分。
Q2:同一个异常可能既是回退又是重试,怎么画?
可以按“先自动后人工”的顺序:
- 先画重试(系统自动 1~3 次,带上限)
- 仍失败再画回退(转人工核对输入/配置/账户,回到明确节点)
这样读者不会纠结“到底叫什么”,只会按顺序执行。
Q3:异常回退会不会让流程图太长?
如果异常回退把主图拉得过长,有两个办法:
- 把“异常处理”集中成一个子流程块(例如“异常处理(含回退/重试/升级)”),在块内再展开细节;
- 或者把异常处理画成“同页右侧”的辅助区,主流程保持从上到下。
重点不是长度,而是落点和责任边界清不清楚。
Q4:审批被驳回,回到“谁”的泳道?
回到谁,取决于“谁能把问题修掉”。
- 资料不全:回到提交人/经办人
- 条款风险:回到法务或业务负责人(让能改条款的人改)
- 金额口径:回到财务复核或业务定价
泳道图里要避免一种情况:异常回到了一个“只能转发、不能解决”的泳道,最后只能继续踢回去。
Q5:有没有一个简单办法,快速判断异常画得是否到位?
把流程图给一个不熟悉流程的人看,让他只回答三句话:
- “异常发生后先做什么?”
- “回到哪一步?”
- “需要准备哪些东西才能重新走通?”
如果他能不猜、不问就说出来,异常流程基本就到位了。
异常流程画得好,团队会少很多“临时群里问一句”的噪音:每个人知道什么时候该出手、该交接什么、哪里算修好。真正让流程跑起来的,从来不是“主干多顺”,而是“出问题时不乱”。