# 影刀RPA进阶教程:子流程拆分原则—

影刀RPA进阶教程:子流程拆分原则——ABCD编号法与模块化设计

一个流程写到底,刚开始很爽,改起来想哭。

翻页、采集、保存、异常处理全挤在一个流程图里,找指令找到眼花。
把流程拆成子流程,就像把衣柜分区——上层放被子,中层挂衣服,下层放鞋子。

我也是从一锅粥过来的,后来学会了ABCD编号法,维护效率翻倍。


一、为什么要拆分子流程——三个信号告诉你该拆了

场景:流程图超过一屏(鼠标滚轮要滚两下才能看完)。
信号1:同一个操作(比如“写入日志”)复制粘贴了3次以上。
信号2:你想禁用某段逻辑调试,要拖动一大片指令。

信号3:别人接手你的流程,看了5分钟不知道从哪开始看。

核心原则:一个子流程只做一件事,并且这件事能在10个指令内完成。


二、ABCD编号法——让子流程顺序清晰

方法:给子流程名字加上前缀字母,按执行顺序编号。

前缀含义示例

| A_ | 初始化(设置变量、打开浏览器、登录) | A_登录拼多多 | | B_ | 主逻辑循环(翻页、采集数据) | B_翻页循环B_采集商品列表 | | C_ | 数据处理(清洗、写入Excel、发送飞书) | C_清洗价格数据C_写入表格 | | D_ | 收尾(关闭浏览器、发送报告、清理缓存) | D_关闭浏览器D_发送运行报告 |

实操步骤

  1. 在左侧流程树中,右键 → 新建子流程。
  2. 命名为A_初始化
  3. 继续新建B_主循环C_保存数据D_清理
  4. 在主流程里按顺序调用:A_初始化B_主循环C_保存数据D_清理

picture.image 容易踩的坑

  • 不要用中文拼音缩写(如CS_),自己和别人都看不懂。
  • 编号不要跳号,A1、A2... 或者直接用A_、B_足够。
  • 子流程名字超过20个字会显示不全,控制在15字以内。

picture.image

picture.image picture.image

picture.image

三、模块化拆分实战——以“小红书批量采集”为例

picture.image

原流程(一团乱麻)

picture.image

打开小红书 → 输入搜索词 → 点击搜索 → 等待加载 → 
获取笔记列表 → 循环每条笔记 → 点击进入详情 → 
获取标题 → 获取点赞数 → 获取评论数 → 
返回列表页 → 循环结束 → 翻页 → 重复上面一堆 → 
最后保存到Excel

picture.image

拆分成子流程

子流程名职责输入参数输出参数
A_登录小红书打开首页,扫码登录(如果未登录)是否登录成功
B_搜索关键词输入关键词,点击搜索,等待结果关键词搜索结果URL
C_采集单页笔记采集当前页所有笔记的基本信息页码笔记列表(数组)
D_翻页点击下一页,等待加载当前页码下一页页码
E_保存到表格把采集到的笔记列表写入Excel笔记列表写入行数
F_发送报告运行结束后发飞书通知总采集数

主流程现在只有6个调用指令,阅读起来一目了然。


四、子流程的参数传递——进和出

场景:子流程需要接收外部数据(比如关键词),也要把结果返回主流程。
核心:使用“流程输入”和“流程输出”参数。

操作步骤

  1. 打开子流程,点击顶部工具栏的“流程参数”。
  2. 添加“输入参数”:定义参数名(如关键词)、类型(字符串)。

picture.image 3. 添加“输出参数”:定义参数名(如采集结果列表)、类型(列表)。

  1. 在子流程内部,可以直接使用关键词变量(不用再定义)。
  2. 子流程结束时,把结果赋值给采集结果列表(用“设置变量”指令)。
  3. 在主流程调用子流程时,填写输入参数的具体值,并接收输出参数。

picture.image

实战示例

子流程B_搜索关键词

  • 输入参数:关键词(字符串)
  • 输出参数:结果URL(字符串)

