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