本文档旨在帮助开发者深入理解 FlowGram Runtime 的源码结构和实现细节,为后续的定制开发提供指导。由于 FlowGram Runtime 定位为参考实现而非直接使用的 SDK,因此了解其内部实现对于开发者来说尤为重要。
FlowGram Runtime JS 项目的目录结构如下:
FlowGram Runtime JS 采用模块化设计,主要分为三个核心模块:
模块之间的依赖关系如下:
主要的外部依赖包括:
js-core 模块是 FlowGram Runtime 的核心,实现了工作流引擎的主要功能。该模块采用领域驱动设计(DDD)架构,分为应用层、领域层和基础设施层。
应用层负责协调领域对象,实现系统的用例。主要文件:
application/workflow.ts
: 工作流应用服务,实现工作流的验证、执行、取消、查询等功能application/api.ts
: API 实现,包括 TaskValidate、TaskRun、TaskResult、TaskReport、TaskCancel 等领域层包含业务核心逻辑和领域模型。主要目录和文件:
domain/engine/
: 工作流执行引擎,负责工作流的解析和执行
engine.ts
: 工作流引擎实现,包含节点执行、状态管理等核心逻辑validator.ts
: 工作流验证器,检查工作流定义的有效性domain/document/
: 工作流文档模型,表示工作流的结构
workflow.ts
: 工作流定义模型node.ts
: 节点定义模型edge.ts
: 边定义模型domain/executor/
: 节点执行器,负责执行具体节点的逻辑
executor.ts
: 节点执行器基类和工厂domain/variable/
: 变量管理,处理工作流中的变量存储和引用
manager.ts
: 变量管理器,负责变量的存储、获取和解析store.ts
: 变量存储,提供变量的持久化domain/status/
: 状态管理,跟踪工作流和节点的执行状态
center.ts
: 状态中心,管理工作流和节点的状态domain/snapshot/
: 快照管理,记录工作流执行的中间状态
center.ts
: 快照中心,管理节点执行的快照domain/report/
: 报告生成,收集工作流执行的详细信息
center.ts
: 报告中心,生成工作流执行报告