基於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();
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM