(1)认识 Flowable 流程引擎(正在浏览)
(2)SpringBoot 3 + Vue 3 前后端分离项目,集成 Flowable
1.什么是 Flowable ?
Flowable BPMN 用户手册 (v 6.3.0)
Flowable是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定义(用于定义流程的行业XML标准), 创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关等数据。
2. 数据库表名说明
前缀 | 含义 | 对应数据类别 |
act_ge_* | General | 通用数据 |
act_re_* | Repository | 流程定义等静态数据 |
act_ru_* | Runtime | 运行时数据 |
act_hi_* | History | 历史数据 |
act_id_* | Identity | 身份认证相关数据 |
2.1 act_ge_* (通用数据表)
表名 | 说明 |
---|
act_ge_property | 全局属性表,存储流程引擎版本、schema版本等信息 |
act_ge_bytearray | 存储流程定义的资源文件(BPMN、DMN、Form文件等) |
2.2 act_re_* (静态数据表)
表名 | 说明 |
---|
act_re_deployment | 部署信息表 |
act_re_procdef | 存储已部署的流程定义 |
act_re_case_def | 案例定义表 |
act_re_decision_def | 决策表定义 |
CREATE TABLE `act_re_deployment` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '部署ID,主键',
`NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '部署名称',
`CATEGORY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '部署分类',
`KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '部署键值',
`TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT '' COMMENT '租户ID',
`DEPLOY_TIME_` timestamp(3) NULL DEFAULT NULL COMMENT '部署时间',
`DERIVED_FROM_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '派生来源的部署ID',
`DERIVED_FROM_ROOT_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '根派生来源的部署ID',
`PARENT_DEPLOYMENT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '父部署ID',
`ENGINE_VERSION_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '引擎版本',
PRIMARY KEY (`ID_`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin ROW_FORMAT=DYNAMIC COMMENT='流程部署表';
CREATE TABLE `act_re_procdef` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '流程定义ID,主键',
`REV_` int DEFAULT NULL COMMENT '版本号(乐观锁)',
`CATEGORY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '流程分类',
`NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '流程定义名称',
`KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '流程定义Key(唯一标识)',
`VERSION_` int NOT NULL COMMENT '流程定义版本号',
`DEPLOYMENT_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '关联的部署ID',
`RESOURCE_NAME_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '流程资源文件名称(如.bpmn20.xml文件)',
`DGRM_RESOURCE_NAME_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '流程图形资源文件名称(如流程图.png)',
`DESCRIPTION_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '流程描述信息',
`HAS_START_FORM_KEY_` tinyint DEFAULT NULL COMMENT '是否有启动表单Key(1:有,0:无)',
`HAS_GRAPHICAL_NOTATION_` tinyint DEFAULT NULL COMMENT '是否有图形化 notation(1:有,0:无)',
`SUSPENSION_STATE_` int DEFAULT NULL COMMENT '挂起状态(1:激活,2:挂起)',
`TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT '' COMMENT '租户ID',
`ENGINE_VERSION_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '流程引擎版本',
`DERIVED_FROM_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '派生来源的流程定义ID',
`DERIVED_FROM_ROOT_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '根派生来源的流程定义ID',
`DERIVED_VERSION_` int NOT NULL DEFAULT '0' COMMENT '派生版本号',
PRIMARY KEY (`ID_`) USING BTREE,
UNIQUE KEY `ACT_UNIQ_PROCDEF` (`KEY_`,`VERSION_`,`DERIVED_VERSION_`,`TENANT_ID_`) USING BTREE COMMENT '流程定义唯一约束(KEY+版本+派生版本+租户)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin ROW_FORMAT=DYNAMIC COMMENT='流程定义表';
2.3 act_ru_* (运行时数据表)
表名 | 说明 |
---|
act_ru_execution | 运行时流程执行实例表 |
act_ru_task | 运行时任务表 |
act_ru_actinst | 运行时活动实例表(当前正在执行的节点信息) |
act_ru_identitylink | 运行时身份关联表(任务候选人等) |
act_ru_variable | 运行时变量表 |
act_ru_event_subscr | 运行时事件订阅表 |
act_ru_job | 运行时作业表 |
act_ru_timer_job | 运行时定时作业表 |
act_ru_suspended_job | 运行时暂停作业表 |
act_ru_deadletter_job | 运行时死信作业表 |
CREATE TABLE `act_ru_task` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '任务ID,主键',
`REV_` int DEFAULT NULL COMMENT '版本号(乐观锁)',
`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '关联的执行实例ID',
`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '关联的流程实例ID',
`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '关联的流程定义ID',
`TASK_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '任务定义ID',
`SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '作用域ID',
`SUB_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '子作用域ID',
`SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '作用域类型',
`SCOPE_DEFINITION_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '作用域定义ID',
`PROPAGATED_STAGE_INST_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '传播的阶段实例ID',
`STATE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '任务状态(如:created, completed等)',
`NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '任务名称',
`PARENT_TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '父任务ID',
`DESCRIPTION_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '任务描述',
`TASK_DEF_KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '任务定义Key(流程文件中定义的task的id)',
`OWNER_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '任务所有者(通常指任务发起人)',
`ASSIGNEE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '任务签收人(当前处理人)',
`DELEGATION_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '委托状态(PENDING:待处理,RESOLVED:已处理)',
`PRIORITY_` int DEFAULT NULL COMMENT '任务优先级',
`CREATE_TIME_` timestamp(3) NULL DEFAULT NULL COMMENT '任务创建时间',
`IN_PROGRESS_TIME_` datetime(3) DEFAULT NULL COMMENT '任务开始处理时间',
`IN_PROGRESS_STARTED_BY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '任务启动人',
`CLAIM_TIME_` datetime(3) DEFAULT NULL COMMENT '任务签收时间',
`CLAIMED_BY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '任务签收人',
`SUSPENDED_TIME_` datetime(3) DEFAULT NULL COMMENT '任务挂起时间',
`SUSPENDED_BY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '任务挂起人',
`IN_PROGRESS_DUE_DATE_` datetime(3) DEFAULT NULL COMMENT '任务处理期限(进行中)',
`DUE_DATE_` datetime(3) DEFAULT NULL COMMENT '任务到期时间',
`CATEGORY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '任务分类',
`SUSPENSION_STATE_` int DEFAULT NULL COMMENT '挂起状态(1:激活,2:挂起)',
`TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT '' COMMENT '租户ID',
`FORM_KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '关联的表单Key',
`IS_COUNT_ENABLED_` tinyint DEFAULT NULL COMMENT '是否启用计数(1:是,0:否)',
`VAR_COUNT_` int DEFAULT NULL COMMENT '变量数量',
`ID_LINK_COUNT_` int DEFAULT NULL COMMENT '身份链接数量',
`SUB_TASK_COUNT_` int DEFAULT NULL COMMENT '子任务数量',
PRIMARY KEY (`ID_`) USING BTREE,
KEY `ACT_IDX_TASK_CREATE` (`CREATE_TIME_`) USING BTREE COMMENT '任务创建时间索引',
KEY `ACT_IDX_TASK_SCOPE` (`SCOPE_ID_`,`SCOPE_TYPE_`) USING BTREE COMMENT '作用域索引',
KEY `ACT_IDX_TASK_SUB_SCOPE` (`SUB_SCOPE_ID_`,`SCOPE_TYPE_`) USING BTREE COMMENT '子作用域索引',
KEY `ACT_IDX_TASK_SCOPE_DEF` (`SCOPE_DEFINITION_ID_`,`SCOPE_TYPE_`) USING BTREE COMMENT '作用域定义索引',
KEY `ACT_FK_TASK_EXE` (`EXECUTION_ID_`) USING BTREE COMMENT '执行实例外键索引',
KEY `ACT_FK_TASK_PROCINST` (`PROC_INST_ID_`) USING BTREE COMMENT '流程实例外键索引',
KEY `ACT_FK_TASK_PROCDEF` (`PROC_DEF_ID_`) USING BTREE COMMENT '流程定义外键索引',
CONSTRAINT `ACT_FK_TASK_EXE` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT COMMENT '关联执行实例',
CONSTRAINT `ACT_FK_TASK_PROCDEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `act_re_procdef` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT COMMENT '关联流程定义',
CONSTRAINT `ACT_FK_TASK_PROCINST` FOREIGN KEY (`PROC_INST_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT COMMENT '关联流程实例'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin ROW_FORMAT=DYNAMIC COMMENT='运行时任务表';
CREATE TABLE `act_ru_actinst` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '活动实例ID,主键',
`REV_` int DEFAULT '1' COMMENT '版本号(乐观锁)',
`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '关联的流程定义ID',
`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '关联的流程实例ID',
`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '关联的执行实例ID',
`ACT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '活动ID(流程文件中定义的节点ID)',
`TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '关联的任务ID(如果是用户任务)',
`CALL_PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '调用的子流程实例ID',
`ACT_NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '活动名称',
`ACT_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '活动类型(userTask, startEvent, endEvent等)',
`ASSIGNEE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '活动指派人(针对用户任务)',
`START_TIME_` datetime(3) NOT NULL COMMENT '活动开始时间',
`END_TIME_` datetime(3) DEFAULT NULL COMMENT '活动结束时间',
`DURATION_` bigint DEFAULT NULL COMMENT '活动持续时间(毫秒)',
`TRANSACTION_ORDER_` int DEFAULT NULL COMMENT '事务顺序',
`DELETE_REASON_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '删除原因(如completed, deleted等)',
`TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT '' COMMENT '租户ID',
PRIMARY KEY (`ID_`) USING BTREE,
KEY `ACT_IDX_RU_ACTI_START` (`START_TIME_`) USING BTREE COMMENT '活动开始时间索引',
KEY `ACT_IDX_RU_ACTI_END` (`END_TIME_`) USING BTREE COMMENT '活动结束时间索引',
KEY `ACT_IDX_RU_ACTI_PROC` (`PROC_INST_ID_`) USING BTREE COMMENT '流程实例ID索引',
KEY `ACT_IDX_RU_ACTI_PROC_ACT` (`PROC_INST_ID_`,`ACT_ID_`) USING BTREE COMMENT '流程实例和活动ID联合索引',
KEY `ACT_IDX_RU_ACTI_EXEC` (`EXECUTION_ID_`) USING BTREE COMMENT '执行实例ID索引',
KEY `ACT_IDX_RU_ACTI_EXEC_ACT` (`EXECUTION_ID_`,`ACT_ID_`) USING BTREE COMMENT '执行实例和活动ID联合索引',
KEY `ACT_IDX_RU_ACTI_TASK` (`TASK_ID_`) USING BTREE COMMENT '任务ID索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin ROW_FORMAT=DYNAMIC COMMENT='运行时活动实例表';
CREATE TABLE `act_ru_variable` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '变量ID,主键',
`REV_` int DEFAULT NULL COMMENT '版本号(乐观锁)',
`TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '变量类型(boolean/date/double/integer/long/string/serializable等)',
`NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '变量名称',
`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '关联的执行实例ID',
`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '关联的流程实例ID',
`TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '关联的任务ID',
`SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '作用域ID',
`SUB_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '子作用域ID',
`SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '作用域类型',
`BYTEARRAY_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '二进制数据关联ID(针对serializable类型)',
`DOUBLE_` double DEFAULT NULL COMMENT 'double类型变量值',
`LONG_` bigint DEFAULT NULL COMMENT 'long类型变量值',
`TEXT_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '文本类型变量值',
`TEXT2_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '扩展文本类型变量值',
`META_INFO_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '变量元数据信息(JSON格式)',
PRIMARY KEY (`ID_`) USING BTREE,
KEY `ACT_IDX_RU_VAR_SCOPE_ID_TYPE` (`SCOPE_ID_`,`SCOPE_TYPE_`) USING BTREE COMMENT '作用域ID和类型索引',
KEY `ACT_IDX_RU_VAR_SUB_ID_TYPE` (`SUB_SCOPE_ID_`,`SCOPE_TYPE_`) USING BTREE COMMENT '子作用域ID和类型索引',
KEY `ACT_FK_VAR_BYTEARRAY` (`BYTEARRAY_ID_`) USING BTREE COMMENT '二进制数据外键索引',
KEY `ACT_IDX_VARIABLE_TASK_ID` (`TASK_ID_`) USING BTREE COMMENT '任务ID索引',
KEY `ACT_FK_VAR_EXE` (`EXECUTION_ID_`) USING BTREE COMMENT '执行实例外键索引',
KEY `ACT_FK_VAR_PROCINST` (`PROC_INST_ID_`) USING BTREE COMMENT '流程实例外键索引',
CONSTRAINT `ACT_FK_VAR_BYTEARRAY` FOREIGN KEY (`BYTEARRAY_ID_`) REFERENCES `act_ge_bytearray` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT COMMENT '关联二进制数据表',
CONSTRAINT `ACT_FK_VAR_EXE` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT COMMENT '关联执行实例表',
CONSTRAINT `ACT_FK_VAR_PROCINST` FOREIGN KEY (`PROC_INST_ID_`) REFERENCES `act_ru_execution` (`ID_`) ON DELETE RESTRICT ON UPDATE RESTRICT COMMENT '关联流程实例表'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin ROW_FORMAT=DYNAMIC COMMENT='运行时变量表';
2.4 act_hi_* (历史数据表)
表名 | 说明 |
---|
act_hi_procinst | 历史流程实例表 |
act_hi_actinst | 历史活动实例表 |
act_hi_taskinst | 历史任务实例表 |
act_hi_varinst | 历史变量表 |
act_hi_detail | 历史详情表 |
act_hi_comment | 历史评论表 |
act_hi_attachment | 历史附件表 |
act_hi_identitylink | 历史身份关联表 |
act_hi_caseinst | 历史案例实例表 |
act_hi_caseactinst | 历史案例活动实例表 |
CREATE TABLE `act_hi_procinst` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '主键ID',
`REV_` int DEFAULT '1' COMMENT '版本号(乐观锁)',
`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '流程实例ID(业务使用)',
`BUSINESS_KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '业务主键(关联业务系统)',
`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '流程定义ID',
`START_TIME_` datetime(3) NOT NULL COMMENT '流程开始时间',
`END_TIME_` datetime(3) DEFAULT NULL COMMENT '流程结束时间',
`DURATION_` bigint DEFAULT NULL COMMENT '流程持续时间(毫秒)',
`START_USER_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '流程发起人ID',
`START_ACT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '开始节点ID',
`END_ACT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '结束节点ID',
`SUPER_PROCESS_INSTANCE_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '父流程实例ID',
`DELETE_REASON_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '删除原因(completed,deleted等)',
`TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT '' COMMENT '租户ID',
`NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '流程实例名称',
`CALLBACK_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '回调ID',
`CALLBACK_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '回调类型',
`REFERENCE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '外部引用ID',
`REFERENCE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '外部引用类型',
`PROPAGATED_STAGE_INST_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '传播的阶段实例ID',
`BUSINESS_STATUS_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '业务状态(自定义状态)',
PRIMARY KEY (`ID_`) USING BTREE COMMENT '主键索引',
UNIQUE KEY `PROC_INST_ID_` (`PROC_INST_ID_`) USING BTREE COMMENT '流程实例ID唯一索引',
KEY `ACT_IDX_HI_PRO_INST_END` (`END_TIME_`) USING BTREE COMMENT '结束时间索引',
KEY `ACT_IDX_HI_PRO_I_BUSKEY` (`BUSINESS_KEY_`) USING BTREE COMMENT '业务键索引',
KEY `ACT_IDX_HI_PRO_SUPER_PROCINST` (`SUPER_PROCESS_INSTANCE_ID_`) USING BTREE COMMENT '父流程实例ID索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin ROW_FORMAT=DYNAMIC COMMENT='历史流程实例表';
CREATE TABLE `act_hi_actinst` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '历史活动实例ID,主键',
`REV_` int DEFAULT '1' COMMENT '版本号(乐观锁)',
`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '关联的流程定义ID',
`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '关联的流程实例ID',
`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '关联的执行实例ID',
`ACT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '活动ID(流程文件中定义的节点ID)',
`TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '关联的任务ID(如果是用户任务)',
`CALL_PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '调用的子流程实例ID',
`ACT_NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '活动名称',
`ACT_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '活动类型(userTask/startEvent/endEvent/serviceTask等)',
`ASSIGNEE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '活动处理人(针对用户任务)',
`START_TIME_` datetime(3) NOT NULL COMMENT '活动开始时间',
`END_TIME_` datetime(3) DEFAULT NULL COMMENT '活动结束时间',
`TRANSACTION_ORDER_` int DEFAULT NULL COMMENT '事务处理顺序',
`DURATION_` bigint DEFAULT NULL COMMENT '活动持续时间(毫秒)',
`DELETE_REASON_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '删除原因(completed/deleted等)',
`TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT '' COMMENT '租户ID',
PRIMARY KEY (`ID_`) USING BTREE COMMENT '主键索引',
KEY `ACT_IDX_HI_ACT_INST_START` (`START_TIME_`) USING BTREE COMMENT '活动开始时间索引',
KEY `ACT_IDX_HI_ACT_INST_END` (`END_TIME_`) USING BTREE COMMENT '活动结束时间索引',
KEY `ACT_IDX_HI_ACT_INST_PROCINST` (`PROC_INST_ID_`,`ACT_ID_`) USING BTREE COMMENT '流程实例和活动ID联合索引',
KEY `ACT_IDX_HI_ACT_INST_EXEC` (`EXECUTION_ID_`,`ACT_ID_`) USING BTREE COMMENT '执行实例和活动ID联合索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin ROW_FORMAT=DYNAMIC COMMENT='历史活动实例表';
CREATE TABLE `act_hi_varinst` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '主键ID,变量实例的唯一标识符',
`REV_` int DEFAULT '1' COMMENT '版本号,用于乐观锁控制',
`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '所属流程实例ID',
`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '所属执行实例ID',
`TASK_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '所属任务ID',
`NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '变量名称',
`VAR_TYPE_` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '变量类型(如string、integer、boolean等)',
`SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '作用域ID,用于有作用域的变量',
`SUB_SCOPE_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '子作用域ID',
`SCOPE_TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '作用域类型',
`BYTEARRAY_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '二进制数据ID,指向二进制数据表',
`DOUBLE_` double DEFAULT NULL COMMENT '存储double类型的变量值',
`LONG_` bigint DEFAULT NULL COMMENT '存储long类型的变量值',
`TEXT_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '存储文本类型的变量值',
`TEXT2_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '存储长文本类型的变量值',
`META_INFO_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '变量的元数据信息(JSON格式)',
`CREATE_TIME_` datetime(3) DEFAULT NULL COMMENT '变量创建时间',
`LAST_UPDATED_TIME_` datetime(3) DEFAULT NULL COMMENT '变量最后更新时间',
PRIMARY KEY (`ID_`) USING BTREE,
KEY `ACT_IDX_HI_PROCVAR_NAME_TYPE` (`NAME_`,`VAR_TYPE_`) USING BTREE COMMENT '变量名称和类型组合索引',
KEY `ACT_IDX_HI_VAR_SCOPE_ID_TYPE` (`SCOPE_ID_`,`SCOPE_TYPE_`) USING BTREE COMMENT '作用域ID和类型组合索引',
KEY `ACT_IDX_HI_VAR_SUB_ID_TYPE` (`SUB_SCOPE_ID_`,`SCOPE_TYPE_`) USING BTREE COMMENT '子作用域ID和类型组合索引',
KEY `ACT_IDX_HI_PROCVAR_PROC_INST` (`PROC_INST_ID_`) USING BTREE COMMENT '流程实例ID索引',
KEY `ACT_IDX_HI_PROCVAR_TASK_ID` (`TASK_ID_`) USING BTREE COMMENT '任务ID索引',
KEY `ACT_IDX_HI_PROCVAR_EXE` (`EXECUTION_ID_`) USING BTREE COMMENT '执行实例ID索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin ROW_FORMAT=DYNAMIC COMMENT='历史变量表,存储流程执行过程中产生的变量历史记录';
2.5 act_id_* (身份认证数据表)
表名 | 说明 |
---|
act_id_user | 用户表 |
act_id_group | 组表 |
act_id_membership | 用户-组关联表 |
act_id_info | 用户信息表 |
act_evt_log | 事件日志表(需配置) |
act_procdef_info | 流程定义信息表 |
CREATE TABLE `act_id_user` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '用户ID,主键',
`REV_` int DEFAULT NULL COMMENT '版本号,用于乐观锁控制',
`FIRST_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '用户名字',
`LAST_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '用户姓氏',
`DISPLAY_NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '用户显示名称(全名)',
`EMAIL_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '用户电子邮箱',
`PWD_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '用户密码(加密存储)',
`PICTURE_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '用户头像ID,指向二进制资源表',
`TENANT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT '' COMMENT '租户ID,用于多租户隔离',
PRIMARY KEY (`ID_`) USING BTREE COMMENT '主键索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin ROW_FORMAT=DYNAMIC COMMENT='用户身份信息表,存储工作流系统用户基本信息';
CREATE TABLE `act_id_group` (
`ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '组ID,主键',
`REV_` int DEFAULT NULL COMMENT '版本号,用于乐观锁控制',
`NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '组名称',
`TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '组类型(如部门、角色、团队等)',
PRIMARY KEY (`ID_`) USING BTREE COMMENT '主键索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin ROW_FORMAT=DYNAMIC COMMENT='用户组信息表,存储工作流系统中的用户组/角色信息';
CREATE TABLE `act_id_membership` (
`USER_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '用户ID,关联act_id_user表',
`GROUP_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '组ID,关联act_id_group表',
PRIMARY KEY (`USER_ID_`,`GROUP_ID_`) USING BTREE COMMENT '主键索引(用户ID+组ID联合主键)',
KEY `ACT_FK_MEMB_GROUP` (`GROUP_ID_`) USING BTREE COMMENT '组ID外键索引',
CONSTRAINT `ACT_FK_MEMB_GROUP` FOREIGN KEY (`GROUP_ID_`) REFERENCES `act_id_group` (`ID_`) COMMENT '外键约束,关联用户组表',
CONSTRAINT `ACT_FK_MEMB_USER` FOREIGN KEY (`USER_ID_`) REFERENCES `act_id_user` (`ID_`) COMMENT '外键约束,关联用户表'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin ROW_FORMAT=DYNAMIC COMMENT='用户-组关系表,存储用户与用户组的关联关系';
3. Flowable API
3.1 使用 Spring Boot 整合 Flowable 会自动装配以下Bean

3.2 Service
Service | 主要作用 |
---|
RepositoryService | 流程定义和部署服务,部署流程定义文件、查询部署资源 |
RuntimeService | 运行时服务,启动流程实例、管理运行中的流程、设置流程变量 |
TaskService | 任务服务,处理用户任务(查询、认领、完成等) |
HistoryService | 历史服务,查询历史数据、生成报表 |
IdentityService | 身份认证服务,管理用户/用户组(注意:不提供认证功能,仅管理数据) |
FormService | 表单数据服务,处理与表单相关的数据(通常与外部表单系统集成使用) |
ManagementService | 系统服务,系统维护操作(作业管理、数据库操作等) |
4. BPMN 2.0 (流程定义)
4.1 IDEA 安装 Flowable BPMN visualizer 插件

4.2 创建流程定义文件(以 .bpmn20.xml 结尾的文件)


<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" targetNamespace="http://www.flowable.org/processdef">
<process id="leaveRequest" name="员工请假流程" isExecutable="true">
<!-- 开始事件 -->
<startEvent id="startEvent" />
<!-- 连接线(顺序流) -->
<sequenceFlow id="flow1" sourceRef="startEvent" targetRef="submitLeaveRequest"/>
<!-- 提交请假申请 -->
<userTask id="submitLeaveRequest" name="提交请假申请" flowable:assignee="${userId}"> </userTask>
<!-- 连接线(顺序流) -->
<sequenceFlow id="flow2" sourceRef="submitLeaveRequest" targetRef="managerApproval"/>
<!-- 管理员审批 -->
<userTask id="managerApproval" name="管理员审批" flowable:candidateGroups="${groupId}"> </userTask>
<!-- 连接线(顺序流) -->
<sequenceFlow id="flow3" sourceRef="managerApproval" targetRef="decisionGateway"/>
<!-- 排他网关 -->
<exclusiveGateway id="decisionGateway" name="审批决定"/>
<!-- 审批通过,连接线(顺序流) -->
<sequenceFlow id="flowApproved" sourceRef="decisionGateway" targetRef="approvalEnd">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${result}]]></conditionExpression>
</sequenceFlow>
<!-- 审批拒绝,连接线(顺序流) -->
<sequenceFlow id="flowRejected" sourceRef="decisionGateway" targetRef="rejectEnd">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${!result}]]></conditionExpression>
</sequenceFlow>
<!-- 结束事件 -->
<endEvent id="approvalEnd" name="同意"/>
<endEvent id="rejectEnd" name="拒绝"/>
</process>
<!-- 必须添加的 BPMNDiagram 部分 -->
<bpmndi:BPMNDiagram id="BPMNDiagram_leaveRequest">
<bpmndi:BPMNPlane id="BPMNPlane_leaveRequest" bpmnElement="leaveRequest">
<bpmndi:BPMNShape id="_BPMNShape_startEvent" bpmnElement="startEvent">
<omgdc:Bounds x="173.0" y="102.0" width="36" height="36"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="_BPMNShape_submitLeaveRequest" bpmnElement="submitLeaveRequest">
<omgdc:Bounds x="270.0" y="80.0" width="100" height="80"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="_BPMNShape_managerApproval" bpmnElement="managerApproval">
<omgdc:Bounds x="450.0" y="80.0" width="100" height="80"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="_BPMNShape_decisionGateway" bpmnElement="decisionGateway">
<omgdc:Bounds x="630" y="95" width="50" height="50"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="_BPMNShape_approvalEnd" bpmnElement="approvalEnd">
<omgdc:Bounds x="750" y="102" width="36" height="36"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="_BPMNShape_rejectEnd" bpmnElement="rejectEnd">
<omgdc:Bounds x="750" y="180" width="36" height="36"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="_BPMNEdge_flow1" bpmnElement="flow1">
<omgdi:waypoint x="209.0" y="120.0"/>
<omgdi:waypoint x="270.0" y="120.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="_BPMNEdge_flow2" bpmnElement="flow2">
<omgdi:waypoint x="370.0" y="120.0"/>
<omgdi:waypoint x="450.0" y="120.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="_BPMNEdge_flow3" bpmnElement="flow3">
<omgdi:waypoint x="550.0" y="120.0"/>
<omgdi:waypoint x="630" y="120"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="_BPMNEdge_flowApproved" bpmnElement="flowApproved">
<omgdi:waypoint x="655" y="120"/>
<omgdi:waypoint x="750" y="120"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="_BPMNEdge_flowRejected" bpmnElement="flowRejected">
<omgdi:waypoint x="655" y="170"/>
<omgdi:waypoint x="750" y="198"/>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>