架构概览
五层自上而下:设计层、应用层、引擎层、规则引擎、存储层。每层可单独取用——引擎能脱离 gflow 嵌入你的系统,gflow 也不锁死你的数据。
gflow 商业版│Apache-2.0 开源分界线在引擎层:引擎及以上开源,设计与应用层商用
Design设计层商业版 · 四大自研部件
流程设计器钉钉式树形
gform-designer 表单设计器29 种字段
规则链设计器自动化编排
智能体管理AI 审批 · 技能
节点配置抽屉 · 条件路由 · 表单权限
▼DSL · definition_json 唯一真相
Application应用层 · gflow商业版
发起 / 待办 / 已办 / 抄送 / 统计
组织架构 · 角色岗位 · 多租户
监控 · 通知 · 审计
▼REST / Go API
Engine引擎层 · rulego-bpm开源 · Apache-2.0
8 类 BPM 节点startTask / userTask / ccTask / serviceTask / automation / subProcess / aiAgent / httpCall
中国式审批状态机会签 · 加签 · 退回 · 转办 · 撤回
IdentityService可插拔身份
版本化部署 · 挂起恢复
▼规则链执行 · 按租户分池
Rule Engine规则引擎 · RuleGo开源
规则链 DSLruleChain + metadata
原生节点switch / fork / join / inclusive / delay
automation 节点跨链调用
▼GORM 方言
Storage存储层
PostgreSQL / MySQL
达梦 / 人大金仓DialectProvider 扩展
6 张核心表
Redis 分布式锁多实例可选
开源与商业的分界线在引擎层:引擎层及其以下(rulego-bpm、RuleGo)Apache-2.0 开源;设计层与应用层属于 gflow 商业版。
一次审批的数据流
- 发起:用户在 gflow 前端提交表单,应用层调
RuntimeService.StartProcessInstanceByKey,表单数据装入流程变量msg。 - 路由:引擎加载
wf_process.definition_json中的规则链 DSL,交给 RuleGo 执行池(按租户划分)。 - 网关:
switch节点按 EL 表达式(如msg.days > 3)匹配分支决定流向。 - 任务:流转到
userTask节点时,引擎在wf_task写入任务行,按候选人配置解析wf_task_assignee。 - 办理:审批人在前端对待办做出通过/驳回/加签等动作,
TaskService完成任务并推进流程。 - 执行:到达
automation(调规则链)、serviceTask(调 Go 函数)、httpCall(调外部接口)节点时自动执行后续动作——入账、开权限、发通知、回写 ERP;aiAgent节点按模型输出路由(低风险直通、高风险转人工)。 - 归档:流程结束的瞬间,实例与任务行迁入
wf_hi_instance/wf_hi_task,补记耗时与结论。
关键设计决策
流程定义即规则链
流程 DSL 严格遵循 RuleGo {ruleChain, metadata} 标准:表单 schema、审批人、权限写在节点 configuration 与 additionalInfo 中,网关、并行分支直接复用 RuleGo 原生组件。好处:与 RuleGo 生态互通,已有的规则链可以直接当流程用,automation 节点反过来也能调用任意规则链。
运行时 / 历史双轨
进行中的实例和任务只保留「办理所需的最小字段集」,归档后补记 duration、end_reason 等。运行表永远小而热,历史表随便加索引做报表,两不相扰。详见数据模型。
身份与引擎解耦
引擎不绑定任何用户体系。按角色/部门/主管发起的任务,办理人统一经 service.IdentityService 接口解析——生产环境注入宿主应用自己的实现即可对接真实组织架构,gflow 已内置完整实现(用户/角色/部门/岗位/多租户)。
DSL 是唯一真相
UI 只是 DSL 的视图。设计器里配的每个节点、每条分支、每个字段权限,最终都落进 definition_json;任何 UI 状态丢失后都能从 DSL 完整重建。