子流程内部代码(影刀指令):

# 伪代码
打开网页("https://xiaohongshu.com")
输入文本(搜索框, 关键词)
点击元素(搜索按钮)
等待元素出现(笔记列表容器)
结果URL = 获取当前URL()

主流程调用

  • 调用B_搜索关键词,输入参数关键词"口红",输出参数存到当前页URL

容易踩的坑

  • 输入参数的名字不要和全局变量重名,会覆盖。
  • 输出参数必须在子流程所有分支里都有赋值(包括异常分支)。
  • 参数类型要匹配:传数字不能给字符串变量。

五、子流程的复用——一次编写,到处调用

场景:多个主流程都需要“登录拼多多”、“提取价格数字”。
方法:把通用逻辑做成独立子流程,存到“公共流程库”。

影刀实操

  1. 在左侧流程树中,右键 → 新建子流程 → 命名公共_提取数字
  2. 设计输入参数原始文本,输出参数纯数字
  3. 内部用Python代码或正则指令清洗。
  4. 在其他流程中,直接拖入“调用子流程”,选择公共_提取数字

我的公共子流程库示例

  • 公共_等待并点击(封装了等待元素出现+点击+重试)
  • 公共_提取手机号(正则提取)
  • 公共_写入Excel带表头(自动判断是否已存在表头)
  • 公共_发送飞书消息(封装webhook)

这些子流程在不同项目间复制粘贴,不用每次重写。


六、子流程的异常处理——不让一个崩掉整个流程

场景:子流程里的某一步出错了,希望整个主流程不中断。
核心:在子流程内部用Try-Catch-Finally,把错误消化掉,返回一个错误标志。

设计模式

# 子流程内部结构
Try:
    # 核心操作
    采集数据()
    输出参数_是否成功 = True
Catch:
    输出日志("子流程失败:" + 获取错误信息())
    截图保存("error")
    输出参数_是否成功 = False
Finally:
    # 清理(关闭弹窗等)
    关闭异常弹窗()

主流程调用后判断是否成功,决定是重试还是跳过。

容易踩的坑

  • 子流程抛出的异常如果不捕获,会一直向上冒泡到主流程,导致整个应用停止。
  • 每个子流程都应该有一个“是否成功”的输出参数,让调用方知道结果。

七、常见拆分错误与修正

错误现象正确做法
子流程太大(超过30个指令)修改时要翻很久继续拆,一个子流程10-15个指令
子流程太细(只有2个指令)调用比干活还费劲合并相关操作
子流程之间循环调用A调B,B调A,死循环检查依赖关系,改成单向调用
参数传递过多(超过5个)维护困难把相关参数打包成一个字典或列表
子流程名没有编号执行顺序靠猜用A_B_C_前缀

八、影刀专属:子流程的调试技巧

  • 单独运行子流程:右键子流程 → 运行此流程(不用跑整个主流程)。
  • 设置断点:子流程内部也可以打断点,调试时进入子流程会停。
  • 查看参数值:在子流程的第一行加“输出日志”,打印输入参数,确认传对了。

常见问题速查

问题原因解决方法
子流程找不到变量变量作用域不对用流程参数传递,不要直接读主流程变量
修改了子流程,主流程没更新缓存问题保存所有流程,重新打开主流程
调用子流程时报“类型错误”参数类型不匹配检查输入参数是字符串还是数字,用类型转换
子流程里的元素捕获失效子流程和主流程共用一个浏览器无影响,应该能正常用。如果报错检查是否切换了页面
公共子流程改了,多个项目要同步复制粘贴的弊端把公共子流程存成独立文件,用“导入”功能

推荐资源

  • 影刀官方文档:《子流程与模块化开发》(帮助中心搜索“子流程”)。
  • 我的习惯:新建任何一个流程,先建好A_B_C_D四个空子流程,再往里面填指令。强迫自己模块化。
  • 扩展阅读:系列第14篇《流程参数实战》——参数传递的完整教程(下一篇可写)。

作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。

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