-
第8章 复杂流程设计:分支、循环与子流程
8.1 传统流程的“失控现场”——IT工程师老周的崩溃周末
老周的周六加班记:
公司新上了“供应商准入流程”,要求:
供应商是“一般纳税人”→ 走A审批链(采购→财务);
是“小规模纳税人”→ 走B审批链(采购→财务→副总);
若涉及“进口商品”,无论哪vb.net教程C#教程python教程SQL教程access 2010教程种纳税人都要加“法务审核”;
材料不全的,退回后需重新提交,最多允许补3次材料。
结果上线第一天就乱套了:
小规模纳税人的流程没触发副总审批,全堆在财务那里;
进口商品漏了法务审核,导致合同签完才发现缺海关文件;
有个供应商反复补了5次材料还在提交,系统没限制次数……
老周对着流程图改到凌晨,发现传统工具里“条件判断只能加3层”“退回后流程就断了”,根本撑不起这种复杂逻辑。
复杂流程的3大拦路虎:
分支混乱:条件多了就“打架”,比如“既是小规模纳税人又是进口商品”时,不知道该走哪个分支;
循环失控:退回重填、定时重试等场景,要么无限循环,要么次数到了就卡住;
重复劳动:多个流程都要“检查材料完整性”,每次都得重写一遍检查逻辑,改一个地方要改10个流程。
8.2 复杂流程的“3大法宝”——让流程像“搭积木”一样可控
核心逻辑:把复杂流程拆解成“分支判断”“循环处理”“子流程复用”三大模块,就像玩积木时先拼小零件,再组合成大模型。
法宝1:分支(条件判断)——给流程装“导航系统”
作用:根据不同条件自动走不同路径,解决“一流程多场景”问题。
举例:供应商准入流程中,用3层分支实现精准路由:
图表代码
graph TD
A[开始] --> B{纳税人类型}
B -->|一般纳税人| C{是否进口商品}
B -->|小规模纳税人| D{是否进口商品}
C -->|是| E[采购→财务→法务]
C -->|否| F[采购→财务]
D -->|是| G[采购→财务→副总→法务]
D -->|否| H[采购→财务→副总]
关键:用“优先级条件”避免冲突,比如“进口商品”这个条件比“纳税人类型”优先级高,确保不会漏审。
法宝2:循环(重复处理)——给流程装“重试按钮”
作用:处理“需要反复尝试”或“按次数/时间重复”的场景,比如“材料不全退回重填”“每小时检查一次系统状态”。
两种循环模式:
次数循环:最多重试3次,失败则终止(如供应商补材料);
条件循环:直到满足某个条件才停止(如每小时查一次“财务是否到账”,到账后继续流程)。
法宝3:子流程(模块复用)——给流程装“共享零件库”
作用:把多个流程中重复的步骤(如“材料检查”“通知发送”)封装成“子流程”,就像手机里的“常用表情包”,要用时直接调用,改一处全流程生效。
举例:所有审批流程都需要“检查材料是否齐全”,把这个步骤做成子流程:
子流程名称:材料检查
输入:材料列表(如合同、资质、发票)
输出:检查结果(通过/退回+原因)
步骤:
1. 检查是否有缺失项(如缺合同则退回)
2. 检查格式是否正确(如合同需盖章)
8.3 手把手搭复杂流程:用COZE拆解“供应商准入”(3大场景落地)
准备工作
场景:供应商准入审批(需处理纳税人类型、进口商品、材料补填等复杂条件);
工具:COZE流程设计平台(支持分支、循环、子流程功能);
材料:供应商信息表(含纳税人类型、商品类型字段)、材料检查规则表。
场景1:用“多层分支”实现“条件精准路由”
目标:根据“纳税人类型+是否进口商品”两个条件,自动分给4个不同的审批链。
步骤1:拖入“条件判断”节点,设置第一层分支(纳税人类型)
1.从左侧“逻辑节点”拖入“条件判断”,命名“纳税人类型分支”;
2.配置分支条件:
o分支1:{{供应商信息.纳税人类型}} == "一般纳税人"
o分支2:{{供应商信息.纳税人类型}} == "小规模纳税人"
o默认分支:(防错处理)发邮件给IT:“未知纳税人类型,请检查”
步骤2:在分支下再套分支(是否进口商品)
1.在“分支1(一般纳税人)”下,再拖入一个“条件判断”节点,命名“进口商品分支-一般纳税人”;
2.配置条件:
o分支A:{{供应商信息.商品类型}} == "进口" → 审批链:采购→财务→法务
o分支B:{{供应商信息.商品类型}} == "国产" → 审批链:采购→财务
同理配置小规模纳税人的进口分支:
进口商品→采购→财务→副总→法务
国产商品→采购→财务→副总
避坑指南:
条件别写反!比如把“==”写成“=”,或漏写引号(如"一般纳税人"写成一般纳税人);
用“注释节点”在每个分支旁写清逻辑(如“小规模+进口→需副总+法务”),避免后期看不懂。
场景2:用“循环节点”控制“材料补填次数”
目标:供应商材料不全时,允许最多补填3次,3次后自动拒绝。
步骤1:拖入“循环节点”,设置循环次数
1.从“逻辑节点”拖入“循环”,命名“材料补填循环”;
2.配置循环属性:
o循环类型:固定次数(3次)
o循环变量:current_times(记录当前是第几次补填,初始值=0)
步骤2:循环内嵌套“材料检查子流程”
1.在循环节点内拖入“子流程调用”,选择“材料检查”子流程;
2.子流程返回结果后,拖入“条件判断”:
o如果检查通过:跳出循环(走“结束循环”出口),进入审批环节;
o如果检查不通过:
发邮件给供应商:“第{{current_times+1}}次补填提醒:缺XX材料”
循环变量+1(current_times = current_times + 1),回到循环开始
步骤3:设置循环结束后的“兜底处理”
循环3次后仍未通过:
自动发送“准入失败”邮件给供应商
同步记录到“不合格供应商库”
测试技巧:
故意上传缺材料的表单,看是否在第3次补填后终止,避免出现“无限循环”(可在COZE设置“循环超时保护”,比如最多运行24小时)。
场景3:用“子流程”复用“材料检查”逻辑
目标:把“检查材料是否齐全”做成子流程,供采购、财务、法务等10个审批流程复用。
步骤1:创建子流程——定义输入输出
1.进入COZE→“子流程管理”→“新建子流程”,命名“材料检查通用版”;
2.输入参数:
o必选:材料列表(数组,如["合同","资质证明"])、检查规则(JSON,如{"合同": "需盖章","资质证明": "有效期>6个月"})
3.输出参数:
o检查结果(布尔值:true/false)
o失败原因(字符串,如“合同未盖章”)
步骤2:设计子流程内部逻辑
图表代码
graph LR
A[开始] --> B{遍历材料列表}
B --> C[检查材料是否存在]
C -->|不存在| D[返回失败+“缺XX材料”]
C -->|存在| E[检查是否符合规则]
E -->|不符合| F[返回失败+“XX不符合规则”]
E -->|符合| G[检查下一个材料]
G -->|全部通过| H[返回成功]步骤3:在主流程中调用子流程
1.在供应商准入流程中,拖入“子流程调用”节点;
2.选择“材料检查通用版”,传入参数:
o材料列表:{{供应商提交材料}}(从表单中获取)
o检查规则:{{规则库.供应商准入规则}}(从规则库动态获取)
3.接收返回结果:{{子流程结果.检查结果}}和{{子流程结果.失败原因}}
维护优势:
当“资质证明有效期要求从6个月改为1年”时,只需改子流程的规则,所有调用它的10个主流程自动生效,不用一个个改。
8.4 上线后:老周的“流程管理新体验”——从“救火队员”变“架构师”
传统流程VS复杂流程设计对比表:
指标 | 传统流程(无分支/循环/子流程) | 优化后流程(COZE) |
---|---|---|
多条件场景支持度 | 最多3层分支,易冲突 | 无限层级分支,支持优先级排序 |
循环场景处理 | 需手动写代码,易失控 | 可视化循环节点,支持次数/条件终止 |
重复逻辑维护成本 | 修改1处需改10个流程,易漏改 | 子流程1处修改,全流程生效 |
异常处理能力 | 无兜底逻辑,常卡住 | 支持默认分支、超时保护、失败重试 |
老周的反馈:
“现在新流程上线半年,没再出现‘审批链走错’‘材料补填无限循环’的问题。上周财务要加‘环保资质检查’,我直接在‘材料检查’子流程里加了一条规则,5分钟搞定,要是以前得改8个流程,至少花2天!”
本章小结
复杂流程设计的核心是“拆解问题,模块化组装”:
分支:用“条件判断+优先级”解决“不同场景走不同路”的问题;
循环:用“次数控制+条件终止”处理“需要反复尝试”的场景(如补材料、重试API);
子流程:把重复逻辑“封装成零件”,降低维护成本(改一处,全流程生效)。
本站原创,转载请注明出处:https://www.xin3721.com/ArticlePrograme/robot/52957.html