要不要在 StepAmoo 跑流程时插入人工确认,判断依据通常不是“信不信任模型”,而是这一步做错之后能不能收回来。比较稳妥的默认策略是:读、查、算、写草稿这类动作让它自己跑完,只在发送、删除、对外提交这类做错了收不回来的动作之前停一次,等有人点头再继续。确认点不是越多越安全,放错位置既拖慢流程也换不来安全感。
让 StepAmoo 全自动跑流程的前提,是流程里没有不可逆动作,或者不可逆动作已经被隔离出去。建议按可逆性把动作分成三类:可逆动作直接放行,灰区动作先观察一段时间,不可逆动作在执行前插入一次确认。确认点放在“参数已经解析、动作还没执行”处,提示里写清要做什么、影响哪个对象、能不能撤回。之后用确认记录回看,连续放行且无返工的确认点可以放宽为批量确认或事后通知,出现过参数类驳回的确认点则应保留并补前置校验。
按可逆性给动作分类
先把流程里的动作逐个列出来,再按“执行后能不能恢复”分档。判定标准可以简化成三问:要恢复这个动作,需不需要外部方配合;恢复过程中有没有人已经看到或收到结果;有没有产生外部副作用,比如已经扣费、已经生成工单、已经被对方记录。三问里只要有一个答案是“是”,就按不可逆动作处理。
- 可逆动作:读取配置、查询接口、在本地生成草稿、写临时文件、在分支或沙箱里改数据、把结果写进待审核队列。这类动作出错最多是重跑一遍,可以放心交给 StepAmoo 连续执行。
- 不可逆动作:发送邮件或消息通知、删除文件或记录、提交表单、下单或触发付款、发布内容、创建对外工单、修改他人权限。这类动作一旦执行,撤回需要对方配合,或者撤回动作本身又是一次对外行为。
- 灰区动作:写共享文档、更新数据库正式表、修改内部公告。是否需要确认,需要结合环境确认:有没有备份、影响范围是不是只有自己人、出错后能不能用已有备份恢复。
分类结果建议直接写进流程配置里,作为动作的元数据,而不是靠运行时临时判断。这样后面调整确认范围时,改的是配置而不是流程逻辑。
在不可逆动作之前设确认点
确认点的位置比数量重要。放得太早,比如流程一开始就让人确认“要不要发这批邮件”,此时收件人和内容都还没解析出来,人只能盲签;放得太晚,动作已经执行完再弹提示,就没有拦截的意义了。合适的位置通常在“参数已经解析、目标对象已经确定、动作尚未执行”这一步之间,也就是执行前的最后一跳。
确认环节本身也要能看到足够的上下文,否则人只能凭感觉放行。至少应展示:即将执行的动作名、目标对象的具体标识、关键参数、这一步的输入依据(来自哪条任务、哪份数据)、以及撤回方式。如果一个流程里有多个连续的不可逆动作,可以合并成一次批量确认,但每个对象都要单独列出来,不要只写“共 12 条”。
step: send_email
reversible: false
confirm:
when: before_execute
show: [action, target, params, source, undo]
on_reject: stop_and_report
上面是一个通用的配置骨架,字段名按自己所使用的编排工具替换即可。关键是两个点:确认发生在 before_execute,以及拒绝之后流程是停下来并回报,而不是静默跳过,因为静默跳过会让人误以为任务已完成。
写清确认提示要包含的内容
提示文字写得好不好,直接决定确认环节是有效拦截还是走过场。提示里至少要出现三个要素:要做什么(动词加对象)、影响对象(具体到收件人、文件路径、记录 ID 或账号)、可撤回性(可撤回、不可撤回,或者撤回需要什么代价)。只有一句“是否继续”的提示不算确认点,那只是把责任转移给人。
即将执行:发送邮件
对象:zhangsan@example.com(抄送 2 人)
关键参数:主题=季度对账结果;附件=report.xlsx
可撤回性:不可撤回,发出后对方可能已阅读
依据:上一步从待办队列读取任务 T-1042
放行输入 y;拒绝输入 n 并写明原因
提示里不要暴露敏感值,比如完整令牌或身份证号,用后四位或掩码替代即可,但对象标识必须足够精确到人能核对。如果拒绝时需要原因,就把原因做成必填字段,这些原因后面回看记录时最有用。
定期回看确认记录调整范围
确认点设得太多,人会开始不看内容直接点放行,这时确认就失效了;设得太少,一次误操作就要花时间善后。比较实际的做法是每隔一段时间翻一次确认记录,看两件事:被驳回的比例和驳回原因,以及放行之后有没有出现返工。
建议记录的字段:
confirm_id / action / target / decision / reject_reason / rework_after_approve
- 可以考虑放宽:某个确认点长期只有放行、没有驳回,动作的影响范围限定在测试对象或自己名下,并且有备份或回滚手段。放宽的方式可以是把逐次确认改为批量确认,或者改成执行后通知,让人事后能看到。
- 应当保留或收紧:出现过驳回,且驳回原因是参数解析错了、对象选错了。这时问题往往不在确认点本身,而在前面的校验不足,正确做法是补前置校验,同时保留确认点。
- 需要重新评估:放行之后出现返工,说明当时展示的信息不足以让人做出判断,应该补充展示字段,而不是简单取消确认。
调整时一次只改一类动作的确认策略,改完观察一段时间的确认记录再决定要不要继续放宽。全自动和半自动之间不是二选一,多数流程最后会落在一个混合状态:可逆环节全自动跑,不可逆环节保留一个轻量确认,边界清楚,出问题时也能从记录里查到是哪次放行导致的。