一条流程停在了“等待人工确认”
有个现象挺常见:团队花了几周把一套自动化工作流搭起来,表单提交、消息通知、文件归档都跑通了,演示时顺畅得像一条传送带。上线两周后,传送带上多了一个卡点——某个步骤需要人点一下“确认”,而那个人在开会。任务堆在队列里,越积越多,最后有人干脆绕开流程,用聊天工具把文件直接发过去。
这不是脚本写错了。自动化工作流真正难的部分,通常不在“让机器执行动作”,而在“决定什么时候让机器停下来”。
省掉的是点击,不是判断
很多关于自动化的讨论,把注意力放在动作数量上:原来点五次,现在点一次;原来填三张表,现在填一张。这类收益真实存在,但它有个前提——每次的判断标准是一致的。一旦标准需要临场解释,自动化就会暴露边界。
比如一条内容发布流程,规则写着“涉及外部合作方的稿件需人工复核”。什么算涉及?引用了合作方数据算不算?提到对方品牌名算不算?规则制定者心里有答案,但没写进条件里。自动化工作流只能按字面执行,于是要么全部放行,要么全部拦截,两种结果都不理想。
所以更实用的问法不是“这个环节能不能自动化”,而是“这个环节的判断能不能被写清楚”。写得清楚的部分交给流程,写不清楚的部分留给人,中间用明确的交接点连接。这听起来像是妥协,实际是让整条链路稳定下来的办法。
异常处理决定了它能跑多久
顺利路径总是容易设计的。麻烦在于那些不常发生但一定会发生的情况:接口超时、文件格式不对、上游数据缺了一个必填字段、同一个人重复提交了两次。
- 超时之后是重试还是直接失败?重试几次?
- 格式错误时,是退回给提交人,还是转给一个公共队列?
- 重复提交要不要合并,合并依据是什么?
这些问题不解决,流程在演示环境里跑得再好,进入真实业务后也会迅速变成新的负担——因为每一次异常都需要有人去后台手动修补,而修补的人往往不是设计流程的人。
我倾向于把异常处理看作自动化工作流的成本中心,而不是附加功能。设计阶段多花时间列举“可能出错的十件事”,比上线后反复救火更划算。有些团队会专门留一个“异常看板”,把所有未按预期完成的实例集中展示,这个做法不复杂,但能让问题可见。
人的位置需要被显式安排
还有一层容易被忽略:流程里的人会改变自己的行为。当一条自动化工作流开始记录每个环节的耗时,参与者会不自觉地调整节奏;当某个字段变成必填,提交者会想办法填一个“看起来合理”的值。流程塑造行为,这一点在手工时代就存在,自动化只是让它更快显现。
因此,把人的确认点放在哪里,值得认真设计。放在流程末端,等于所有工作做完再否决,浪费前面所有步骤;放在最前端,又可能因为信息不足而变成走过场。比较务实的做法是放在“不可逆动作”之前——发送、发布、删除、对外承诺,这些一旦发生就难以收回的节点,让人来按下那个键。
至于中间的整理、搬运、格式转换、提醒,交给自动化工作流更合适。它们重复、规则明确、出错成本低,即使偶尔失败也容易补救。
它更像一种约定,而非一件工具
不少团队引入自动化时,期待的是买一套系统、连几个接口,然后人力就释放出来了。实际推进中,真正耗时的是把“我们平时怎么做事”讲清楚,并且让相关的人对这套描述达成一致。这个过程本身就是一种约定:谁在什么条件下做什么,出了问题找谁。
技术只是把这个约定固化下来,并且执行得更稳定。约定本身含糊,固化之后就变成含糊的自动化,问题只是从“大家不清楚”变成“系统报错但没人知道为什么”。
所以评估一条自动化工作流是否值得推进,可以先看两件事:这条链路上的判断标准是否已经被写下来过;出现异常时,是否已经有人负责。两件事都有答案,落地通常会顺一些;都没有,先补这两件事,可能比急着搭流程更有效。