SpringBoot Activiti6系列教程(二)-基於mysql數據庫初始化

數據庫初始化

activiti默認採用內存數據庫h2,做爲本地測試是夠了,可是做爲測試環境,開發環境和生產環境,是遠遠不夠的,咱們須要使用更爲強大和靈活的數據庫,如下是zip包裏提供的數據庫建立腳本java

activiti.db2.create.engine.sql
activiti.db2.create.history.sql
activiti.db2.create.identity.sql
activiti.h2.create.engine.sql
activiti.h2.create.history.sql
activiti.h2.create.identity.sql
activiti.hsql.create.engine.sql
activiti.hsql.create.history.sql
activiti.hsql.create.identity.sql
activiti.mssql.create.engine.sql
activiti.mssql.create.history.sql
activiti.mssql.create.identity.sql
activiti.mysql.create.engine.sql
activiti.mysql.create.history.sql
activiti.mysql.create.identity.sql
activiti.mysql55.create.engine.sql
activiti.mysql55.create.history.sql
activiti.oracle.create.engine.sql
activiti.oracle.create.history.sql
activiti.oracle.create.identity.sql
activiti.postgres.create.engine.sql
activiti.postgres.create.history.sql
activiti.postgres.create.identity.sql

從腳本上看,activiti支持如下幾種數據庫mysql

  • db2
  • h2
  • hsqldb
  • sql server
  • mysql
  • oracle
  • postgres

本次以mysql爲例。web

activiti提供兩種方式進行數據庫初始化,一種是經過腳本,一種是在libs/activiti-engine-6.0.0.jar中提供了DbSchemaCreate類用來建立數據庫。通常開發人員沒法拿到生產環境的數據庫帳號密碼那麼就須要提供腳本給dba執行,但若是有數據庫的用戶名密碼,經過第二種更爲方便。spring

無論經過哪一種方式,都須要提早建立mysql數據庫,如下就是建立數據庫腳本參考(基於mysql 8.0.15)sql

CREATE DATABASE  activiti default charset utf8 COLLATE utf8_general_ci;

CREATE USER 'activiti'@'%' IDENTIFIED BY 'definesys';

GRANT ALL PRIVILEGES ON activiti.* TO 'activiti'@'%';

ALTER USER 'activiti'@'%' IDENTIFIED WITH mysql_native_password;
alter user 'activiti'@'%' identified by 'definesys';

FLUSH   PRIVILEGES;

sql腳本方式初始化

若是是經過腳本方式,將如下四個腳本依次執行便可數據庫

activiti.mysql.create.engine.sql
activiti.mysql.create.history.sql
activiti.mysql.create.identity.sql

若是mysql的版本低於5.6.4的話,須要執行如下幾個腳本,緣由是因爲5.6.4如下的mysql版本不支持timestamps類型。segmentfault

activiti.mysql55.create.engine.sql
activiti.mysql55.create.history.sql
activiti.mysql.create.identity.sql

DbSchemaCreate方式初始化

  • 建立maven項目,引入依賴包
<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-engine</artifactId>
    <version>6.0.0</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
  • 在src/resources文件夾下建立activiti.cfg.xml文件,文件名不能夠更改,參考下面配置修改
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
        <property name="databaseType" value="mysql"></property>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti"></property>
        <property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property>
        <property name="jdbcUsername" value="activiti"></property>
        <property name="jdbcPassword" value="definesys"></property>
    </bean>
</beans>
  • 建立一個包含main方法的java類
public class DBCreate {

    public static void main(String[] cmd) {
        DbSchemaCreate.main(cmd);
    }
}
  • 運行程序DBCreate

若是執行成功,將會有28張表被建立,除了ACT_EVT_LOG表外,其餘的都是業務表。api

