栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021-09-30

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-09-30

Activiti 工作流学习笔记 一、简介

业务流程管理(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 

相关问题说明

  1. Application中标注,需要标注@SpringBootApplication(exclude = SecurityAutoConfiguration.class)如果没有exclude = SecurityAutoConfiguration.class无法启动出现此错误

    java.lang.IllegalArgumentException: Could not find class [org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration]
    

    **原因:**暂时未知,猜测是两者整合时需要的对security进行配置,且是必须要求的

  2. 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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/282569.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号