• springboot项目集成activity


    1、按照上一篇博客,新建好springboot项目后,在项目pom.xml文件中添加activity依赖

    <dependency>
          <groupId>org.activiti</groupId>
          <artifactId>activiti-spring-boot-starter-basic</artifactId>
          <version>6.0.0</version>
    </dependency>
                    

    2、修改启动类,此时启动会发现有报错

    原因:springboot2.0不能与activiti6.0.0直接集成使用,因为activiti6.0.0出来的时候springboot2.0还没有出来,activiti6.0.0 支持springboot1.2.6以上,2.0.0以下的版本。

     解决办法:修改springboot启动类,详见https://www.jianshu.com/p/085580b3dda8

     3、流程文件

    在src/main/java/resources目录下新建processes目录,并在该目录下新增一个业务流程文件(默认以.bpmn20.xml或.bpmn为后缀名)(activity默认校验resources下的processes文件夹里的流程文件,如果没有processes目录并且目录下没有流程文件会报错class path resource [processes/] cannot be resolved to URL because it does not exist),
    可以在配置文件中配置spring.activiti.check-process-definitions=false,设置为不校验,这样就不会报错。参考https://www.jianshu.com/p/085580b3dda8
     
    4、修改activity默认的id生成策略。
    (1).activiti默认的ID生成策略在高并发场景下会出现ID重复的情况,因此在高并发场景下建议采用UUID的策略。
    (2).传统的spring在配置文件中添加idGenerator属性:
    <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
            <!-- UUID作为主键生成策略 -->
            <property name="idGenerator" ref="idGen" />
        </bean>

    (3).springboot中在配置类中修改idGenerator。

    需要写一个类实现IdGenerator,并重写getNextId()方法;
    activity也内置了一个实现类org.activiti.engine.impl.persistence.StrongUuidGenerator,生成的uuid是带'-'的
    package com.mycompany.myapp.config;
    
    import org.activiti.spring.SpringProcessEngineConfiguration;
    import org.activiti.spring.boot.ProcessEngineConfigurationConfigurer;
    import org.springframework.context.annotation.Configuration;
    
    import com.mycompany.myapp.utils.IdGen;
    
    /**
    * @author xuzhipeng
    * @date 2018-11-09 10:26:47
    * @since 1.0
    */
    @Configuration
    public class ActivitiConfig implements ProcessEngineConfigurationConfigurer {
    
        @Override
        public void configure(SpringProcessEngineConfiguration springProcessEngineConfiguration) {
            springProcessEngineConfiguration.setIdGenerator(new IdGen());
        }
    
    }
    package com.mycompany.myapp.utils;
    
    import java.util.UUID;
    
    import org.activiti.engine.impl.cfg.IdGenerator;
    
    /**
    * @author xuzhipeng
    * @date 2018-11-09 10:47:59
    * @since 1.0
    */
    public class IdGen implements IdGenerator{
    
        /**
         * 封装JDK自带的UUID, 通过Random数字生成, 中间无-分割.
         */
        public static String uuid() {
            return UUID.randomUUID().toString().replaceAll("-", "");
        }
    
        /**
         * Activiti ID 生成
         */
        @Override
        public String getNextId() {
            return IdGen.uuid();
        }
    
    }

    5、配置文件属性

    (1)spring.activiti.database-schema-update

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

    false:false为默认值,设置为该值后,Activiti在启动时,会对比数据库表中保存的版本,如果版本不匹配时,将在启动时抛出异常。
    true:设置为该值后,Activiti会对数据库中所有的表进行更新,如果表不存在,则Activiti会自动创建。
    create-drop:Activiti启动时,会执行数据库表的创建操作,在Activiti关闭时,执行数据库表的删除操作。
    drop-create:Activiti启动时,执行数据库表的删除操作在Activiti关闭时,会执行数据库表的创建操作。

    设置为true后启动应用,会在数据库里创建28张表,表创建好之后停止应用,设置为false,每次应用启动不检查Activiti数据表是否存在及版本号是否匹配,以提升应用启动速度

    (2)spring.activiti.history-level

    #保存历史数据级别设置为full最高级别,便于历史数据的追溯
    spring.activiti.history-level=full

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

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

    (3)spring.activiti.check-process-definitions

    #关闭activiti自动部署(使用流程设计器部署,不使用具体文件访问方式)
    spring.activiti.check-process-definitions=false

    6、集成在线流程设计器Activiti Modeler。

    (1)pom文件添加activiti-modeler依赖。

            <!-- https://mvnrepository.com/artifact/org.activiti/activiti-modeler -->
            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-modeler</artifactId>
                <version>5.22.0</version>
                <exclusions>
                    <exclusion>
                            <groupId>org.activiti</groupId>
                            <artifactId>activiti-bpmn-model</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

    (2)下载activiti5.22.0源码https://github.com/Activiti/Activiti/tree/activiti-5.22.0



  • 相关阅读:
    悟透JavaScript(理解js面向对象)(转)
    spark相关问题
    hive常见问题以及解析
    visual studio code添加leetcode插件
    阿里云oss的使用
    Poi工具类快速生成Ecxel(升级版)
    linux实现增量拷贝数据,代替scp
    nginx实现均衡负载
    idea 程序包不存在 解决办法
    通过word文件模板生成word文件
  • 原文地址:https://www.cnblogs.com/sanhao/p/12373242.html
Copyright © 2020-2023  润新知