Phase 96 — 工作流自动化引擎设计
版本: v4.5.0 创建日期: 2026-03-10 状态: ✅ 已实现
一、模块概述
Phase 96 构建工作流自动化引擎,内置12种主流SaaS连接器(Gmail/Slack/GitHub/Jira/Notion等),支持多种触发方式(Webhook/定时/事件/条件),提供完整的执行日志和调试能力,实现跨系统业务流程自动化。
1.1 核心目标
- 连接器生态: 12种内置连接器覆盖主流SaaS平台,统一认证和数据映射
- 灵活触发: 支持Webhook回调、Cron定时、事件监听和条件表达式四种触发方式
- 可视化编排: 节点式工作流设计,支持条件分支、并行执行和循环
- 执行追踪: 完整执行日志记录,支持步骤级别的调试和重试
1.2 技术架构
┌───────────────────────────────────────────────────────┐
│ Workflow Automation Engine │
│ │
│ ┌──────────────────┐ ┌───────────────────────────┐ │
│ │ Trigger Manager │ │ Connector Registry │ │
│ │ Webhook监听 │ │ Gmail Slack GitHub │ │
│ │ Cron定时调度 │ │ Jira Notion Trello │ │
│ │ 事件总线订阅 │ │ Discord Teams Airtable │ │
│ │ 条件表达式求值 │ │ Figma Linear Confluence │ │
│ └──────────────────┘ └───────────────────────────┘ │
│ ┌──────────────────┐ ┌───────────────────────────┐ │
│ │ Flow Executor │ │ Execution Logger │ │
│ │ 节点依赖解析 │ │ 步骤级执行日志 │ │
│ │ 条件分支+并行 │ │ 错误追踪+重试机制 │ │
│ │ 数据映射转换 │ │ 执行耗时统计 │ │
│ └──────────────────┘ └───────────────────────────┘ │
└───────────────────────────────────────────────────────┘二、核心模块设计
2.1 AutomationEngine (enterprise/automation/automation-engine.js)
工作流自动化核心引擎,管理流程定义、触发器和执行。
核心方法:
createFlow(definition)— 创建工作流(节点列表、连接关系、触发条件)execute(flowId, inputData)— 手动执行工作流(返回执行ID和结果)listConnectors()— 获取12种内置连接器列表及配置模板addTrigger(flowId, triggerConfig)— 为工作流添加触发器testFlow(flowId, mockData)— 测试模式执行工作流(不触发实际API)getLogs(flowId, options)— 获取工作流执行日志(支持分页和过滤)importTemplate(template)— 导入工作流模板share(flowId, targetOrg)— 共享工作流至其他组织schedule(flowId, cron)— 设置工作流定时执行计划getStats()— 获取自动化统计(执行次数、成功率、平均耗时)
2.2 内置连接器
| 序号 | 连接器 | 类别 | 支持操作 |
|---|---|---|---|
| 1 | Gmail | 邮件 | 发送/接收/搜索/标记 |
| 2 | Slack | 消息 | 发送消息/创建频道/监听事件 |
| 3 | GitHub | 开发 | 创建Issue/PR/Webhook/Release |
| 4 | Jira | 项目 | 创建任务/更新状态/查询 |
| 5 | Notion | 知识 | 创建页面/更新数据库/查询 |
| 6 | Trello | 看板 | 创建卡片/移动/评论 |
| 7 | Discord | 社区 | 发送消息/管理频道/Bot |
| 8 | Teams | 协作 | 发送消息/创建会议/文件共享 |
| 9 | Airtable | 数据 | CRUD记录/视图/公式触发 |
| 10 | Figma | 设计 | 导出资源/监听变更/评论 |
| 11 | Linear | 项目 | 创建Issue/更新状态/查询 |
| 12 | Confluence | 文档 | 创建页面/更新/搜索 |
2.3 触发器类型
| 类型 | 说明 | 示例 |
|---|---|---|
| webhook | HTTP回调触发 | 收到GitHub Push事件 |
| schedule | Cron定时触发 | 每天9:00生成日报 |
| event | 系统事件触发 | 知识库更新时同步Notion |
| condition | 条件表达式触发 | 错误率>5%时通知Slack |
三、核心文件
| 文件 | 说明 |
|---|---|
src/main/enterprise/automation/automation-engine.js | 工作流自动化引擎(流程执行、连接器管理) |
src/main/enterprise/automation/automation-ipc.js | IPC Handler注册(10个通道) |
四、IPC Handlers
| Channel | 说明 |
|---|---|
automation:create-flow | 创建工作流定义 |
automation:execute | 手动执行工作流 |
automation:list-connectors | 获取12种内置连接器列表 |
automation:add-trigger | 为工作流添加触发器 |
automation:test-flow | 测试模式执行(不触发实际API) |
automation:get-logs | 获取工作流执行日志 |
automation:import-template | 导入工作流模板 |
automation:share | 共享工作流至其他组织 |
automation:schedule | 设置定时执行计划 |
automation:get-stats | 获取自动化统计信息 |
五、数据库表
5.1 auto_flows — 工作流定义表
sql
CREATE TABLE IF NOT EXISTS auto_flows (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
description TEXT,
nodes TEXT, -- JSON: 节点列表(连接器+动作+参数)
edges TEXT, -- JSON: 节点连接关系
status TEXT DEFAULT 'draft', -- draft | active | paused | archived
schedule TEXT, -- Cron表达式(NULL表示不定时)
created_by TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);5.2 auto_executions — 工作流执行记录表
sql
CREATE TABLE IF NOT EXISTS auto_executions (
id TEXT PRIMARY KEY,
flow_id TEXT NOT NULL,
trigger_type TEXT, -- webhook | schedule | event | condition | manual
input_data TEXT, -- JSON: 输入数据
output_data TEXT, -- JSON: 执行结果
status TEXT DEFAULT 'running', -- running | success | failed | cancelled
steps_log TEXT, -- JSON: 步骤级执行日志数组
duration_ms INTEGER,
error TEXT,
started_at DATETIME DEFAULT CURRENT_TIMESTAMP,
completed_at DATETIME,
FOREIGN KEY (flow_id) REFERENCES auto_flows(id)
);5.3 auto_triggers — 触发器配置表
sql
CREATE TABLE IF NOT EXISTS auto_triggers (
id TEXT PRIMARY KEY,
flow_id TEXT NOT NULL,
type TEXT NOT NULL, -- webhook | schedule | event | condition
config TEXT, -- JSON: 触发器配置(URL/Cron/事件名/条件表达式)
enabled INTEGER DEFAULT 1,
last_triggered_at DATETIME,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (flow_id) REFERENCES auto_flows(id)
);六、测试覆盖
| 测试文件 | 测试数量 | 状态 |
|---|---|---|
src/main/enterprise/automation/__tests__/automation-engine.test.js | 22 | ✅ 通过 |
| 合计 | 22 | ✅ 全部通过 |
测试要点
- 工作流创建、编辑、删除完整生命周期
- 12种连接器注册和配置验证
- 四种触发器类型(webhook/schedule/event/condition)触发逻辑
- 工作流执行引擎(顺序/条件分支/并行节点)
- 测试模式执行与生产模式隔离
- 执行日志记录(步骤级别、耗时、错误追踪)
- 工作流模板导入导出和跨组织共享
