
## 异步门户工作流模式:实现n8n长期运行流程的状态管理
### 什么是异步门户模式?
异步门户工作流模式是一个强大、可重用的工具,用于管理有状态的长期运行流程。它允许主工作流在”检查点”处无限期暂停,然后通过外部异步事件恢复执行。
这种模式对于复杂的自动化至关重要,我通常称之为”异步门户”或”传送”模式。
### 工作流架构
该模板由两个不同的部分组成:
#### 主流程(顶部流程)
这代表您的主要业务逻辑。它启动,执行一些操作,然后调用门户注册自身,最后在等待节点(”检查点”)处暂停。
#### 异步门户(底部流程)
这是状态管理引擎。它使用工作流静态数据作为持久内存来跟踪所有暂停的流程。当带有特定session_id的外部事件(如新聊天消息或审批webhook)进入时,门户查找相应的暂停工作流,并通过调用其唯一的resume_url将新数据”传送”给它。
### 应用场景
这种高级工具非常适合:
– **聊天机器人**:在多个用户消息之间维护对话历史和上下文
– **人工参与流程**:暂停工作流以等待经理通过电子邮件链接或表单提交的审批
– **多日序列**:构建用户引导流程或滴灌营销活动,需要在步骤之间暂停数小时或数天
– **任何需要等待不可预测外部事件而不会超时的流程**
### 设置步骤
1. **复制异步门户**:在您自己的项目中,将整个异步门户(底部流程,从”A. Entry: Receive Session Info”触发器开始)复制到您的工作流中
2. **注册主流程**:在主工作流的开头,使用执行工作流节点调用门户的触发器。您必须为其传递唯一的session_id和来自等待节点的resume_url
3. **添加检查点**:在主工作流中需要暂停并等待外部事件的位置放置等待节点
4. **触发门户**:配置外部触发器(例如聊天机器人的webhook)以调用门户的入口触发器,而不是主工作流的触发器
### 技术节点分析
工作流包含以下关键节点:
– **A. Entry: Receive Session Info** – 门户入口触发器
– **B. Check if Session is New or Existing** – 会话状态检查代码节点
– **C. Route Based on Session State** – 基于会话状态的路由
– **D. TELEPORT: Resume Paused Workflow** – 传送节点,恢复暂停的工作流
– **Wait Nodes** – 检查点,支持单向和双向通信
– **Execute Workflow** – 工作流执行节点
– **Code Nodes** – 自定义逻辑处理
– **Filter Nodes** – 条件过滤
– **Set Nodes** – 数据设置
– **SplitOut Nodes** – 数据拆分
### 测试方法
要测试此工作流,请打开两个浏览器标签页:
1. 在标签页A中执行主工作流,观察其在检查点1处暂停
2. 在标签页B中再次执行主工作流,观察门户如何检测现有会话并将数据传送到标签页A
3. 重复此过程以测试多个检查点
这种架构允许您构建复杂的系统,其中状态集中管理,而主要业务逻辑保持清晰且易于遵循。

评论(0)