影刀RPA进阶教程:子流程设计的拆分原则与参数传递实战

流程越写越长,一个主流程几百个指令,改一个地方要翻半天。

这是不会用子流程的典型症状。我刚开始做拼多多店群采集时,所有逻辑堆在主流程里,后来想复用到淘宝采集,发现根本拆不开。

子流程不是把代码剪出去就完事,核心是参数传递和复用策略。

picture.image

下面把我踩过的坑和解决方案一次讲清楚。

子流程拆分的三个核心原则

picture.image 场景:主流程采集完数据后要写Excel、发通知、截图存档,全堆在一起。

方法:按“单一职责”拆,每个子流程只做一件事。

  • 功能独立:登录、采集、保存、通知,各做一个子流程
  • 可复用:采集子流程要能接收不同的URL参数,适配不同平台
  • 可测试:每个子流程能单独运行,方便调试

picture.image

操作步骤:

  1. 在影刀RPA左侧流程树中,右键点击“主流程”
  2. 选择“新建子流程”,命名为“采集_商品列表”
  3. 把主流程中采集相关的指令拖进子流程
  4. 主流程中原来的位置,拖入“调用子流程”指令

picture.image

# 影刀RPA子流程调用示意(伪代码)
# 主流程
调用子流程:登录_拼多多(账号, 密码)
调用子流程:采集_商品列表(搜索关键词, 最大页数)
调用子流程:保存_Excel(文件路径)

![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/392eb048d08949f9aaabaf44cd8bd0ef~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1791965545&x-signature=lQT3hzBSAuz31WxeK9lihFVBtT4%3D)

注意:社区版30分钟/天,子流程调试时尽量单独运行,别每次都跑完整流程。

参数传递:输入参数与输出参数的区别

picture.image 场景:采集子流程需要外部传入“搜索关键词”,采集完要把数据传回主流程。

方法:用子流程的“输入参数”和“输出参数”。

操作步骤:

  1. 双击打开子流程,点击右上角“参数设置”

picture.image 2. 添加输入参数:keyword,类型选“文本”

  1. 添加输出参数:result_list,类型选“列表”
  2. 子流程内部用“设置变量”指令给输出参数赋值
  3. 主流程调用时,在“调用子流程”指令中填入参数
参数类型用途示例
输入参数外部传给子流程搜索关键词、页码
输出参数子流程传回外部采集结果列表
输入输出既传入又修改表格对象、浏览器对象

实测:输出参数不赋值就返回,主流程拿到的是空值。一定要在子流程结束前赋值。

子流程复用的命名规范与版本管理

场景:同一个采集子流程,拼多多用、淘宝也用,但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学习手册》系列文章之一,内容源于实操经验的整理与分享。

0
0
0
0
评论
未登录
暂无评论