如何用 CSV 制作流程图
如何把一份 CSV 变成流程图:编辑器读取的表头名称、连线到这一列该填什么,以及各列的填写顺序——先方框文字,再形状,然后箭头,最后泳道。
一份 CSV 能变成流程图,是因为它的行是步骤而不是记录:一行一个步骤,一列形状,一列方框文字,再加一列连线到,填这个步骤通向的那一行的位置。
简而言之
- 一行一个步骤。一行在文件里的位置,就是这个步骤的身份。
- 表头名称就是映射——形状、方框文字、连线到、连线文字——列的顺序无关紧要。
- 只有方框文字,画出来是互不相连的方框。连线到才是画出箭头的那一列。
- 连线文字按位置与连线到配对:“6,4”配上“是,否”,就把“是”标在指向第 6 行的箭头上。
- 横向泳道和纵向泳道是最后填的两列,它们把流程图变成泳道图。
每一列该填什么,以及按什么顺序填
CSV 是导出物。产出它的是别的东西——服务台、ERP、表单工具、队列报表——而出来的是纯文本:一行表头,然后一行一条记录,字段之间用逗号分隔,含逗号或换行的字段用双引号包住。里面没有公式,没有第二张工作表,没有颜色也没有批注,因为这个格式根本没有地方安放它们。正是这份朴素,让 CSV 能在两个别的事情上毫无共识的系统之间传递;也正是这份朴素,让文件本身什么都说明不了。一列是干什么用的,只写在它的表头名称里。
QueryChart 的编辑器是一张列名固定的表格:#、形状、方框文字、连线到、连线文字、连线样式、横向泳道、纵向泳道、备注和链接。CSV 是按表头名称而不是按列的位置匹配的,所以你的列碰巧排成什么顺序都无所谓,编辑器不认识的列会被原样带过并忽略。导入的方式,是把 .csv 拖到表格区域上,或者把 CSV 文本粘贴进去。没有向导,也没有需要手工对应的映射——表头行就是映射,这也正是表头行值得认真对待的原因。
剩下的才是真问题:到底该填什么。按下面这个顺序填,你能一列一列看着它们各自起作用。只填方框文字,得到的是一列互不相连的方框——一份记录式的 CSV 导入进来也是这个样子。形状把提问变成菱形,把首尾两行变成终止框。连线到这一列一填,图就出现了:它填的是这一行通向的那一行的位置,第一条数据行算作 1,一行通向多处时用逗号分隔,连线文字按同样的顺序承载分支名称。横向泳道和纵向泳道最后填,把一串链条变成一张网格。
下面这个示例是一条客服工单分级处理流程——十八行——正是按这个顺序搭起来的。打开表格面板,看看每个阶段填的是哪一列。在导入你自己的文件之前,先用纯文本编辑器而不是电子表格打开它一次:分号分隔符、表头行上面的两行前言,或者一种把带重音的人名渲染成替换字符的编码,每一种都会让导入失败,而电子表格会把这三种全部藏起来,因为它渲染这份文件,而不是把文件摊给你看。/zh/guides/流程图csv文件结构 把这一面讲全了。
同一份 CSV,一次填一列
客服工单分级处理,十八行。每个阶段往同一份文件里多加一列——打开表格面板看看是哪一列。
只有方框文字
六个标签,别的什么都没有:“提交工单”、“将工单登记入服务台队列”、“信息是否足以着手处理?”,一直到“按影响范围与紧急程度确定优先级”。它们叠成一列方框,彼此之间空无一物——服务台导出文件画出来也是这个样子,因为一份记录式的文件没有地方安放一条关系。这里没有任何东西说明,那道完整性检查有两种结果。
加上形状列
第 1 行变成开始,四个提问——“信息是否足以着手处理?”、“是否在催办期限内收到回复?”、“一线能否自行解决?”和“处理方法是否奏效?”——变成菱形。其余的都留作流程,这也是单元格留空时你得到的值。编辑器不认识的取值会悄悄归一成流程,所以一行写成菱形或选择,画出来就是一个矩形,问句还端端正正地待在里面。
填连线到,再填连线文字
现在轮到箭头。“信息是否足以着手处理?”的连线到填 6,4,连线文字填 是,否,于是“是”跳到定优先级那一步,“否”走向“向提单人索取缺失信息”。“一线能否自行解决?”填的是 8,11,标签是“能”和“不能,升级”。这些数字是行的位置,不是工单号:一旦重新编号,这张图就被重新接线了。
加上两列泳道
最后四行连同泳道一起到齐:“告知提单人做了哪些改动”、那道确认判断,以及两个终点——“工单已关闭”和“提单人无回复即关闭”。横向泳道承载阶段,从提交、分级、一线、升级到关闭;纵向泳道承载角色:提单人、服务台、专家团队。两者在 CSV 里都只是普通文本,而且一行只要写上某个名称,对应的泳道立刻出现,所以一行里的一个错字就会多出一条只装着一个方框的泳道。
运作方式
新建一份文件,而不是去改造导出文件
你手上的这份 CSV 是一行一张工单、一条订单行或一条记录。你接下来要写的这份文件是一行一个步骤,而一条产出了一万条记录的流程,步骤通常不到二十个。把导出文件开在旁边,因为里面的队列名称、状态代码和分派组才是这条流程真正的词汇;但请把图写进一份新文件里。
把表头行放在第一行
按编辑器的写法写下它使用的列名:形状、方框文字、连线到、连线文字,随后还有横向泳道和纵向泳道。这一行上面不能有任何东西——没有标题,没有导出时间戳,也没有空行——因为匹配是在文件的第一行上做的。你为自己保留的列,比如原始记录号,可以留在原处,会被原样带过。
写方框文字,一行一个动作
一行就是一个人做的一件事。文本里出现“并”“以及”的行,请拆开;只描述一个阶段而不是一个动作的行,请删掉——“分级”是标题,“按影响范围与紧急程度确定优先级”才是步骤。想看效果,这时就可以先导入一次:你会得到一列没有箭头的方框,这正是一份只有标签、没有关系的文件应有的诚实模样。
填写形状
第一行填开始,每个提问的行填决策,每个终点填成功、拒绝或结束。流程是默认值,所以那些单元格可以留空。请使用编辑器的写法——它不认识的取值会一声不吭地变成流程,而画成矩形的判断仍然带着它的分支标签,这让这个错误很容易被忽略过去。
填连线到,再填连线文字
连线到填目标行的位置,第一条数据行算作 1,一行通向多处时用逗号分隔。连线文字按同样的顺序填分支名称,所以第一个标签属于第一个数字。请先把所有行写完,再开始编号:连线到是按位置的,之后插入一个步骤会把它下面每一行都往下推,并作废插入点之后的每一个引用。如果后来必须加一个步骤,就把它追加在末尾,再从该在的地方指过去。
补上泳道,存成 UTF-8,然后把文件拖进去
把阶段填进横向泳道,把角色填进纵向泳道,然后以 UTF-8 和逗号分隔保存,并用文本编辑器打开确认存出来的确实是这样。把 .csv 拖到编辑器的表格区域上,或者把文本粘贴进去。图随着文件落地就画好了,连线自行选路,所以没有排版环节——之后要检查的,是有没有哪个方框没有箭头出去。
应避免的错误
导入了导出文件,而不是另写一份新文件
一行一条记录的文件里没有任何一列可以安放一条连线,所以它导入进来就是一片互不相连的方框——一条记录一个,对一份真实的导出文件来说就是几百个。导出文件是词汇的来源,不是结构的来源。
连线到里填的是编号而不是行的位置
工单号、步骤代码和其他步骤的标签,都会被一声不吭地丢弃:没有报错,没有警告,只有一个没有箭头出去的方框。它是目标行在文件中的位置,从第一条数据行算作 1 开始数。/zh/guides/在csv中定义流程图连线 把这套寻址讲得更细。
标签里有一个没加引号的半角逗号
连线文字是按半角逗号切分的,而且这次切分发生在 CSV 的引号被去掉之后——所以把字段包起来救不了它。一个写成“不能, 升级”的标签会变成两个标签,与连线到的配对整体错开一位,而损坏表现为一条箭头指向了意料之外的地方,而不是一句写错的说明。改用全角逗号写成“不能,升级”即可。这是唯一一处逗号无法转义的地方,所以值得在导出之前就知道。
编号写完之后又插入了一行
插入点以下的每一个引用现在都指高了一行,而图照样画得出来,只是错的。请先把步骤列表定下来,再编号,编号一旦存在就只追加、不插入。
用你的 CSV 制作流程图
把这个分级处理示例作为你自己的图表打开,看看每一列是怎么填的,然后把你自己的 .csv 拖到表格区域上。
相关指南
常见问题
能画出流程图的最小一份 CSV 是什么样?
两列。一行表头写 方框文字,连线到,下面一行一个步骤,填上标签和它通向的那一行的位置:一条四步的流程就是表头下面四行,第二列依次填 2、3、4 和一个空单元格。这样画出来就是一串带箭头的矩形。第三列最值得加的是形状,因为没有它每个方框都是矩形,一个提问画出来和一条指令一模一样;第四列是连线文字,因为一个出口没有标签的判断,只告诉读者这里发生了一次判断,却不说判完之后各往哪走。
连线到填的是行号还是编号?
是目标行在文件中的位置,从第一条数据行算作 1 开始数——也就是编辑器 # 列里打印出来的那个数字。它不是这份 CSV 所来自的系统里的记录号,也不是你自己想出来的步骤代码,哪怕你把那一列留在了文件里也一样。任何解析不出既有行位置的值都会被丢弃,而且完全没有报错,所以一份因为把表头行数成了第 1 行而整体差一位的文件,画出来就是一片没有箭头的方框,任何地方都不会说明原因。
带两条分支的判断怎么写?
把形状设为决策,把两个目标位置用半角逗号分隔填进连线到,再把两个标签按同样的顺序填进连线文字。“6,4”配上“是,否”,就是把“是”送到第 6 行、“否”送到第 4 行;只把其中一个列表颠倒过来,得到的是一张以最令人信服的方式出错的图,因为它看上去仍然完整。如果标签本身含有半角逗号,请把那个字段用双引号包住。完全由这个模式搭起来的一条分支流程在 /zh/templates/csv决策树 上。
形状这一列可以填哪些值?
开始、流程、决策、结束、成功、拒绝,这六个几乎覆盖了所有流程图,另外还有一些用于特定场合——文件、输入、输出、准备等等。单元格留空得到的是流程,编辑器不认识的取值得到的也是流程,而这正是要留神的地方:导入不会报错,所以一列用别的工具的词汇写成的形状会干干净净地导进来,然后把每个判断都画成矩形。第一次导入之后请核对一下菱形,而不是想当然。
图做好之后,这份 CSV 还留着吗?
留着,作为你导入了什么的记录,而不是作为你编辑的对象。导入之后图表就是正本:在编辑器里改那些行就是在改这张图,因为它们本来就是同一个对象;而并行维护那份文件,只会原封不动地重建你当初做转换正是为了摆脱的那种偏差。CSV 真正还能派上用场的地方是下一张图的开头——CSV 模板集里每种图表都配了一份文件,复制一份,比凭记忆敲出一行表头要快。