流程引擎Activiti性能优化方案
流程引擎Activiti性能优化方案
Activiti工作流引擎架构概述
Activiti工作流引擎架构大致分为6层。从上到下依次为工作流引擎层、部署层、业务接口层、命令拦截层、命令层和行为层。
基于关系型数据库层面优化
MySQL建表语句优化
Activiti在MySQL中创建默认字符集为utf8(即utf8mb3)格式,本文将默认字符集设置为utf8mb4,排序规则为utf8mb4_general_ci,并修改变量等类型为text。
建表初始化语句如下:
本文使用的activiti-engine版本为7.1.0.M6,版本信息初始化在ACT_GE_PROPERTY表中
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for ACT_EVT_LOG
-- ----------------------------
DROP TABLE IF EXISTS `ACT_EVT_LOG`;
CREATE TABLE `ACT_EVT_LOG` (`LOG_NR_` bigint NOT NULL AUTO_INCREMENT,`TYPE_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,`TASK_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,`TIME_STAMP_` timestamp(3) NOT NULL,`USER_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,`DATA_` longblob,`LOCK_OWNER_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,`LOCK_TIME_` timestamp(3) NULL DEFAULT NULL,`IS_PROCESSED_` tinyint DEFAULT '0',PRIMARY KEY (`LOG_NR_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='存储事件日志的数据库表,默认情况下会创建此表,如果不开启事件日志记录机制,则可以删除此表。';-- ----------------------------
-- Table structure for ACT_GE_BYTEARRAY
-- ----------------------------
DROP TABLE IF EXISTS `ACT_GE_BYTEARRAY`;
CREATE TABLE `ACT_GE_BYTEARRAY` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '资源ID(主键)',`REV_` int DEFAULT NULL COMMENT '版本(乐观锁)',`NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '资源名称',`DEPLOYMENT_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '部署ID,与部署表ACT_RE_ DEPLOYMENT的主键关联',`BYTES_` longblob COMMENT '资源,最大可存4GB数据',`GENERATED_` tinyint DEFAULT NULL COMMENT '是否是Activiti自动产生的资源',PRIMARY KEY (`ID_`),KEY `ACT_FK_BYTEARR_DEPL` (`DEPLOYMENT_ID_`),CONSTRAINT `ACT_FK_BYTEARR_DEPL` FOREIGN KEY (`DEPLOYMENT_ID_`) REFERENCES `ACT_RE_DEPLOYMENT` (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='资源表用于存储与工作流引擎相关的资源数据,Activiti使用该资源表保存流程定义文件内容、流程图片内容和序列化流程变量等二进制数据。';-- ----------------------------
-- Table structure for ACT_GE_PROPERTY
-- ----------------------------
DROP TABLE IF EXISTS `ACT_GE_PROPERTY`;
CREATE TABLE `ACT_GE_PROPERTY` (`NAME_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '属性名称',`VALUE_` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '属性值',`REV_` int DEFAULT NULL COMMENT '版本(乐观锁)',PRIMARY KEY (`NAME_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='属性表,用于存储整个工作流引擎级别的属性数据,Activiti将全部属性抽象为key-value,每个属性都有相应的名称和值。';-- ----------------------------
-- Records of ACT_GE_PROPERTY
-- ----------------------------
BEGIN;
INSERT INTO `ACT_GE_PROPERTY` (`NAME_`, `VALUE_`, `REV_`) VALUES ('cfg.execution-related-entities-count', 'false', 1);
INSERT INTO `ACT_GE_PROPERTY` (`NAME_`, `VALUE_`, `REV_`) VALUES ('next.dbid', '2501', 2);
INSERT INTO `ACT_GE_PROPERTY` (`NAME_`, `VALUE_`, `REV_`) VALUES ('schema.history', 'create(7.1.0-M6)', 1);
INSERT INTO `ACT_GE_PROPERTY` (`NAME_`, `VALUE_`, `REV_`) VALUES ('schema.version', '7.1.0-M6', 1);
COMMIT;-- ----------------------------
-- Table structure for ACT_HI_ACTINST
-- ----------------------------
DROP TABLE IF EXISTS `ACT_HI_ACTINST`;
CREATE TABLE `ACT_HI_ACTINST` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '节点实例ID(主键)',`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程定义ID',`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程实例ID',`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '执行实例ID',`ACT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '活动ID',`TASK_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '任务实例ID',`CALL_PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '调用流程实例ID',`ACT_NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '活动名称',`ACT_TYPE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '活动类型',`ASSIGNEE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '办理人',`START_TIME_` datetime(3) NOT NULL COMMENT '开始时间',`END_TIME_` datetime(3) DEFAULT NULL COMMENT '结束时间',`DURATION_` bigint DEFAULT NULL COMMENT '耗时',`DELETE_REASON_` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '删除理由',`TENANT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '租户ID',PRIMARY KEY (`ID_`),KEY `ACT_IDX_HI_ACT_INST_START` (`START_TIME_`),KEY `ACT_IDX_HI_ACT_INST_END` (`END_TIME_`),KEY `ACT_IDX_HI_ACT_INST_PROCINST` (`PROC_INST_ID_`,`ACT_ID_`),KEY `ACT_IDX_HI_ACT_INST_EXEC` (`EXECUTION_ID_`,`ACT_ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='历史节点表,该表主要用于存储历史节点实例数据、记录所有流程活动实例。通过该表可以追踪最完整的流程信息。';-- ----------------------------
-- Table structure for ACT_HI_ATTACHMENT
-- ----------------------------
DROP TABLE IF EXISTS `ACT_HI_ATTACHMENT`;
CREATE TABLE `ACT_HI_ATTACHMENT` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '附件ID(主键)',`REV_` int DEFAULT NULL COMMENT '版本(乐观锁)',`USER_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户ID',`NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '附件名称',`DESCRIPTION_` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '附件描述',`TYPE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '附件类型',`TASK_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '关联的任务实例ID',`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '关联的流程实例ID',`URL_` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '附件的URL',`CONTENT_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '附件内容ID,内容存储在ACT_GE_BYTEARRAY资源表',`TIME_` datetime(3) DEFAULT NULL COMMENT '附件上传时间',PRIMARY KEY (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='历史附件表,该表主要用于存储通过任务服务TaskService添加的附件记录。';-- ----------------------------
-- Table structure for ACT_HI_COMMENT
-- ----------------------------
DROP TABLE IF EXISTS `ACT_HI_COMMENT`;
CREATE TABLE `ACT_HI_COMMENT` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '评论ID(主键)',`TYPE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '意见记录类型',`TIME_` datetime(3) NOT NULL COMMENT '记录时间',`USER_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户ID',`TASK_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '任务实例ID',`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程实例ID',`ACTION_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '行为类型',`MESSAGE_` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '处理意见',`FULL_MSG_` longblob COMMENT '全部消息',PRIMARY KEY (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='历史评论表,该表主要用于存储通过TaskService添加的评论记录。';-- ----------------------------
-- Table structure for ACT_HI_DETAIL
-- ----------------------------
DROP TABLE IF EXISTS `ACT_HI_DETAIL`;
CREATE TABLE `ACT_HI_DETAIL` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '变量ID(主键)',`TYPE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '变量类型',`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程实例ID',`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '执行实例ID',`TASK_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '任务实例ID',`ACT_INST_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '活动实例ID',`NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '变量名称',`VAR_TYPE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '变量类型',`REV_` int DEFAULT NULL COMMENT '版本(乐观锁)',`TIME_` datetime(3) NOT NULL COMMENT '创建时间',`BYTEARRAY_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '二进制数据ID,关联资源表',`DOUBLE_` double DEFAULT NULL COMMENT '存储小数类型的变量值',`LONG_` bigint DEFAULT NULL COMMENT '存储整数类型的变量值',`TEXT_` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '存储字符串类型的变量值',`TEXT2_` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '此处存储的是JPA持久化对象时,才会有值。此值为对象ID',PRIMARY KEY (`ID_`),KEY `ACT_IDX_HI_DETAIL_PROC_INST` (`PROC_INST_ID_`),KEY `ACT_IDX_HI_DETAIL_ACT_INST` (`ACT_INST_ID_`),KEY `ACT_IDX_HI_DETAIL_TIME` (`TIME_`),KEY `ACT_IDX_HI_DETAIL_NAME` (`NAME_`),KEY `ACT_IDX_HI_DETAIL_TASK_ID` (`TASK_ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='历史流程详情表,该表主要用于存储流程执行过程中的明细数据。默认情况下,Activiti不保存流程明细数据,除非将工作流引擎的历史数据配置为full。';-- ----------------------------
-- Table structure for ACT_HI_IDENTITYLINK
-- ----------------------------
DROP TABLE IF EXISTS `ACT_HI_IDENTITYLINK`;
CREATE TABLE `ACT_HI_IDENTITYLINK` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '关系ID(主键)',`GROUP_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户组ID',`TYPE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户组类型',`USER_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户ID',`TASK_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '任务实例ID',`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程实例ID',PRIMARY KEY (`ID_`),KEY `ACT_IDX_HI_IDENT_LNK_USER` (`USER_ID_`),KEY `ACT_IDX_HI_IDENT_LNK_TASK` (`TASK_ID_`),KEY `ACT_IDX_HI_IDENT_LNK_PROCINST` (`PROC_INST_ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='历史流程与身份关系表,该表主要用于存储历史流程实例、任务实例与参与者之间的关联关系。';-- ----------------------------
-- Table structure for ACT_HI_PROCINST
-- ----------------------------
DROP TABLE IF EXISTS `ACT_HI_PROCINST`;
CREATE TABLE `ACT_HI_PROCINST` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程实例ID(主键)',`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程实例ID,值同ID',`BUSINESS_KEY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '业务主键',`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci 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 utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发起人ID',`START_ACT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '开始节点',`END_ACT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '结束节点',`SUPER_PROCESS_INSTANCE_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '父流程实例ID',`DELETE_REASON_` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '删除理由',`TENANT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '租户ID',`NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程名称',PRIMARY KEY (`ID_`),UNIQUE KEY `PROC_INST_ID_` (`PROC_INST_ID_`),KEY `ACT_IDX_HI_PRO_INST_END` (`END_TIME_`),KEY `ACT_IDX_HI_PRO_I_BUSKEY` (`BUSINESS_KEY_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='历史流程实例表,该表主要用于存储历史流程实例。流程启动后,保存ACT_RU_EXECUTION表的同时,会将流程实例写入ACT_HI_PROCINST表。';-- ----------------------------
-- Table structure for ACT_HI_TASKINST
-- ----------------------------
DROP TABLE IF EXISTS `ACT_HI_TASKINST`;
CREATE TABLE `ACT_HI_TASKINST` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任务实例ID(主键)',`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程定义ID',`TASK_DEF_KEY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '任务定义KEY',`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程实例ID',`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '执行实例ID',`NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '任务名称',`PARENT_TASK_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '父任务ID',`DESCRIPTION_` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '描述',`OWNER_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '拥有者',`ASSIGNEE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '办理人',`START_TIME_` datetime(3) NOT NULL COMMENT '开始时间',`CLAIM_TIME_` datetime(3) DEFAULT NULL COMMENT '认领时间',`END_TIME_` datetime(3) DEFAULT NULL COMMENT '结束时间',`DURATION_` bigint DEFAULT NULL COMMENT '耗时',`DELETE_REASON_` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '删除原因',`PRIORITY_` int DEFAULT NULL COMMENT '优先级',`DUE_DATE_` datetime(3) DEFAULT NULL COMMENT '到期时间',`FORM_KEY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '表单模型key',`CATEGORY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '分类',`TENANT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '租户ID',PRIMARY KEY (`ID_`),KEY `ACT_IDX_HI_TASK_INST_PROCINST` (`PROC_INST_ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='历史任务实例表,该表与运行时任务实例表类似,用于存储历史任务实例数据。当流程执行到某个节点时,就会向该表中写入历史任务数据。';-- ----------------------------
-- Table structure for ACT_HI_VARINST
-- ----------------------------
DROP TABLE IF EXISTS `ACT_HI_VARINST`;
CREATE TABLE `ACT_HI_VARINST` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '变量ID(主键)',`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程实例ID',`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '执行实例ID',`TASK_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '任务实例ID',`NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '变量名称',`VAR_TYPE_` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '变量类型',`REV_` int DEFAULT NULL COMMENT '版本(乐观锁)',`BYTEARRAY_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '二进制数据ID,关联资源表',`DOUBLE_` double DEFAULT NULL COMMENT '存储小数类型的变量值',`LONG_` bigint DEFAULT NULL COMMENT '存储整数类型的变量值',`TEXT_` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '存储字符串类型的变量值',`TEXT2_` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '此处存储的是JPA持久化对象时,才会有值。此值为对象ID',`CREATE_TIME_` datetime(3) DEFAULT NULL COMMENT '创建时间',`LAST_UPDATED_TIME_` datetime(3) DEFAULT NULL COMMENT '最近更改时间',PRIMARY KEY (`ID_`),KEY `ACT_IDX_HI_PROCVAR_PROC_INST` (`PROC_INST_ID_`),KEY `ACT_IDX_HI_PROCVAR_NAME_TYPE` (`NAME_`,`VAR_TYPE_`),KEY `ACT_IDX_HI_PROCVAR_TASK_ID` (`TASK_ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='历史变量表,该表主要用于存储历史流程的变量信息。';-- ----------------------------
-- Table structure for ACT_PROCDEF_INFO
-- ----------------------------
DROP TABLE IF EXISTS `ACT_PROCDEF_INFO`;
CREATE TABLE `ACT_PROCDEF_INFO` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '变量ID(主键)',`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程定义ID',`REV_` int DEFAULT NULL COMMENT '版本(乐观锁)',`INFO_JSON_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,PRIMARY KEY (`ID_`),UNIQUE KEY `ACT_UNIQ_INFO_PROCDEF` (`PROC_DEF_ID_`),KEY `ACT_IDX_INFO_PROCDEF` (`PROC_DEF_ID_`),KEY `ACT_FK_INFO_JSON_BA` (`INFO_JSON_ID_`),CONSTRAINT `ACT_FK_INFO_JSON_BA` FOREIGN KEY (`INFO_JSON_ID_`) REFERENCES `ACT_GE_BYTEARRAY` (`ID_`),CONSTRAINT `ACT_FK_INFO_PROCDEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流程定义信息表。';-- ----------------------------
-- Table structure for ACT_RE_DEPLOYMENT
-- ----------------------------
DROP TABLE IF EXISTS `ACT_RE_DEPLOYMENT`;
CREATE TABLE `ACT_RE_DEPLOYMENT` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '部署记录ID(主键)',`NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '部署的名称',`CATEGORY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '分类',`KEY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程模型标识',`TENANT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '租户ID',`DEPLOY_TIME_` timestamp(3) NULL DEFAULT NULL COMMENT '部署的时间',`ENGINE_VERSION_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '引擎版本',`VERSION_` int DEFAULT '1',`PROJECT_RELEASE_VERSION_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,PRIMARY KEY (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='部署信息表,该表主要用于存储流程定义的部署信息。Activiti一次部署可以添加多个资源,资源保存在ACT_GE_BYTEARRAY资源表中,部署信息则保存在该表中。';-- ----------------------------
-- Table structure for ACT_RE_MODEL
-- ----------------------------
DROP TABLE IF EXISTS `ACT_RE_MODEL`;
CREATE TABLE `ACT_RE_MODEL` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程模型ID(主键)',`REV_` int DEFAULT NULL COMMENT '版本(乐观锁)',`NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程模型名称',`KEY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程模型标识',`CATEGORY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '分类',`CREATE_TIME_` timestamp(3) NULL DEFAULT NULL COMMENT '创建时间',`LAST_UPDATE_TIME_` timestamp(3) NULL DEFAULT NULL COMMENT '最后更新时间',`VERSION_` int DEFAULT NULL COMMENT '流程版本',`META_INFO_` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '采用JSON格式保存的流程模型',`DEPLOYMENT_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '部署ID',`EDITOR_SOURCE_VALUE_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '提供给用户存储私有定义文件,对应ACT_GE_BYTEARRAY资源表中的字段ID_,表示该模型对应的模型定义文件(JSON格式数据)',`EDITOR_SOURCE_EXTRA_VALUE_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '提供给用户存储私有定义图片,对应ACT_GE_BYTEARRAY资源表中的字段ID_,表示该模型生成的图片文件',`TENANT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '租户ID',PRIMARY KEY (`ID_`),KEY `ACT_FK_MODEL_SOURCE` (`EDITOR_SOURCE_VALUE_ID_`),KEY `ACT_FK_MODEL_SOURCE_EXTRA` (`EDITOR_SOURCE_EXTRA_VALUE_ID_`),KEY `ACT_FK_MODEL_DEPLOYMENT` (`DEPLOYMENT_ID_`),CONSTRAINT `ACT_FK_MODEL_DEPLOYMENT` FOREIGN KEY (`DEPLOYMENT_ID_`) REFERENCES `ACT_RE_DEPLOYMENT` (`ID_`),CONSTRAINT `ACT_FK_MODEL_SOURCE` FOREIGN KEY (`EDITOR_SOURCE_VALUE_ID_`) REFERENCES `ACT_GE_BYTEARRAY` (`ID_`),CONSTRAINT `ACT_FK_MODEL_SOURCE_EXTRA` FOREIGN KEY (`EDITOR_SOURCE_EXTRA_VALUE_ID_`) REFERENCES `ACT_GE_BYTEARRAY` (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流程设计模型表,该数据表主要用于存储流程的设计模型。';-- ----------------------------
-- Table structure for ACT_RE_PROCDEF
-- ----------------------------
DROP TABLE IF EXISTS `ACT_RE_PROCDEF`;
CREATE TABLE `ACT_RE_PROCDEF` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程定义ID(主键)',`REV_` int DEFAULT NULL COMMENT '版本(乐观锁)',`CATEGORY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程定义类型',`NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程定义名称',`KEY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '流程定义标识',`VERSION_` int NOT NULL COMMENT '流程定义版本',`DEPLOYMENT_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程定义部署对应的部署数据ID',`RESOURCE_NAME_` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程定义对应的资源名称',`DGRM_RESOURCE_NAME_` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程定义对应的流程图的资源名称',`DESCRIPTION_` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程定义描述',`HAS_START_FORM_KEY_` tinyint DEFAULT NULL COMMENT '是否存在开始表单标识',`HAS_GRAPHICAL_NOTATION_` tinyint DEFAULT NULL COMMENT '是否存在图形信息',`SUSPENSION_STATE_` int DEFAULT NULL COMMENT '流程定义的挂起状态',`TENANT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '租户ID',`ENGINE_VERSION_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '引擎版本',`APP_VERSION_` int DEFAULT NULL COMMENT '应用版本',PRIMARY KEY (`ID_`),UNIQUE KEY `ACT_UNIQ_PROCDEF` (`KEY_`,`VERSION_`,`TENANT_ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='流程定义数据表,该表主要用于存储流程定义信息。Activiti部署流程时,除了将流程定义文件存储到资源表之外,还会解析流程定义文件内容,生成流程定义保存在该表中。';-- ----------------------------
-- Table structure for ACT_RU_DEADLETTER_JOB
-- ----------------------------
DROP TABLE IF EXISTS `ACT_RU_DEADLETTER_JOB`;
CREATE TABLE `ACT_RU_DEADLETTER_JOB` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '无法执行的工作ID(主键)',`REV_` int DEFAULT NULL COMMENT '版本(乐观锁)',`TYPE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '定时器类型',`EXCLUSIVE_` tinyint(1) DEFAULT NULL COMMENT '是否唯一',`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '执行实例ID',`PROCESS_INSTANCE_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程实例ID',`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程定义ID',`EXCEPTION_STACK_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '异常栈ID',`EXCEPTION_MSG_` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '异常信息',`DUEDATE_` timestamp(3) NULL DEFAULT NULL COMMENT '截止时间',`REPEAT_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '重复执行信息,如重复次数',`HANDLER_TYPE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '处理器类型',`HANDLER_CFG_` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '处理器配置',`TENANT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '租户ID',PRIMARY KEY (`ID_`),KEY `ACT_FK_DEADLETTER_JOB_EXECUTION` (`EXECUTION_ID_`),KEY `ACT_FK_DEADLETTER_JOB_PROCESS_INSTANCE` (`PROCESS_INSTANCE_ID_`),KEY `ACT_FK_DEADLETTER_JOB_PROC_DEF` (`PROC_DEF_ID_`),KEY `ACT_FK_DEADLETTER_JOB_EXCEPTION` (`EXCEPTION_STACK_ID_`),CONSTRAINT `ACT_FK_DEADLETTER_JOB_EXCEPTION` FOREIGN KEY (`EXCEPTION_STACK_ID_`) REFERENCES `ACT_GE_BYTEARRAY` (`ID_`),CONSTRAINT `ACT_FK_DEADLETTER_JOB_EXECUTION` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`),CONSTRAINT `ACT_FK_DEADLETTER_JOB_PROC_DEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`),CONSTRAINT `ACT_FK_DEADLETTER_JOB_PROCESS_INSTANCE` FOREIGN KEY (`PROCESS_INSTANCE_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='运行时无法执行的作业表,该表主要用于存储Activiti无法执行的定时任务数据。';-- ----------------------------
-- Table structure for ACT_RU_EVENT_SUBSCR
-- ----------------------------
DROP TABLE IF EXISTS `ACT_RU_EVENT_SUBSCR`;
CREATE TABLE `ACT_RU_EVENT_SUBSCR` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '事件ID(主键)',`REV_` int DEFAULT NULL COMMENT '版本(乐观锁)',`EVENT_TYPE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '事件类型,不同类型的事件会产生不同的事件订阅,但并非所有事件都会产生事件订阅',`EVENT_NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '事件名称',`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '事件所属的执行实例ID',`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '事件所属的流程实例ID',`ACTIVITY_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '具体事件ID',`CONFIGURATION_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '配置属性',`CREATED_` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程定义ID',`TENANT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '租户ID',PRIMARY KEY (`ID_`),KEY `ACT_IDX_EVENT_SUBSCR_CONFIG_` (`CONFIGURATION_`),KEY `ACT_FK_EVENT_EXEC` (`EXECUTION_ID_`),CONSTRAINT `ACT_FK_EVENT_EXEC` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='运行时事件订阅表,该表主要用于存储流程运行时的事件订阅。流程执行到事件节点时,会在该表插入事件订阅,这些事件订阅决定事件的触发。';-- ----------------------------
-- Table structure for ACT_RU_EXECUTION
-- ----------------------------
DROP TABLE IF EXISTS `ACT_RU_EXECUTION`;
CREATE TABLE `ACT_RU_EXECUTION` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '执行实例ID(主键)',`REV_` int DEFAULT NULL COMMENT '版本(乐观锁)',`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '执行实例所属的流程实例ID,一个流程实例可能会产生多个执行实例',`BUSINESS_KEY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '业务主键',`PARENT_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '父执行实例ID',`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程定义ID',`SUPER_EXEC_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '父流程实例对应的执行实例ID',`ROOT_PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '主流程实例ID',`ACT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '当前执行实例的行为ID',`IS_ACTIVE_` tinyint DEFAULT NULL COMMENT '是否为活跃的执行实例',`IS_CONCURRENT_` tinyint DEFAULT NULL COMMENT '是否为并行的执行实例',`IS_SCOPE_` tinyint DEFAULT NULL COMMENT '是否为父作用域',`IS_EVENT_SCOPE_` tinyint DEFAULT NULL COMMENT '是否事件范围内',`IS_MI_ROOT_` tinyint DEFAULT NULL COMMENT '是否多实例根执行流',`SUSPENSION_STATE_` int DEFAULT NULL COMMENT '挂起状态',`CACHED_ENT_STATE_` int DEFAULT NULL COMMENT '缓存结束状态',`TENANT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '租户ID',`NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '实例名称',`START_TIME_` datetime(3) DEFAULT NULL COMMENT '实例开始时间',`START_USER_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '实例启动用户',`LOCK_TIME_` timestamp(3) NULL DEFAULT NULL COMMENT '锁定时间',`IS_COUNT_ENABLED_` tinyint DEFAULT NULL COMMENT '是否启用计数',`EVT_SUBSCR_COUNT_` int DEFAULT NULL COMMENT '事件的数量',`TASK_COUNT_` int DEFAULT NULL COMMENT '任务的数量',`JOB_COUNT_` int DEFAULT NULL COMMENT '作业的数量',`TIMER_JOB_COUNT_` int DEFAULT NULL COMMENT '定时作业的数量',`SUSP_JOB_COUNT_` int DEFAULT NULL COMMENT '挂起作业的数量',`DEADLETTER_JOB_COUNT_` int DEFAULT NULL COMMENT '不可执行作业的数量',`VAR_COUNT_` int DEFAULT NULL COMMENT '变量的数量',`ID_LINK_COUNT_` int DEFAULT NULL COMMENT '身份关系的数量',`APP_VERSION_` int DEFAULT NULL COMMENT '应用版本',PRIMARY KEY (`ID_`),KEY `ACT_IDX_EXEC_BUSKEY` (`BUSINESS_KEY_`),KEY `ACT_IDC_EXEC_ROOT` (`ROOT_PROC_INST_ID_`),KEY `ACT_FK_EXE_PROCINST` (`PROC_INST_ID_`),KEY `ACT_FK_EXE_PARENT` (`PARENT_ID_`),KEY `ACT_FK_EXE_SUPER` (`SUPER_EXEC_`),KEY `ACT_FK_EXE_PROCDEF` (`PROC_DEF_ID_`),CONSTRAINT `ACT_FK_EXE_PARENT` FOREIGN KEY (`PARENT_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`) ON DELETE CASCADE,CONSTRAINT `ACT_FK_EXE_PROCDEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`),CONSTRAINT `ACT_FK_EXE_PROCINST` FOREIGN KEY (`PROC_INST_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT `ACT_FK_EXE_SUPER` FOREIGN KEY (`SUPER_EXEC_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='运行时流程执行实例表,该表主要用于存储流程运行时的执行实例。流程启动时,会生成一个流程实例,以及相应的执行实例,流程实例和执行实例都存储在ACT_RU_EXECUTION表中。如果流程实例只生成一个执行实例,则该表中只存储一条数据,这条数据既是流程实例也是执行实例。';-- ----------------------------
-- Table structure for ACT_RU_IDENTITYLINK
-- ----------------------------
DROP TABLE IF EXISTS `ACT_RU_IDENTITYLINK`;
CREATE TABLE `ACT_RU_IDENTITYLINK` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '关系ID(主键)',`REV_` int DEFAULT NULL COMMENT '版本(乐观锁)',`GROUP_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户组ID',`TYPE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '关系类型:assignee、candidate等',`USER_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户ID',`TASK_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '任务ID',`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程实例ID',`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程定义ID',PRIMARY KEY (`ID_`),KEY `ACT_IDX_IDENT_LNK_USER` (`USER_ID_`),KEY `ACT_IDX_IDENT_LNK_GROUP` (`GROUP_ID_`),KEY `ACT_IDX_ATHRZ_PROCEDEF` (`PROC_DEF_ID_`),KEY `ACT_FK_TSKASS_TASK` (`TASK_ID_`),KEY `ACT_FK_IDL_PROCINST` (`PROC_INST_ID_`),CONSTRAINT `ACT_FK_ATHRZ_PROCEDEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`),CONSTRAINT `ACT_FK_IDL_PROCINST` FOREIGN KEY (`PROC_INST_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`),CONSTRAINT `ACT_FK_TSKASS_TASK` FOREIGN KEY (`TASK_ID_`) REFERENCES `ACT_RU_TASK` (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='运行时流程与身份关系表,该表主要用于存储运行时流程实例、任务实例与参与者之间的关系信息。';-- ----------------------------
-- Table structure for ACT_RU_INTEGRATION
-- ----------------------------
DROP TABLE IF EXISTS `ACT_RU_INTEGRATION`;
CREATE TABLE `ACT_RU_INTEGRATION` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,`PROCESS_INSTANCE_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,`FLOW_NODE_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,`CREATED_DATE_` timestamp(3) NULL DEFAULT NULL,PRIMARY KEY (`ID_`),KEY `ACT_FK_INT_EXECUTION` (`EXECUTION_ID_`),KEY `ACT_FK_INT_PROC_INST` (`PROCESS_INSTANCE_ID_`),KEY `ACT_FK_INT_PROC_DEF` (`PROC_DEF_ID_`),CONSTRAINT `ACT_FK_INT_EXECUTION` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`) ON DELETE CASCADE,CONSTRAINT `ACT_FK_INT_PROC_DEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`),CONSTRAINT `ACT_FK_INT_PROC_INST` FOREIGN KEY (`PROCESS_INSTANCE_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='运行时综合表。';-- ----------------------------
-- Table structure for ACT_RU_JOB
-- ----------------------------
DROP TABLE IF EXISTS `ACT_RU_JOB`;
CREATE TABLE `ACT_RU_JOB` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '运行时工作ID(主键)',`REV_` int DEFAULT NULL COMMENT '版本(乐观锁)',`TYPE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '定时器类型',`LOCK_EXP_TIME_` timestamp(3) NULL DEFAULT NULL COMMENT '锁定释放时间',`LOCK_OWNER_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '锁定者',`EXCLUSIVE_` tinyint(1) DEFAULT NULL COMMENT '是否排他',`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '执行实例ID',`PROCESS_INSTANCE_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程实例ID',`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程定义ID',`RETRIES_` int DEFAULT NULL COMMENT '重试次数',`EXCEPTION_STACK_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '异常栈ID',`EXCEPTION_MSG_` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '异常信息',`DUEDATE_` timestamp(3) NULL DEFAULT NULL COMMENT '截止时间',`REPEAT_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '重复执行信息,如重复次数',`HANDLER_TYPE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '处理器类型',`HANDLER_CFG_` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '处理器配置',`TENANT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '租户ID',PRIMARY KEY (`ID_`),KEY `ACT_FK_JOB_EXECUTION` (`EXECUTION_ID_`),KEY `ACT_FK_JOB_PROCESS_INSTANCE` (`PROCESS_INSTANCE_ID_`),KEY `ACT_FK_JOB_PROC_DEF` (`PROC_DEF_ID_`),KEY `ACT_FK_JOB_EXCEPTION` (`EXCEPTION_STACK_ID_`),CONSTRAINT `ACT_FK_JOB_EXCEPTION` FOREIGN KEY (`EXCEPTION_STACK_ID_`) REFERENCES `ACT_GE_BYTEARRAY` (`ID_`),CONSTRAINT `ACT_FK_JOB_EXECUTION` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`),CONSTRAINT `ACT_FK_JOB_PROC_DEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`),CONSTRAINT `ACT_FK_JOB_PROCESS_INSTANCE` FOREIGN KEY (`PROCESS_INSTANCE_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='运行时作业表,该表主要用于存储Activiti正在执行的定时任务数据。';-- ----------------------------
-- Table structure for ACT_RU_SUSPENDED_JOB
-- ----------------------------
DROP TABLE IF EXISTS `ACT_RU_SUSPENDED_JOB`;
CREATE TABLE `ACT_RU_SUSPENDED_JOB` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '中断的工作ID(主健)',`REV_` int DEFAULT NULL COMMENT '版本(乐观锁)',`TYPE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '定时器类型',`EXCLUSIVE_` tinyint(1) DEFAULT NULL COMMENT '是否唯一',`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '执行实例ID',`PROCESS_INSTANCE_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程实例ID',`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程定义ID',`RETRIES_` int DEFAULT NULL COMMENT '重试',`EXCEPTION_STACK_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '异常栈ID',`EXCEPTION_MSG_` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '异常信息',`DUEDATE_` timestamp(3) NULL DEFAULT NULL COMMENT '截止时间',`REPEAT_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '重复执行信息,如重复次数',`HANDLER_TYPE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '处理器类型',`HANDLER_CFG_` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '处理器配置',`TENANT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '租户ID',PRIMARY KEY (`ID_`),KEY `ACT_FK_SUSPENDED_JOB_EXECUTION` (`EXECUTION_ID_`),KEY `ACT_FK_SUSPENDED_JOB_PROCESS_INSTANCE` (`PROCESS_INSTANCE_ID_`),KEY `ACT_FK_SUSPENDED_JOB_PROC_DEF` (`PROC_DEF_ID_`),KEY `ACT_FK_SUSPENDED_JOB_EXCEPTION` (`EXCEPTION_STACK_ID_`),CONSTRAINT `ACT_FK_SUSPENDED_JOB_EXCEPTION` FOREIGN KEY (`EXCEPTION_STACK_ID_`) REFERENCES `ACT_GE_BYTEARRAY` (`ID_`),CONSTRAINT `ACT_FK_SUSPENDED_JOB_EXECUTION` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`),CONSTRAINT `ACT_FK_SUSPENDED_JOB_PROC_DEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`),CONSTRAINT `ACT_FK_SUSPENDED_JOB_PROCESS_INSTANCE` FOREIGN KEY (`PROCESS_INSTANCE_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='运行时中断的作业表,该表主要用于存储Activiti中断的定时任务数据。';-- ----------------------------
-- Table structure for ACT_RU_TASK
-- ----------------------------
DROP TABLE IF EXISTS `ACT_RU_TASK`;
CREATE TABLE `ACT_RU_TASK` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任务实例ID(主键)',`REV_` int DEFAULT NULL COMMENT '版本(乐观锁)',`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '执行实例ID',`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程实例ID',`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程定义ID',`NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '任务实例名称',`BUSINESS_KEY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '业务主键',`PARENT_TASK_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '父任务实例ID',`DESCRIPTION_` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '节点描述',`TASK_DEF_KEY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '节点标识',`OWNER_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '拥有者',`ASSIGNEE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '办理人',`DELEGATION_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '委托类型',`PRIORITY_` int DEFAULT NULL COMMENT '优先级',`CREATE_TIME_` timestamp(3) NULL DEFAULT NULL COMMENT '创建时间',`DUE_DATE_` datetime(3) DEFAULT NULL COMMENT '过期时间',`CATEGORY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '分类',`SUSPENSION_STATE_` int DEFAULT NULL COMMENT '挂起状态',`TENANT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '租户ID',`FORM_KEY_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '表单模型key',`CLAIM_TIME_` datetime(3) DEFAULT NULL COMMENT '认领时间',`APP_VERSION_` int DEFAULT NULL COMMENT '应用版本',PRIMARY KEY (`ID_`),KEY `ACT_IDX_TASK_CREATE` (`CREATE_TIME_`),KEY `ACT_FK_TASK_EXE` (`EXECUTION_ID_`),KEY `ACT_FK_TASK_PROCINST` (`PROC_INST_ID_`),KEY `ACT_FK_TASK_PROCDEF` (`PROC_DEF_ID_`),CONSTRAINT `ACT_FK_TASK_EXE` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`),CONSTRAINT `ACT_FK_TASK_PROCDEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`),CONSTRAINT `ACT_FK_TASK_PROCINST` FOREIGN KEY (`PROC_INST_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='运行时任务节点表,该表主要用于存储流程运行过程中产生的任务实例数据。';-- ----------------------------
-- Table structure for ACT_RU_TIMER_JOB
-- ----------------------------
DROP TABLE IF EXISTS `ACT_RU_TIMER_JOB`;
CREATE TABLE `ACT_RU_TIMER_JOB` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '定时工作ID(主键)',`REV_` int DEFAULT NULL COMMENT '版本(乐观锁)',`TYPE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '定时器类型',`LOCK_EXP_TIME_` timestamp(3) NULL DEFAULT NULL COMMENT '锁定释放时间',`LOCK_OWNER_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '锁定者',`EXCLUSIVE_` tinyint(1) DEFAULT NULL COMMENT '是否唯一',`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '执行实例ID',`PROCESS_INSTANCE_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程实例ID',`PROC_DEF_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程定义ID',`RETRIES_` int DEFAULT NULL COMMENT '重试次数',`EXCEPTION_STACK_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '异常栈ID',`EXCEPTION_MSG_` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '异常信息',`DUEDATE_` timestamp(3) NULL DEFAULT NULL COMMENT '截止时间',`REPEAT_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '重复执行信息,如重复次数',`HANDLER_TYPE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '处理器类型',`HANDLER_CFG_` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '处理器配置',`TENANT_ID_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '租户ID',PRIMARY KEY (`ID_`),KEY `ACT_FK_TIMER_JOB_EXECUTION` (`EXECUTION_ID_`),KEY `ACT_FK_TIMER_JOB_PROCESS_INSTANCE` (`PROCESS_INSTANCE_ID_`),KEY `ACT_FK_TIMER_JOB_PROC_DEF` (`PROC_DEF_ID_`),KEY `ACT_FK_TIMER_JOB_EXCEPTION` (`EXCEPTION_STACK_ID_`),CONSTRAINT `ACT_FK_TIMER_JOB_EXCEPTION` FOREIGN KEY (`EXCEPTION_STACK_ID_`) REFERENCES `ACT_GE_BYTEARRAY` (`ID_`),CONSTRAINT `ACT_FK_TIMER_JOB_EXECUTION` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`),CONSTRAINT `ACT_FK_TIMER_JOB_PROC_DEF` FOREIGN KEY (`PROC_DEF_ID_`) REFERENCES `ACT_RE_PROCDEF` (`ID_`),CONSTRAINT `ACT_FK_TIMER_JOB_PROCESS_INSTANCE` FOREIGN KEY (`PROCESS_INSTANCE_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='运行时定时器作业表,该表主要用于存储流程运行时的定时任务数据。流程执行到中间定时器事件节点或带有边界定时器事件的节点时,会生成一个定时任务,并将相关数据存储到该表中。';-- ----------------------------
-- Table structure for ACT_RU_VARIABLE
-- ----------------------------
DROP TABLE IF EXISTS `ACT_RU_VARIABLE`;
CREATE TABLE `ACT_RU_VARIABLE` (`ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '变量ID(主键)',`REV_` int DEFAULT NULL COMMENT '版本(乐观锁)',`TYPE_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '变量类型',`NAME_` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '变量名称',`EXECUTION_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '执行实例ID',`PROC_INST_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '流程实例ID',`TASK_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '任务实例ID',`BYTEARRAY_ID_` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '复杂变量值存储在资源表中,此处存储关联的资源ID',`DOUBLE_` double DEFAULT NULL COMMENT '存储小数类型的变量值',`LONG_` bigint DEFAULT NULL COMMENT '存储整数类型的变量值',`TEXT_` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '存储字符串类型的变量值',`TEXT2_` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '此处存储的是JPA持久化对象时,才会有值。此值为对象ID',PRIMARY KEY (`ID_`),KEY `ACT_IDX_VARIABLE_TASK_ID` (`TASK_ID_`),KEY `ACT_FK_VAR_EXE` (`EXECUTION_ID_`),KEY `ACT_FK_VAR_PROCINST` (`PROC_INST_ID_`),KEY `ACT_FK_VAR_BYTEARRAY` (`BYTEARRAY_ID_`),CONSTRAINT `ACT_FK_VAR_BYTEARRAY` FOREIGN KEY (`BYTEARRAY_ID_`) REFERENCES `ACT_GE_BYTEARRAY` (`ID_`),CONSTRAINT `ACT_FK_VAR_EXE` FOREIGN KEY (`EXECUTION_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`),CONSTRAINT `ACT_FK_VAR_PROCINST` FOREIGN KEY (`PROC_INST_ID_`) REFERENCES `ACT_RU_EXECUTION` (`ID_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='运行时流程变量数据表,该表主要用于存储流程运行中的变量,包括流程实例变量、执行实例变量和任务实例变量。';SET FOREIGN_KEY_CHECKS = 1;
基于索引调优
此外,还可以针对索引进行优化。
在 varchar 字段上建立索引时,必须指定索引长度,没必要对全字段建立索引,根据实际文本区分度决定索引长度。
说明:索引的长度与区分度是一对矛盾体,一般对字符串类型数据,长度为 20 的索引,区分度会高达90%以上,可以使用 count(distinct left(列名,索引长度)) / count(*) 的区分度来确定。
ID生成器优化
Activiti中实体的ID(即数据库中主键字段ID_)需要由专门的生成器生成。Activiti ID生成器需要配置IdGenerator接口,该接口只有一个方法,即获取下一个ID:
public interface IdGenerator {String getNextId();
}
Activiti自带的ID生成器有两个:数据库ID生成器(DbIdGenerator)和UUID生成器(StrongUuidGenerator)。
我们目前MySQL主要使用InnoDB存储引擎,InnoDB中的索引方案主要是B+树,主键索引为聚簇索引。聚簇索引并不是一种单独的索引类型,而是一种数据存储方式(所有的用户记录都存储在了叶子节点),也就是所谓的索引即数据,数据即索引 。优点是:数据访问更快;聚簇索引对于主键的排序查找和范围查找速度非常快,可以节省大量的I/O操作。同时带来了缺点:插入速度严重依赖于插入顺序,按照主键的顺序插入是最快的方式,否则将会出现⻚分裂,严重影响性能。
数据库ID生成器(DbIdGenerator)
通过数据库生成ID的实现方式是在数据库中创建一个表保存一个数字作为当前ID,并在获取当前ID后,在原来的基础上递增生成下一个ID。但是如果这样做,就要在每次生成一个ID时都查询和更新数据库,因此数据库的压力会比较大。此外,因为操作的都是同一张表的同一行数据,所以并发量比较大的情况下,容易产生数据库行锁冲突,效率会比较低。
基于数据库的ID生成器的优点是有序且长度较短,对使用InnoDB作为存储引擎的数据库来说,采用这种方式插入效率会比较高。其缺点是依赖数据库,并发压力比较大。此外,在分布式环境下,如果要生成全局唯一的ID,需要将ID生成器作为独立服务进行部署和维护,复杂度和运维成本会大幅度增加。
UUID生成器
Activiti的UUID是通过com.fasterxml.uuid.impl.TimeBasedGenerator生成的。UUID生成器的优点是不依赖其他服务,并发效率高,分布式情况下也能生成全局唯一ID。其缺点首先是无序,对于与InnoDB类似的存储引擎,插入时容易导致索引页分裂,影响插入的性能。其次,UUID的长度比较长,占用的空间相对较大。
上述两种ID生成器都有各自的优缺点,但在数据量大、并发和性能要求高的场景下都难以满足业务要求,需要采用更优的ID生成器来实现。更优的生成器需要既满足性能上的要求,又保证全局有序和唯一。这里采用流行ID生成算法“雪花算法”来实现。
自定义ID生成器(雪花算法)
雪花算法实现参考:
Leaf——美团点评分布式ID生成系统:https://tech.meituan.com/2017/04/21/mt-leaf.html
Leaf:美团分布式ID生成服务开源:https://tech.meituan.com/2019/03/07/open-source-project-leaf.html
Github地址:https://github.com/Meituan-Dianping/Leaf?tab=readme-ov-file
要实现自定义ID生成器,必须要继承Activiti的IdGenerator接口:
import org.activiti.engine.impl.cfg.IdGenerator;public class SnowFlakeIdGenerator implements IdGenerator {@Overridepublic String getNextId() {// 实现自定义ID生成器逻辑return ......;}
}
完成自定义ID生成器的开发后,还需要配置工作流引擎使用自定义ID生成器,配置内容如下:
<!-- 定义自定义ID生成器 --><bean id="snowFlakeIdGenerator" class="com.lwy.it.util.SnowFlakeIdGenerator"></bean><!-- Activiti工作流引擎 --><bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"><!-- ...其他配置项... --><!-- 配置idGenerator --><property name="idGenerator" ref="snowFlakeIdGenerator"/></bean>
基于减少ACT_GE_BYTEARRAY资源表操作
ACT_GE_BYTEARRAY资源表用于存储与工作流引擎相关的资源数据,Activiti使用该资源表保存流程定义文件内容、流程图片内容和序列化流程变量等二进制数据。
字段 | 类型 | 字段说明 |
---|---|---|
ID_ | VARCHAR(64) | 资源ID(主键) |
REV_ | INT | 版本(乐观锁) |
NAME_ | VARCHAR(255) | 资源名称 |
DEPLOYMENT_ID_ | VARCHAR(64) | 部署ID,与部署表ACT_RE_ DEPLOYMENT的主键关联 |
BYTES_ | LONGBLOB | 资源,最大可存4GB数据 |
GENERATED_ | TINYINT | 是否是Activiti自动产生的资源 |
流程变量默认TEXT_、TEXT2_默认类型为,VARCHAR(4000),用于存储字符串类型的变量值。
public int getMaxLengthString() {// maxLengthStringVariableType不配置默认值为-1if (maxLengthStringVariableType == -1) {if ("oracle".equalsIgnoreCase(databaseType)) {// public static final int DEFAULT_ORACLE_MAX_LENGTH_STRING = 2000return DEFAULT_ORACLE_MAX_LENGTH_STRING;} else {// public static final int DEFAULT_GENERIC_MAX_LENGTH_STRING = 4000return DEFAULT_GENERIC_MAX_LENGTH_STRING;}} else {return maxLengthStringVariableType;}}
以MySQL为例,当变量长度超过4000时,便会存储在ACT_GE_BYTEARRAY表中BYTES_(类型为:LONGBLOB)。当实际业务中有比较长的变量时,建议:
- 修改流程变量TEXT_、TEXT2_类型为TEXT、MEDIUMTEXT、LONGTEXT(包含历史表等相关表要同步进行修改);
- 根据修改的流程变量类型来配置maxLengthStringVariableType的值;
上面建表语句已经将流程变量类型改成TEXT类型,同时更改配置:
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"><!-- ...其他配置项... --><!-- 需要将varchar(4000)改成text类型,设置长度为8000 --><property name="maxLengthStringVariableType" value="8000"/></bean>
基于历史数据级别优化
为了提高流程执行的效率,Activiti将流程数据分为运行时数据和历史数据,从而避免历史数据积累影响工作流引擎性能。如果业务本身不需要历史数据,工作流引擎可以不保存历史数据,这样引擎性能会有进一步的提升。
Activiti在设计上采用了运行时与历史数据相分离的策略,Activiti的运行表和历史表在流程运行时可以同步记录数据,当流程实例结束或任务办理完成时,会自动删除运行表中的相关数据,而保留历史表中的相关数据。这种设计可以快速读取运行时数据,仅当需要查询历史数据时才从专门的历史数据表中读取历史数据,大幅提高了数据的存取效率。Activiti提供了history属性设置记录历史级别,实现按需存储历史数据。history 属性值可配置为none、activity、audit和full,级别由低到高。
- none(无):不保存任何历史数据,对于运行时流程执行来说性能最好,但流程结束后无可用的历史信息。
- activity(活动):级别高于none,归档所有流程实例和活动实例。在流程实例结束时,流程变量的最新值将复制到历史变量实例中,不保存任何详细信息。
- audit(审计):Activiti的默认级别。除activity级别会保存的数据外,还保存提交的表单属性,以便跟踪通过表单进行的所有用户交互,且可进行审计。
- full(完整):历史最高级别,性能较差。保存最完整的历史记录,除audit级别的信息之外,还记录所有其他可能的详细信息,主要是流程变量更新,如果需要日后跟踪详情可以开启full(一般不建议开启)。
其中,none级别不存储历史数据,其他3种级别都会存储历史数据。
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"><!-- ...其他配置项... --><!-- 配置历史数据级别为activity(活动) --><property name="history" value="activity"/></bean>
基于架构优化
水平分库分表方案的局限性
水平分库分表指将单表的数据切分到多个分片中,每个分片具有相同结构的库与表,只是库、表存储的数据不同。水平分库分表可解决单机单库的性能瓶颈,突破IO、连接数等限制。但在Activiti中采用常规的水平分库分表方案存在一定的难度和问题,具体如下:
- 没有合适的分库分表依据
要采用水平分库分表方案,首先要决定采用何种分库分表策略。这通常需要根据业务的特性来决策,常见的分库分表策略有按范围或Hash取模拆分等。
对于基于范围的分库分表,可以按时间范围或者流程定义范围进行分库分表,如按年或者月进行分库分表等。但在流程领域,往往需要按流程实例ID、任务实例ID和人员ID等场景查询流程和任务,无法确定时间范围,导致这些场景的查询无法满足。按时间范围分库分表的另一个问题是:同一时间段的数据需要写入相同的库表中,无法通过多个数据库和表来分担并发压力。按流程定义分库分表方案也存在类似的问题。首先,流量并非按流程定义均匀分布的,少量的流程定义占据了大部分的数据,易导致分库分表方案失效。其次,该方案无法实现按流程实例ID、任务实例ID和人员ID等查询流程和任务的场景。
对于基于Hash取模的分库分表方案,可以按人员ID的Hash取模进行分库分表,如按人的维度将流程实例分布在不同的库和表上,能解决按人查询的场景需求。但在该方案下,同一个流程会关联多人,同一个任务也可能与多人关联,如同一个用户任务会存在多个候选人,这就导致按人分库分表时存在数据冗余。此外,该方案也无法实现基于流程实例ID或者任务ID进行数据查询的场景。当然,也可以按流程实例ID和任务ID进行分库分表,但这又无法实现按人员ID查询流程或任务的场景。
综合来说,没有一种合适的分库分表方案能够同时满足流程领域常见场景的需求。
- 常规分库分表方案改造成本高
分库分表实现本身的复杂度比较高,尤其是SQL比较复杂时,要自己实现一套完整的水平分库分表方案成本非常高昂。因此,通常会使用开源组件实现分库分表。常见的水平分库分表实现方案有两种:第一种是客户端水平分库分表,比较常见的是sharding-jdbc;第二种是通过代理进行分库分表,如Mycat。sharding-jdbc以JAR包的形式嵌入到代码中,对代码具有一定的侵入性,但运维成本较低。Mycat需要我们维护一套单独的集群,运维成本比较高,对代码无侵入性。无论采用哪种方式,都有部分功能实现起来比较复杂,对系统性能影响也比较大,甚至无法实现。例如,Activiti底层SQL中存在大量的join操作,一旦涉及多表的跨库操作,实现起来就非常困难。除join操作外,排序、分组、分页等常用的SQL操作性能也非常低。总之,想在Activiti基础上实现一套分库分表方案,无论是设计的难度还是开发的成本都非常高。
- 常规分库分表方案扩容困难
分库分表的另一个难题是扩容。出于成本考虑,一开始不可能拆分过多的库表。但是随着业务的发展,已有的库表无法满足业务需求,这时就需要对原有的库表进行扩容。扩容往往涉及数据迁移,而数据迁移过程风险比较大,难以在不停服且用户无感知的情况下完成迁移。虽然可以采用一致性哈希算法来减少迁移的数据量,但是无法彻底解决数据迁移问题,导致系统扩容比较困难。
Activiti数据存储机制
在Activiti中进行数据操作时,会先调用各个实体对象对应的EntityManager,而EntityManager又会委托给对应的DataManager来完成操作,最终通过DbSqlSession调用Mybatis实现数据的增、删、改、查操作。所有EntityManager和DataManager的初始化都是通过工作流引擎配置类ProcessEngineConfigurationImpl完成的。CommandContext在执行close()方法时会调用DbSqlSession的flush()方 法,实现数据的增、删、改操作。
通过对Activiti数据操作机制的分析,可以总结出两种实现历史数据异步化的思路。第一种思路是从DbSqlSession入手,在最终进行数据库操作时实现异步化。第二种思路是自定义DataManager,在自定义的DataManager中实现异步存储。对于历史数据,可以存储在原有的数据库表中,这样做的优点是历史数据的查询可以复用Activiti已有的查询方式,改造成本比较低。也可以采用其他存储方式,尤其是数据量比较大的情况下采用分布式数据库进行存储,如MongoDB。接下来分别介绍以下两种异步存储方式:
- 改造DbSqlSession,实现基于已有数据库表的历史数据异步化;
- 自定义DataManager,实现基于MongoDB的历史数据异步化。
基于已有数据库表的历史数据异步化
Activiti所有数据操作都是通过DbSqlSession完成的。DbSqlSession提供了对实体对象的缓存,并在Command完成时调用flush()方法进行数据库操作。因此,可以在进行数据库操作前先判断实体对象的类型,再决定数据存储的方式。例如,插入数据通过flush()调用flushInserts()来完成,因此可以在该方法中实现历史数据插入的异步化。Activiti历史数据包括历史任务、历史流程变量等,这里以流程历史变量的异步存储为例,讲解如何实现历史数据的异步化。将DbSqlSession的flushInserts()方法改造如下:
//创建线程池,通过线程池提交历史数据private ExecutorService executorService = Executors.newFixedThreadPool(10);protected void flushInserts() {if (insertedObjects.size() == 0) {return;}for (Class<? extends Entity> entityClass : EntityDependencyOrder.INSERT_ORDER) {if (insertedObjects.containsKey(entityClass)) {//历史变量数据的异步化boolean isHistoricData = handleHistoricInsertEntities(entityClass, insertedObjects.get(entityClass).values());//非历史变量数据,遵循原有的逻辑 if (!isHistoricData) {flushInsertEntities(entityClass, insertedObjects.get(entityClass).values());}insertedObjects.remove(entityClass);}if (insertedObjects.size() > 0) {for (Class<? extends Entity> entityClass : insertedObjects.keySet()) {flushInsertEntities(entityClass, insertedObjects.get(entityClass).values());}}insertedObjects.clear();}protected boolean handleHistoricInsertEntities(Class<? extends Entity> entityClass, Collection<Entity> entitiesToInsert) {if (entityClass.equals(HistoricVariableInstanceEntityImpl.class)) {executorService.submit(() -> {for (Entity entity : entitiesToInsert) {log.info("Async insert history data={}", entity);flushInsertEntities(entityClass, insertedObjects.get(entityClass).values());}});return true;}return false;}
以上代码中的加粗部分代码是新添加的逻辑,实现了handleHistoricInsertEntities()方法。该方法的核心逻辑是判断要插入对象的类型是否是历史变量。如果是,则采用异步方式进行数据插入,否则就采用同步方式进行数据插入。
历史变量的插入是通过自定义逻辑实现的,其执行线程为自定义线程池中的线程,而其他数据则是通过执行请求的线程插入的。对于历史变量的查询,由于数据仍存在数据库的ACT_HI_VARINST表中,所以可以复用Activiti历史变量数据操作类MybatisHistoricVariableInstanceDataManager实现。历史变量的异步更新和删除,可以用类似的方法处理。
基于MongoDB的历史数据异步化
对于数据量较小的场景,可以采用已有的数据库表来实现历史数据异步化,但是面对海量历史数据的场景,就需要采用分布式数据存储机制来进行处理了。
相关文章:
流程引擎Activiti性能优化方案
流程引擎Activiti性能优化方案 Activiti工作流引擎架构概述 Activiti工作流引擎架构大致分为6层。从上到下依次为工作流引擎层、部署层、业务接口层、命令拦截层、命令层和行为层。 基于关系型数据库层面优化 MySQL建表语句优化 Activiti在MySQL中创建默认字符集为utf8&…...
安卓 文件管理相关功能记录
文件管理细分为图片、视频、音乐、文件四类 目录 权限 静态声明权限 动态检查和声明权限方法 如何开始上述动态申请的流程 提示 图片 获取图片文件的对象列表 展示 删除 视频 获取视频文件的对象列表 获取视频file列表 按日期装载视频文件列表 展示 播放 删除…...
监控视频汇聚融合云平台一站式解决视频资源管理痛点
随着5G技术的广泛应用,各领域都在通信技术加持下通过海量终端设备收集了大量视频、图像等物联网数据,并通过人工智能、大数据、视频监控等技术方式来让我们的世界更安全、更高效。然而,随着数字化建设和生产经营管理活动的长期开展࿰…...
【jvm】主要参数
Java 虚拟机(JVM)有许多参数用于控制其行为和性能,下面是一些 主要的 JVM 启动参数,这些参数通常分为以下几类: 内存管理相关参数 这些参数主要用来配置 JVM 的内存分配策略、堆内存、栈内存等。 -Xms 设置 JVM 启动…...
在Ubuntu中配置mysql,并允许外部访问数据库
在虚拟机中安装 MySQL 并允许外部访问,可以按照以下步骤操作: 1. 更新系统包 首先,确保你的系统是最新的,使用以下命令更新包列表: sudo apt update sudo apt upgrade2. 安装 MySQL Server 安装 MySQL 服务&#x…...
Golang的向前兼容性和toolchain规则,Go1.21.0
在 Go 1.21 中,在工具上新增了两个变化:增强了向前兼容性;工具链管理。 向前兼容性 在以前的版本中,Go 工具链尝试编译依赖于新版本的代码时,可能会遇到兼容性问题。例如,如果你的代码依赖于 Go 1.18 引入…...
如何有效修复ffmpeg.dll错误:一站式解决方案指南
当您遇到提示“ffmpeg.dll文件丢失”的错误时,这可能导致相关的应用程序无法启动或运行异常。本文将详细介绍如何有效地解决ffmpeg.dll文件丢失的问题,确保您的应用程序能够恢复正常运行。 ffmpeg.dll是什么?有哪些功能? ffmpeg.…...
更频繁的 Android SDK 发布:更快的创新、更高的质量和更完善
Android 一直致力于让创新更快地进入用户手中。除了每年的平台发布之外,我们还投资了Project Treble、Mainline、Google Play 服务、每月安全更新和季度发布,为 Pixel Drops 提供支持。 未来,Android 将更频繁地发布 SDK,计划于 …...
远程连接:构建智能家居舒适生活
远程连接技术让智能家居从梦想照进现实,为人们构建了舒适便捷的生活环境。通过家庭网络与各种智能设备的远程连接,用户可以在外出时,使用手机 APP 轻松控制家中的灯光、窗帘、空调、电视等设备。 例如,在炎热的夏天,下…...
Python 爬取网页文字并保存为 txt 文件教程
引言 在网络数据获取的过程中,我们常常需要从网页中提取有用的文字信息。Python 提供了强大的库来帮助我们实现这一目标。本教程将以https://theory.gmw.cn/2023 - 08/31/content_36801268.htm为例,介绍如何使用requests库和BeautifulSoup库爬取网页文字…...
多协议视频监控汇聚/视频安防系统Liveweb搭建智慧园区视频管理平台
智慧园区作为现代化城市发展的重要组成部分,不仅承载着产业升级的使命,更是智慧城市建设的重要体现。随着产业园区竞争的逐渐白热化,将项目打造成完善的智慧园区是越来越多用户关注的内容。 然而我们往往在规划前期就开始面临众多难题&#…...
InnoDB 查询成本
1. 单表查询成本 连接查询总成本 IO 成本 CPU 成本对于 InnoDB 存储引擎来说,页是磁盘和内存之间交互的基本单位,设计MySQL的大叔规定读取一个页面花费的成本默认是 1.0,读取以及检测一条记录是否符合搜索条件的成本默认是 0.2。1.0、0.2 …...
C++的高精度减法 分步详解
高精度减法计算原理 在读小学时,我们做减法都采用竖式方法,如图 1 所示。 这样,我们可以写出两个整数相减的算法。 我们就可以用 C 语言来模拟这个竖式减法的过程。我们可以考虑利用 C 的数组来存储对应数据,假设用数组 A 存储被…...
linux cpu 管理
视频教程:ubuntu cpu 管理_哔哩哔哩_bilibili 概述 平均负载,CPU 使用率,CPU上下文 1 平均负载 #查看命令: rootzyb:~# uptime 18:21:47 up 1:09, 2 users, load average: 0.00, 0.00, 0.00 依次则是过去 1 分钟、5 分钟、1…...
大批量URL去重的架构设计(redis-bitmap+redisson)
1. 引言 什么是数据去重? 在大数据处理中,去重是指消除重复数据,只保留唯一的数据记录。 去重的重要性 提高数据处理效率,节省存储空间,提升数据分析的准确性。 常见的去重技术 基于哈希函数、布隆过滤器、位图等方法…...
WebGPU跨平台应用开发
对于 Web 开发人员来说,WebGPU 是一个 Web 图形 API,可提供对 GPU 的统一和快速访问。WebGPU 公开了现代硬件功能,并允许在 GPU 上进行渲染和计算操作,类似于 Direct3D 12、Metal 和 Vulkan。 虽然这是真的,但这个故事…...
Proteus(8.15)仿真下载安装过程(附详细安装过程图)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、Proteus是什么? 二、下载链接 三、下安装步骤 1.解压,有键管理员运行 2.点击Next,进行下一步 3.勾选I accept…&#…...
vlan和vlanif
文章目录 1、为什么会有vlan的存在2、vlan(虚拟局域网)1、vlan原理1. 为什么这样划分了2、如何实现不同交换机相同的vlan实现互访呢3、最优化的解决方法,vlan不同交换机4、vlan标签和vlan数据帧 5、vlan实现2、基于vlan的划分方式1、基于接口的vlan划分方式2、基于m…...
Unity开发哪里下载安卓Android-NDK-r21d
google的东西,居然是完全开源的 真的不是很多公司能做到,和那种伪搜索引擎是不同的 到底什么时候google才会开始造车 不过风险很多,最好不要合资,风险更大...
期末速成C++【初识C++】
目录 1.英文单词 2.C的特点 3.C对C语言的补充 3.1命名空间和域操作符 🎇3.2控制台输入输出 3.3类型增强 3.3.1const常变量 3.3.2const与指针 3.3.3布尔类型与枚举类型 3.4默认参数 🎇3.5函数重载 🎇引用 3.6.1引用做函数参数 …...
爬虫案例学习6
获取淘宝商品数据2024-12-18 参考学习: 大佬博客 视频教程 通过搜索发现,数据是通过发送请求过来的,不是静态存在源代码的 所以我们需要请求这个接口获取数据:比如标题,价格,图片等信息 https://h5api.m…...
28、论文阅读:基于像素分布重映射和多先验Retinex变分模型的水下图像增强
A Pixel Distribution Remapping and Multi-Prior Retinex Variational Model for Underwater Image Enhancement 摘要介绍相关工作基于模型的水下图像增强方法:无模型水下图像增强方法:基于深度学习的水下图像增强方法: 论文方法概述像素分布…...
[BJDCTF2020]ZJCTF,不过如此 1
[BJDCTF2020]ZJCTF,不过如此 1 打开实例发现代码审计 需要GET传入text和file参数,然后执行文件包含 text需要读取到I have a dream文本,这边采用data流进行绕过 ?textdata://,I have a dream&filenext.php成功绕过,接下来…...
Hive的in与not in 值中有null的时候注意事项,join where条件等问题
在进行hive SQL查询数据的时候,where条件中使用了in或者not in,但是该值内有null空。 这时,无论是in还是not in,空值都不会进入该条件内,但是使用not in的时候只是希望把自己不想要的数据给排除掉,这时会同…...
大语言模型画图(流程图、框架图)
第一步:向随意大语言模型,描述内容,推荐豆包 豆包 加上下面Prompt 通过Mermaid语法,描述上面流程图 第二步:将生成Mermaid输入流程图生成网站 中文Mermaid - 流程图、关系图在线画图、生成和编辑器...
Oracle创建逻辑目录
Oracle 在执行逻辑备份及还原时,需要用到逻辑目录。 本文就来简单介绍一下逻辑目录相关的操作,希望对大家有所帮助。 1.登录到Oracle数据库 使用具有足够权限的数据库用户登录到Oracle数据库。通常,这需要是管理员账号,如SYS…...
[react] 优雅解决typescript动态获取redux仓库的类型问题
store.getState()是可以获取总仓库的 先拿到函数的类型 再用ReturnType<T> 它是 TypeScript 中的一个内置条件类型,用于获取某个函数类型 T 的返回值类型 代码 // 先拿总仓库的函数类型type StatefuncType typeof store.getState;//再拿函数类型T的返回值类…...
python如何获取excel单元格文字是否加粗
是的,Python 可以获取 Excel 单元格中的文字是否加粗。通常,这需要使用 openpyxl 库,它允许你读取和写入 Excel 文件(.xlsx 格式)。 以下是一个示例代码,展示如何检查某个单元格的文字是否加粗:…...
我的性能优化经验
专业方向:App cpu/memory/gpu/流畅度/响应时间的优化,Anr,Framework CarPowerManagementService模块的(STR),从0~1完成性能监控体系搭建,完成3大版本迭代高质量性能交付 响应时间: …...
【Vulkan入门】16-IndexBuffer
TOC 先叨叨 上篇介绍了如何使用VertexBuffer传入顶点信息。两个多星期了我们一直在玩三个点,本篇介绍如何渲染更多的点。 在渲染前考虑一个问题,渲染一个三角形需要三个点,渲染两个相接的三角形需要几个点? 答案是6个点…...
如何通过HTTP API新建Collection
本文介绍如何通过HTTP API创建一个新的Collection。 前提条件 已创建Cluster:创建Cluster。 已获得API-KEY:API-KEY管理。 Method与URL HTTP POST https://{Endpoint}/v1/collections 使用示例 说明 需要使用您的api-key替换示例中的YOUR_API_KEY、…...
excel 使用vlook up找出两列中不同的内容
当使用 VLOOKUP 函数时,您可以将其用于比较两列的内容。假设您要比较 A 列和 B 列的内容,并将结果显示在 C 列,您可以在 C1 单元格中输入以下公式: 这个公式将在 B 列中的每个单元格中查找是否存在于 A 列中。如果在 A 列中找不到…...
实验16 循环神经网络(3)
目录 1.数据处理 1.1.数据集下载 1.2.数据加载 1.2.1读取数据 1.2.2词表转换 1.2.3封装数据 2. 模型构建 2.1汇聚层算子 2.2模型汇总 3. 模型训练 3.1模型训练 3.2绘制准确率和损失函数图像 4. 模型评价 5. 模型预测 6. 基于Torch的单向LSTM 6.1模型修改-只返…...
Docker 清理命令
Docker 清理命令 删除停止的容器:停止的容器仍然会占用磁盘空间,可以使用以下命令删除所有停止的容器: docker container prune删除无用的网络:Docker 创建的网络,如果不再使用,也可以被清理: d…...
游泳溺水识别数据集,对9984张原始图片进行YOLO,COCO JSON, VOC XML 格式的标注,平均识别率在91.7%以上
游泳溺水识别数据集: 对9984张原始图片进行YOLO,COCO JSON, VOC XML 格式的标注,平均识别率在91.7%以上 ,可识别泳池或者水库中是否有人溺水。 数据集分割 训练组98% 9818图片 有效集%…...
【计算机网络】应用层
1. 域名系统 DNS 1.1 域名系统概述 域名系统 DNS (Domain Name System) : 互联网使用的命名系统。 用来把人们使用的机器名字(域名)转换为 IP 地址。 为互联网的各种网络应用提供了核心服务。 域名采用层次树状结构的命名方法。 DNS 是…...
计算机组成原理的学习笔记(1)
学习笔记 前言 本文主要是对于b站尚硅谷的计算机组成原理的学习笔记,仅用于学习交流。 一、hello.c如何运行起来? 1. 预处理阶段 在编译 C 程序时,预处理器首先处理代码。预处理器会: 插入头文件:例如,…...
挑战一个月基本掌握C++(第六天)了解函数,数字,数组,字符串
一 C函数 函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上ÿ…...
《薄世宁医学通识50讲》以医学通识为主题,涵盖了医学的多个方面,包括医学哲学、疾病认知、治疗过程、医患关系、公共卫生等
《薄世宁医学通识50讲》是一门由薄世宁医生主讲的医学通识课程,该课程旨在通过深入浅出的方式,向广大听众普及医学知识,提升公众对医学的认知和理解。 晓北斗推荐-薄世宁医学通识 以下是对该课程的详细介绍: 一、课程概述 《薄世…...
Golang囊地鼠gopher
开发知识点-golang 介绍红队专题-Golang工具Fscan简介主要功能ubuntu 安装windows 安装常用命令:项目框架源文件common目录Plugins目录Webscan目录入口点插件扫描类型爆破插件common.ScantypeWebtitle函数webpoc扫描POC 执行CEL-GO 实践CEL指纹识别免杀源码特征参考链接红队专…...
关于如何正确在测试用例中mock静态方法的问题
文章目录 情况一:希望在测试用例中直接执行静态方法的逻辑情况二:不希望在测试用例中执行静态方法的逻辑插桩方法坑1: 报错SubclassByteBuddyMockMaker原因与解决方案坑2:报错 the existing static mock registration must be deregistered原…...
深度学习0-前置知识
一、背景 AI最大,它的目的是通过让机器模仿人类进而超越人类; ML次之,它是AI的一个分支,是让机器模仿人类的一种方法。开发人员用大量数据和算法“训练”机器,让机器自行学会如何执行任务,它的成功取决于…...
web网页前后端交互方式
参考该文, 一、前端通过表单<form>向后端发送数据 前端是通过html中的<form>表单,设置method属性定义发送表单数据的方式是get还是post。 如使用get方式,则提交的数据会在url中显示;如使用post方式,提交…...
电商大数据的几种获取渠道分享!
在当今数字化时代,电商大数据已成为企业决策和运营的重要基础。如何高效地获取、分析和利用这些数据,对于提升电商企业的竞争力至关重要。本文将详细介绍几种电商大数据的获取渠道,帮助电商从业者更好地掌握数据资源,提升业务洞察…...
【图像配准】方法总结
图像配准(Image registration)就是将不同时间、不同传感器(成像设备)或不同条件下(天候、照度、摄像位置和角度等)获取的两幅或多幅图像进行匹配、叠加的过程,就是找到1幅图像像素到另1幅图像像素间的空间映射关系它已…...
SSM 超市管理系统
🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论 🔥🔥&…...
【Yonghong 企业日常问题04】永洪BI可视化工具Linux部署全攻略(部署详解版)
文章目录 一、准备工作二、服务器环境配置2.1 安装JDK2.2 安装字体 三、产品安装四、相关资料 一、准备工作 在进行部署之前需要有以下几项工作准备: 1.产品安装包 2.对应版本的License 3.对应版本的JDK(推荐JDK11,产品v8版本以上需要JDK11以上版本) 4.…...
ubuntu下gdb调试ROS
参考: 使用VsCode进行ROS程序调试_ros vscode 调试-CSDN博客 https://blog.csdn.net/weixin_45031801/article/details/134399664?spm1001.2014.3001.5506 一、调试准备 1.1 CMakeLists改动 注释文件中的 set(CMAKE_BUILD_TYPE "Release") #构建类…...
scala中正则表达式的使用
正则表达式: 基本概念 在 Scala 中,正则表达式是用于处理文本模式匹配的强大工具。它通过java.util.regex.Pattern和java.util.regex.Matcher这两个 Java 类来实现(因为 Scala 运行在 Java 虚拟机上,可以无缝使用 Java 类库&…...
语音识别失败 chrome下获取浏览器录音功能,因为安全性问题,需要在localhost或127.0.0.1或https下才能获取权限
环境: Win10专业版 谷歌浏览器 版本 131.0.6778.140(正式版本) (64 位) 问题描述: 局域网web语音识别出现识别失败 chrome控制台出现下获取浏览器录音功能,因为安全性问题,需要在…...