3.8 KiB
3.8 KiB
输出物
- 一份详细的 Flow 架构与执行流程文档,包含可视化图示与文字说明
- 以 Mermaid 图(可直接在 IDE/Markdown 预览)呈现;同时提供 ASCII 简版便于纯文本查看
文档与图的组织
- 文件:
docs/flow_architecture.md - 结构:分章节“模块架构”“请求/运行编排”“引擎执行图”“数据模型”“事件与日志”“DSL 与 Design 转换”“执行器生态”
- 图格式:Mermaid(flowchart、sequence、class、er);每个图下配文字说明与代码引用(file:line)
图示清单与内容要点
-
模块架构图(Graph LR)
- 节点:
flow/{dsl,domain,context,engine,task,executors,mappers,log_handler}、services/{flow_service,flow_run_log_service}、routes/{flows,flow_run_logs}、middlewares/{sse,ws,jwt,http_client}、db,redis,models/{flow,flow_run_log} - 边:解析→构建→驱动→事件→日志入库;路由→服务→引擎;执行器←上下文补充
- 节点:
-
请求/运行编排时序图(Sequence)
- 参与者:客户端、
routes.flows、flow_service、dsl/mappers、FlowEngine、log_handler、middlewares.sse/ws、models - 关键步骤:加载流程→解析 YAML/design_json→构造
ChainDef/ctx→drive(...)→推送事件→写入运行日志→返回结果
- 参与者:客户端、
-
引擎执行图(Flowchart)
- 图块:选起点→合流屏障检查→任务执行(Sync/AsyncFireAndForget/Queued/Bounded)→分支选择(条件 JSON/Rhai)→组内追踪与等待(BranchExit/FlowEnd)→结束与事件推送
- 特别展示:
group信号量(队列/限并发)与写回策略(variable/http/db)
-
DSL/Design 转换图(Flowchart)
DesignSyntax校验→条件端口兼容→推断kind/task/name→组装groups/members/await_policy→生成ChainDef- 同时展示
mappers.ctx_from_design_json将节点配置落到ctx.nodes.<id>.<executor>
-
数据模型图(ER/Class)
- 表:
flows(id,name,yaml,design_json,code,remark,created_at,updated_at)、flow_run_logs(id,flow_id,flow_code,input,output,ok,logs,user_id,username,started_at,duration_ms,created_at) - 关系:
flow_run_logs.flow_id → flows.id
- 表:
-
事件与日志通道图(Graph LR)
- SSE/WS:
engine.push_and_emit → middlewares.sse/ws → client - 入库:
FlowLogHandler(Database|Sse)→flow_run_log_service.create
- SSE/WS:
-
执行器生态图(Graph LR)
- 节点:
http/db/variable/script_rhai/script_js/script_python/condition - 输入来源:
ctx.nodes.<id>.*与顶层ctx.*;输出写回策略与幂等注意点
- 节点:
信息来源与代码引用
- DSL/Design:
backend/src/flow/dsl.rs:60-93,138-170,172-203,246-303 - 领域模型:
backend/src/flow/domain.rs:20-28,31-36,39-47,60-68 - 上下文与事件:
backend/src/flow/context.rs:29-45 - 引擎:
backend/src/flow/engine.rs:117-209,213-577 - 服务编排:
backend/src/services/flow_service.rs:285-305,342-349,351-365,366-399 - 路由:
backend/src/routes/flows.rs:26-35,101-133 - 日志服务:
backend/src/services/flow_run_log_service.rs:46-63,74-131
实施步骤
- 生成
docs/flow_architecture.md骨架,按章节填入概要说明 - 为每个章节插入 Mermaid 图代码块,并补充 2-4 条关键解释
- 在图下添加代码引用(
file_path:line_number) - 预览并调整布局(节点命名统一、边方向一致、避免交叉线)
- 输出 ASCII 简版(备选)供纯文本环境查看
验证
- 在 IDE/Markdown 预览验证所有 Mermaid 图可渲染
- 随机抽取 3 处代码引用跳转验证准确性
后续维护
- 当新增执行器或模式,更新“执行器生态图”和“引擎执行图”
- 当模型字段变更,更新 ER 图并在“请求/运行编排时序图”同步最新流程