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
本次以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;
若是是經過腳本方式,將如下四個腳本依次執行便可數據庫
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
<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>
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>
public class DBCreate { public static void main(String[] cmd) { DbSchemaCreate.main(cmd); } }
若是執行成功,將會有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
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是經過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/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相似,就須要讀者自行研究。