n8n怎么实现子workflow的回调?
Created on: February 6, 2025
Created on: February 6, 2025
n8n怎么实现子workflow的回调?
在 n8n 中,如果你希望“主工作流(Parent Workflow)”调用“子工作流(Child Workflow)”并等待子工作流完成后“回传”一些数据(也可以理解为一次异步的调用-回调流程),常见有两种实现方式:
适用场景: 子工作流执行时间可控且不会无限等待,需要的回调结果就是子工作流的执行输出。
n8n 内置了一个 Execute Workflow 节点,可以把它理解成一个“子工作流”的同步调用。其工作原理是:
这种方式不需要你手动实现“回调”逻辑,n8n 会在后台自动等待子工作流完成,结果可以直接在后续节点中引用。例如,假设子工作流返回了某些处理结果,你在主工作流里的下一步节点中,就可以用 {{$json}}
或者 {{$json["字段名"]}}
获取子工作流的输出数据。
适用场景: 子工作流中存在无法立即结束的操作(例如需要用户确认、第三方回调、长时间任务排队等),想要在子工作流真正完成时再通知主工作流。
如果你的子工作流不是“立即”就有结果,需要一个异步的回调,那么就需要主、子工作流分别配合使用 Webhook / HTTP Request 这样的节点,以模拟“主→子异步调用,子→主回调通知”的场景。
下面是一种常见的思路:
主工作流里创建 Webhook 节点
Webhook
节点,用于等待子工作流最终的回调。你会得到一个回调 URL(例如 https://xxxxx/webhook/abcdefg
)。子工作流异步执行,最后通过 HTTP Request 调用主工作流的 Webhook
主工作流在 Webhook 节点处拿到回调数据后,再进行处理
下面以“主工作流 + 子工作流 + 回调数据”简要举例:
Webhook 节点(设为 等待子工作流结果
)
/subworkflow-callback
之后的处理节点(假设为一个 Function 或者任意处理数据的节点)
{{$json}}
就能读到子工作流回调时带来的数据。执行逻辑
HTTP Request 节点(发起回调)
当子工作流走到最后一步时,发起这个 HTTP 请求,那么主工作流就会在对应的 Webhook 节点处被激活,拿到数据后继续执行下去,相当于“子工作流调用→完成后向主工作流回调”的流程就实现了。
根据不同的需求和执行时长,以及对数据传输的灵活度要求,你可以选择不同的方式来“实现子工作流的回调”。在实际项目中,如果能保证子工作流不会等待太久,Execute Workflow 节点通常最简单;若子工作流执行不确定、甚至可能要等待外部事件,则构建 Webhook + HTTP 回调的异步模式更合适。