Activiti act_hi_数据库中identityylink 表死活没有数据,是啥问题呢?

扩展activiti删除ACT&HI&&历史表
activiti自带了很多表,如图:
ACT_HI_*:HI表示历史数据(History)表,包括过期的流程实例,过期的变量和过期的任务等。
历史表中没有创建外键,可以很好的控制历史表。
在项目中,有可能不需要保存历史记录,也就是这些ACT_HI_*表可以删除了。
删除ACT_HI_*历史表,重新启动项目后报错:
严重: Error while closing command context
org.activiti.engine.ActivitiException: Activiti database problem: Tables missing for component(s) history
at org.activiti.engine.impl.db.DbSqlSession.dbSchemaCheckVersion(DbSqlSession.java:713)
at org.activiti.engine.impl.db.DbSqlSession.performSchemaOperationsProcessEngineBuild(DbSqlSession.java:1097)
at org.activiti.engine.impl.SchemaOperationsProcessEngineBuild.execute(SchemaOperationsProcessEngineBuild.java:27)
at org.activiti.engine.mandExecutorImpl.execute(CommandExecutorImpl.java:24)
at org.activiti.engine.mandContextInterceptor.execute(CommandContextInterceptor.java:60)
at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:32)
at org.activiti.engine.impl.ProcessEngineImpl.&init&(ProcessEngineImpl.java:75)
at org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl.buildProcessEngine(ProcessEngineConfigurationImpl.java:311)
at org.activiti.engine.ProcessEngines.buildProcessEngine(ProcessEngines.java:194)
at org.activiti.engine.ProcessEngines.initProcessEnginFromResource(ProcessEngines.java:167)
at org.activiti.engine.ProcessEngines.init(ProcessEngines.java:98)
定位到错误地方:DbSqlSession.java
if (dbSqlSessionFactory.isDbHistoryUsed() && !isHistoryTablePresent()) {
errorMessage = addMissingComponent(errorMessage, "history");
这里主要的工作是检查数据库中是否有历史表,因为上面删除了数据库中的历史表所以报错了。
这里面有一个很重要的变量dbSqlSessionFactory.isDbHistoryUsed() ,从代码上面的意思也就是可以关闭使用历史表,好吧,就在创建配置文件的时候把它设置成false。
ProcessEngineConfiguration configuration = ProcessEngineConfiguration
.createProcessEngineConfigurationFromResourceDefault();
if(configuration instanceof ProcessEngineConfigurationImpl){
//这里的主要作用是为了,删除历史数据,在启动的时候不去检测历史数据库是否存在
((ProcessEngineConfigurationImpl) configuration).setDbHistoryUsed(false);
ProcessEngine processEngine = configuration.buildProcessEngine();
重新启动后还是有问题,后来debug跟进去发现在使用:
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
使用上面代码获取引擎的时候又一次去加载配置文件了,搞了半天,才发现:
ProcessEngines.getDefaultProcessEngine()获取默认的activiti引擎,首先会根据字段isInitialized判断是否已经加载了activiti配置文件,如果没有加载就去加载activiti.cfg.xml和activiti-context.xml,如果加载了,就在processEngines根据名称在获取相应的引擎。
使用 configuration.buildProcessEngine()创建activiti引擎的时候,加载了activiti配置文件,然后把创建的引擎添加到了工具类ProcessEngines的processEngines中。并没有设置字段isInitialized。
所以在项目中使用 ProcessEngines.getDefaultProcessEngine()获取默认的activiti引擎时候,第一次还会去加载配置文件信息。
这个怎么解决呢?
http://www.activiti.org/userguide/index.html 没有找到相应的信息。
后来想到activiti.cfg.xml中的配置信息需要加载到ProcessEngineConfigurationImpl中,应该是先解析,然后寻找相应属性的set方法进行赋值啊(我猜的)。那就通过配置文件设置吧:
&property name="dbHistoryUsed" value="false" /&
启动后项目,成功了,不在报错了。
Copyright (C) , All Rights Reserved.
版权所有 闽ICP备号
processed in 0.070 (s). 13 q(s)activiti数据库表结构剖析
http://www.blogjava.net/lewhwa/archive//339819.html
activiti数据库表结构剖析
1、结构设计
1.1、&&&&逻辑结构设计
Activiti使用到的表都是ACT_开头的。
’RE’表示repository(存储),RepositoryService接口所操作的表。带此前缀的表包含的是静态信息,如,流程定义,流程的资源(图片,规则等)。
‘RU’表示runtime,运行时表-RuntimeService。这是运行时的表存储着流程变量,用户任务,变量,职责(job)等运行时的数据。Activiti只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录。这就保证了这些运行时的表小且快。
’ID’表示identity (组织机构),IdentityService接口所操作的表。用户记录,流程中使用到的用户和组。这些表包含标识的信息,如用户,用户组,等等。
’HI’表示history,历史数据表,HistoryService。就是这些表包含着流程执行的历史相关数据,如结束的流程实例,变量,任务,等等
全局通用数据及设置(general),各种情况都使用的数据。
1.2、&&&&所有表的含义
act_ge_bytearray
二进制数据表
& & act_ge_property
属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录,
act_hi_actinst
历史节点表
act_hi_attachment
历史附件表
act_hi_comment
历史意见表
act_hi_identitylink
历史流程人员表
act_hi_detail
历史详情表,提供历史变量的查询
act_hi_procinst
历史流程实例表
act_hi_taskinst
历史任务实例表
act_hi_varinst
历史变量表
act_id_group
用户组信息表
act_id_info
用户扩展信息表
act_id_membership
用户与用户组对应信息表
act_id_user
用户信息表
act_re_deployment
部署信息表
act_re_model
流程设计模型部署表
act_re_procdef
流程定义数据表
act_ru_event_subscr
throwEvent、catchEvent时间监听信息表
act_ru_execution
运行时流程执行实例表
act_ru_identitylink
运行时流程人员表,主要存储任务节点与参与者的相关信息
act_ru_job
运行时定时任务数据表
act_ru_task
运行时任务节点表
act_ru_variable
运行时流程变量数据表
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。ACTIVITI 研究系列 —— 数据库设计(基于5.16.4)
17:15:21 请关注唯心的个人微信公众号:craft6-cn(中划线,也可以搜索:领域驱动业务建模) 一、ACTIVITI 数据库E-R图(5.16.4)&&&&Activiti 5.16.4 总共有24张表,增加act_evt_log(事件日志),以及增加了对SasS的支持。在流程定义、运行实例和历史的多张表增加&TENANT_ID_ (租户ID)字段。& & 为了方便对ACTIVITI数据库设计有整体性的理解,我根据其数据表反过来制作了E-R图。 & &(图片比较大,可以右键复制图片网址,在独立的标签页打开查看)& & ACTIVITI的数据表命名非常规范,在Activiti的帮助文档中也有说明,可查看5.16版本的中文用户手册:& &&/docs/activiti/& & && & & &Activiti的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。ACT_ID_*: 'ID'表示identity。 这些表包含身份信息,比如用户,组等等。ACT_HI_*: 'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。ACT_GE_*:&通用数据, 用于不同场景下。ACT_EVT_*: EVT表示EVENT,目前只有一张表ACT_EVT_LOG,存储事件处理日志,方便管理员跟踪处理。二、ACTIVITI 数据库物理图整体(5.16.4)三、ACTIVITI 数据库 流程定义部分(三张表)四、ACTIVITI 数据库 流程实例部分(七张表)五、ACTIVITI 数据库 流程全局设置部分(两张表)六、ACTIVITI 数据库 流程历史部分(八张表)六、ACTIVITI 数据库 流程参与者部分(四张表)七、重点字段说明&&&&ACTIVITI的表的字段重复率比较高,一般弄清楚几张表后,其它的都差不多。##&公共字段:REV_ 乐观锁版本,ACT的表大多有这个字段,这是为了保证操作的独占性。当多个用户修改同一条记录时,& & 他们获取的REV_是一样的,但是其中一个用户保存了,这是REV_就改变了,然后其他用户保存就会因为REV_& & 已经过期不能修改了。PROC_DEF_ID_ 流程定义 IDPROC_INST_ID_ 流程实例 IDTASK_ID_ & & &节点实例 ID(或称任务实例 ID)EXECUTION_ID_ 执行实例 ID。TASK 和 EXECUTION 的 区别:TASK 待办任务;EXECUTION 执行路线。每个TASK 总会对应一个EXECUTION,但EXECUTION不一定对应一个TASK,EXECUTION是分支的执行路线。ACT_ID_ :节点 ID(即bpmn.xml中对节点的命名,如userTask1)TENANT_ID_:租户 ID,对SaaS平台的数据支持。FORM_KEY_: 表单业务键,表示该流程实例、任务实例 关联的表单。OWNER_ : 任务的所有者ASSIGNEE_ : 任务的签收人、代理人、受托人等。## 指定表的特殊字段:ACT_HI_COMMENT.TYPE_(类型):行为类型。值为下列内容中的一种:AddUserLink、DeleteUserLink、AddGroupLink、DeleteGroupLink、AddComment、AddAttachment、DeleteAttachmentACT_HI_DETAIL.TYPE_ (类型)&FormProperty,&& //专门存储表单变量ACT_HI_VARINST.TYPE_(类型)&VariableUpdate &//专门存储流程变量参数多张表的VAR_TYPE_ 数据类型jpa-entity、boolean、bytes、serializable(可序列化)、自定义type(根据你自身配置)、&CustomVariableType、date、double、integer、long、null、short、stringACT_RU_IDENTITYLINK.TYPE_ (参与者类型)& &assignee 、&&candidate 、&owner 、starter 、participantACT_RU_TASK.DELEGATION_ (委托类型)PENDING,RESOLVED。如无委托则为空
可通过扫描左侧二维码阅读本文。本站文章均为颜超敏原创,欢迎转载,请注明出处即可,转载可通过下面的社会化工具快速完成。
ACTIVITI 研究系列 —— 数据库设计(基于5.16.4) ACTIVITI研究,ACTIVITI工作流引擎,数据库设计 本文是Activiti 研究系列的第一篇文章,对ACTIVITI的数据表进行整理和中文翻译。
颜超敏,唯心六艺,,电子商务博客,电子商务研发,电商研发,电子商务研究,电商研究,电子商务专家,电商专家,电子商务知识,电商知识,电子商务教程,电商教程,电子商务模式,电子商务平台,电子商务商业模式,电子商务数据库设计,电商数据库设计,电子商务系统分析,Java架构设计,Java软件架构,B2C,O2O,o2o模式,o2o电子商务,o2o电子商务平台,中国电子商务,电子商务平台建设方案
粤ICP备号 Copyright @2014 -Activiti5.16.4数据库表结构
来源:博客园
一、ACTIVITI 数据库E-R图(5.16.4)
Activiti 5.16.4 总共有24张表,增加act_evt_log(事件日志),以及增加了对SasS的支持。
在流程定义、运行实例和历史的多张表增加 TENANT_ID_ (租户ID)字段。
为了方便对ACTIVITI数据库设计有整体性的理解,我根据其数据表反过来制作了E-R图。
 

 
 
(图片比较大,可以右键复制图片网址,在独立的标签页打开查看)
 
ACTIVITI的数据表命名非常规范,在Activiti的帮助文档中也有说明,可查看5.16版本的中文用户手册:
/docs/activiti/
Activiti的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。
ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
ACT_ID_*: 'ID'表示identity。 这些表包含身份信息,比如用户,组等等。
ACT_HI_*: 'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
ACT_GE_*: 通用数据, 用于不同场景下。
ACT_EVT_*: EVT表示EVENT,目前只有一张表ACT_EVT_LOG,存储事件处理日志,方便管理员跟踪处理。
二、ACTIVITI 数据库物理图整体(5.16.4)

 
 
三、ACTIVITI 数据库 流程定义部分(三张表)

 
四、ACTIVITI 数据库 流程实例部分(七张表)


五、ACTIVITI 数据库 流程全局设置部分(两张表)

 
六、ACTIVITI 数据库 流程历史部分(八张表)


七、ACTIVITI 数据库 流程参与者部分(四张表)

八、重点字段说明
ACTIVITI的表的字段重复率比较高,一般弄清楚几张表后,其它的都差不多。
 
## 公共字段:

REV_ 乐观锁版本,ACT的表大多有这个字段,这是为了保证操作的独占性。当多个用户修改同一条记录时,
他们获取的REV_是一样的,但是其中一个用户保存了,这是REV_就改变了,然后其他用户保存就会因为REV_
已经过期不能修改了。



PROC_DEF_ID_ 流程定义 ID



PROC_INST_ID_ 流程实例 ID



TASK_ID_
节点实例 ID(或称任务实例 ID)



EXECUTION_ID_ 执行实例 ID。
TASK 和 EXECUTION 的 区别:
TASK 待办任务;EXECUTION 执行路线。每个TASK 总会对应一个EXECUTION,但EXECUTION不一定对应一个TASK,EXECUTION是分支的执行路线。



ACT_ID_ :节点 ID(即bpmn.xml中对节点的命名,如userTask1)



TENANT_ID_:租户 ID,对SaaS平台的数据支持。



FORM_KEY_: 表单业务键,表示该流程实例、任务实例 关联的表单。



OWNER_ : 任务的所有者



ASSIGNEE_ : 任务的签收人、代理人、受托人等。



 
## 指定表的特殊字段:

ACT_HI_COMMENT.TYPE_(类型):
行为类型。值为下列内容中的一种:AddUserLink、DeleteUserLink、AddGroupLink、DeleteGroupLink、AddComment、AddAttachment、DeleteAttachment



ACT_HI_DETAIL.TYPE_ (类型)
 FormProperty,
//专门存储表单变量



ACT_HI_VARINST.TYPE_(类型)
 VariableUpdate
//专门存储流程变量参数



多张表的VAR_TYPE_ 数据类型
jpa-entity、boolean、bytes、serializable(可序列化)、自定义type(根据你自身配置)、
 CustomVariableType、date、double、integer、long、null、short、string



ACT_RU_IDENTITYLINK.TYPE_ (参与者类型)
assignee 、
candidate 、 owner 、starter 、participant



ACT_RU_TASK.DELEGATION_ (委托类型)
PENDING,RESOLVED。如无委托则为空



免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动

我要回帖

更多关于 act ru identitylink 的文章

 

随机推荐