• 基于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();
        }
  • 相关阅读:
    东软中标清华大学一站式服务平台项目
    抢占DevOps制高点,东软UniEAP&SaCa平台强势崛起
    智慧监狱来了!SaCa EMM 助推现代监狱建设迈上新台阶
    移动金融办公威胁不断,这些坑千万别跳!
    比悲伤更悲伤的故事,那就是...
    这还是你见过的大学实验室吗?
    越智能?越危险?技术到底应不应该进步?
    新一代的IT实验室长啥样?
    产品“佩奇”闹元宵,新春点亮新网站
    危机四伏的千亿级金融放贷市场,我们能做什么?
  • 原文地址:https://www.cnblogs.com/xk920/p/10675223.html
Copyright © 2020-2023  润新知