跳到主要内容

调用流程

调用流程节点用于触发并执行另一个工作流,支持传参和接收返回值。

概述

将可复用的子逻辑(如登录、数据清洗)独立保存为工作流文件,在主流程中通过本节点调用。调用时会阻塞等待子流程执行完毕,拿到返回值后才继续下游节点。

被调用的工作流必须通过「手动执行」方式启动,否则不会出现在候选列表中。

调用流程节点参数配置面板

使用方法

拖入节点后,配置以下参数:

目标工作流

下拉选择要调用的工作流。下拉框自动过滤出包含「手动执行」节点的工作流——只有手动执行入口能被外部调用。

携带数据

传递给子流程的 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"]

执行完成

控制被调用工作流执行完毕后的操作:

  • 无操作(默认):不执行额外操作,主流程的后续节点继续执行。
  • 关闭调用流程页面:关闭被调用工作流执行时所在的页面。适用于打开新标签页执行子流程后需要自动关闭的场景。

完整示例

子流程(被调用方):

  1. 入口为「手动执行」,接收数据data
  2. 子流程中通过 {{data.url}}{{data.orderId}} 访问主流程传来的参数
  3. 执行完毕后,「返回」节点返回结果:
{
"status": "success",
"amount": "99.00"
}

主流程(调用方):

  1. 「调用流程」节点:目标工作流选子流程,携带数据填入带变量的 JSON,输出变量填 result
  2. 调用完成后,通过 {{result.status}}{{result.amount}} 引用返回值
  3. 如果输出变量未填写,返回值会被丢弃,子流程仅作为副作用执行

参数参考

参数类型默认值说明
目标工作流下拉选择必填。仅列出包含手动执行的工作流
携带数据JSON传递给子流程的参数。支持 {{变量名}} 引用,变量先替换再解析 JSON
执行方式下拉选择继承目标配置控制子流程的执行页面。可选:继承目标配置、打开新标签页(需填 URL)、指定标签页(需填 TabId)
输出变量文本存储返回值的变量名。不填则丢弃返回值
执行完成下拉选择无操作子流程执行完毕后的操作。可选:无操作、关闭调用流程页面

常见问题

下拉框中找不到目标工作流

现象:目标工作流已保存,但下拉框中没有显示。

原因:目标工作流缺少手动执行节点。

解决:在目标工作流中添加「手动执行」节点后保存。

子流程收不到传递的参数

现象:携带数据填写了 JSON,但子流程中变量为空。

原因:子流程触发器的「接收数据」字段未填写,或填写名称与子流程中引用的变量名不一致。

解决:确认子流程触发器「接收数据」已填写(如 data),且子流程中通过 {{data.字段名}} 引用。