系统流程图栏目 ·

流程图常见错误 12 条:为什么画出来别人看不懂(附修正)

流程图常见错误 12 条与修正方法:从逻辑闭环、符号/连线规范到交付检查清单与 FAQ,帮你把流程图画到“别人一眼能读懂、工程上能落地”。

很多流程图之所以“别人看不懂”,并不是因为排版丑,而是因为它同时犯了两类问题:逻辑没收口(读者走不通、分支不全、异常缺失)和 表达在制造噪声(节点像段落、连线像蜘蛛网、层级混在一张图里)。

这篇文章按“可落地的审图标准”来写:你可以把它当作一份审稿清单,拿着对照任何一张流程图逐条改到可交付。文末还有 FAQ(什么时候用泳道、菱形怎么写条件、导出交付怎么保证可读)。

如果你更偏向“先写文本,再生成图”的工作流(能大幅降低排版成本),可以直接用这个入口把文字结构化后自动排版:

一句话定义“看得懂”的流程图:读者只靠图就能走完一遍

“看得懂”不是审美问题,而是一个可检验的标准:

  1. 有唯一阅读路径:读者知道从哪开始、怎么走到结束。
  2. 每个判断都覆盖所有结果:至少包含主要结果 + 常见异常结果。
  3. 每一步都有动作语义:节点名字能让人用动词读出来。
  4. 每条线都在表达关系:线条不会让人猜“为什么连到那儿”。
  5. 交付后仍然可读:导出成 PNG/PDF 后字体不糊、层级不丢。

下面 12 条错误,就是围绕这五个标准展开的。

先做 30 秒自测:你的图在哪一层就开始崩?

拿出你现在那张“别人看不懂”的流程图,快速回答 5 个问题:

  • 我能不能不问作者,从起点一路走到终点?(不能=起止/连线问题)
  • 我能不能在任意菱形处,说清楚“这两条线分别代表什么结果”?(不能=条件标注问题)
  • 我能不能用一句话解释每个节点在干什么?(不能=节点命名/粒度问题)
  • 我能不能指出系统在失败/超时/重试时会怎样?(不能=异常分支问题)
  • 我导出给别人后,别人能不能在手机/投屏上读清?(不能=交付问题)

你会发现:多数流程图不是“全都错”,而是卡在 1~2 个关键点上。修正时也应该先打通主干,再补细节。

错误 1:没有清晰的开始/结束(读者不知道从哪读起)

典型症状

  • 图里有很多矩形和菱形,但没有明确“开始/结束”。
  • 或者有开始,却有好几个“自然结束点”散落各处,让读者猜哪个是终点。

为什么会让人看不懂

流程图的阅读本质是“模拟执行”。读者在脑中运行一次流程,需要一个明确的入口与出口;没有它们,阅读无法收束。

修正方式(可执行)

  • 起点、终点用标准符号(或至少用清晰文字)标出,并写成业务语义:
    • ✅ 开始:用户发起退款申请
    • ✅ 结束:退款成功 / 退款失败(并告知原因)
  • 如果存在多个终点,确保它们语义互斥且穷尽,必要时汇总到一个“结束:流程完成(含成功/失败)”再分支写明状态。

错误 2:菱形出来两条线,但没有写条件(读者在猜“是/否”)

典型症状

  • 菱形节点写了“是否通过”“检查权限”等,但连线不写“通过/不通过”。
  • 或者连线写了“是/否”,但并不对应业务含义(例如明明是“余额足够/不足”)。

修正方式

  • 菱形本身尽量写成“可判断的命题”,连线写成“结果标签”:
    • 菱形:权限校验通过?
    • 连线:通过 / 不通过(提示无权限)
  • 连线标签要“可落地”,别只写“否”,要带上下一步动作或状态(至少括号补一句)。

实操建议:每个菱形都问自己一句:如果我把两条连线遮住,别人能猜对吗? 猜不对就说明标签不够。

错误 3:节点像段落(一段话塞进一个节点,图必然一坨)

典型症状

  • 节点里出现“并且/同时/然后/以及”等连词,甚至换行三四行。
  • 一个节点里混了动作 + 规则 + 提示文案 + 数据字段。

为什么危险

节点越长,读者越难在视觉上“扫读”。而流程图的优势是结构,不是大段说明。

