Skip to content

自动化引擎架构对标主流平台的细节完善任务拆分 #769

Description

@hotlong

背景

参考 n8n、Activepieces、Zapier、Airtable 等平台,对 ObjectStack 自动化引擎核心架构进行深度完善。目标:提升系统健壮性、兼容主流自动化场景、强化开发体验。


🛠️ 待开发细节任务清单

1. Fault Edge 错误路径支持(节点级错误分支)

  • 扩展 DAG 执行核心:节点执行失败时,自动查找并跳转 fault 类型的边,优先走故障分支,不中断全流程。
  • 将失败信息(error/output)写入变量上下文,便于后续节点引用。
  • 无 fault 路径则如旧逻辑中断。
  • 单元测试覆盖:模拟节点失败,检��� fault 路径执行。

2. Node Step-level 执行日志

  • 执行流程时,采集每个节点 id/type/status/timing 记录到 executionLog.steps。
  • 日志包含:开始时间、结束时间、耗时、执行状态(success/failure/skipped)。
  • UI/API优化:execution history 展示完整 step 详情。
  • 测试覆盖:断点失败/并发分支均有 step 记录。

3. Retry/Backoff 递归保护与指数退避

  • refine retryExecution:增加内部重试标志,防止递归调用叠加导致栈溢出。
  • 支持 retryDelayMs、backoffMultiplier、maxRetryDelayMs、jitter 控制重试间隔。
  • 测试覆盖:节点失败后正确指数退避重试,并最终输出 failure 日志。

4. 并行分支执行

  • DAG 执行时支持无条件边并发(Promise.all),条件边按顺序互斥。
  • 检查多条分支同时出边场景,确保并发执行不影响变量隔离。
  • 测试覆盖:并行任务执行耗时显著下降。

5. 节点超时机制

  • NodeExecutor 支持 timeoutMs 属性。
  • 执行节点时包裹 Promise.race 超时控制,超时自动失败并记录日志。
  • 测试覆盖:模拟长耗时节点,确保自动中断。

6. DAG 环检测与流程校验

  • registerFlow 时自动检测环路,拒绝非 DAG 流程注册。
  • 用户提示友好:具体环路详情。
  • 测试覆盖:注册任意递归流程时抛出异常。

7. 安全表达式求值(替换 new Function)

  • evaluateCondition/decision 节点改用 jexl 等沙箱表达式引擎。
  • 支持变量对象嵌套结构、数值/文本安全解析。
  • 测试覆盖:用恶意代码字符串验证不被执行。

8. 节点输入输出 Schema 校验(结构声明)

  • NodeExecutor 扩展 inputSchema/outputSchema 属性,用于 Studio 表单生成与运行时校验。
  • 运行前自动校验节点 config 参数是否结构正确。
  • 测试覆盖:节点参数类型错误能即时报错。

9. Webhook/RecordChange Trigger 插件支持

  • 新增标准 webhook trigger 插件,为 type=api flow 自动分配唯一 webhook URL。
  • 基于 ObjectQL 的 record_change trigger 实现。
  • 全流程自测:模拟外部调用触发引擎。

10. 流程版本管理与回滚

  • registerFlow 保留历史版本。
  • executionLogEntry 记录 flowVersion。
  • 支持 API/UI 回滚到历史版本。
  • 测试覆盖:注册多版本流程,执行与回滚。

11. 执行状态拓展

  • executionLogEntry.status 增加 'running'、'paused'、'waiting'、'cancelled' 等状态。
  • wait/script/approval 节点支持流程暂停与状态变更。

验收标准

  • 所有上述细节点均有单元测试覆盖。
  • 与现有架构兼容,不破坏现有所有通过的 test。
  • Roadmap 及时更新。

注:每项任务建议拆分为单独 PR、issue,支持独立测试与上线。

Metadata

Metadata

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions