Activiti 数据库设计
一:数据库表初始化
1:源代码下载:
2:代码执行
执行日志:
10:11:53,500 [main] INFO org.activiti.engine.ProcessEngines - Initializing process engine using configuration 'file:/E:/activiti6_studing_damo_code/activiti6_studing-damo-code/activitiDemo_firstAct/bin/activiti.cfg.xml' 10:11:53,503 [main] INFO org.activiti.engine.ProcessEngines - initializing process engine for resource file:/E:/activiti6_studing_damo_code/activiti6_studing-damo-code/activitiDemo_firstAct/bin/activiti.cfg.xml 10:11:54,716 [main] INFO org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl - Found 1 auto-discoverable Process Engine Configurators 10:11:54,717 [main] INFO org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl - Found 1 Process Engine Configurators in total: 10:11:54,717 [main] INFO org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl - class org.activiti.management.jmx.JMXConfigurator (priority:10000) 10:11:54,718 [main] INFO org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl - Executing beforeInit() of class org.activiti.management.jmx.JMXConfigurator (priority:10000) Sun Dec 01 22:11:55 CST 2024 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification. 10:11:58,238 [main] INFO org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl - Found compatibility handler instance : class org.activiti.compatibility.DefaultActiviti5CompatibilityHandler 10:11:58,240 [main] INFO org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl - Executing configure() of class org.activiti.management.jmx.JMXConfigurator (priority:10000) 10:11:58,850 [main] INFO org.activiti.engine.impl.db.DbSqlSession - performing create on engine with resource org/activiti/db/create/activiti.mysql.create.engine.sql 10:11:58,853 [main] INFO org.activiti.engine.impl.db.DbSqlSession - Found MySQL: majorVersion=5 minorVersion=7 10:11:58,910 [jmxConnectorStarterThread] INFO org.activiti.management.jmx.DefaultManagementAgent - JMX Connector thread started and listening at: service:jmx:rmi:///jndi/rmi://DESKTOP-DK30POB:1099/jmxrmi/activiti 10:12:06,151 [main] INFO org.activiti.engine.impl.db.DbSqlSession - performing create on history with resource org/activiti/db/create/activiti.mysql.create.history.sql 10:12:06,151 [main] INFO org.activiti.engine.impl.db.DbSqlSession - Found MySQL: majorVersion=5 minorVersion=7 10:12:07,086 [main] INFO org.activiti.engine.impl.db.DbSqlSession - performing create on identity with resource org/activiti/db/create/activiti.mysql.create.identity.sql 10:12:07,087 [main] INFO org.activiti.engine.impl.db.DbSqlSession - Found MySQL: majorVersion=5 minorVersion=7 10:12:07,371 [main] INFO org.activiti.engine.impl.ProcessEngineImpl - ProcessEngine default created 10:12:07,434 [main] INFO org.activiti.engine.ProcessEngines - initialised process engine default ��һ���������ǰ����ǰ�������ƣ�Write Vaction �ڶ����������ǰ����ǰ�������ƣ�Audit
二:Activiti 数据库设计
在流程的产生、执行及结束等周期,都会产生各种与流程相关的数据,Activiti 提供了一整套数据表来保存这些数据。Activiti 流程引擎的数据表分5大类,每一类的数据表均有不同的职责。例如运行时数据表,专门用来记录流程运行时所产生的数据;身份数据表专门保存身份数据,包括用户、用户组等。Activiti为这些数据表的命名制定了规范,不同职责的数据表,均可以通过命名来体现。例如运行时数据表,会以 ACT_RU 作为开头;历史数据表以 ACT_HI作为开头。
Activiti6.0版本中加入了基于 DMN 规范的规则引擎,本章也会讲述关于规则引擎的几个数据表,以及Activiti 中常用数据表的主要字段含义。
2.1: 通用数据表
通用数据表用于存放一些通用的数据,这些表本身不关心特定的流程或者业务,只用于存放这些业务或者流程所使用的通用资源。它们可以独立存在于流程引擎或者应用系统中,其他的数据表有可能会使用这些表中的数据。通用数据表有两个,它们都以“ACT_GE”开头,GE 是单词 general 的缩写。
2.1.1:资源表 ACT_GE_BYTEARRAY
表 ACT_GE_BYTEARRAY 用于保存与流程引擎相关的资源,只要调用了Activiti存储服务的API,涉及的资源均会被转换为 byte 数组保存到这个表中。在资源表中设计了一个 BYTES 字段,用来保存资源的内容,因此理论上其可以用于保存任何类型的资源(文件或者其他来源的输入流)。一般情况下, Activiti 使用这个表来保存字符串、流程文件的内容、流程图片内容。
ACT_GE_BYTEARRAY 表主要包含如下字段。
CREATE TABLE `act_ge_bytearray` ( `ID_` varchar(64) COLLATE utf8mb3_bin NOT NULL, `REV_` int DEFAULT NULL COMMENT '数据版本,Activiti 为一些有可能会被频繁修改的数据表,加入该字段,用来', `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '资源名称,类型为varchar,长度为255字节。', `DEPLOYMENT_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '一次部署可以添加多个资源,该字段与部署表 ACT RE DEPLOYMENT', `BYTES_` longblob COMMENT '资源内容,数据类型为longblob,最大可存4GB数据。', `GENERATED_` tinyint DEFAULT NULL COMMENT '是否由Activiti 自动产生的资源,0表示 false,1为true。', 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=utf8mb3 COLLATE=utf8mb3_bin
2.1.2: 属性表 ACT_GE_PROPERTY
Activiti将全部的属性抽象为 key-value 对,每个属性都有名称和值,使用 act_ge_property来保存这些属性,该表有以下三个字段。
CREATE TABLE `act_ge_property` ( `NAME_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '属性名称,varchar类型。', `VALUE_` varchar(300) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '属性值,varchar类型', `REV_` int DEFAULT NULL COMMENT '数据的版本号', PRIMARY KEY (`NAME_`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin
2.2:流程存储表
流程引擎使用仓储表来保存流程定义和部署信息这类数据,存储表名称以“ACT_RE”开头,“RE”是repository 单词的缩写。
2.2.1:部署数据表 ACT_RE_DEPLOYMENT
在Activiti中,一次部署可以添加多个资源,资源会被保存到资源表中(ACT_GE_BTYEARRAY),而对于部署,则部署信息会被保存到部署表中,部署表名称为ACT_RE_DEPLOYMENT,该表主要包含以下字段。
CREATE TABLE `act_re_deployment` ( `ID_` varchar(64) COLLATE utf8mb3_bin NOT NULL, `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '部署的名称,可以调用 Activiti 的流程存储API来设置,类型为varchar,长度为255字节。', `CATEGORY_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL, `KEY_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL, `TENANT_ID_` varchar(255) COLLATE utf8mb3_bin DEFAULT '', `DEPLOY_TIME_` timestamp(3) NULL DEFAULT NULL COMMENT '部署时间,类型为 timestamp。', `ENGINE_VERSION_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL, PRIMARY KEY (`ID_`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin
2.2.2:流程定义表 ACT_RE_PROCDEF
Activiti在部署添加资源时,如果发布部署的文件是流程文件(.bpmn或者.BPMN20.xml),则除了会解析这些流程文件,将内容保存到资源表外,还会解析流程文件的内容,形成特定的流程定义数据,写入流程定义表(ACT_RE_PROCDEF) 中。ACT RE PROCDEF表主要包含以下字段。
Create Table CREATE TABLE `act_re_procdef` ( `ID_` varchar(64) COLLATE utf8mb3_bin NOT NULL, `REV_` int DEFAULT NULL, `CATEGORY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '流程定义的分类,读取流程XML 文件中的 targetNamespace 值。', `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '流程定义名称,读取流程文件中 process 元素的 name 属性。', `KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '流程定义的key,读取流程文件中 process 元素的id 属性。', `VERSION_` int NOT NULL, `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 '流程定义对应的资源名称,一般为流程文件的相对路径。', `DGRM_RESOURCE_NAME_` varchar(4000) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '流程定义对应的流程图资源名称。', `DESCRIPTION_` varchar(4000) COLLATE utf8mb3_bin DEFAULT NULL, `HAS_START_FORM_KEY_` tinyint DEFAULT NULL, `HAS_GRAPHICAL_NOTATION_` tinyint DEFAULT NULL, `SUSPENSION_STATE_` int DEFAULT NULL COMMENT '表示流程定义的状态是激活还是中止,激活状态时该字段值', `TENANT_ID_` varchar(255) COLLATE utf8mb3_bin DEFAULT '', `ENGINE_VERSION_` varchar(255) COLLATE utf8mb3_bin DEFAULT NULL, PRIMARY KEY (`ID_`), UNIQUE KEY `ACT_UNIQ_PROCDEF` (`KEY_`,`VERSION_`,`TENANT_ID_`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin
2.3 身份数据表
Activiti的整个身份数据模块,可以独立于流程引擎而存在,有关身份数据的几张表,并没有保存与流程相关的数据及关联。身份表名称以 ACT_ID 开头, 表名中的“ID”是单词 identity 的缩写。
2.3.1 : 用户表 ACT_ID_USER
流程引擎用户的信息被保存在 ACT_ID_USER 表中,该表有以下几个字段。
CREATE TABLE `act_id_user` ( `ID_` varchar(64) COLLATE utf8mb3_bin NOT NULL, `REV_` int DEFAULT NULL, `FIRST_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '人名', `LAST_` 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。', PRIMARY KEY (`ID_`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin
2.3.2 : 用户账号(信息)表 ACT_ID_INFO
Activiti将用户、用户账号和用户信息分为三种数据,其中用户表保存用户的数据,而用 户账号和用户信息,则被保存到ACT_ID_INFO 表中,该表有以下字段。
CREATE TABLE `act_id_info` ( `ID_` varchar(64) COLLATE utf8mb3_bin NOT NULL, `REV_` int DEFAULT NULL, `USER_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '对应用户表的数据ID,但没有强制做外键关联', `TYPE_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '信息类型,当前可以设置用户账号(account)、用户信息(userinfo)和NULL', `KEY_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '数据的键,可以根据该键来查找用户信息的值。', `VALUE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '数据的值,类型为varchar,长度为255字节。', `PASSWORD_` longblob COMMENT '用户账号的密码字段,不过当前版本的 Activiti 并没有使用该字段。', `PARENT_ID_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '该信息的父信息ID,如果一条数据设置了父信息ID,则表示该数据是用户账号(信息)的明细数据,例如一个账号有激活日期,那么激活日期就是该账号的明细数据,此处使用了自关联来实现。', PRIMARY KEY (`ID_`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin
2.3.3 用户组表 ACT_ID_GROUP
使用 ACT_ID_GROUP表来保存用户组的数据,该表有以下几个字段。
CREATE TABLE `act_id_group` ( `ID_` varchar(64) COLLATE utf8mb3_bin NOT NULL, `REV_` int DEFAULT NULL, `NAME_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '用户组名称', `TYPE_` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL COMMENT '用户组类型,类型不由Activiti提供,但是在某些业务中,Activiti 会根据该字段的值进行查询,字段值由Activiti定义(如Activiti的WebService)。', PRIMARY KEY (`ID_`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin
2.3.4 关系表 ACT_ID_MEMBERSHIP
一个用户组下有多个用户,一个用户可以属于不同的用户组,那么这种多对多的关系,就使用关系表来进行描述,关系表为 ACT_ID_MEMBERSHIP,只有两个字段。
CREATE TABLE `act_id_membership` ( `USER_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '用户ID,不能为NULL', `GROUP_ID_` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL COMMENT '用户组ID,不能为NULL', PRIMARY KEY (`USER_ID_`,`GROUP_ID_`), KEY `ACT_FK_MEMB_GROUP` (`GROUP_ID_`), CONSTRAINT `ACT_FK_MEMB_GROUP` FOREIGN KEY (`GROUP_ID_`) REFERENCES `act_id_group` (`ID_`), CONSTRAINT `ACT_FK_MEMB_USER` FOREIGN KEY (`USER_ID_`) REFERENCES `act_id_user` (`ID_`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin
!
学问:纸上得来终觉浅,绝知此事要躬行
为事:工欲善其事,必先利其器。
态度:道阻且长,行则将至;行而不辍,未来可期
.....................................................................
------- 桃之夭夭,灼灼其华。之子于归,宜其室家。 ---------------
------- 桃之夭夭,有蕡其实。之子于归,宜其家室。 ---------------
------- 桃之夭夭,其叶蓁蓁。之子于归,宜其家人。 ---------------
=====================================================================
* 博客文章部分截图及内容来自于学习的书本及相应培训课程以及网络其他博客,仅做学习讨论之用,不做商业用途。
* 如有侵权,马上联系我,我立马删除对应链接。 * @author Alan -liu * @Email no008@foxmail.com
转载请标注出处! ✧*꧁一品堂.技术学习笔记꧂*✧. ---> https://www.cnblogs.com/ios9/