影刀RPA子流程调用:模块化思维入门
作者:林焱
前言
你写的第一个流程可能只有20个步骤,觉得自己很厉害。但你写到第5个流程的时候会发现——登录操作在4个流程里重复写、Excel初始化在3个流程里重复写、错误处理在每一个流程里复制粘贴。
代码重复是万恶之源。RPA流程也一样。这一篇讲怎么用子流程把重复的部分抽出来,让你的流程从"一团乱麻"变成"积木拼接"。
一、什么是子流程
直观地说:子流程是一个被封装好的独立功能块,它有一个名字、有输入、有输出,你可以在任何地方调用它。
就像你打电话给外卖平台——你不需要知道后厨怎么炒菜、骑手怎么规划路线,你只需要说"我要一份黄焖鸡米饭,送到XX地址"。子流程就是那个"外卖平台"。
影刀里创建子流程:右键左侧流程列表 → 新建子流程 → 起个名字 → 在里面写逻辑。
二、为什么必须用子流程——三个血的教训
教训1:登录逻辑改了5个流程全废
我早期写了一个电商数据采集系统,包含5个独立流程:价格采集、库存监控、评价采集、竞品分析、销售报表。每个流程第一步都是登录同一个电商后台。
后来电商系统改了登录方式,从"账号密码"改成了"扫码登录"。结果我花了两天时间把5个流程的登录部分全部改了一遍。如果当时抽成了子流程,只改一处就行。
教训2:一个200步的流程变屎山
拼多多店群自动化报活动上架!
带过的学员里,有个人写了一个"月度报表自动化"流程,从头到尾200多步塞在一个流程里。三个月后需求变了要我帮忙改——我看了半个小时才理清逻辑。
流程超过50步就要警惕了。超过80步基本就是屎山预定了。拆成子流程,每个子流程不超过30步。
教训3:调试地狱
一个流程200步,中间第120步报错。你从头跑一遍要等10分钟才能到120步。拆成子流程后,你可以单独调试出问题的子流程——给它喂模拟输入数据,直接看输出对不对。
三、子流程的实战拆分原则
原则1:按功能拆分
一个典型的采集处理流程拆成这样:
主流程 ├── 子流程:初始化(创建Excel、设置全局变量) ├── 子流程:登录 ├── 子流程:数据采集 │ ├── 子流程:采集单页 │ └── 子流程:翻页判断  ├── 子流程:数据处理(清洗、计算、格式化) ├── 子流程:输出报告(写入Excel、生成图表) ├── 子流程:通知(发邮件/微信) └── 子流程:清理(关闭Excel、关闭浏览器)每个子流程只做一件事,名字就是它做的事。
原则2:参数化——子流程的灵魂
如果子流程只能做固定的事,那它的价值打折一半。真正厉害的子流程是参数化的——你传入不同的参数,它做出不同的结果。
不参数化:
子流程"登录淘宝":写死账号和密码下次换成京东又要写一个新的"登录京东"子流程。
参数化:
子流程"登录网站": 输入参数:url(网址)、username(账号)、password(密码)、 login_btn_xpath(登录按钮的XPath) 内部逻辑: 打开网页(url)  输入账号(username) 输入密码(password) 点击(login_btn_xpath) 等待登录成功标识这样同一个子流程可以登录淘宝、京东、OA系统——不同平台传不同的参数就行。
原则3:子流程要有明确的输入和输出
好的子流程像一个函数:输入什么、输出什么,一目了然。
影刀中子流程的"输出"通过全局变量传递,或者在主流程中读取子流程最后设置的变量。建议在子流程注释里写明:
【子流程名称】登录OA系统 【输入全局变量】OA_URL, OA_USERNAME, OA_PASSWORD 【输出全局变量】LOGIN_STATUS("成功"/"失败"), ERROR_MSG(错误原因) 【副作用】打开浏览器、设置登录Cookie四、实战:重构一个采集流程
重构前(一团乱麻)
主流程(150步): ├── 步骤1-20:Excel初始化 ├── 步骤21-40:登录网站 ├── 步骤41-120:采集数据(翻页循环、数据提取、异常处理全混在一起) ├── 步骤121-140:数据处理与输出 └── 步骤141-150:清理重构后(模块化)
主流程(5步): ├── 调用子流程"初始化Excel" → 参数:输出路径 ├── 调用子流程"登录" → 参数:URL、账号、密码 ├── 调用子流程"采集所有数据" → 参数:起始页、每次采集条数 │ 内部循环调用子流程"采集单页" ├── 调用子流程"处理并输出" └── 调用子流程"清理"主流程从150步缩减到5步——逻辑清晰到"非技术人员也能看懂"。
五、子流程的复用策略
建立自己的子流程库
把你写得好的子流程保存为模板。随着积累,你会有一个"私人武器库":
TEMU店群矩阵自动化运营核价报活动
excel_init:初始化Excel(创建文件、写表头、设置格式)web_login:通用网页登录safe_click:带等待和错误处理的点击safe_input:带等待和错误处理的输入page_turner:通用翻页器data_cleaner:数据清洗(去空格、去重、格式化)reporter:生成报告并发送
写新流程时80%的逻辑直接复用,只写20%的新业务逻辑。
带默认参数的子流程
给参数设置默认值,大多数场景不用改参数:
子流程"safe_click": 参数:target_xpath(必填),timeout(默认30),retry(默认3) 一般调用只传target_xpath,特殊网页才改timeout和retry。
六、子流程的调试技巧
单独测试子流程
不跑主流程,直接在子流程界面点"运行"。手动设置好它需要的输入变量,看输出对不对。
在每个子流程入口和出口打日志
【子流程开始】登录 | 时间:{now} | 参数:url={url} ...子流程逻辑... 【子流程结束】登录 | 结果:{status} | 耗时:{elapsed}秒出问题了看日志就知道卡在哪个子流程、是没进去还是没出来。
七、总结
子流程不是高级技巧,是写第一个流程就应该养成的习惯。从今天开始:
- 流程超过50步就拆——至少拆成"初始化+核心逻辑+收尾"
- 相同逻辑不复制第三次——第二次出现就抽成子流程
- 子流程要参数化——写死参数等于白拆
下一篇开始进入数据采集实战——把你前面学的基础全部用起来,从零写一个完整的网页数据采集流程。
作者:林焱
影刀RPA深耕实践者,致力于让每个普通人都能学会自动化