修正方式

  • 节点只保留“动作”,规则与说明放两处:
    1. 写在连线标签(表达分支原因)
    2. 写在图下方备注(表达不影响流转的补充)
  • 拆节点的一个简单标准:
    • 一个节点里如果出现两个动词(如“校验并保存”),就拆成两个节点。

错误 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 条浓缩成一张可执行清单,你可以在评审前逐条打勾:

逻辑闭环(优先级最高)

  1. 是否存在明确开始与结束?
  2. 是否从开始到结束至少有一条主路径可走通?
  3. 每个判断是否覆盖所有主要结果(含常见异常)?
  4. 是否存在“走不到的分支”或“悬空节点”?
  5. 是否存在无限回路而没有出口(上限/降级/转人工)?

表达可读(让人扫一眼就懂)

  1. 节点命名是否以动词开头,且有宾语?
  2. 节点是否过长(像段落)?是否能拆?
  3. 连线是否尽量少交叉,主方向是否统一?
  4. 跨区域跳转是否用连接符编号?
  5. 角色/系统边界是否清晰(泳道/标签)?

交付可用(导出不掉链子)

  1. 导出为 PNG/PDF 后是否仍可读(手机/投屏)?
  2. 是否拆成总览 + 子流程,避免一张超长图?

想把这套清单融入日常习惯,一个很省心的方法是:先把流程写成文本、让工具自动排版成图,再按清单改两轮——你会明显感觉“排版时间”被砍掉了。

FAQ:几个高频争议点,给你一个可执行的取舍原则

1)菱形里应该写什么?写“是否”还是写条件?

建议写成可判断的命题,让人一眼知道判断对象与标准:

  • 库存充足?
  • 风控校验通过?
  • 支付回调已到达?

连线再写结果标签:充足/不足通过/拒绝。如果只写“是/否”,读者需要回头找问题本体,阅读成本更高。

2)要不要把接口/字段都画上去?

看受众:

  • 面向研发评审:可以标注关键系统调用与异步回调,但字段层面尽量放在接口文档。
  • 面向业务/产品:不要写字段,保留关键决策点与状态变化。

一个实用规则:图上出现 3 个以上字段名时,说明你把“流程图”画成了“接口文档”。

3)什么时候需要泳道?

当流程里出现任意一种情况,就强烈建议用泳道:

  • 存在人工环节(客服/审核)
  • 存在外部系统(支付/短信/第三方)
  • 同一流程跨多个内部系统(前台/中台/后台)

泳道的目的不是美观,而是明确责任与边界:谁发起、谁执行、谁兜底。

4)流程图里能不能用颜色?

可以,但要克制:

  • 颜色表达语义(角色、状态、异常)而不是装饰。
  • 任何颜色都必须在图例里解释,否则等于增加理解成本。

5)如何避免“我觉得很清楚,但别人觉得看不懂”?

做一次非常有效的测试:

  • 找一个没参与设计的人,让他只看流程图讲一遍流程。
  • 你只允许回答“是/不是”,不允许补充解释。

他讲不出来的地方,就是你图上的信息缺口。

6)如何把“错误清单”变成团队规范(避免下次又犯)

如果你需要把流程图能力变成团队的稳定产出,而不是靠个人经验,建议把“审图清单”制度化:

  • 在需求评审里固定一个 10 分钟的流程检查环节:只检查起止、判断覆盖、异常分支、责任边界,不讨论 UI 细节。
  • 给每张图一个版本与负责人:图不是一次性产物,需求变更后也要更新。
  • 把高频异常做成“默认分支”:例如“外部调用失败/超时”“重试上限”“转人工”,每个业务都能复用。

当你把这些要求写进团队模板或评审 checklist(不是文档里口头说说),流程图的质量会显著稳定。

最后再提醒一次:如果你想减少手工排版,把时间花在逻辑闭环上,可以用“文本 → 自动排版”的方式快速起稿并导出交付:

流程图的价值在于协作:它让业务、研发、测试对同一件事“对齐一次”,减少后续沟通成本。与其纠结画法,不如建立一个稳定的生产流程:

  1. 先用文本把主干与异常闭环
  2. 再生成图并自动排版
  3. 最后按清单做交付检查

你可以把上面的文本直接丢进这个工具试一试,体验一下“从文字到可读流程图”的速度差异(支持导出 PNG / draw.io,便于后续在团队里继续编辑):