spring boot + Activiti 学习笔记整理

一、 七大接口

1.RepositoryService:提供一系列管理流程部署和流程定义的API。
2.RuntimeService:在流程运行时对流程实例进行管理与控制。
3.TaskService:对流程任务进行管理,例如任务提醒、任务完成和创建任务等。
4.IdentityService:提供对流程角色数据进行管理的API,这些角色数据包括用户组、用户及它们之间的关系。
5.ManagementService:提供对流程引擎进行管理和维护的服务。
6.HistoryService:对流程的历史数据进行操作,包括查询、删除这些历史数据。
7.FormService:表单服务。

二、28张表

在这里插入图片描述
1、act_ge_ 通用数据表,ge是general的缩写
2、act_hi_ 历史数据表,hi是history的缩写,对应HistoryService接口
3、act_id_ 身份数据表,id是identity的缩写,对应IdentityService接口
4、act_re_ 流程存储表,re是repository的缩写,对应RepositoryService接口,存储流程部署和流程定义等静态数据
5、act_ru_ 运行时数据表,ru是runtime的缩写,对应RuntimeService接口和TaskService接口,存储流程实例和用户任务等动态数据

三、 springboot的配置

#每次应用启动不检查Activiti数据表是否存在及版本号是否匹配,提升应用启动速度
spring.activiti.database-schema-update=false

databaseSchemaUpdate配置项可以设置流程引擎启动和关闭时数据库执行的策略。

falsefalse为默认值,设置为该值后,Activiti在启动时,会对比数据库表中保存的版本,如果没有表或者版本不匹配时,将在启动时抛出异常。
true设置为该值后,Activiti会对数据库中所有的表进行更新,如果表不存在,则Activiti会自动创建。
create-dropActiviti启动时,会执行数据库表的创建操作,在Activiti关闭时,执行数据库表的删除操作。
drop-createActiviti启动时,执行数据库表的删除操作在Activiti关闭时,会执行数据库表的创建操作。
#保存历史数据级别设置为full最高级别,便于历史数据的追溯
spring.activiti.history-level=full

对于历史数据,保存到何种粒度,Activiti提供了history-level属性对其进行配置。history-level属性有点像log4j的日志输出级别,该属性有以下四个值

none不保存任何的历史数据,因此,在流程执行过程中,这是最高效的
activity级别高于none,保存流程实例与流程行为,其他数据不保存
audit除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值
full保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括一些流程参数等

四、Activiti6.0数据库设计与模型映射

参照 数据库模型设计
流程部署后,会操作如下表
参照 数据表的操作

act_re_deployment:插入部署对象,仅记录部署名及部署时间

act_ge_bytearray:插入BPMN的两个文件(.bpmn和.png),包括部署ID

act_re_procdef:插入流程定义信息,包括部署ID,流程的Key和Name,版本,两个资源文件

select * from act_re_procdef; --流程定义
select * from act_re_deployment; -- 流程部署
select * from act_ge_bytearray; -- 存储二进制文件

六 、启动流程

1.根据流程定义的Key启动
	流程启动后,会创建“流程实例”和“任务”,而我们需要将我们的业务与流程实例进行绑定,这样才能确定我们的业务是使用的哪个流程实例。

	流程定义可以理解为一个流程的模板,只能有一个;而流程实例是根据流程定义生成的一个具体的实例,可以有多个,一个审批业务对应一个流程实例。
流程启动后,会操作如下表

act_ru_execution:执行流程实例表,核心,启动后会生成一个流程实例和待执行的任务节点

act_ru_task:用户任务表,待执行的任务

act_ru_identitylink:用户身份关系表,存储待执行任务的用户关系

act_hi_taskinst:历史用户任务表,存储所有已执行或待执行的用户任务历史

act_hi_procinst:历史流程实例表,存储流程实例

act_hi_actinst:历史活动节点表,存储所有已执行的节点(各类节点)

act_hi_identitylink:历史用户身份关系表,历史用户任务的关系表


select * from act_ru_execution; --执行流程实例表
select * from act_ru_task; -- 用户任务表
select * from act_ru_identitylink; -- 用户身份关系表
select * from act_hi_taskinst; -- 历史用户任务表
select * from act_hi_procinst; -- 历史流程实例表
select * from act_hi_actinst; -- 历史活动节点表
select * from act_hi_identitylink; -- 历史用户身份关系表

七、执行任务

1.查看我的任务列表
2.执行任务

执行任务后,会自动根据条件跳转到下一任务

执行任务后,表数据发生的变化

act_ru_execution:待执行的用户任务节点换成下一个用户任务节点

act_ru_task:当前待执行任务转历史,插入下一个任务

act_ru_identitylink:插入下一任务的用户关系

act_hi_taskinst:修改当前用户任务的完成时间,并插入一用户任务

act_hi_actinst:修改当前活动节点的完成时间,并插入下一个活动节点

act_hi_identitylink:插入下一任务的用户关系
3.任务结束

执行完最后一个节点后,流程会自动结束。

流程结束后,表格数据变化。

act_ru_execution:删除当前流程实例的运行时执行数据

act_ru_task:删除当前流程实例的运行时任务数据

act_ru_identitylink:删除当前流程实例的运行时用户关系数据

可通过如下方式判断流程实例是否结束
判断是否为null

流程实例与流程对象的区别:

(1)如果是单例流程,执行对象ID就是流程实例ID
(2)如果一个流程有分支和聚合,那么执行对象ID和流程实例ID就不相同
(3)一个流程中,流程实例只有1个,执行对象可以存在多个

流程变量
  1. 流程变量涉及到的数据库表:
act_ru_variable:正在执行的流程变量表
act_hi_varinst:流程变量历史表

流程变量在工作流中扮演着一个非常重要的角色。例如:请假流程中有请假天数、请假原因等一些参数都为流程变量的范围**。流程变量的作用域范围是只对应一个流程实例**。也就是说各个流程实例的流程变量是不相互影响的。流程实例结束完成以后流程变量还保存在数据库中(存放到流程变量的历史表中)

设置流程变量

我们有两种服务可以设置流程变量,TaskService【任务服务】和RuntimeService【运行时服务】
场景:

  1. 在流程开始的时候设置流程变量
  2. 在完成某个任务的时候设置流程变量
  3. 使用TaskService设置服务
  4. 使用RuntimeService设置服务

作用:

  1. 传递业务参数
  2. 动态指定代理人【我们快速入门的例子是固定在流程定义图上写上代理人的】
  3. 指定连接【决定流程往哪边走】

流程变量支持类型

如果我们使用JavaBean来作为流程的变量,那么我们需要将JavaBean实现Serializable接口。Javabean类型设置获取流程变量,除了需要这个javabean实现了Serializable接口外,还要求流程变量对象的属性不能发生变化,否则抛出异常。解决方案,固定序列化ID

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值