调用流程
调用流程节点用于触发并执行另一个工作流,支持传参和接收返回值。
概述
将可复用的子逻辑(如登录、数据清洗)独立保存为工作流文件,在主流程中通过本节点调用。调用时会阻塞等待子流程执行完毕,拿到返回值后才继续下游节点。
被调用的工作流必须通过「手动执行」方式启动,否则不会出现在候选列表中。
使用方法
拖入节点后,配置以下参数:
目标工作流
下拉选择要调用的工作流。下拉框自动过滤出包含「手动执行」节点的工作流——只有手动执行入口能被外部调用。
携带数据
传递给子流程的 JSON 参数。子流程通过触发器的「接收数据」字段接收。
支持 {{变量名}} 引用——变量会先于 JSON 解析被替换为实际值,因此可以在 JSON 的任意位置嵌入上游变量:
{
"url": "{{targetUrl}}",
"orderId": "{{orderId}}",
"config": {
"timeout": 5000,
"retry": {{retryCount}}
}
}
假设上游 retryCount = 3,实际传给子流程的 JSON 为:
{
"url": "https://shop.example.com/order/12345",
"orderId": "12345",
"config": {
"timeout": 5000,
"retry": 3
}
}
注意:
{{retryCount}}不加引号,替换后为数字3。如果写成"{{retryCount}}",替换后为字符串"3"。根据子流程对类型的期望决定是否加引号。
数据格式为 JSON,支持尾部逗号、单引号、注释等宽松语法。
执行方式
控制被调用工作流在哪个浏览器页面上执行。有三种模式可选:
- 继承目标配置(默认):使用被调用工作流手动执行触发器中配置的执行方式设置。
- 打开新标签页:打开一个新标签页并跳转到指定 URL,然后在该页面中执行工作流。需填写目标 URL,支持
{{变量名}}引用。 - 指定标签页(TabId):在指定的已打开标签页中执行工作流。需填写目标标签页的 TabId,支持
{{变量名}}引用,主要配合变量使用。
输出变量
存储子流程返回值的变量名。子流程通过「返回」节点返回的数据,会被存入该变量,供主流程下游节点通过 {{变量名.字段}} 引用。
主流程调用完成后引用返回值:
假设输出变量填了 result,子流程返回:
{
"status": "success",
"amount": 99.00,
"items": ["A", "B"]
}
主流程下游引用:
{{result.status}} → "success"
{{result.amount}} → 99.00
{{result.items}} → ["A", "B"]
执行完成
控制被调用工作流执行完毕后的操作:
- 无操作(默认):不执行额外操作,主流程的后续节点继续执行。
- 关闭调用流程页面:关闭被调用工作流执行时所在的页面。适用于打开新标签页执行子流程后需要自动关闭的场景。
完整示例
子流程(被调用方):
- 入口为「手动执行」,接收数据填
data - 子流程中通过
{{data.url}}、{{data.orderId}}访问主流程传来的参数 - 执行完毕后,「返回」节点返回结果:
{
"status": "success",
"amount": "99.00"
}
主流程(调用方):
- 「调用流程」节点:目标工作流选子流程,携带数据填入带变量的 JSON,输出变量填
result - 调用完成后,通过
{{result.status}}、{{result.amount}}引用返回值 - 如果输出变量未填写,返回值会被丢弃,子流程仅作为副作用执行
参数参考
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 目标工作流 | 下拉选择 | — | 必填。仅列出包含手动执行的工作流 |
| 携带数据 | JSON | — | 传递给子流程的参数。支持 {{变量名}} 引用,变量先替换再解析 JSON |
| 执行方式 | 下拉选择 | 继承目标配置 | 控制子流程的执行页面。可选:继承目标配置、打开新标签页(需填 URL)、指定标签页(需填 TabId) |
| 输出变量 | 文本 | — | 存储返回值的变量名。不填则丢弃返回值 |
| 执行完成 | 下拉选择 | 无操作 | 子流程执行完毕后的操作。可选:无操作、关闭调用流程页面 |
常见问题
下拉框中找不到目标工作流
现象:目标工作流已保存,但下拉框中没有显示。
原因:目标工作流缺少手动执行节点。
解决:在目标工作流中添加「手动执行」节点后保存。
子流程收不到传递的参数
现象:携带数据填写了 JSON,但子流程中变量为空。
原因:子流程触发器的「接收数据」字段未填写,或填写名称与子流程中引用的变量名不一致。
解决:确认子流程触发器「接收数据」已填写(如 data),且子流程中通过 {{data.字段名}} 引用。