调用流程
调用流程节点用于触发并执行另一个工作流,支持传参和接收返回值。
概述
将可复用的子逻辑(如登录、数据清洗)独立保存为工作流文件,在主流程中通过本节点调用。调用时会阻塞等待子流程执行完毕,拿到返回值后才继续下游节点。
被调用的工作流必须通过「手动执行」或「信号触发」方式启动,否则不会出现在候选列表中。
使用方法
拖入节点后,配置以下三项:
目标工作流
下拉选择要调用的工作流。下拉框自动过滤出包含「手动执行」或「信号触发」节点的工作流——只有这两种入口能被外部调用。
携带数据
传递给子流程的 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,支持尾部逗号、单引号、注释等宽松语法。
输出变量
存储子流程返回值的变量名。子流程通过「返回」节点返回的数据,会被存入该变量,供主流程下游节点通过 {{变量名.字段}} 引用。
主流程调用完成后引用返回值:
假设输出变量填了 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 |
| 输出变量 | 文本 | — | 存储返回值的变量名。不填则丢弃返回值 |
常见问题
下拉框中找不到目标工作流
现象:目标工作流已保存,但下拉框中没有显示。
原因:目标工作流缺少手动执行或信号触发节点。
解决:在目标工作流中添加「手动执行」或「信号触发」节点后保存。
子流程收不到传递的参数
现象:携带数据填写了 JSON,但子流程中变量为空。
原因:子流程触发器的「接收数据」字段未填写,或填写名称与子流程中引用的变量名不一致。
解决:确认子流程触发器「接收数据」已填写(如 data),且子流程中通过 {{data.字段名}} 引用。