如何把 CSV 可视化成一条工作流
工作流就是带返工的流程。如何在 CSV 文件里写一个回溯的连线到引用、给重试封顶让修改不会无限循环,以及怎样区分一条真实的循环和一个敲错的行号。
运作方式
把导出文件重排成流程顺序
系统导出文件出来时是按时间戳或工单号排序的,那是事情发生的顺序,不是流程运行的顺序。请在写下第一个连线到值之前,先把这些行排成一个案子实际走过的次序,因为那些值是行的位置,事后重新排序会让每一个都失效。
检查表头行有没有在导出中幸存
列是按表头名称匹配的,所以表头行是这份文件里唯一必须完全正确的部分。请确认它写的是形状、方框文字、连线到、连线文字。一次 UTF-8 导出留下的字节顺序标记会黏在第一个表头名称上,而一份欧洲系统的分号分隔导出文件会把整行塞进一个单元格——两种情况下这一列都匹配不上,会被当作未使用的多余列带过,而不会大声报错。
先写向前的路径
只为一路直行的情形填连线到,让每一个数字都大于它所在的那一行。先让这条工作流在完全没有返工的情况下从头跑到尾。往一条你还没验证过的路径上加循环,几乎不可能读回来,因为当两者都指向一个你自己都不确定的行时,你分不清哪个是返回连线、哪个是错号。
加一行返工,并把返回连线指向它
给修改环节单独一行——“调整折扣、价格或条款”——并把每一个驳回的判断都送到这一行,而不是在每个审批人下面各复制一个返工步骤。然后写出返工区块的返回连线,指向那个会重新评估已变输入的行。在示例里那是第 3 行,毛利核算,而不是第 1 行。
给重试封顶
一条不封顶的循环,是一条可以永远跑下去的工作流,而在真实流程里它并不会。请在返工行之后加一个判断,问这件事已经退回过几次——第 16 行“是否第二次被同一审批人退回?”——连线到写 3,17:绕一圈,第二次就上报。请给这个单元格加引号,让逗号留在里面。
把文件拖进去,读那些回溯箭头
把 .csv 拖到一张新图表的表格区域上,或者把文本直接粘贴进去,图就画出来了。然后把每一支往回跑的箭头读一遍。其中每一支都应当是一个你能当场说出名字的情形——一次修改、一次上报、一次还价。说不出名字的箭头是一个敲颠倒了的行号,而这是唯一能让它一目了然的视图。
常见问题
连线到的值能指向更早的一行吗?
能,而这正是返工的全部机制。连线到取的是目标行从 1 开始的位置,没有任何东西约束它必须大于它所在的行,所以第 16 行单元格里的一个 3,会从 16 往上画一支箭头到 3。渲染器会替你绕开那些方框选路;位置不用你摆。因为没有单独的循环标记,读一份 CSV 找它的循环,就意味着扫描那些比自己行号更小的数字——那是文件里唯一的信号。
怎样让返工循环不至于永远转下去?
在返回路径上放一个数次数的判断。示例里第 16 行问“是否第二次被同一审批人退回?”,连线到是 3,17,连线文字是 第一次退回,第二次退回,于是第一次绕一圈,第二次离开循环去第 17 行“坚持这个折扣还是放弃?”。次数并不存在任何地方——图记录的是这条规则,而人们遵循的正是这条规则。要紧的是这条循环在图上有一个带标签的出口,而不是藏在某人脑子里的一个默契。
在别人的文件里,怎么区分一条真循环和一个写错的行号?
三个检验。目标行是否重做了这次返工确实改动过的工作?一条回到某个输出这次不可能不同的步骤的循环,是一个错误。这支回溯连线是不是从一个判断出来的?一个流程行如果唯一的连线到指向后方、又没有向前的出口,会让文件其余部分不可达,这几乎总是一次数字颠倒。以及,这条分支有没有标签?真循环带着一个说明情形的连线文字;手误从来没有,因为没有人会给一条自己本没打算画的连线贴标签。
我的导出文件是一行一次审批事件,不是一行一个步骤,该怎么办?
把它压缩掉。审计表会把同一个步骤按发生次数重复记录,所以一笔被改过两次的交易会出现两行“退回给申请人”,而直接把它导进来,得到的是一个案子的图,不是这条流程的定义。请把不同的步骤抽出来,每个留一行,让回溯引用去承载重复——这个替换正是循环存在的意义。
循环跨越泳道之后,图还读得下去吗?
选路是算出来的而不是画出来的,所以一支从返工列回到报价列的返回连线,会在你不移动任何东西的情况下绕开那些方框。让一条带循环的工作流读不下去的不是箭头,而是行的顺序:请把返工那些行放在一起,就像示例里的第 15 到第 17 行,而不要在每个审批人下面各撒一个修改步骤。三个审批人各带一行返工,产生的是三条其实是同一条的循环。