找回密码
 立即注册
搜索
查看: 121|回复: 6

GFlow v1.0.0 发布:Go 生态审批工作流引擎,中国式审批、AI 先审、批完自动办

[复制链接]

主题

0

回帖

0

积分

积分
0
发表于 2026-9-1 18:30:20 | 显示全部楼层 |阅读模式
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 个任务全生命周期事件在事务提交后异步派发,驱动站内通知等副作用;


统计开箱可用:待办/已办/超期多维计数、完成趋势、分类分布、时长明细,运行数据归档不拖累在线查询。


五、快速开始

  1. go get github.com/rulego/gflow-engine
复制代码

要求 Go 1.24+、RuleGo v0.37+。初始化数据库(幂等脚本,PostgreSQL / MySQL)后,十几行代码启动引擎:

  1. cfg := &config.Config{
  2.     Database: &config.DatabaseConfig{
  3.         Driver: "postgres",
  4.         Dsn:    "host=127.0.0.1 user=postgres password=postgres dbname=gflow port=5432 sslmode=disable",
  5.     },
  6. }
  7. engine, _ := service.NewWorkflowEngineBuilder().
  8.     SetName("demo").
  9.     SetConfig(cfg).
  10.     SetIDGenerator(service.NewIDGenerator()).
  11.     Build()
  12. _ = engine.Start(ctx)
  13. defer engine.Stop(ctx)

  14. // 一步装配全部 BPM 节点组件
  15. _ = components.RegisterFromEngine(engine)

  16. // 部署流程定义(DSL 为 RuleGo 规则链 JSON)
  17. _, _ = engine.GetProcessService().Deploy(ctx, admin, &model.WfProcess{
  18.     ProcessKey:     "leave_approval",
  19.     Name:           "请假审批",
  20.     DefinitionJSON: leaveApprovalDSL,
  21.     TenantID:       "default",
  22.     CreatedBy:      "admin",
  23. }, true)

  24. // 发起流程实例
  25. _, _ = engine.GetRuntimeService().StartProcessInstanceByKey(ctx,
  26.     service.Actor{UserID: "emp001", UserName: "张三", TenantID: "default"},
  27.     "leave_approval", "leave_emp001_1",
  28.     map[string]interface{}{"days": 5, "managerId": "mgr001", "reason": "家中事务"},
  29. )
复制代码

审批人处理待办:

  1. _ = engine.GetTaskService().CompleteWithApproval(ctx,
  2.     service.Actor{UserID: "mgr001", TenantID: "default"},
  3.     &service.ApprovalRequest{
  4.         TaskID:         taskID,
  5.         ApprovalResult: enums.ApprovalResultApproved,
  6.         Comment:        "同意",
  7.     })
复制代码

完整可运行示例(单签、并行会签、顺序会签)见 examples/leave_approval——默认跑在内存 SQLite 上,零依赖直接运行;另有 httpCall + switch 组合、达梦方言接入等示例。
六、GFlow Platform:开箱即用的企业版

不想自己集成?GFlow Platform(极风工作流) 是基于 GFlow Engine 的开箱即用审批平台(商业授权,源码交付),在引擎之上补齐了企业用起来的全部东西,核心是四大自研部件:流程设计器(钉钉式树形)、表单设计器规则链设计器(可视化编排自动化)、智能体管理(AI 审批/技能),外加发起/待办/已办/抄送/统计的前端应用、组织架构与多租户后台、监控与通知——前端、设计器、智能体、自动化全部自研,无第三方黑盒。

在线演示:http://8.134.32.225:8081(admin / admin123),业务管理员 30 分钟可配置出第一个流程。

--------------------------------

相关链接:


GitHub:https://github.com/rulego/gflow-engine


Gitee:https://gitee.com/rulego/gflow-engine


官网与文档:https://gflow.rulego.cc/


在线演示:http://8.134.32.225:8081(admin / admin123)


底层规则引擎 RuleGo:https://rulego.cc/

原文链接

打赏作者

当前余额:0 Token,打赏后立即到账

主题

0

回帖

0

积分

积分
0
发表于 2026-9-1 18:45:01 | 显示全部楼层
一、规则链即流程:审批与自动化同链编排 这是 GFlow Engine 与其他审批引擎的根本差异。
讲得挺透,Go这块就该这么理解。

主题

0

回帖

0

积分

积分
0
发表于 2026-9-1 20:45:01 | 显示全部楼层
好帖,先顶后看,慢慢消化。

主题

0

回帖

0

积分

积分
0
发表于 2026-9-1 22:45:01 | 显示全部楼层
前排学习,感谢楼主整理GFlow相关的内容。

主题

0

回帖

0

积分

积分
0
发表于 2026-9-2 00:15:01 | 显示全部楼层
写得不错,GFlow那部分说到点子上了,顶一个。

主题

0

回帖

0

积分

积分
0
发表于 2026-9-2 00:45:01 | 显示全部楼层
看完受益,已转给同事,让他们也看看v1.0.0这块。

主题

0

回帖

0

积分

积分
0
发表于 2026-9-2 01:15:01 | 显示全部楼层
感谢分享!AI正好是手头项目要用的,太及时了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

{ template common/footer}