技术交流28群

服务热线

135-6963-3175

微信服务号

activiti相关表与操作说明 更新时间 2016-5-28 浏览2726次

Activiti数据库支持: 

Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。 

ACT_RE_*: ‘RE’表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。 

ACT_RU_*: ‘RU’表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。 

ACT_ID_*: ‘ID’表示identity。 这些表包含身份信息,比如用户,组等等。 

ACT_HI_*: ‘HI’表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。 

ACT_GE_*: 通用数据, 用于不同场景下,如存放资源文件。

序号表名说明
1act_ge_bytearray二进制数据表\记录发布资源文件信息
2act_ge_property属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录,
3act_hi_actinst历史节点表
4act_hi_attachment历史附件表
5act_hi_comment历史意见表
6act_hi_identitylink历史流程人员表
7act_hi_detail历史详情表,提供历史变量的查询
8act_hi_procinst历史流程实例表
9act_hi_taskinst历史任务实例表
10act_hi_varinst历史变量表
11act_id_group用户组信息表
12act_id_info 用户扩展信息表
13act_id_membership用户与用户组对应信息表
14act_id_user用户信息表
15act_re_deployment部署信息表
16act_re_model流程设计模型部署表
17act_re_procdef流程定义数据表
18act_ru_event_subscrthrowEvent、catchEvent时间监听信息表
19act_ru_execution运行时流程执行实例表
20act_ru_identitylink运行时流程人员表,主要存储任务节点与参与者的相关信息
21act_ru_job运行时定时任务数据表
22act_ru_task运行时任务节点表
23act_ru_variable运行时流程变量数据表

下面为act6.0新增表
24act_evt_log事件日志表
25act_ru_timer_job定时作业表
26act_ru_suspended_job挂起作业表
27act_ru_deadletter_job
28act_procdef_info

流程设计保存

act_re_model一条

act_ge_bytearray一条


流程资源发布

act_ge_bytearray(资源文件表)

存储流程定义相关的部署信息。即流程定义文档的存放地。每部署一次就会增加两条记录,一条是关于bpmn规则文件 的,一条是图片的(如果部署时只指定了bpmn一个文件,activiti会在部署时解析bpmn文件内容自动生成流程图)。 两个文件不是很大,都是以二进制形式存储在数据库中。

act_re_deployment(部署对象表)

存放流程定义的显示名和部署时间,每部署一次增加一条记录


act_re_procdef(流程定义表)

存放流程定义的属性信息,部署每个新的流程定义都会在这张表中增加一条记录。 

注意:当流程定义的key相同的情况下,使用的是版本升级 

act_ge_property(主键生成策略表)

流程定义表的主键规则也在此处定义。key:version:自动生成规则id


删除流程定义

因为删除的是流程定义,而流程定义的部署是属于仓库服务的,所以应该先得到RepositoryService如果该流程定义下没有正在运行的流程,则可以用普通删除。如果是有关联的信息,用级联删除。项目开发中使用级联删除的情况比较多,删除操作一般只开放给超级管理员使用。

启动流程

这里使用RuntimeService启动流程实例,操作数据库的act_ru_execution表,如果是用户任务节点,同时也会在act_ru_task添加一条记录 

在流程执行的过程中,创建的流程实例ID在整个过程中都不会变,当流程结束后,流程实例将会在正在执行的执行对象表中(act_ru_execution)被删除。

act_ru_execution表,#正在执行的执行对象表 任务结束的之前只有一个变化的字段是act_id


complete task操作

act_ru_task中数据会删除,并插入新的待办节点。

act_ru_execution表中该实例流程会更新节点。

act_hi_taskinst历史任务实例表会新增一条。

act_hi_actinst历史节点表会新增一条。


查询流程状态(判断流程正在执行,还是结束)

因为是查询流程实例,所以先获取runtimeService。

创建流程实例查询对象,设置实例ID过滤参数。

由于一个流程实例ID只对应一个实例,使用singleResult执行查询返回一个唯一的结果,如果结 果数量大于1,则抛出异常。

判断指定ID的实例是否存在,如果结果为空,则代表流程结束,实例在正在执行的执行对象表 中已被删除,转换成历史数据 。


按流程定义的规则执行一次的过程涉及的表

act_ru_execution: 正在执行的信息。

act_hi_procinst:已经执行完的历史流程实例信息。

act_hi_actinst:存放历史所有完成的活动。


任务涉及到的表Task

执行到某任务环节时生成的任务信息。

act_ru_task:正在执行的任务信息

act_hi_taskinst:已经执行完的历史任务信息


流程定义挂起与激活操作

ACT_RU_TIMER_JOB表的变化

ACT_RE_PROCDEF表SUSPENSION_STATE_字段的变化


个人任务组任务人员表

act_ru_identitylink表存放任务的办理人,包括个人任务和组任务,表示正在执行的任务。

act_hi_identitylink表存放任务的办理人,包括个人任务和组任务,表示历史任务。


角色组-人员相关表

act_id_group:角色组表。

act_id_user:用户表。

act_id_membership:用户角色表。


设计器扩展属性

ACT_DE_MODEL表中的model_editor_json字段值。


注意:

个人任务不需要签收就可以处理任务

组任务需要在处理前进行签收并完成(不签收会造成查不到历史


单实例任务

单实例组任务,一个人签收后别人看不见

多实例组任务,每个实例的单个人签收后,别人照样可以看见并进行签收审核