企业级流程引擎 - 可视化流程设计、动态表单配置、多节点类型流转
Flow Engine 是一个基于 Java 17 和 Spring Boot 3.5.9 构建的企业级工作流引擎,提供完整的流程管理能力,包括可视化流程设计、动态表单配置、多节点类型流转和脚本扩展。采用前后端分离架构,同时支持 PC 端和移动端。
19 种节点类型 - 开始、结束、审批、办理、通知、人工、条件控制、条件分支、条件Else分支、并行控制、并行分支、路由、包容控制、包容分支、包容Else分支、子流程、延迟、触发节点、人工分支
8 种动作类型 - 通过、拒绝、保存、加签、委派、退回、转办、自定义
策略驱动配置 - 所有关键配置通过策略实现,支持动态扩展
Groovy 脚本扩展 - 支持发起人动态匹配、审批人加载、条件判断、自定义操作等
多人审批模式 - 顺序审批、会签审批(可配置比例)、或签审批、随机审批
子流程支持 - 子流程节点挂载,支持子流程结果回传与重置机制
层次化节点结构 - 通过blocks属性实现节点间的层次关系,不再使用独立的边关系
线程安全 - 脚本运行时使用细粒度同步锁,支持不同脚本并发执行
自动资源清理 - 双重清理机制(阈值触发 + 定时清理)避免内存泄漏
完善的异常体系 - 基于 RuntimeException 的框架异常层次结构
flow-engine
├── flow-engine-framework # 核心流程引擎框架
├── flow-engine-starter # Spring Boot 自动配置入口
├── flow-engine-starter-api # REST API 层(命令操作:create / action / revoke / delete / urge / detail)
├── flow-engine-starter-infra # 持久化层(JPA 实体、11 个仓储实现、含达梦方言)
├── flow-engine-starter-query # 查询层(流程记录与流程定义只读 API)
├── flow-engine-example # 示例应用(H2/达梦数据库、JWT 认证、端口 8090)
└── flow-frontend # 前端项目(独立 Git 仓库,PC + 移动端,详见下文“前端模块架构”)
flow-engine-framework 的包路径为 com.codingapi.flow.*:
包
职责
workflow
流程定义:Workflow、WorkflowVersion、运行时快照(runtime)
node
19 种流程节点、节点工厂与节点助手
action
8 种流程动作与动作工厂
strategy
策略层:15 种节点策略 + 2 种工作流策略
script
Groovy 脚本系统:9 种节点脚本、3 种动作脚本、运行时、注册表、工厂
transfer
流程定义导入导出(旧版 Schema 兼容、脚本迁移)
service
业务服务层:FlowService 事务门面 + 各流程操作独立服务(创建 / 动作 / 撤销 / 删除 / 催办 / 详情 / 子流程重置等)
query
流程记录查询服务
manager
管理器层:动作、节点、策略、操作者管理
session
执行上下文:FlowSession、FlowAdvice、IRepositoryHolder
record
流程记录:FlowRecord、FlowTodoRecord、FlowTodoMerge
repository
12 个仓储接口(持久化抽象,由 infra 模块实现)
event
8 种流程事件:开始 / 待办 / 已办 / 完成 / 催办 / 撤销 / 删除 / 子流程重置
exception
框架异常体系:异常基类 + 6 种具体异常(验证 / 未找到 / 状态 / 权限 / 执行 / 导入导出)
form
表单系统:字段定义、数据校验、字段权限、值转换
builder
6 种构建器(流程、节点、动作、策略、字段权限、节点映射)
pojo
请求 / 响应对象
domain
领域对象:延迟任务、催办间隔、子流程上下文
context
各类上下文(网关、仓储持有者、动作响应、循环触发跟踪)
cache
本地缓存(操作者线程缓存、脚本缓存、流程运行时缓存)
generator
流程 ID 生成器网关
gateway / operator
网关接口防腐层与操作者接口
javscript
节点视图 JavaScript(注解扫描与缓存)
mock
Mock 模式支持(MockRepositoryHolder 及 mock 仓储 / 服务)
common / error / utils
通用接口、错误抛出器、工具类
Java 17 - 编程语言
Spring Boot 3.5.9 - 应用框架
Spring Data JPA - 数据持久化
Groovy - 脚本引擎(动态脚本扩展)
Lombok - 代码简化
Fastjson 2 - JSON 处理
JJWT - JWT 令牌认证(示例应用)
Apache Commons - 工具库(IO / Lang3 / Crypto)
H2 / 达梦数据库 - 数据库支持
React 18 - UI 框架
TypeScript - 类型安全
Rsbuild/Rslib - 构建工具
pnpm - 包管理器
Ant Design - PC 端 UI 组件库
Ant Design Mobile - 移动端 UI 组件库
Redux Toolkit - 状态管理
Flowgram - 流程设计器底层框架
CodeMirror - 代码编辑器
Groovy - 脚本语言支持
flow-core :全局框架依赖,只包含与 UI 无关的基础能力(HTTP、状态管理、工具函数等)
flow-types :全局类型定义,包含流程审批相关的业务类型(移动端和 PC 端共用)
flow-icons :图标库,提供统一的图标组件
flow-approval-presenter :审批展示器框架,基于 Redux 的状态管理
flow-design :流程设计器功能,包含节点配置、属性面板、脚本配置等
flow-pc- *:PC 端专用组件库,依赖 Ant Design
flow-mobile- *:移动端专用组件库,依赖 Ant Design Mobile
flow-core (无 UI,基础框架)
↑ ↑
│ └── flow-icons (图标库)
│ └── flow-approval-presenter (审批展示器框架)
│
flow-types (类型定义)
↑ ↑
│ └── flow-pc-form
│ ↑
└───────→ flow-pc-ui ──→ flow-pc-approval
↑
flow-design ──→ app-pc
flow-mobile-ui ──→ flow-mobile-form ──→ flow-mobile-approval ──→ app-mobile
模块
描述
依赖
flow-core
核心框架库(HTTP、Hooks、Presenter 等),不包含 UI 组件
无
flow-types
TypeScript 类型定义(流程实例、表单、审批等业务类型)
flow-core
flow-icons
图标库
flow-core
flow-approval-presenter
审批展示器框架(基于 Redux 的状态管理)
flow-core, flow-types
flow-design
流程设计器组件库(节点配置、属性面板、脚本配置等)
flow-core, flow-types, flow-icons, flow-pc-ui
模块
描述
依赖
flow-pc-ui
PC 端基础 UI 组件库(按钮、输入框等原子组件)
flow-core
flow-pc-form
PC 端表单组件库(表单设计器、表单渲染等)
flow-core, flow-types
flow-pc-approval
PC 端审批组件库(待办/已办/审批处理等)
flow-core, flow-types, flow-icons, flow-approval-presenter, flow-pc-ui, flow-pc-form
模块
描述
依赖
flow-mobile-ui
移动端基础 UI 组件库
flow-core
flow-mobile-form
移动端表单组件库
flow-core, flow-types
flow-mobile-approval
移动端审批组件库
flow-core, flow-types, flow-icons, flow-approval-presenter, flow-mobile-ui, flow-mobile-form
# 克隆项目
git clone https://github.com/codingapi/flow-engine.git
cd flow-engine
# 构建项目
./mvnw clean install
# 运行示例项目
cd flow-engine-example
mvn spring-boot:run
cd flow-frontend
# 安装依赖
pnpm install
# 构建所有包
pnpm run build
# 构建 PC 端所有组件库
pnpm run build:flow-pc
# 构建移动端所有组件库
pnpm run build:flow-mobile
# 构建特定包
pnpm run build:flow-core # 核心框架库
pnpm run build:flow-types # 类型定义库
pnpm run build:flow-icons # 图标库
pnpm run build:flow-approval-presenter # 审批展示器框架
pnpm run build:flow-design # 流程设计器组件库
pnpm run build:flow-pc-ui # PC 端基础 UI 组件库
pnpm run build:flow-pc-form # PC 端表单组件库
pnpm run build:flow-pc-approval # PC 端审批组件库
pnpm run build:flow-mobile-ui # 移动端基础 UI 组件库
pnpm run build:flow-mobile-form # 移动端表单组件库
pnpm run build:flow-mobile-approval # 移动端审批组件库
# 构建 PC 端应用
pnpm run build:app-pc
# 构建移动端应用
pnpm run build:app-mobile
# 启动 PC 端应用(开发模式)
pnpm run dev:app-pc
# 启动移动端应用(开发模式)
pnpm run dev:app-mobile
流程层 (Workflow Layer) - 流程定义层
节点层 (Node Layer) - 节点层(19种节点类型)
动作层 (Action Layer) - 动作层(8种动作类型)
记录层 (Record Layer) - 记录层
会话层 (Session Layer) - 会话层
管理器层 (Manager Layer) - 管理器层
策略层 (Strategy Layer) - 策略层
脚本层 (Script Layer) - 脚本层
建造者模式 (Builder Pattern) - WorkflowBuilder、BaseNodeBuilder、FlowFormBuilder
工厂模式 (Factory Pattern) - FlowActionFactory、NodeFactory、NodeStrategyFactory
策略模式 (Strategy Pattern) - INodeStrategy、IWorkflowStrategy
模板方法模式 (Template Method Pattern) - BaseAction、BaseFlowNode
责任链模式 (Chain of Responsibility Pattern) - 动作执行链
组合模式 (Composite Pattern) - 带 blocks 属性的块节点层级结构
节点类型
描述
NODE_TYPE
StartNode
开始节点
START
EndNode
结束节点
END
ApprovalNode
审批节点
APPROVAL
HandleNode
办理节点
HANDLE
NotifyNode
通知节点
NOTIFY
RouterNode
路由分支
ROUTER
SubProcessNode
子流程节点
SUB_PROCESS
DelayNode
延迟节点
DELAY
TriggerNode
触发节点
TRIGGER
块节点/容器节点 (4种) - 包含子节点(blocks)
节点类型
描述
NODE_TYPE
ManualNode
人工节点
MANUAL
ConditionNode
条件控制节点
CONDITION
ParallelNode
并行控制节点
PARALLEL
InclusiveNode
包容控制节点
INCLUSIVE
节点类型
描述
NODE_TYPE
ManualBranchNode
人工分支节点
MANUAL_BRANCH
ConditionBranchNode
条件分支节点
CONDITION_BRANCH
ConditionElseBranchNode
条件Else分支节点
CONDITION_ELSE_BRANCH
ParallelBranchNode
并行分支节点
PARALLEL_BRANCH
InclusiveBranchNode
包容分支节点
INCLUSIVE_BRANCH
InclusiveElseBranchNode
包容Else分支节点
INCLUSIVE_ELSE_BRANCH
动作类型
描述
ActionType
PassAction
通过
PASS
RejectAction
拒绝
REJECT
SaveAction
保存
SAVE
ReturnAction
退回
RETURN
TransferAction
转办
TRANSFER
AddAuditAction
加签
ADD_AUDIT
DelegateAction
委派
DELEGATE
CustomAction
自定义
CUSTOM
模式
描述
完成条件
SEQUENCE
顺序审批
按顺序全部完成
MERGE
会签审批
配置比例的人员完成
ANY
或签审批
任意一人完成
RANDOM_ONE
随机审批
随机选中的人完成
所有框架异常使用字符串形式的错误码,格式如下:
category.subcategory.errorType
示例:
notFound.workflow.definition - 流程定义未找到
validation.field.readOnly - 字段只读
state.record.alreadyDone - 记录已完成
state.record.notSupportDelete - 记录不允许删除
state.node.notStart - 记录不在开始节点
validation.field.required - 必填字段为空
execution.script.error - 脚本执行错误
workflow.transfer.schema.invalid - 流程导入 Schema 无效
所有异常消息使用英文。
示例应用(flow-engine-example)提供了一个开箱即用的完整演示环境:
默认数据库 :H2(文件数据库,默认落地 example.db)
可选数据库 :达梦(--spring.profiles.active=dm)
认证 :JWT Token 认证
访问端口 :8090
管理员账号 :启动时由 AdminInitializer 自动初始化
# 运行所有测试
./mvnw test
# 运行指定模块测试
./mvnw test -pl flow-engine-framework
# 运行指定测试类
./mvnw test -Dtest=ScriptRuntimeContextTest
cd flow-frontend
# 运行所有测试
pnpm run test
# 运行特定包的测试
pnpm run test:flow-core # 核心框架库测试
pnpm run test:flow-design # 流程设计器测试
pnpm run test:flow-pc # PC 端组件测试
pnpm run test:flow-pc-ui # PC 端 UI 组件测试
pnpm run test:flow-pc-form # PC 端表单组件测试
pnpm run test:flow-pc-approval # PC 端审批组件测试
pnpm run test:flow-mobile # 移动端组件测试
LICENSE
欢迎提交 Issue 和 Pull Request!