应将重复逻辑封装为子工作流复用:①新建并勾选“设为子工作流”;②定义明确输入参数;③主流程通过工作流节点调用并映射参数;④按需配置同步执行与触发者传递;⑤批量处理可选数组传入或循环调用;⑥调试时临时取消子工作流标识。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

把重复逻辑抽成子工作流,主流程里直接调用
当你在扣子平台搭建多个工作流时,发现审批校验、用户通知、订单状态同步等逻辑反复出现,每次修改都要挨个改三四个地方,一不小心就漏掉一个——这时必须用子工作流封装复用,否则维护成本会指数级上升。
第一步:在资源库中点击右上角「+」→「工作流」,新建一个独立工作流,命名为“通用订单校验”,勾选「设为子工作流」(这一步【必须勾选】,否则无法被其他工作流调用)。
第二步:在这个新工作流里,只放校验所需节点——比如数据库查询订单是否存在、LLM节点判断是否超时、条件分支返回true/false,最后接结束节点。注意:开始节点的输入参数名要明确,例如叫order_id,后续主流程传参才不会错位。
第三步:回到原来那个冗长的主工作流,在画布空白处搜索“工作流节点”并拖入,点击配置面板,在「选择子工作流」下拉框中找到你刚建好的“通用订单校验”。
第四步:在该工作流节点的输入映射区域,把主流程里的变量(比如{{input.order_id}})拖到右侧对应字段。如果子工作流定义了多个输入参数,这里必须一一匹配,缺一个会导致执行中断且无报错提示。
子工作流调用时控制执行顺序与触发者身份
主流程和子工作流默认是并行执行的,但有些场景必须等子流程跑完再继续,比如校验不通过就不能发通知;还有些场景需要让子流程看起来是“同一个人”操作的,比如审批流中保留原始提交人信息。
方法一:勾选「子流程执行完毕后,再开始下一个节点」。这样主流程会在该节点处暂停,直到子工作流返回结果才走下一步。不勾选则两者完全异步,适合日志记录、埋点上报等不影响主干逻辑的任务。
方法二:在子工作流节点配置中,勾选「传递触发者」。此时子工作流内所有操作(如数据库写入、消息通知)的发起人显示为主流程的实际触发者,而不是“工作流系统”。【不勾选时,审批记录里会显示“系统自动执行”,人工审计时容易被质疑】
批量数据传入子工作流的两种写法
当你要对100条订单批量做校验,不能手动调用100次子工作流——得靠结构化数据驱动。
方法1:主工作流先用代码节点或LLM节点组装数组,例如输出[{"order_id":"20260605001"},{"order_id":"20260605002"}],然后把这个数组整体传给子工作流节点的输入字段。子工作流开始节点的输入类型需设为Array → Object,并在内部用循环节点逐条处理。
方法2:用「循环节点」包裹子工作流节点。把原始数组接入循环节点,每次迭代取一条对象,再将这条对象的order_id字段映射进子工作流节点。这种方式更直观,调试时能看到每条记录单独的执行日志。
注意:如果数组超过500条,建议用方法1配合子工作流内的分批处理逻辑,避免单次调用超时。扣子对单次子工作流调用的执行时长有限制,超时直接终止且不重试。
子工作流调试失败时快速定位问题
子工作流本身不能独立触发,所以不能像普通工作流那样点「运行测试」——你得从主工作流入口进,但错误日志只显示“子工作流执行失败”,看不到里面哪一行出错。
临时解法:把子工作流的「设为子工作流」勾去掉,保存后手动运行一次,观察各节点输出。确认没问题后再勾回来。这一步操作起来很简单,直接在子工作流设置页顶部开关切换就行。
真正关键的是:子工作流的开始节点必须至少有一个输入参数被主流程传入,否则整个节点会静默跳过,连日志都不留。如果你看到子工作流节点图标是灰色的,大概率就是输入映射为空。


















