流程越写越长,一个主流程几百个指令,改一个地方要翻半天。
这是不会用子流程的典型症状。我刚开始做拼多多店群采集时,所有逻辑堆在主流程里,后来想复用到淘宝采集,发现根本拆不开。
子流程不是把代码剪出去就完事,核心是参数传递和复用策略。
下面把我踩过的坑和解决方案一次讲清楚。
子流程拆分的三个核心原则
场景:主流程采集完数据后要写Excel、发通知、截图存档,全堆在一起。
方法:按“单一职责”拆,每个子流程只做一件事。
- 功能独立:登录、采集、保存、通知,各做一个子流程
- 可复用:采集子流程要能接收不同的URL参数,适配不同平台
- 可测试:每个子流程能单独运行,方便调试
操作步骤:
- 在影刀RPA左侧流程树中,右键点击“主流程”
- 选择“新建子流程”,命名为“采集_商品列表”
- 把主流程中采集相关的指令拖进子流程
- 主流程中原来的位置,拖入“调用子流程”指令
# 影刀RPA子流程调用示意(伪代码)
# 主流程
调用子流程:登录_拼多多(账号, 密码)
调用子流程:采集_商品列表(搜索关键词, 最大页数)
调用子流程:保存_Excel(文件路径)

注意:社区版30分钟/天,子流程调试时尽量单独运行,别每次都跑完整流程。
参数传递:输入参数与输出参数的区别
场景:采集子流程需要外部传入“搜索关键词”,采集完要把数据传回主流程。
方法:用子流程的“输入参数”和“输出参数”。
操作步骤:
- 双击打开子流程,点击右上角“参数设置”
2. 添加输入参数:
keyword,类型选“文本”
- 添加输出参数:
result_list,类型选“列表” - 子流程内部用“设置变量”指令给输出参数赋值
- 主流程调用时,在“调用子流程”指令中填入参数
| 参数类型 | 用途 | 示例 |
|---|---|---|
| 输入参数 | 外部传给子流程 | 搜索关键词、页码 |
| 输出参数 | 子流程传回外部 | 采集结果列表 |
| 输入输出 | 既传入又修改 | 表格对象、浏览器对象 |
实测:输出参数不赋值就返回,主流程拿到的是空值。一定要在子流程结束前赋值。
子流程复用的命名规范与版本管理
场景:同一个采集子流程,拼多多用、淘宝也用,但XPath不同。
方法:用“平台_功能_版本”命名,通过参数区分平台。
命名示例:
采集_商品列表_通用登录_拼多多_v2保存_Excel_带格式
避坑:不要复制子流程后改名字,这样会产生多个版本,维护困难。正确做法是同一个子流程内用“条件判断”区分平台。
# 子流程内部根据平台参数选择不同XPath
if platform == "拼多多":
xpath = "//div[contains(@class,'goods')]//a"
elif platform == "淘宝":
xpath = "//div[contains(@class,'item')]//a"
else:
xpath = "//div[contains(@class,'product')]//a"
子流程嵌套调用的注意事项
场景:主流程调用“采集”子流程,“采集”内部又调用“翻页”子流程。
方法:嵌套不超过3层,参数传递要清晰。
- 每层子流程独立加Try-Catch,不要依赖外层
- 子流程内的变量默认是局部的,不会污染主流程
- 需要共享的数据通过参数传递,不要用全局变量
# 捕获元素:拼多多商品列表项(用于翻页子流程)
//div[contains(@class,'goods-list')]//div[contains(@class,'item')]
# 捕获元素:下一页按钮
//*[contains(text(),'下一页')]
# 翻页子流程接收“当前页码”参数,返回“是否有下一页”
常见问题速查
| 问题 | 原因 | 解决 |
|---|---|---|
| 子流程调用后变量丢失 | 变量是局部的 | 用输出参数传回 |
| 参数传不进去 | 类型不匹配 | 检查参数类型设置 |
| 子流程报错主流程不知道 | 没加Try-Catch | 子流程内部独立处理异常 |
| 社区版调试超时 | 30分钟限制 | 单独运行子流程调试 |
| 子流程改名后调用失败 | 引用路径变了 | 重新拖入“调用子流程”指令 |
Q:魔法指令能帮我拆分子流程吗?
A:影刀3.0的魔法指令可以对话式生成子流程框架,但拆分逻辑要自己判断。
Q:子流程能调用另一个项目里的子流程吗?
A:不能直接调用。可以把通用子流程导出为模板,在新项目中导入。
推荐资源
- 影刀RPA官方学院“子流程与模块化”专题课,免费
- 影刀社区搜索“子流程模板”,有现成可复用流程
- 官方文档“调用子流程”章节,有完整参数说明
#影刀RPA #RPA自动化 #子流程 #参数传递 #流程设计
作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。
