如何在 CSV 中定义流程图的连线
如何写 CSV 里的连线到和连线文字两列:填行的位置而不是步骤名称、按位置配对的分支标签、会把一个标签劈成两个的逗号,以及插入一行会带来什么后果。
运作方式
写任何位置之前,先把行的顺序定死
连线到引用的是文件里的位置,所以文件的顺序是受力构件。把导出文件按你想要的样子排一次序,然后就别再排了。如果这些行来自一个每次抽取都会重新排序的系统,请先把它们冻结成一份工作副本——否则你今天写下的数字,明天指向的是别的步骤。
从表头下面第一行开始编号为 1
表头行不是数据行,不参与计数。文件里的第一个步骤是位置 1,下一个是 2,依此类推。工作时把这些数字放进一列草稿列里;导入并不需要它,但你需要,因为你接下来要手工敲下二十个引用。
先写只有一个后继的步骤
从上到下走一遍文件,给每一个一路直行的步骤在连线到里填一个数字。这一步很快,也很难写错,剩下需要动脑的就只有那些分叉。对一个确实终结了流程的步骤,把单元格留空——正是空着的连线到让一行成为终止行。
把分叉写成用逗号分隔的位置
在每个判断上,把所有去处填进同一个单元格里:7,6,21 表示三个出口。逗号周围的空白会被去掉,所以“7, 6, 21”也可以。要紧的是顺序,因为你马上要写第二个列表,它必须与这个列表一项一项对上。
按同样的顺序写连线文字
连线到是 7,6,21 时,连线文字就写 30天以内,31至90天,超过90天。往下走之前请成对读一遍:第一个位置配第一个标签,第二个配第二个。没有任何东西会替你检查这件事,而一对交叉了的配对,会画出一张自信满满、看着也合理、实则错误的图。
把文件拖进去,再把箭头读回来
把 .csv 拖到一张新图表的表格区域上,或者把文本粘贴进去——没有导入向导,也没有列映射环节,因为表头名称是直接匹配的。然后对着政策在画布上追两三条分支。超出范围的位置和没有标签的出口,在这个尺度上一眼就能看见。
常见问题
为什么用行的位置,而不用一列 ID?
因为一份从别的系统出来的 CSV 很少带有一个你能用的稳定键,而它确实带有的那些,通常是记录的标识而不是步骤的标识。行的位置永远存在、永远唯一,也不需要和导出文件的产出方达成任何约定。代价是这个位置只在顺序不变时才有意义,这也正是行的顺序在 CSV 流程图里比在任何别的格式里都更要紧的原因。
编号时要把表头行算进去吗?
不算。位置 1 是第一条数据行,就在表头正下方。人们常在这里绊倒,因为在电子表格里表头是第 1 行、第一个步骤是第 2 行——相对文件整体差了一位。如果所有箭头都早落一步,通常就是这个原因。
一个步骤能指向两行以上吗?
可以,决策树里这很常见。示例中“商品处于什么状态?”有三个出口,“主管是否批准这笔付款?”也有三个,其中一个是拒绝。把所有位置用逗号分隔填进同一个单元格,并在连线文字里给出同样数量的标签。实际使用中没有什么上限值得担心;可读性会比格式先撑不住。
如果连线到指向一行并不存在的行会怎样?
这条连线会被丢弃,而且什么都不会报。一个超出文件末尾的位置、一个该填数字却留空的单元格,或者一个从行数更多的旧版导出文件里遗留下来的数字,产生的结果完全一样:一支干脆就不存在的箭头。这是每次改动文件长度之后都要检查的失效模式。整套往返流程,见本站的 CSV 转流程图页面。
连线到里能不能填步骤的名称,而不填数字?
不能——这一列是按位置读取的。在多数真实文件里名称也会有歧义:这棵树里有两行都以“批准”收尾,还有好几行读起来像是同一个问题的变体。数字从构造上就没有歧义,这正是这套身份是位置式而不是文本式的原因。