GFlow Engine 是一个基于 RuleGo 的轻量级、可嵌入审批工作流引擎,今天正式发布 v1.0.0 并以 Apache-2.0 协议开源:引一个 Go 库、建 7 张表,即可为现有系统补上完整的审批能力,无需部署独立的流程中间件。
审批工作流赛道,Java 世界有 Flowable/Activiti,国产开源有 FlowLong,SaaS 有钉钉/飞书,Go 生态却长期缺位——GFlow Engine 由 RuleGo 团队打造,为 RuleGo 生态补上最后一块拼图:机器能自动执行的交给规则链,需要人拍板的交给审批流。开源引擎 + 企业版(GFlow Platform)双轨并行,长期维护
如果说传统 BPM 引擎的关键词是"重",那么 GFlow Engine 的关键词是嵌入与融合:
-
嵌入现有系统——Go 单库、无 JVM、无必须的外部中间件,引库建表、业务代码照旧;
-
规则链即流程——流程 DSL 复用 RuleGo 规则链(JSON),流程即规则、规则即流程;
-
批完,自动办——审批、自动化、AI 写在同一条链里编排:AI 先审、人再签、签完自动执行;
-
中国式审批语义完备——或签、会签(全票/任一/多数/比例/票数)、动态加签/减签、转办、委托、签收/抢单、退回、撤回、挂起/恢复、超时催办,一个不少。
一、规则链即流程:审批与自动化同链编排
这是 GFlow Engine 与其他审批引擎的根本差异。流程定义不发明新格式,直接复用 RuleGo 规则链 DSL(JSON),条件网关、并行分支等 RuleGo 原生节点直接参与编排;引擎不解析 BPMN 2.0 XML,DSL 即存储格式,所见即所得。
多数审批引擎做到"人签完"就结束了;GFlow Engine 把自动化与 AI 审批做成和审批节点平级的原生节点——审批通过后 serviceTask 调 Go 函数、automation 触发规则链(复用 RuleGo 生态上百个现成组件)、httpCall 同步拉取外部数据,审批流本身就是一个能办事的流程。
引擎扩展的 BPM 节点:
|
节点 type
|
说明
|
|
startTask
|
发起节点:流程起点标记
|
|
userTask
|
用户审批任务:或签/会签/票签、候选人(人员/角色/部门)、表单挂接、优先级、截止时间
|
|
ccTask
|
抄送任务:生成抄送记录并回调宿主应用,动态名单
|
|
serviceTask
|
服务任务:调用 Go 函数
|
|
automation
|
自动化节点:调用 RuleGo 规则链
|
|
aiAgent
|
AI 智能体节点:调用智能体规则链并裁决路由输出
|
|
httpCall
|
HTTP 调用:同步请求外部接口,响应按映射合并进流程变量(内置 SSRF 防护)
|
|
subProcess
|
子流程:启动独立子流程实例,同步/异步可选,结束后回到主流程
|
|
startProcess
|
链内发起 BPM 流程实例(如定时自动发起审批)
|
二、完整的中国式审批语义
审批引擎的成色在语义细节上。v1.0.0 交付了一套完备的任务操作全集:
-
会签/票签五种阈值规则:全部通过、任一通过、多数决、百分比、固定票数,达成阈值后提前终止剩余子任务;
-
动态加签/减签:审批过程中临时增减办理人;
-
转办、改派、委派(委派归还):任务在人员间流转全程留痕;
-
候选组待办:任务可按人员/角色/部门发起,候选人池独立存储,待认领 → 认领 → 审批完整链路,支持抢单;
-
退回、撤回、挂起/恢复、超时催办:驳回策略与退回目标节点可配;
-
审批意见:评论独立存储,任务归档后仍可读写,审批动作与意见同一事务落库;
-
幂等保护:重复提交返回幂等错误,并发审批不会重复驱动同一链路。
三、选型对比:Java 三驾马车、SaaS 审批之外的新选项
选型看三件事:中国式语义是否原生、技术栈是否匹配、模型是否可控。
|
维度
|
GFlow Engine
|
Activiti / Flowable
|
钉钉/飞书审批
|
|
中国式审批语义(会签/加签/退回/转办/委托/撤回)
|
原生一等公民
|
需扩展开发
|
支持
|
|
规则引擎联动(流程即规则链,automation 调任意链)
|
原生
|
无
|
无
|
|
AI 审批(aiAgent 节点)
|
内置
|
自行集成
|
有限
|
|
多租户
|
全链路 tenant_id
|
自行实现
|
平台级
|
|
嵌入现有系统
|
引一个 Go 库 + 7 张表
|
JVM 重中间件
|
不可嵌入
|
|
部署形态
|
Go 单二进制,无必须中间件
|
JVM 应用
|
SaaS 闭源
|
Java 引擎语义要靠扩展开发补齐,SaaS 审批不可嵌入、数据不在自己手里——GFlow Engine 把"语义原生 + Go 技术栈 + 数据自持"放在了同一个选项里。
四、为嵌入与生产而生的工程化设计
作为要嵌进你系统里、扛生产并发的库,v1.0.0 在工程化上做了完整的收敛:
-
多租户:全链路 tenant_id 隔离,规则链执行池按租户划分,一个租户的突发流量不拖垮其他租户;跨租户的列表、操作与归档删除一律拒绝,归属一律取操作者租户而非载荷声明;
-
运行时/历史双表 + 极简表设计:Activiti 全家桶动辄二三十张表,GFlow Engine 只有 7 张——任务先后关系编码在规则链连线里,不需要"转移表";候选人存原始引用、查询时经身份服务展开,没有冗余展开表。进行中数据与归档数据分离(wf_instance/wf_hi_instance、wf_task/wf_hi_task),待办、抢单、超期扫描各走各的索引,在线表永远精瘦,报表和审计查询不拖累运行时;
-
显式 Actor 鉴权:所有审批操作以显式 actor 身份执行,受理人/候选人 + 租户双重校验,无身份调用直接拒绝;
-
节点级权限:actionPermissions 可按节点禁用退回、加签等操作,与设计器联动;
-
可靠性:并行/包容网关断点恢复、卡死实例发现与重驱动、子流程失败沿声明边传播、全部 BPM 节点 panic 兜底转 Failure 边;
-
可插拔身份体系:实现 IdentityService 的 8 个方法即可对接真实用户/角色/部门(按角色、部门、直接主管、多级主管解析审批人),引擎不绑定任何用户体系;
-
可插拔数据库方言:内置 PostgreSQL / MySQL,单元测试跑在 SQLite 内存库上零依赖上手;通过 DialectProvider 可扩展达梦、人大金仓等国产数据库(附示例);
-
可插拔分布式锁:内置本地内存锁,多实例部署实现 lock.Locker 接口(如 Redis SET NX)注入即可;
-
事件钩子:17 个任务全生命周期事件在事务提交后异步派发,驱动站内通知等副作用;
-
统计开箱可用:待办/已办/超期多维计数、完成趋势、分类分布、时长明细,运行数据归档不拖累在线查询。
五、快速开始
go get github.com/rulego/gflow-engine
要求 Go 1.24+、RuleGo v0.37+。初始化数据库(幂等脚本,PostgreSQL / MySQL)后,十几行代码启动引擎:
cfg := &config.Config{
Database: &config.DatabaseConfig{
Driver: "postgres",
Dsn: "host=127.0.0.1 user=postgres password=postgres dbname=gflow port=5432 sslmode=disable",
},
}
engine, _ := service.NewWorkflowEngineBuilder().
SetName("demo").
SetConfig(cfg).
SetIDGenerator(service.NewIDGenerator()).
Build()
_ = engine.Start(ctx)
defer engine.Stop(ctx)
// 一步装配全部 BPM 节点组件
_ = components.RegisterFromEngine(engine)
// 部署流程定义(DSL 为 RuleGo 规则链 JSON)
_, _ = engine.GetProcessService().Deploy(ctx, admin, &model.WfProcess{
ProcessKey: "leave_approval",
Name: "请假审批",
DefinitionJSON: leaveApprovalDSL,
TenantID: "default",
CreatedBy: "admin",
}, true)
// 发起流程实例
_, _ = engine.GetRuntimeService().StartProcessInstanceByKey(ctx,
service.Actor{UserID: "emp001", UserName: "张三", TenantID: "default"},
"leave_approval", "leave_emp001_1",
map[string]interface{}{"days": 5, "managerId": "mgr001", "reason": "家中事务"},
)
审批人处理待办:
_ = engine.GetTaskService().CompleteWithApproval(ctx,
service.Actor{UserID: "mgr001", TenantID: "default"},
&service.ApprovalRequest{
TaskID: taskID,
ApprovalResult: enums.ApprovalResultApproved,
Comment: "同意",
})
完整可运行示例(单签、并行会签、顺序会签)见 examples/leave_approval——默认跑在内存 SQLite 上,零依赖直接运行;另有 httpCall + switch 组合、达梦方言接入等示例。
六、GFlow Platform:开箱即用的企业版
不想自己集成?GFlow Platform(极风工作流) 是基于 GFlow Engine 的开箱即用审批平台(商业授权,源码交付),在引擎之上补齐了企业用起来的全部东西,核心是四大自研部件:流程设计器(钉钉式树形)、表单设计器、规则链设计器(可视化编排自动化)、智能体管理(AI 审批/技能),外加发起/待办/已办/抄送/统计的前端应用、组织架构与多租户后台、监控与通知——前端、设计器、智能体、自动化全部自研,无第三方黑盒。
在线演示:http://8.134.32.225:8081(admin / admin123),业务管理员 30 分钟可配置出第一个流程。
相关链接: