Flowable的表结构设计遵循模块化原则,通过表名前缀区分功能模块,主要分为以下五类:
一、核心表分类与功能
1. Repository(存储层)
-
功能:存储流程定义、部署信息和静态资源。
-
核心表:
-
ACT_RE_PROCDEF:流程定义表,记录流程版本、Key、部署ID等。 -
ACT_RE_DEPLOYMENT:部署信息表,存储部署时间、分类及关联资源。 -
ACT_GE_BYTEARRAY:二进制资源表,存储BPMN文件、流程图等。
-
2. Runtime(运行时层)
-
功能:存储流程实例、任务及运行时变量,实例结束后数据自动清理。
-
核心表:
-
ACT_RU_EXECUTION:执行实例表,记录流程分支状态及关联任务。 -
ACT_RU_TASK:运行时任务表,存储待办任务信息(如处理人、优先级)。 -
ACT_RU_VARIABLE:运行时变量表,存储流程节点变量值。
-
3. History(历史层)
-
功能:归档已完成流程的历史数据,支持审计与回溯。
-
核心表:
-
ACT_HI_PROCINST:历史流程实例表,记录流程起止时间、业务主键等。 -
ACT_HI_TASKINST:历史任务表,存储任务处理人、完成时间等。 -
ACT_HI_VARINST:历史变量表,保存流程流转中的变量快照。
-
4. Identity(身份层)
-
功能:管理用户、用户组及权限,支持多租户隔离。
-
核心表:
-
ACT_ID_USER:用户表,存储用户基本信息(如邮箱、密码)。 -
ACT_ID_GROUP:用户组表,定义角色或部门。 -
ACT_ID_MEMBERSHIP:用户-组关联表,建立权限关系。
-
5. 通用数据层(GE)
-
功能:存储系统级配置和通用数据。
-
核心表:
-
ACT_GE_PROPERTY:系统属性表,记录版本号等全局配置。 -
ACT_EVT_LOG:事件日志表(默认禁用,可删除)。
-
二、表结构设计特点
-
版本控制
-
运行时表(如
ACT_RU_EXECUTION)通过REV_字段实现乐观锁,防止并发冲突。 -
流程定义表(
ACT_RE_PROCDEF)的VERSION_字段记录版本迭代。
-
-
多租户支持
-
通过
TENANT_ID_字段实现数据隔离,不同租户数据互不可见。
-
-
历史数据归档
-
流程结束后,运行时数据(如
ACT_RU_EXECUTION)同步至历史表(如ACT_HI_PROCINST)。
-
-
资源管理
-
ACT_GE_BYTEARRAY存储流程文件,通过DEPLOYMENT_ID_关联部署记录。
-
三、典型表关系示例
-
流程定义与部署
ACT_RE_PROCDEF.DEPLOYMENT_ID_→ACT_RE_DEPLOYMENT.ID_。 -
任务与执行实例
ACT_RU_TASK.EXECUTION_ID_→ACT_RU_EXECUTION.ID_。 -
用户与权限
ACT_ID_MEMBERSHIP通过USER_ID_和GROUP_ID_关联用户与组。
四、扩展说明
-
运行时表数量:Flowable默认生成38张表,实际使用中可根据需求裁剪(如禁用事件日志表)。
-
历史表优化:历史数据量较大时,建议定期归档至独立存储(如HBase)。
通过上述设计,Flowable实现了高效流程引擎的底层数据管理,兼顾性能与扩展性。如需完整表结构,可参考Flowable官方网页或数据库脚本。