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,支持独立测试与上线。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions