流程图常见错误 12 条:为什么画出来别人看不懂(附修正)
流程图常见错误 12 条与修正方法:从逻辑闭环、符号/连线规范到交付检查清单与 FAQ,帮你把流程图画到“别人一眼能读懂、工程上能落地”。
很多流程图之所以“别人看不懂”,并不是因为排版丑,而是因为它同时犯了两类问题:逻辑没收口(读者走不通、分支不全、异常缺失)和 表达在制造噪声(节点像段落、连线像蜘蛛网、层级混在一张图里)。
这篇文章按“可落地的审图标准”来写:你可以把它当作一份审稿清单,拿着对照任何一张流程图逐条改到可交付。文末还有 FAQ(什么时候用泳道、菱形怎么写条件、导出交付怎么保证可读)。
如果你更偏向“先写文本,再生成图”的工作流(能大幅降低排版成本),可以直接用这个入口把文字结构化后自动排版:
一句话定义“看得懂”的流程图:读者只靠图就能走完一遍
“看得懂”不是审美问题,而是一个可检验的标准:
- 有唯一阅读路径:读者知道从哪开始、怎么走到结束。
- 每个判断都覆盖所有结果:至少包含主要结果 + 常见异常结果。
- 每一步都有动作语义:节点名字能让人用动词读出来。
- 每条线都在表达关系:线条不会让人猜“为什么连到那儿”。
- 交付后仍然可读:导出成 PNG/PDF 后字体不糊、层级不丢。
下面 12 条错误,就是围绕这五个标准展开的。
先做 30 秒自测:你的图在哪一层就开始崩?
拿出你现在那张“别人看不懂”的流程图,快速回答 5 个问题:
- 我能不能不问作者,从起点一路走到终点?(不能=起止/连线问题)
- 我能不能在任意菱形处,说清楚“这两条线分别代表什么结果”?(不能=条件标注问题)
- 我能不能用一句话解释每个节点在干什么?(不能=节点命名/粒度问题)
- 我能不能指出系统在失败/超时/重试时会怎样?(不能=异常分支问题)
- 我导出给别人后,别人能不能在手机/投屏上读清?(不能=交付问题)
你会发现:多数流程图不是“全都错”,而是卡在 1~2 个关键点上。修正时也应该先打通主干,再补细节。
错误 1:没有清晰的开始/结束(读者不知道从哪读起)
典型症状
- 图里有很多矩形和菱形,但没有明确“开始/结束”。
- 或者有开始,却有好几个“自然结束点”散落各处,让读者猜哪个是终点。
为什么会让人看不懂
流程图的阅读本质是“模拟执行”。读者在脑中运行一次流程,需要一个明确的入口与出口;没有它们,阅读无法收束。
修正方式(可执行)
- 起点、终点用标准符号(或至少用清晰文字)标出,并写成业务语义:
- ✅ 开始:用户发起退款申请
- ✅ 结束:退款成功 / 退款失败(并告知原因)
- 如果存在多个终点,确保它们语义互斥且穷尽,必要时汇总到一个“结束:流程完成(含成功/失败)”再分支写明状态。
错误 2:菱形出来两条线,但没有写条件(读者在猜“是/否”)
典型症状
- 菱形节点写了“是否通过”“检查权限”等,但连线不写“通过/不通过”。
- 或者连线写了“是/否”,但并不对应业务含义(例如明明是“余额足够/不足”)。
修正方式
- 菱形本身尽量写成“可判断的命题”,连线写成“结果标签”:
- 菱形:
权限校验通过? - 连线:
通过/不通过(提示无权限)
- 菱形:
- 连线标签要“可落地”,别只写“否”,要带上下一步动作或状态(至少括号补一句)。
实操建议:每个菱形都问自己一句:如果我把两条连线遮住,别人能猜对吗? 猜不对就说明标签不够。
错误 3:节点像段落(一段话塞进一个节点,图必然一坨)
典型症状
- 节点里出现“并且/同时/然后/以及”等连词,甚至换行三四行。
- 一个节点里混了动作 + 规则 + 提示文案 + 数据字段。
为什么危险
节点越长,读者越难在视觉上“扫读”。而流程图的优势是结构,不是大段说明。
修正方式
- 节点只保留“动作”,规则与说明放两处:
- 写在连线标签(表达分支原因)
- 写在图下方备注(表达不影响流转的补充)
- 拆节点的一个简单标准:
- 一个节点里如果出现两个动词(如“校验并保存”),就拆成两个节点。
错误 4:主线画得很顺,但异常分支全没画(现实世界从不只成功)
典型症状
- 所有流程都走向“成功结束”。
- 没有“失败/超时/重试/取消/回滚”的路径。
为什么会让工程落不了地
开发、测试、客服关心的正是异常处理:
- 失败时提示什么?
- 能不能重试?重试次数?
- 超时后如何补偿?
- 数据是否需要回滚?
没有异常分支的流程图,往往只适合做“概念讲解”,不适合做“系统交付”。
修正方式(最小可交付)
对每个关键节点,至少补齐这 3 类异常之一:
- 校验失败(参数/权限/状态不满足)
- 外部依赖失败(第三方/支付/短信)
- 超时与重试(网络抖动、异步回调)
把异常画出来不需要很复杂:一条“失败→提示→结束/重试”就能让图从“好看”变成“能用”。
错误 5:有回路但不写回路原因(读者不知道为什么要回去)
典型症状
- 线条绕回前面某个节点,但没有标注“为什么回去”。
- 或者回路跨越很长距离,导致读者在图上追线追丢。
修正方式
- 回路必须写“触发条件”(写在回路边或连线标签上):
- ✅ 验证码错误 → 重新输入
- ✅ 库存不足 → 返回修改数量
- 如果回路跨度大,用连接符/编号减少追线成本(见错误 9)。
- 对“无限重试”的回路,补一个“重试上限/降级/转人工”的出口。
错误 6:同一动作重复出现(图变长但信息没增量)
典型症状
- “记录日志”“展示提示”“写入订单”等动作在多个地方重复画。
- 重复的节点还被起了不同名字,让人以为是不同动作。
修正方式
- 把重复动作抽成一个节点,复用连接符指过去。
- 若动作确实不同,节点名要体现差异(比如“记录操作日志”“记录风控日志”)。
一个小技巧:把节点名全部摘出来做列表,肉眼就能看见重复与同义词泛滥。
错误 7:层级混乱(战略级流程、页面交互、接口细节挤在一张图)
典型症状
- 一张图同时包含“业务阶段”“页面按钮”“接口字段”“数据库表”。
- 读者读着读着不知道自己在看什么层级。
修正方式:先决定这张图要交付给谁
你必须明确受众,因为受众决定粒度:
- 面向业务/产品:强调阶段与决策点(不要写字段)
- 面向研发:强调系统边界、接口调用、异步回调、异常补偿
- 面向测试/运营:强调状态、边界条件、失败路径与提示
实践里最稳的做法是:
- 一张图只解决一个层级问题
- 需要多个层级时,拆成“总览图 + 子流程图”,用编号链接(见错误 10)
错误 8:节点命名不是动作,而是名词堆砌(读者读不出“发生了什么”)
典型症状
- 节点写“用户信息”“支付结果”“订单状态”等名词。
- 或者写“校验”“处理”“执行”这类空动词,没有宾语。
修正方式:用“动词 + 宾语 +(可选)约束”
- ✅ 发送短信验证码(5 分钟内有效)
- ✅ 创建订单(状态=待支付)
- ✅ 调用支付(渠道=微信)
- ✅ 回写支付结果(成功/失败)
命名清晰的副作用是:你会更容易发现“缺了某一步”。
错误 9:连线交叉成蜘蛛网(问题通常不在连线,而在结构)
典型症状
- 线条大量交叉、回绕,甚至穿过节点。
- 读者必须用手指在屏幕上追线。
修正方式(从结构下手)
- 优先统一主方向:从上到下(或从左到右),不要两种方向混用。
- 对于多分支汇合:使用“汇聚节点”(例如“合并:进入下一阶段”)而不是让每条线直接跳到远处。
- 对于跨区域跳转:使用连接符/编号(见下一条)。
如果你已经把逻辑理顺但线仍然乱,建议回到“文本→生成图”的方式重排版一次,能省掉大量手工拖拽时间:
错误 10:跨页/跨区域跳转不做标识(读者追线追到迷路)
典型症状
- 一条线从左上角跨到右下角,穿过一堆节点。
- 或者为了“不断线”把图拉得很宽很长,最后导出无法阅读。
修正方式
- 使用连接符(圆圈/小标签)并编号:
A/B/1/2。 - 连接符必须成对出现:
A:从这里跳到 A(子流程:支付确认)A:从 A 返回(继续后续流程)
- 长流程拆图:总览图保留阶段与关键决策,子图展开细节。
错误 11:泳道/角色边界缺失(谁在做这一步不清楚)
典型症状
- 图上同时出现“用户点击”“系统校验”“客服审核”“第三方回调”,但没有边界。
- 读者会把所有动作都归为“系统做的”。
修正方式:用边界表达“责任归属”
- 至少区分 2 类泳道:
用户/外部与系统/后台。 - 如果存在人工环节,单独一条泳道:
运营/客服/审核员。 - 外部依赖单独标识:
支付渠道、短信服务、风控服务。
泳道不是装饰,它的作用是让读者立刻回答:这一步失败是谁来兜底?
错误 12:交付不可读(导出后字体糊、比例乱、读者看不全)
典型症状
- 你在电脑上看着还行,导出 PNG 就糊成一团。
- 贴到文档/飞书/Notion 后变形、缩放,读者看不清。
修正方式:把“交付”当成流程的一部分
- 在画图工具里先设定目标画布(A4 横向 / 16:9 投屏),不要画完再硬缩。
- 字号设下限:用于投屏/评审时,优先大字少字。
- 超长流程拆页:宁可 2~3 张图,也不要 1 张长图。
- 导出前做一次“缩到 50%”的自测:自己都看不清,别人一定看不清。
0~1 个小例子:用最短文本把“逻辑闭环”先写出来
下面不是模板库,只是演示“文字先闭环”的写法。你会发现:当文字能走通时,生成出来的图也更容易清晰。
- 开始:用户提交登录
- 系统:校验账号密码
- 判断:校验通过?
- 通过 → 系统:创建会话 → 结束:登录成功
- 不通过 → 系统:提示失败原因(次数+1) → 判断:达到上限?
- 否 → 返回:重新输入
- 是 → 结束:锁定账号(通知用户)
写到这里,你已经补齐了:起止、条件标签、异常(失败/上限)、回路原因。
审图清单:把任何流程图从“能画”改到“能交付”
把这 12 条浓缩成一张可执行清单,你可以在评审前逐条打勾:
逻辑闭环(优先级最高)
- 是否存在明确开始与结束?
- 是否从开始到结束至少有一条主路径可走通?
- 每个判断是否覆盖所有主要结果(含常见异常)?
- 是否存在“走不到的分支”或“悬空节点”?
- 是否存在无限回路而没有出口(上限/降级/转人工)?
表达可读(让人扫一眼就懂)
- 节点命名是否以动词开头,且有宾语?
- 节点是否过长(像段落)?是否能拆?
- 连线是否尽量少交叉,主方向是否统一?
- 跨区域跳转是否用连接符编号?
- 角色/系统边界是否清晰(泳道/标签)?
交付可用(导出不掉链子)
- 导出为 PNG/PDF 后是否仍可读(手机/投屏)?
- 是否拆成总览 + 子流程,避免一张超长图?
想把这套清单融入日常习惯,一个很省心的方法是:先把流程写成文本、让工具自动排版成图,再按清单改两轮——你会明显感觉“排版时间”被砍掉了。
FAQ:几个高频争议点,给你一个可执行的取舍原则
1)菱形里应该写什么?写“是否”还是写条件?
建议写成可判断的命题,让人一眼知道判断对象与标准:
- ✅
库存充足? - ✅
风控校验通过? - ✅
支付回调已到达?
连线再写结果标签:充足/不足、通过/拒绝。如果只写“是/否”,读者需要回头找问题本体,阅读成本更高。
2)要不要把接口/字段都画上去?
看受众:
- 面向研发评审:可以标注关键系统调用与异步回调,但字段层面尽量放在接口文档。
- 面向业务/产品:不要写字段,保留关键决策点与状态变化。
一个实用规则:图上出现 3 个以上字段名时,说明你把“流程图”画成了“接口文档”。
3)什么时候需要泳道?
当流程里出现任意一种情况,就强烈建议用泳道:
- 存在人工环节(客服/审核)
- 存在外部系统(支付/短信/第三方)
- 同一流程跨多个内部系统(前台/中台/后台)
泳道的目的不是美观,而是明确责任与边界:谁发起、谁执行、谁兜底。
4)流程图里能不能用颜色?
可以,但要克制:
- 颜色表达语义(角色、状态、异常)而不是装饰。
- 任何颜色都必须在图例里解释,否则等于增加理解成本。
5)如何避免“我觉得很清楚,但别人觉得看不懂”?
做一次非常有效的测试:
- 找一个没参与设计的人,让他只看流程图讲一遍流程。
- 你只允许回答“是/不是”,不允许补充解释。
他讲不出来的地方,就是你图上的信息缺口。
6)如何把“错误清单”变成团队规范(避免下次又犯)
如果你需要把流程图能力变成团队的稳定产出,而不是靠个人经验,建议把“审图清单”制度化:
- 在需求评审里固定一个 10 分钟的流程检查环节:只检查起止、判断覆盖、异常分支、责任边界,不讨论 UI 细节。
- 给每张图一个版本与负责人:图不是一次性产物,需求变更后也要更新。
- 把高频异常做成“默认分支”:例如“外部调用失败/超时”“重试上限”“转人工”,每个业务都能复用。
当你把这些要求写进团队模板或评审 checklist(不是文档里口头说说),流程图的质量会显著稳定。
最后再提醒一次:如果你想减少手工排版,把时间花在逻辑闭环上,可以用“文本 → 自动排版”的方式快速起稿并导出交付:
流程图的价值在于协作:它让业务、研发、测试对同一件事“对齐一次”,减少后续沟通成本。与其纠结画法,不如建立一个稳定的生产流程:
- 先用文本把主干与异常闭环
- 再生成图并自动排版
- 最后按清单做交付检查
你可以把上面的文本直接丢进这个工具试一试,体验一下“从文字到可读流程图”的速度差异(支持导出 PNG / draw.io,便于后续在团队里继续编辑):