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

相关文章
相关标签/搜索