ACT_EVT_LOG
ACT_GE_BYTEARRAY
ACT_GE_PROPERTY
ACT_HI_ACTINST
ACT_HI_ATTACHMENT
ACT_HI_COMMENT
ACT_HI_DETAIL
ACT_HI_IDENTITYLINK
ACT_HI_PROCINST
ACT_HI_TASKINST
ACT_HI_VARINST
ACT_ID_GROUP
ACT_ID_INFO
ACT_ID_MEMBERSHIP
ACT_ID_USER
ACT_PROCDEF_INFO
ACT_RE_DEPLOYMENT
ACT_RE_MODEL
ACT_RE_PROCDEF
ACT_RU_DEADLETTER_JOB
ACT_RU_EVENT_SUBSCR
ACT_RU_EXECUTION
ACT_RU_IDENTITYLINK
ACT_RU_JOB
ACT_RU_SUSPENDED_JOB
ACT_RU_TASK
ACT_RU_TIMER_JOB
ACT_RU_VARIABLE

數據庫表說明

全部表都是以ACT開頭,而且兩個字母表示模塊。tomcat

  • ACT_RE_*: RE表示repository(倉庫),存儲流程靜態資源,如流程模型文件等
  • ACT_RU_*: RU表示runtime(運行時),存儲activiti運行時產生的數據,好比實例信息,用戶任務信息,job信息等,另外,當流程結束後,運行時數據將會被刪除,以保證數據量儘量少,保證性能。
  • ACT_ID_*: ID表示identity(認證),存儲認證信息,好比用戶,組等。
  • ACT_HI_*: HI表示history(歷史),存儲流程歷史數據,好比實例信息,變量數據等。
  • ACT_GE_*: GE表示general(通用),存儲通用數據。

應用信息修改

如今,咱們建立好了全部的表,能夠替換掉上一章節中部署的三個應用的數據庫,下面介紹如何替換默認的數據庫。oracle

activiti-app

tomcat中,若是已經啓動過一次應用,tomcat會在webapps文件夾下建立一個和war包名稱相同的文件夾,而且將全部war包中的資源解壓到該文件夾中,由於只需修改解壓後文件夾中的內容便可。若是還未啓動,能夠用相似7-zip的解壓軟件進行修改。

修改文件activiti-app/WEB-INF/classes/META-INF/activiti-app/activiti-app.properties文件,默認配置的是h2數據庫的鏈接,將之修改成目標數據庫(這裏以mysql爲例)

datasource.driver=com.mysql.jdbc.Driver
datasource.url=jdbc:mysql://activitidb:3306/activiti?useUnicode=true&characterEncoding=utf8&useSSL=false
datasource.username=activiti
datasource.password=definesys
hibernate.dialect=org.hibernate.dialect.MySQLDialect
應用自帶的驅動爲 mysql-connector-java-5.1.30.jar,若是驅動版本不對,只需將該文件刪除,將指定的驅動拷貝至目錄 WEB-INF/lib目錄下便可,其餘數據庫驅動操做同樣。

activiti-admin

activiti-admin是經過rest接口獲取數據,由於不須要配置數據庫信息,只需配置rest接口的地址便可。

修改文件activiti-admin/WEB-INF/classes/META-INF/activiti-admin/activiti-admin.properties文件,修改以下配置

rest.app.name=Activiti app
rest.app.description=Activiti app Rest config
rest.app.host=http://localhost
rest.app.port=8080
rest.app.contextroot=activiti-app
rest.app.restroot=api
rest.app.user=admin
rest.app.password=test

rest.app.port端口默認是9999,須要修改成部署activiti-app的tomcat的端口號,其他的若是沒有作修改保持默認便可

activiti-rest

修改文件activiti-rest/WEB-INF/classes/db.properties文件

db=mysql
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://activitidb:3306/activiti
jdbc.username=activiti
jdbc.password=definesys

一樣,能夠將驅動拷貝至目錄WEB-INF/lib目錄下

成功啓動後,訪問http://localhost:8080/activiti-rest/docs/將打開activiti swagger api文檔,包含全部的rest接口。

總結

本文主要介紹瞭如何使用自定義的數據庫,以mysql爲例,其餘數據庫操做方式跟mysql相似,就須要讀者自行研究。

相關文章
相關標籤/搜索