企业级流程引擎 - 可视化流程设计、动态表单配置、多节点类型流转
Flow Engine 是一个基于 Java 17 和 Spring Boot 3.5.9 构建的企业级工作流引擎,提供完整的流程管理能力,包括可视化流程设计、动态表单配置、多节点类型流转和脚本扩展。采用前后端分离架构,同时支持 PC 端和移动端。
19 种节点类型 - 开始、结束、审批、办理、通知、人工、条件控制、条件分支、条件Else分支、并行控制、并行分支、路由、包容控制、包容分支、包容Else分支、子流程、延迟、触发节点、人工分支8 种动作类型 - 通过、拒绝、保存、加签、委派、退回、转办、自定义策略驱动配置 - 所有关键配置通过策略实现,支持动态扩展Groovy 脚本扩展 - 支持发起人动态匹配、审批人加载、条件判断、自定义操作等多人审批模式 - 顺序审批、会签审批(可配置比例)、或签审批、随机审批层次化节点结构 - 通过blocks属性实现节点间的层次关系,不再使用独立的边关系线程安全 - 脚本运行时使用细粒度同步锁,支持不同脚本并发执行自动资源清理 - 双重清理机制(阈值触发 + 定时清理)避免内存泄漏完善的异常体系 - 基于 RuntimeException 的框架异常层次结构flow-engine
├── flow-engine-framework # 核心流程引擎框架
│ └── src/main/java/com/codingapi/flow
│ ├── action # 动作层
│ │ ├── actions # 动作实现(8个类)
│ │ │ ├── PassAction # 通过动作
│ │ │ ├── RejectAction # 拒绝动作
│ │ │ ├── SaveAction # 保存动作
│ │ │ ├── ReturnAction # 退回动作
│ │ │ ├── TransferAction # 转办动作
│ │ │ ├── AddAuditAction # 加签动作
│ │ │ ├── DelegateAction # 委派动作
│ │ │ └── CustomAction # 自定义动作
│ │ ├── factory # FlowActionFactory 动作工厂
│ │ ├── ActionDisplay # 动作显示元数据
│ │ ├── ActionType # 动作类型枚举(8种)
│ │ ├── BaseAction # 动作抽象基类
│ │ └── IFlowAction # 动作接口
│ ├── builder # 构建器(6种)
│ │ ├── ActionBuilder # 动作构建器
│ │ ├── BaseNodeBuilder # 节点构建器基类
│ │ ├── FormFieldPermissionsBuilder # 字段权限构建器
│ │ ├── NodeMapBuilder # 节点映射构建器
│ │ ├── NodeStrategyBuilder # 节点策略构建器
│ │ └── WorkflowStrategyBuilder # 工作流策略构建器
│ ├── common # 通用接口
│ │ ├── ICopyAbility # 复制能力接口
│ │ └── IMapConvertor # Map转换接口
│ ├── context # 上下文
│ │ ├── GatewayContext # 网关上下文
│ │ ├── RepositoryHolderContext # 仓储持有者上下文
│ │ ├── ActionResponseContext # 动作响应上下文
│ │ └── LoopTriggerTraceContext # 循环触发跟踪上下文
│ ├── domain # 领域对象
│ │ ├── DelayTask # 延迟任务
│ │ ├── DelayTaskManager # 延迟任务管理器
│ │ ├── UrgeInterval # 催办间隔
│ │ ├── SubProcessContext # 子流程上下文
│ │ └── SubProcessRecord # 子流程记录
│ ├── error # 错误处理
│ │ └── ErrorThrow # 错误抛出器
│ ├── event # 事件系统(7种)
│ │ ├── IFlowEvent # 事件接口
│ │ ├── FlowRecordStartEvent # 流程开始事件
│ │ ├── FlowRecordTodoEvent # 待办事件
│ │ ├── FlowRecordDoneEvent # 已办事件
│ │ ├── FlowRecordFinishEvent # 流程完成事件
│ │ ├── FlowRecordUrgeEvent # 催办事件
│ │ ├── FlowRecordRevokeEvent # 流程撤销事件
│ │ └── FlowRecordDeleteEvent # 流程删除事件
│ ├── exception # 异常系统(6种)
│ │ ├── FlowException # 异常基类
│ │ ├── FlowValidationException # 参数验证异常
│ │ ├── FlowNotFoundException # 资源未找到异常
│ │ ├── FlowStateException # 状态异常
│ │ ├── FlowPermissionException # 权限异常
│ │ └── FlowExecutionException # 执行异常
│ ├── form # 表单系统
│ │ ├── permission # 字段权限
│ │ │ ├── FormFieldPermission # 字段权限实体
│ │ │ └── PermissionType # 权限类型枚举
│ │ ├── FlowForm # 表单元数据
│ │ ├── FlowFormBuilder # 表单构建器
│ │ ├── FormData # 表单数据容器
│ │ ├── FormDataVerify # 表单数据校验
│ │ ├── FormField # 字段定义
│ │ ├── FieldAttribute # 字段属性
│ │ ├── DataType # 数据类型枚举
│ │ ├── IValueConvertor # 值转换接口
│ │ └── ValueConvertorContext # 值转换上下文
│ ├── gateway # 网关接口防腐层
│ │ └── FlowOperatorGateway # 操作者网关
│ ├── manager # 管理器层
│ │ ├── ActionManager # 动作管理器
│ │ ├── NodeStrategyManager # 节点策略管理器
│ │ ├── OperatorManager # 操作者管理器
│ │ ├── FlowNodeManager # 节点管理器
│ │ ├── FlowNodeState # 节点状态分类
│ │ └── WorkflowStrategyManager # 工作流策略管理器
│ ├── node # 节点层
│ │ ├── nodes # 节点实现(19种)
│ │ │ ├── StartNode # 开始节点
│ │ │ ├── EndNode # 结束节点
│ │ │ ├── ApprovalNode # 审批节点
│ │ │ ├── HandleNode # 办理节点
│ │ │ ├── NotifyNode # 通知节点
│ │ │ ├── ManualNode # 人工节点(块节点)
│ │ │ ├── ManualBranchNode # 人工分支节点
│ │ │ ├── ConditionNode # 条件控制节点(块节点)
│ │ │ ├── ConditionBranchNode # 条件分支节点
│ │ │ ├── ConditionElseBranchNode # 条件Else分支节点
│ │ │ ├── ParallelNode # 并行控制节点(块节点)
│ │ │ ├── ParallelBranchNode # 并行分支节点
│ │ │ ├── RouterNode # 路由节点
│ │ │ ├── InclusiveNode # 包容控制节点(块节点)
│ │ │ ├── InclusiveBranchNode # 包容分支节点
│ │ │ ├── InclusiveElseBranchNode # 包容Else分支节点
│ │ │ ├── SubProcessNode # 子流程节点
│ │ │ ├── DelayNode # 延迟节点
│ │ │ └── TriggerNode # 触发节点
│ │ ├── factory # NodeFactory 节点工厂
│ │ ├── helper # 节点助手
│ │ │ ├── BackNodeHelper # 退回节点助手
│ │ │ └── ParallelNodeRelationHelper # 并行关系助手
│ │ ├── IBlockNode # 块节点接口
│ │ ├── BaseFlowNode # 节点抽象基类
│ │ ├── BaseAuditNode # 审批节点抽象基类
│ │ ├── IFlowNode # 节点接口
│ │ └── NodeType # 节点类型枚举
│ ├── operator # 操作者接口
│ │ └── IFlowOperator # 操作者接口
│ ├── pojo # 数据对象
│ │ ├── body # FlowAdviceBody 请求体
│ │ ├── request # 请求对象
│ │ │ ├── FlowActionRequest # 动作请求
│ │ │ ├── FlowCreateRequest # 创建请求
│ │ │ ├── FlowRevokeRequest # 撤回请求
│ │ │ ├── FlowDeleteRequest # 删除请求
│ │ │ ├── FlowUrgeRequest # 催办请求
│ │ │ ├── FlowDetailRequest # 详情请求
│ │ │ └── FlowProcessNodeRequest # 流程节点请求
│ │ └── response # 响应对象
│ │ ├── FlowOperator # 流程操作者
│ │ ├── FlowContent # 流程内容
│ │ ├── ActionResponse # 动作响应
│ │ ├── FlowRecordContent # 流程记录内容
│ │ ├── NodeOption # 节点选项
│ │ └── ProcessNode # 流程节点
│ ├── record # 流程记录
│ │ ├── FlowRecord # 执行记录(TODO/DONE状态)
│ │ ├── FlowTodoRecord # 待办记录
│ │ └── FlowTodoMerge # 待办合并记录
│ ├── repository # 仓储接口(持久化抽象)
│ │ ├── WorkflowRepository
│ │ ├── WorkflowVersionRepository
│ │ ├── WorkflowRuntimeRepository
│ │ ├── FlowRecordRepository
│ │ ├── FlowTodoRecordRepository
│ │ ├── FlowTodoMergeRepository
│ │ ├── FlowOperatorAssignmentRepository
│ │ ├── NodeViewJavaScriptRepository
│ │ ├── ParallelBranchRepository
│ │ ├── SubProcessRepository
│ │ ├── DelayTaskRepository
│ │ └── UrgeIntervalRepository
│ ├── script # 脚本系统
│ │ ├── node # 节点脚本(9种)
│ │ │ ├── OperatorMatchScript # 发起人匹配脚本
│ │ │ ├── OperatorLoadScript # 审批人加载脚本
│ │ │ ├── NodeTitleScript # 节点标题脚本
│ │ │ ├── ConditionScript # 条件判断脚本
│ │ │ ├── RouterNodeScript # 路由脚本
│ │ │ ├── SubProcessScript # 子流程脚本
│ │ │ ├── SubProcessResultScript # 子流程结果脚本
│ │ │ ├── TriggerScript # 触发脚本
│ │ │ └── ErrorTriggerScript # 异常触发脚本
│ │ ├── runtime # 脚本运行时
│ │ │ ├── FlowScriptRuntimeContext # Groovy脚本执行环境
│ │ │ ├── FlowScriptContext # 脚本上下文
│ │ │ └── IBeanFactory # Bean工厂接口
│ │ └── action # 动作脚本(3种)
│ │ ├── ActionRejectScript # 拒绝动作脚本
│ │ ├── ActionCustomScript # 自定义动作脚本
│ │ └── ActionDisplayScript # 动作展示脚本
│ ├── service # 服务层
│ │ ├── impl # 服务实现
│ │ │ ├── FlowCreateService # 流程创建服务
│ │ │ ├── FlowActionService # 流程动作服务
│ │ │ ├── FlowDelayTriggerService # 延迟触发服务
│ │ │ ├── FlowRevokeService # 流程撤回服务
│ │ │ ├── FlowDeleteService # 流程删除服务
│ │ │ ├── FlowUrgeService # 流程催办服务
│ │ │ ├── FlowDetailService # 流程详情服务
│ │ │ ├── FlowProcessNodeService # 流程节点服务
│ │ │ ├── FlowSubProcessResultService # 子流程结果服务
│ │ │ └── OperatorAssignmentService # 操作者分配服务
│ │ ├── FlowService # 流程门面服务(@Transactional 具体类)
│ │ ├── FlowRecordSaveService # 流程记录批量保存服务
│ │ ├── FlowRecordService # 流程记录服务
│ │ ├── WorkflowService # 流程定义服务
│ │ └── WorkflowGroovyScriptUtils # 流程脚本工具
│ ├── session # 会话层
│ │ ├── FlowSession # 执行上下文
│ │ └── FlowAdvice # 审批参数(意见、签名、退回节点等)
│ ├── strategy # 策略层(17种:15种节点策略 + 2种工作流策略)
│ │ ├── node # 节点策略
│ │ │ ├── MultiOperatorAuditStrategy # 多人审批策略
│ │ │ ├── TimeoutStrategy # 超时策略
│ │ │ ├── SameOperatorAuditStrategy # 同一操作者审批策略
│ │ │ ├── RecordMergeStrategy # 记录合并策略
│ │ │ ├── ResubmitStrategy # 重新提交策略
│ │ │ ├── AdviceStrategy # 审批意见策略
│ │ │ ├── OperatorLoadStrategy # 审批人加载策略
│ │ │ ├── ErrorTriggerStrategy # 异常触发策略
│ │ │ ├── NodeTitleStrategy # 节点标题策略
│ │ │ ├── FormFieldPermissionStrategy # 字段权限策略
│ │ │ ├── DelayStrategy # 延迟策略
│ │ │ ├── TriggerStrategy # 触发策略
│ │ │ ├── RouterStrategy # 路由策略
│ │ │ ├── SubProcessStrategy # 子流程策略
│ │ │ ├── RevokeStrategy # 撤回策略
│ │ │ ├── NodeStrategyFactory # 节点策略工厂
│ │ │ ├── BaseStrategy # 节点策略抽象基类
│ │ │ └── INodeStrategy # 节点策略接口
│ │ └── workflow # 工作流策略
│ │ ├── InterfereStrategy # 干预策略
│ │ ├── UrgeStrategy # 催办策略
│ │ ├── WorkflowStrategyFactory # 工作流策略工厂
│ │ ├── BaseStrategy # 工作流策略抽象基类
│ │ └── IWorkflowStrategy # 工作流策略接口
│ ├── utils # 工具类
│ │ └── Base64Utils # Base64 编解码工具
│ └── workflow # 流程层
│ ├── Workflow # 流程对象
│ ├── WorkflowBuilder # 流程构建器
│ └── runtime # 运行时快照
│ └── WorkflowRuntime # 流程运行时快照
│ └── src/test/java # 测试代码
├── flow-engine-starter # Spring Boot 自动配置入口
├── flow-engine-starter-api # REST API 层(FlowRecordController、WorkflowController)
├── flow-engine-starter-infra # 持久化层(JPA 实体、11个仓储实现)
├── flow-engine-starter-query # 查询层(FlowRecordQueryController、WorkflowQueryController)
├── flow-engine-example # 示例项目(H2/达梦数据库、JWT 认证、端口 8090)
└── flow-frontend # 前端项目(独立 Git 仓库)
├── apps
│ ├── app-pc # PC 端应用
│ └── app-mobile # 移动端应用
└── packages
├── flow-core # 核心框架库(HTTP、Hooks、Presenter 等)
├── flow-types # TypeScript 类型定义库
├── flow-icons # 图标库
├── flow-approval-presenter # 审批展示器框架
├── flow-design # 流程设计器组件库
├── flow-pc # PC 端组件库
│ ├── flow-pc-ui # PC 端基础 UI 组件库
│ ├── flow-pc-form # PC 端表单组件库
│ └── flow-pc-approval # PC 端审批组件库
└── flow-mobile # 移动端组件库
├── flow-mobile-ui # 移动端基础 UI 组件库
├── flow-mobile-form # 移动端表单组件库
└── flow-mobile-approval # 移动端审批组件库
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 Designflow-mobile- *:移动端专用组件库,依赖 Ant Design Mobileflow-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-typesTypeScript 类型定义(流程实例、表单、审批等业务类型) 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-uiPC 端基础 UI 组件库(按钮、输入框等原子组件) flow-core flow-pc-formPC 端表单组件库(表单设计器、表单渲染等) flow-core, flow-types flow-pc-approvalPC 端审批组件库(待办/已办/审批处理等) 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:runcd 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 开始节点 STARTEndNode 结束节点 ENDApprovalNode 审批节点 APPROVALHandleNode 办理节点 HANDLENotifyNode 通知节点 NOTIFYRouterNode 路由分支 ROUTERSubProcessNode 子流程节点 SUB_PROCESSDelayNode 延迟节点 DELAYTriggerNode 触发节点 TRIGGER
块节点/容器节点 (4种) - 包含子节点(blocks) 节点类型 描述 NODE_TYPE ManualNode 人工节点 MANUALConditionNode 条件控制节点 CONDITIONParallelNode 并行控制节点 PARALLELInclusiveNode 包容控制节点 INCLUSIVE
节点类型 描述 NODE_TYPE ManualBranchNode 人工分支节点 MANUAL_BRANCHConditionBranchNode 条件分支节点 CONDITION_BRANCHConditionElseBranchNode 条件Else分支节点 CONDITION_ELSE_BRANCHParallelBranchNode 并行分支节点 PARALLEL_BRANCHInclusiveBranchNode 包容分支节点 INCLUSIVE_BRANCHInclusiveElseBranchNode 包容Else分支节点 INCLUSIVE_ELSE_BRANCH
动作类型 描述 ActionType PassAction 通过 PASSRejectAction 拒绝 REJECTSaveAction 保存 SAVEReturnAction 退回 RETURNTransferAction 转办 TRANSFERAddAuditAction 加签 ADD_AUDITDelegateAction 委派 DELEGATECustomAction 自定义 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 - 脚本执行错误所有异常消息使用英文。
示例应用(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=ScriptRuntimeContextTestcd 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!