zoukankan      html  css  js  c++  java
  • 基于MySQL的Activiti6引擎创建

    整个activiti6的搭建都是在spring boot2之上的,首先贴一下pom:

      <dependencies>
            <!-- 这是activiti需要的最基本的核心引擎 -->
            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-engine</artifactId>
                <version>6.0.0</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>1.1.11</version>
            </dependency>
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>23.0</version>
            </dependency>
    
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <version>1.3.176</version>
            </dependency>
    
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.6</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.27</version>
            </dependency>
            <!-- alibaba的druid数据库连接池 -->
            <!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.1.9</version>
            </dependency>
    
    
        </dependencies>

    引擎对象创建的方法,activiti给出了6中,我这记录了其中三种:

    首先是读取activiti默认配置文件(activiti.cfg.xml)的默认创建方式,即基于H2内存数据库:

     <!-- 1 基于H2内存数据库 的流程引擎配置,也是在什么都没配置时的默认配置-->
        <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
            <property name="jdbcUrl" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000;MVCC=TRUE" />
            <property name="jdbcDriver" value="org.h2.Driver" />
            <property name="jdbcUsername" value="sa" />
            <property name="jdbcPassword" value="" />
        </bean>

    这里建的测试方法:

    //1基于默认的引擎配置方式,基于默认xml配置与内存H2数据库
        @Test
        public void testConfig1(){
            ProcessEngineConfiguration configuration = ProcessEngineConfiguration
                    .createProcessEngineConfigurationFromResourceDefault();
            LOGGER.info("configuration = {}",configuration);
        }

    接着通过MySQL创建引擎对象,同样用到的是 .createProcessEngineConfigurationFromResourceDefault()方法

    不过配置文件需要修改为:

    <!-- StandaloneInMemProcessEngineConfiguration里面databaseSchemaUpdate默认为
        “create-drop”,即用时自动创建表,关闭时自动删除表(ps:对应库为空库,中必须无表)
               -->
        <bean id="processEngineConfiguration"
              class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
            <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti6unit?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false" />
            <property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
            <property name="jdbcUsername" value="root" />
            <property name="jdbcPassword" value="root" />
            <!--默认设置-->
            <!--<property name="databaseSchemaUpdate" value="create-drop" />-->

    同样的:

        @Test
        public void testConfig1(){
            //创建引擎
            ProcessEngineConfiguration configuration = ProcessEngineConfiguration
                    .createProcessEngineConfigurationFromResourceDefault();
            LOGGER.info("configuration = {}",configuration);
            //获取引擎
            ProcessEngine processEngine = configuration.buildProcessEngine();
            LOGGER.info("获取流程引擎 {}",processEngine.getName());
            //关闭引擎
            processEngine.close();
        }

    以上同属一种方法实现的创建。

    接着是直接创建流程对象的方式:

     //2直接创建引擎的方式,基于独立的流程引擎对象
        @Test
        public void testConfig2(){
            ProcessEngineConfiguration configuration = ProcessEngineConfiguration
                    .createStandaloneInMemProcessEngineConfiguration();
            LOGGER.info("configuration = {}",configuration);
            //configuration = org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration@1a84f40f
        }
        //如果是根据资源文件去加载的,那么他会通过spring去解析;如果我们默认创建一个独立的,那么他只是new出一个对象
        //所以test1、2 一个是依赖spring的一个是不依赖spring的,展示用内存数据库,但是生产时都用spring配置来构造引擎的

    这种方式不需要去编写资源文件。

    第三种方法是通过读取指定资源文件的方式来创建流程对象(这里给指定资源文件取名为activiti_druid.cfg.xml):

    <bean id="processEngineConfiguration"
              class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
     <!-- 这里设为true就不会在结束时删除表 -->
     <property name="databaseSchemaUpdate" value="true" />
    <!-- 使用连接池 -->
     <property name="dataSource" ref="dataSource" />
    </bean>
    
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
            <property name="url" value="jdbc:mysql://localhost:3306/activiti6unit?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false" />
            <property name="driverClassName" value="com.mysql.jdbc.Driver" />
            <property name="username" value="root" />
            <property name="password" value="root" />
            <property name="initialSize" value="1" />
            <property name="maxActive" value="10" />
            <property name="filters" value="stat,slf4j"/>
        </bean>

    测试类:

     @Test
        public void testConfig2(){
            //创建引擎,这里使用的不是默认的配置文件了所以需要改变获取方法
            ProcessEngineConfiguration configuration = ProcessEngineConfiguration
                   .createProcessEngineConfigurationFromResource("activiti_druid.cfg.xml");
            LOGGER.info("configuration = {}",configuration);
            //获取引擎
            ProcessEngine processEngine = configuration.buildProcessEngine();
            LOGGER.info("获取流程引擎 {}",processEngine.getName());
            //关闭引擎
            processEngine.close();
        }
  • 相关阅读:
    hdu 4027 Can you answer these queries? 线段树
    ZOJ1610 Count the Colors 线段树
    poj 2528 Mayor's posters 离散化 线段树
    hdu 1599 find the mincost route floyd求最小环
    POJ 2686 Traveling by Stagecoach 状压DP
    POJ 1990 MooFest 树状数组
    POJ 2955 Brackets 区间DP
    lightoj 1422 Halloween Costumes 区间DP
    模板 有源汇上下界最小流 loj117
    模板 有源汇上下界最大流 loj116
  • 原文地址:https://www.cnblogs.com/xk920/p/10675223.html
Copyright © 2011-2022 走看看