SpringBoot整合Activiti(一)
Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准,包括支持对象管理组(OMG),可以定义流程、执行流程并以不同方式对其实现运行。
一、应用Activiti
1、引入pom坐标
1 | <!-- activiti --> |
2、配置application.yml
1 | spring: |
3、运行项目即可自动创建所需要的的表
二、Activiti的表结构
Activiti工作流总共包含23张数据表,所有的表名默认以“ACT_”开头。
并且表名的第二部分用两个字母表明表的用例,而这个用例也基本上跟Service API匹配。
ACT_GE_* : “GE”代表“General”(通用),用在各种情况下;
ACT_GE_BYTEARRAY:通用的流程定义和流程资源
ACT_GE_PROPERTY:系统相关属性
ACT_HI_* : “HI”代表“History”(历史),这些表中保存的都是历史数据,比如执行过的流程实例、变量、任务,等等。Activit默认提供了
4种历史级别:
none: 不保存任何历史记录,可以提高系统性能;
activity:保存所有的流程实例、任务、活动信息;
audit:也是Activiti的默认级别,保存所有的流程实例、任务、活动、表单属性;
full:最完整的历史记录,除了包含audit级别的信息之外还能保存详细,例如:流程变量
ACT_ID_* : “ID”代表“Identity”(身份),这些表中保存的都是身份信息,如用户和组以及两者之间的关系。如果Activiti被集成在某一系统当中的话,这些表可以不用,可以直接使用现有系统中的用户或组信息;
ACT_RE_* : “RE”代表“Repository”(仓库),这些表中保存一些‘静态’信息,如流程定义和流程资源(如图片、规则等);
ACT_RU_* : “RU”代表“Runtime”(运行时),这些表中保存一些流程实例、用户任务、变量等的运行时数据。Activiti只保存流程实例在执行过程中的运行时数据,并且当流程结束后会立即移除这些数据,这是为了保证运行时表尽量的小并运行的足够快
三、Activiti创建运行流程的步骤
1、部署流程
1 | repositoryService.createDeployment() |
在部署一次流程之后,会自动创建一个流程实例
procdef表
deployment表
2、启动流程实例
1 | String key = "myProcess_1"; 流程实例的key |
启动流程实例后,会在task表里新增一行数据,这就是我们启动的流程
3、查看指定用户的待办任务
1 | //根据流程实例id获取流程信息 |
4、审核任务
1 | Task tasks = taskService.createTaskQuery().processInstanceId(t.getProcessInstanceId()).singleResult(); |