activiti入门系列文章8 - 相关表与操作说明

Activiti数据库支持: 

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

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

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

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

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

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

序号 表名 说明
1 act_ge_bytearray 二进制数据表\记录发布资源文件信息
2 act_ge_property 属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录,
3 act_hi_actinst 历史节点表
4 act_hi_attachment 历史附件表
5 act_hi_comment 历史意见表
6 act_hi_identitylink 历史流程人员表
7 act_hi_detail 历史详情表,提供历史变量的查询
8 act_hi_procinst 历史流程实例表
9 act_hi_taskinst 历史任务实例表
10 act_hi_varinst 历史变量表
11 act_id_group 用户组信息表
12 act_id_info  用户扩展信息表
13 act_id_membership 用户与用户组对应信息表
14 act_id_user 用户信息表
15 act_re_deployment 部署信息表
16 act_re_model 流程设计模型部署表
17 act_re_procdef 流程定义数据表
18 act_ru_event_subscr throwEvent、catchEvent时间监听信息表
19 act_ru_execution 运行时流程执行实例表
20 act_ru_identitylink 运行时流程人员表,主要存储任务节点与参与者的相关信息
21 act_ru_job 运行时定时任务数据表
22 act_ru_task 运行时任务节点表
23 act_ru_variable 运行时流程变量数据表
下面为act6.0新增表
24 act_evt_log 事件日志表
25 act_ru_timer_job 定时作业表
26 act_ru_suspended_job 挂起作业表
27 act_ru_deadletter_job
28 act_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字段值。

注意:

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

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

单实例任务

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

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

Activiti社区交流群:839915498

你可能感兴趣的:(Activiti,java,OA,BPM,工作流)