Files
udmin/.trae/documents/Flow 架构与执行图产出计划.md
ayou 12830b7cf6 fix(router): 修复登录重定向兼容hash路由和普通路由的问题
添加对hash路由的识别处理,优先尝试使用hash路由跳转,失败时回退到普通pathname跳转
docs: 添加Flow架构与执行流程文档
2025-12-03 21:21:24 +08:00

3.8 KiB
Raw Blame History

输出物

  • 一份详细的 Flow 架构与执行流程文档,包含可视化图示与文字说明
  • 以 Mermaid 图(可直接在 IDE/Markdown 预览)呈现;同时提供 ASCII 简版便于纯文本查看

文档与图的组织

  • 文件:docs/flow_architecture.md
  • 结构:分章节“模块架构”“请求/运行编排”“引擎执行图”“数据模型”“事件与日志”“DSL 与 Design 转换”“执行器生态”
  • 图格式Mermaidflowchart、sequence、class、er每个图下配文字说明与代码引用file:line

图示清单与内容要点

  1. 模块架构图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}
    • 边:解析→构建→驱动→事件→日志入库;路由→服务→引擎;执行器←上下文补充
  2. 请求/运行编排时序图Sequence

    • 参与者:客户端、routes.flowsflow_servicedsl/mappersFlowEnginelog_handlermiddlewares.sse/wsmodels
    • 关键步骤:加载流程→解析 YAML/design_json→构造 ChainDef/ctxdrive(...)→推送事件→写入运行日志→返回结果
  3. 引擎执行图Flowchart

    • 图块选起点→合流屏障检查→任务执行Sync/AsyncFireAndForget/Queued/Bounded→分支选择条件 JSON/Rhai→组内追踪与等待BranchExit/FlowEnd→结束与事件推送
    • 特别展示:group 信号量(队列/限并发与写回策略variable/http/db
  4. DSL/Design 转换图Flowchart

    • DesignSyntax 校验→条件端口兼容→推断 kind/task/name→组装 groups/members/await_policy→生成 ChainDef
    • 同时展示 mappers.ctx_from_design_json 将节点配置落到 ctx.nodes.<id>.<executor>
  5. 数据模型图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
  6. 事件与日志通道图Graph LR

    • SSE/WSengine.push_and_emit → middlewares.sse/ws → client
    • 入库:FlowLogHandler(Database|Sse)flow_run_log_service.create
  7. 执行器生态图Graph LR

    • 节点:http/db/variable/script_rhai/script_js/script_python/condition
    • 输入来源:ctx.nodes.<id>.* 与顶层 ctx.*;输出写回策略与幂等注意点

信息来源与代码引用

  • DSL/Designbackend/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

实施步骤

  1. 生成 docs/flow_architecture.md 骨架,按章节填入概要说明
  2. 为每个章节插入 Mermaid 图代码块,并补充 2-4 条关键解释
  3. 在图下添加代码引用(file_path:line_number
  4. 预览并调整布局(节点命名统一、边方向一致、避免交叉线)
  5. 输出 ASCII 简版(备选)供纯文本环境查看

验证

  • 在 IDE/Markdown 预览验证所有 Mermaid 图可渲染
  • 随机抽取 3 处代码引用跳转验证准确性

后续维护

  • 当新增执行器或模式,更新“执行器生态图”和“引擎执行图”
  • 当模型字段变更,更新 ER 图并在“请求/运行编排时序图”同步最新流程