影刀RPA流程参数详解:子流程之间传数据的正确方式
影刀RPA流程参数详解:子流程之间传数据的正确方式
作者:林焱 | 难度:⭐⭐⭐ | 预计阅读:11分钟
写在前面
写RPA流程,最让人头疼的问题之一:
数据怎么在不同子流程之间传递?
A子流程处理完的数据,B子流程怎么拿到?
C子流程需要用D子流程的结果,怎么传?
答案就是:流程参数。
这篇文章专门讲透流程参数——定义、使用、传值、常见错误,全部讲清楚。
一、为什么需要流程参数?

先看一个不用流程参数的场景:
场景:采集商品数据并保存
主流程 main
├── 子流程:打开网页 → 网页对象存在全局变量里
├── 子流程:采集数据 → 数据也存在全局变量里
└── 子流程:保存数据 → 从全局变量读取数据
这种方式能用。但问题是:
- 全局变量太多——流程一复杂,全局变量几十个,容易混乱
- 不知道哪个子流程用了哪个变量
- 多个子流程同时改同一个全局变量,互相覆盖
流程参数的作用就是解决这些问题:
- 明确声明:这个子流程需要什么输入,输出什么结果
- 隔离作用域:参数只在调用时生效,不会污染全局空间
- 可读性好:一看参数就知道子流程的功能和依赖关系
二、两种数据传递方式的对比
| 对比项 | 全局变量 | 流程参数 |
|---|---|---|
| 定义位置 | 全局变量面板 | 在每个子流程里单独定义 |
| 可见范围 | 所有子流程都能访问 | 只有调用方和被调用的子流程能看到 |
| 适用场景 | 跨所有子流程共享的状态(网页对象等) | 单次调用的输入/输出 |
| 维护难度 | 高(多了容易乱) | 低(职责清晰) |
什么时候用全局变量?什么时候用流程参数?
用全局变量的情况:
-
网页对象(几乎所有子流程都要用) -
Excel对象(多个子流程操作同一个Excel) -
配置信息(账号密码、文件路径等) -

-
当前登录状态(是否已登录)
用流程参数的情况:
- 每次调用可能不同的值(如搜索关键词)
- 子流程的计算结果(如采集到的数据列表)
- 临时性的中间值(不需要跨整个流程共享)
三、在影刀RPA中创建和使用流程参数
3.1 创建子流程并定义参数
第一步:新建一个子流程,比如叫计算总价
第二步:双击进入该子流程编辑界面
第三步:点击编辑区上方的「子流程设置」或「参数设置」按钮
拼多多店群自动化报活动上架!
第四步:添加参数:
| 参数名 | 方向 | 类型 | 说明 |
|---|---|---|---|
price_list |
输入 | 列表 | 商品价格列表 |
discount_rate |
输入 | 数值 | 折扣率 |
total_price |
输出 | 数值 | 计算后的总价 |
第五步:保存设置
3.2 在子流程内部使用输入参数

定义好输入参数后,在子流程内部可以直接引用:
【打印日志】(内容:"收到价格列表,共" + ${price_list}.length + "条")
【打印日志】(内容:"折扣率:" + ${discount_rate} + "%")
${price_list} 和 ${discount_rate} 就是刚才定义的两个输入参数。
3.3 在子流程内部给输出参数赋值
输出参数是子流程要"交出去"的结果。
在子流程末尾,用赋值指令把结果写到输出参数里:
【给变量赋值】(变量:${total_price},值:${sum_result})
// 或者更复杂的逻辑
【循环】(item in ${price_list})
【给变量赋值】(变量:${total_price},值:${total_price} + item * ${discount_rate} / 100)
【结束循环】
3.4 调用子流程时传值
回到主流程(或其他子流程),拖入【调用子流程】指令:
选择子流程名称:计算总价
然后填写参数映射:

输入参数:
price_list = ${my_product_prices} ← 把主流程里的变量传进去
discount_rate = ${my_discount}
输出参数:
total_price = ${final_total} ← 接收子流程返回的结果
调用完成后,${final_total} 就存着子流程计算出来的总价了。
四、流程参数的类型
影刀RPA支持多种参数类型:
基础类型
| 类型 | 说明 | 示例值 |
|---|---|---|
| 文本 | 字符串类型 | "hello"、"用户名" |
| 数值 | 数字类型 | 100、3.14、0 |
| 布尔值 | true/false | true、false |
复合类型
| 类型 | 说明 | 示例值 |
|---|---|---|
| 列表 | 有序集合 | ["苹果", "香蕉", "橙子"] |
| 字典 | 键值对 | {"name":"张三","age":28} |
选择类型的建议
- 如果只传一个字符串或数字,用文本或数值
- 如果要传一组数据(如商品列表、关键词列表),用列表
- 如果要传结构化的数据(如一条完整记录),用字典
五、实战案例:完整的参数流转

