业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。Activiti基于Apache许可的开源BPM平台.
activiti工作流执行需要包括工作流引擎、BPMN、数据库、activiti的配置文件(activiti.cfg.xml)。该框架的核心为28张数据库表、7大接口
1、工作流引擎ProcessEngine对象,这是Activiti工作的核心。负责生成流程运行时的各种实例及数据、监控和管理流程的运行。
2、BPMN业务流程建模与标注(Business Process Model and Notation,BPMN),描述流程的基本符号,包括这些图元如何组合成一个业务流程图(Business Process Diagram)
3、activiti的配置文件Activiti核心配置文件,配置流程引擎创建工具的基本参数和数据库连接池参数。
jdbcUrl: 数据库的JDBC URL。 jdbcDriver: 对应不同数据库类型的驱动。 jdbcUsername: 连接数据库的用户名。 jdbcPassword: 连接数据库的密码。 基于JDBC参数配置的数据库连接 会使用默认的MyBatis连接池。 下面的参数可以用来配置连接池(来自MyBatis参数): jdbcMaxActiveConnections: 连接池中处于被使用状态的连接的最大值。默认为10。 jdbcMaxIdleConnections: 连接池中处于空闲状态的连接的最大值。 jdbcMaxCheckoutTime: 连接被取出使用的最长时间,超过时间会被强制回收。 默认为20000(20秒)。 jdbcMaxWaitTime: 这是一个底层配置,让连接池可以在长时间无法获得连接时, 打印一条日志,并重新尝试获取一个连接。(避免因为错误配置导致沉默的操作失败)。 默认为20000(20秒)。4、数据库表
数据库表基于不同的命名格式分为四类
- ACT_RE_*: 'RE’表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。_
- ACT_RU_*: 'RU’表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。_
- ACT_ID_*: 'ID’表示identity。 这些表包含身份信息,比如用户,组等等。
- ACT_HI_*: 'HI’表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
- ACT_GE_*: 通用数据, 用于不同场景下,如存放资源文件。
表结构操作: 1:资源库流程规则表 1) act_re_deployment 部署信息表 2) act_re_model 流程设计模型部署表 3) act_re_procdef 流程定义数据表 2:运行时数据库表 1) act_ru_execution 运行时流程执行实例表 2) act_ru_identitylink 运行时流程人员表,主要存储任务节点与参与者的相关信息 3) act_ru_task 运行时任务节点表 4) act_ru_variable 运行时流程变量数据表 5)act_ru_deadletter_job 存储执行失败的任务表(异步) 6)act_ru_event_subscr 运行时事件 7)act_ru_job 运行时作业(异步) 8)act_ru_suspended_job 暂停运行的任务(异步) 9)act_ru_time_job 任务定时器表(异步) 3.3.3:历史数据库表 1) act_hi_actinst 历史节点表 2) act_hi_attachment 历史附件表 3) act_hi_comment 历史意见表 4) act_hi_identitylink 历史流程人员表 5) act_hi_detail 历史详情表,提供历史变量的查询 6) act_hi_procinst 历史流程实例表 7) act_hi_taskinst 历史任务实例表 8) act_hi_varinst 历史变量表 4:组织机构表:这四张表很常见,基本的组织机构管理,关于用户认证方面建议还是自己开发一套,组件自带的功能太简单,使用中有很多需求难以满足 1) act_id_group 用户组信息表 2) act_id_info 用户扩展信息表 3) act_id_membership 用户与用户组对应信息表 4) act_id_user 用户信息表 5:通用数据表 1) act_ge_bytearray 二进制数据表 2) act_ge_property 属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录, 6:其他 1)act_evt_log 事件日志表(实验性质) 2)act_procdef_info 流程定义信息表5、7大接口
ProcessEngine: 在Activiti中最核心的类,其他的类都是由他而来。可以通过 processEngine.get***service()获取以下service。
springboot直接使用这些service管理操作这些表。就不再需要 processEngine.get***service();
| Service | 管理的表 |
|---|---|
| RepositoryService | 通用类的表,提供一系列管理流程部署和流程定义的API。 |
| FormService | 通过表单提交的任务的服务类, |
| HistoryService | 历史记录表,对流程的历史数据进行操作,包括查询、删除这些历史数据。 |
| IdentityService | 用户信息表,提供对流程角色数据进行管理的API,这些角色数据包括用户组、用户及它们之间的关系。 |
| ManagementService | 自定义查询的服务类 managementService.executeCustomSql,提供对流程引擎进行管理和维护的服务。 |
| RuntimeService | 运行时相关表,在流程运行时对流程实例进行管理与控制。 |
| TaskService | 任务表, 可以查询 ACT_RU_ ACT_HI,对流程任务进行管理,例如任务提醒、任务完成和创建任务等。 |
activiti数据源
配置方式:添加配置类
package com.act.demo.config;
import org.activiti.spring.SpringAsyncExecutor;
import org.activiti.spring.SpringProcessEngineConfiguration;
import org.activiti.spring.boot.AbstractProcessEngineAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.PlatformTransactionManager;
import javax.sql.DataSource;
import java.io.IOException;
@Configuration
public class ActivitiConfig extends AbstractProcessEngineAutoConfiguration {
@Bean
@ConfigurationProperties(prefix = "spring.activiti.datasource")
public DataSource activitiDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
public SpringProcessEngineConfiguration springProcessEngineConfiguration(
PlatformTransactionManager transactionManager,
SpringAsyncExecutor springAsyncExecutor) throws IOException {
return baseSpringProcessEngineConfiguration(
activitiDataSource(),
transactionManager,
springAsyncExecutor);
}
}
在application.ymal中配置相关参数
spring:
activiti:
history-level: full #历史记录配置
check-process-definitions: false
相关问题说明
-
Application中标注,需要标注@SpringBootApplication(exclude = SecurityAutoConfiguration.class)如果没有exclude = SecurityAutoConfiguration.class无法启动出现此错误
java.lang.IllegalArgumentException: Could not find class [org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration]
**原因:**暂时未知,猜测是两者整合时需要的对security进行配置,且是必须要求的
-
activiti中check-process-definitions需要设置为false(注意false前有空格),即设置项目启动时不用检查流程文件,否则会报错
nested exception is java.io.FileNotFoundException: class path resource [processes/] cannot be resolved to URL because it does not exist。
解决方案:除设置false外,还可以在resources下新建processes文件夹,将bpmn、bpmn.xml或bpmn20.xml(随便一个可行的流程图文件)放入其中即可。
此时数据库会增加28张表。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dPD1IGnK-1632986655140)(C:Users80296670AppDataRoamingTyporatypora-user-imagesimage-20210930092234359.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pWFRGYUr-1632986655143)(C:Users80296670AppDataRoamingTyporatypora-user-imagesimage-20210930092252420.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DG9n7aoZ-1632986655144)(C:Users80296670AppDataRoamingTyporatypora-user-imagesimage-20210930092319110.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ubb7HoNZ-1632986655145)(C:Users80296670AppDataRoamingTyporatypora-user-imagesimage-20210930092343615.png)]
参考博客:
https://blog.csdn.net/qq877507054/article/details/60143099
https://blog.csdn.net/qinchao_mei/article/details/100661212



