Activiti继承自jBPM4,在表结构设计方面也遵循运行时与历史数据的分离,这样的设计可以快速读取运行时数据,仅当需要查询历史数据时再从专门的历史数据表中读取
1、通用数据表(RepositoryService)
以“act_ge”开头(general)
1.1、 act_ge_bytearray (资源表)
保存字符串、流程文件内容、流程图片。一次部署可以添加多个资源,资源会被保存到资源表(act_ge_bytearray)中。
1.2、act_ge_property(属性表)
工作流的id算法和版本 用来生成下一个主键信息
2、流程存储表(RepositoryService)
以"act_re"开头 (repository)
2.1、act_re_deployment(部署表)
流程部署表,一次部署可以添加多个资源,资源会被保存到资源表(act_ge_bytearray)中;而部署的信息,则保存到部署表中
2.2、act_re_procdef(流程定义表)
流程定义表,如果发布部署的文件是流程文件,除了将内容保存到资源表外,还会解析流程文件的内容,形成特定的流程定义数据,保存到此表中
3、身份表(identityService)
身份表以"act_id"开头 (identity)
3.1、act_id_user(用户表)
保存用户数据
3.2、act_id_info(用户信息表)
保存用户信息和用户账号
3.3、act_id_group(用户组)
用于保存用户组信息
3.4、act_id_membership(用户用户组关系表)
表格字段:
USER_ID 用户id 非空
GROUP_ID 用户组id 非空
4、流程运行时的数据表
以"act_ru"开头(runtime)
用来保存流程在运行过程中产生的数据,例如 流程实例、执行流、任务
4.1、act_ru_execution(流程实例表)
当流程启动后,会产生一个流程实例,同时会产生相应的执行流,那么流程实例和执行流数据均会被保存到act_ru_execution表中流程启动一次只要没有执行完,就会有一条数据
本次任务完成则会删除在act_ru_execution表中的数据
4.2、act_ru_task(流程任务表)
保存流程在运行过程中所产生的任务数据
4.3、act_ru_variable( 正在执行的流程变量表)
用来保存在整个流程执行过程中用到的变量信息。例如流程实例参数、执行流参数和任务参数
5、历史数据表(HistoryService)
5.1、act_hi_procinst(流程实例表)
保存流程的历史数据。只要流程被启动,就会将流程实例的数据写入act_hi_procinst。act_hi_procinst除了记录基本的流程字段外,还会记录流程的开始活动的id、结束活动的id、开始时间、结束时间。有结束时间也是可以作为判断流程已经结束的标志。
5.2、act_hi_detail(流程明细表)
记录流程执行过程中的参数或者表单数据。将流程引擎的历史数据配置为full,Activiti则会保存流程明细数据
5.3、act_hi_taskinst(历史任务表)
5.4、act_hi_actinst(历史行为表)
5.5、act_hi_attachment(附件表)
5.6、act_hi_comment(评论表)
6、DMN规则引擎表
6.1、act_dmn_deployment(决策部署表)
保存决策数据,类似于流程定义部署,每一次部署,可以添加多份决策文件,向部署表中写入一条部署数据
6.2、act_dmn_decision_table(决策表)
可以将决策看做流程定义,决策文件中保存着决策表,部署时会解析决策文件中的决策模型并将其保存到act_dmn_decision_table中
6.3、act_dmn_deployment_resource(部署资源部)
类似于流程引擎资源部
Activiti在删除流程定义、删除任务和删除流程实例时,均会将删除的数据保存到历史数据中,初次外,已经完成的流程实例以及相关数据,都会保持到历史数据中,如果要对这些数据进行管理的话,就需要用到HistoryService组件了。
,Activiti在整个流程执行过程中,会把所有相关的信息,都向历史表中保存,因此HistoryService该组件的查询方法特别的丰富
使用HistoryService的createHistoricProcessInstanceQuery()方法就可以得到HistoricProcessInstanceQuery对象,该对象主要用于流程实例的历史数据查询。对于流程实例,不管流程是否完成,都会保存到ACT_HI_PROCINST表中