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相似,就须要读者自行研究。