用一个实际例子,展示参数在整个流程中的流转过程。
案例:电商订单自动处理
主流程 main
1. 调用子流程:初始化
(无参数)
2. 调用子流程:登录
输入:username = "admin"
password = "123456"
输出:login_success = ${is_logged_in}
3. If(${is_logged_in} == true)
4. 调用子流程:读取订单
输入:status = "待处理"
输出:order_list = ${orders}
5. ForEach(order in ${orders})
6. 调用子流程:处理单条订单
输入:order_data = ${order}
输出:result = ${process_result}
7. If(${process_result} == success)
8. 调用子流程:发送通知
输入:message = "订单处理成功:" + ${order.order_id}
End If
End ForEach
End If
9. 调用子流程:清理
(无参数)
各子流程的参数定义
子流程:登录
输入参数:
username(文本)— 登录账号
password(文本)— 登录密码
输出参数:
login_success(布尔值)— 是否登录成功
内部逻辑:
1. 打开登录页面
2. 填写 username 到用户名框
3. 填写 password 到密码框
4. 点击登录按钮
5. 校验是否出现"欢迎"文字
6. 给 login_success 赋值 true 或 false
子流程:读取订单
输入参数:
status(文本)— 订单状态筛选条件
输出参数:
order_list(列表/字典列表)— 符合条件的订单列表
内部逻辑:
1. 进入订单管理页面
2. 用 status 参数筛选订单状态
3. 循环获取每条订单的信息
4. 把每条订单封装成字典,加入 order_list
子流程:处理单条订单
输入参数:
order_data(字典)— 一条订单的完整数据
输出参数:
result(文本)— 处理结果(success/fail)
内部逻辑:
1. 解析 order_data(订单号、金额、买家信息...)
2. 根据业务规则处理订单
3. 返回处理结果
六、流程参数的常见错误与排查

错误1:调用时忘记给某个输入参数传值
表现:子流程运行到某一步,相关变量为空,报错"变量未初始化"
排查:
- 检查「调用子流程」指令的参数映射表
- 确认每个输入参数都有对应的值
错误2:输出参数没有正确接收
表现:调用完子流程后,用来接收输出的变量还是空的或者默认值
排查:
- 确认子流程内部确实给输出参数赋值了
- 确认调用方的输出参数映射正确
错误3:类型不匹配
表现:传入的是文本,但子流程期望数值;或者反过来
比如:你传了字符串"100",但子流程里拿它做数学运算时报错
排查:
- 检查参数类型定义(文本/数值/列表/字典)
- 必要时用「类型转换」指令转换

错误4:同名变量冲突
表现:全局变量和流程参数名字相同,导致取到了错误的值
排查:
- 查看是否有同名的全局变量
- 命名规范上区分开:流程参数加前缀,如
p_;全局变量加前缀,如g_
七、流程参数命名规范
好的命名能大幅降低出错率。
推荐规则
TEMU店群矩阵自动化运营核价报活动
| 规则 | 示例 | 说明 |
|---|---|---|
| 小写英文 | username |
不用中文,不混合大小写 |
| 下划线分隔 | product_name |
多个单词用下划线连接 |
| 见名知意 | login_success |
一看就知道是什么 |
| 方向前缀(可选) | in_username, out_result |
区分输入和输出 |
| 类型暗示(可选) | price_list, user_dict |
后缀暗示数据类型 |
反面示例(不要这样命名)
| ❌ 不好的命名 | 问题 |
|---|---|
a |
太短,看不出含义 |
参数1 |
中文且无意义 |
data |
太泛泛,任何数据都能叫 data |
MyUserName |
驼峰命名,不符合习惯 |
input_1 |
数字编号,不如用功能描述 |
八、高级用法:可选参数与默认值

有些情况下,某个参数不一定每次都传。
比如:搜索功能,有时候需要按分类筛选(传category参数),有时候不需要。
影刀RPA支持可选参数和默认值:
设置默认值
在子流程参数设置里,可以给参数设置默认值。
如果调用方没有传这个参数,就使用默认值。
输入参数:
search_keyword(文本,必填)
category(文本,可选,默认值:"全部")
page_size(数值,可选,默认值:20)
调用时:
// 只传必填参数
调用子流程:搜索
search_keyword = "iPhone"
// category 自动使用默认值 "全部"
// page_size 自动使用默认值 20
// 也可以显式传值,覆盖默认值
调用子流程:搜索
search_keyword = "iPhone"
category = "数码"
page_size = 50
九、调试技巧:如何追踪参数值?
当流程出问题时,经常是因为参数值不对。
方法1:打印日志

在每个子流程的开头和结尾,加上打印日志指令:
【打印日志】(内容:"[开始] 子流程:xxx,输入参数:a=" + ${a} + ", b=" + ${b})
...(子流程逻辑)
【打印日志】(内容:"[结束] 子流程:xxx,输出参数:result=" + ${result})
运行时查看日志面板,就能看到每一步的参数值变化。
方法2:断点调试
在关键指令处设置断点,运行到断点处会暂停。
此时可以在变量监视窗口里查看当前所有参数和变量的值。
方法3:单步执行
用「单步运行」(F10)模式,一步一步观察参数的变化过程。
十、结语
流程参数的核心思想很简单:
子流程就像一个函数——你给它什么输入(参数),它给你什么输出(返回值)。
设计好流程参数之后,你的RPA流程会有这些好处:
-
模块化:每个子流程职责单一,接口清晰
-
可维护:修改某个子流程,不影响其他部分
-
可复用:写好的子流程,换个参数就能用在别的项目
-

-
可测试:单独测试某个子流程,只需要构造合适的参数即可
下一篇讲调试技巧,教你快速定位流程里的bug。
作者:林焱 | 转载请注明出处
更多推荐



所有评论(0)