springboot郑和mysql_郑剑峰的个人博客 » SpringBoot Activiti6系列教程(二)-基于mysql数据库初始化..._伊红美兰的博客-程序员宅基地

技术标签: springboot郑和mysql  

数据库初始化

activiti默认采用内存数据库h2,作为本地测试是够了,但是作为测试环境,开发环境和生产环境,是远远不够的,我们需要使用更为强大和灵活的数据库,以下是zip包里提供的数据库创建脚本

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支持以下几种数据库

db2

h2

hsqldb

sql server

mysql

oracle

postgres

本次以mysql为例。

activiti提供两种方式进行数据库初始化,一种是通过脚本,一种是在libs/activiti-engine-6.0.0.jar中提供了DbSchemaCreate类用来创建数据库。一般开发人员无法拿到生产环境的数据库账号密码那么就需要提供脚本给dba执行,但如果有数据库的用户名密码,通过第二种更为方便。

不管通过哪种方式,都需要提前创建mysql数据库,以下就是创建数据库脚本参考(基于mysql 8.0.15)

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类型。

activiti.mysql55.create.engine.sql

activiti.mysql55.create.history.sql

activiti.mysql.create.identity.sql

DbSchemaCreate方式初始化

创建maven项目,引入依赖包

org.activiti

activiti-engine

6.0.0

mysql

mysql-connector-java

在src/resources文件夹下创建activiti.cfg.xml文件,文件名不可以更改,参考下面配置修改

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">

创建一个包含main方法的java类

public class DBCreate {

public static void main(String[] cmd) {

DbSchemaCreate.main(cmd);

}

}

运行程序DBCreate

如果执行成功,将会有28张表被创建,除了ACT_EVT_LOG表外,其他的都是业务表。

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开头,并且两个字母表示模块。

ACT_RE_*: RE表示repository(仓库),存储流程静态资源,如流程模型文件等

ACT_RU_*: RU表示runtime(运行时),存储activiti运行时产生的数据,比如实例信息,用户任务信息,job信息等,另外,当流程结束后,运行时数据将会被删除,以保证数据量尽可能少,保证性能。

ACT_ID_*: ID表示identity(认证),存储认证信息,比如用户,组等。

ACT_HI_*: HI表示history(历史),存储流程历史数据,比如实例信息,变量数据等。

ACT_GE_*: GE表示general(通用),存储通用数据。

应用信息修改

现在,我们创建好了所有的表,可以替换掉上一章节中部署的三个应用的数据库,下面介绍如何替换默认的数据库。

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接口。

e1a6104b4e391a90cef5e63366498841.png

总结

本文主要介绍了如何使用自定义的数据库,以mysql为例,其他数据库操作方式跟mysql类似,就需要读者自行研究。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_29767773/article/details/114000085

智能推荐

还不懂Redis?看完这个故事就明白了!_evoxwht的博客-程序员宅基地

文章目录前言一、Redis的诞生二、缓存过期 && 缓存淘汰三、缓存穿透 && 布隆过滤器四、缓存击穿 && 缓存雪崩前言本文转载:原文链接在这里推荐一个开源的代码,注释清晰,适合新手学习。地址:开源代码一、Redis的诞生你好,我是Redis,一个叫Antirez的男人把我带到了这个世界上。说起我的诞生,跟关系数据库MySQL还挺有渊源的。在我还没来到这个世界上的时候,MySQL过的很辛苦,互联网发展的越来越快,它容纳的数据也越来越多,用

Winform未捕获异常;Microsoft.NET Framework报错弹窗_winform程序报pca2_Zohar974的博客-程序员宅基地

你的主机中的软件中止了一个已建立连接;远程主机中断了一个连接。Microsoft.NETFramework报错弹窗_winform程序报pca2

计算机视觉(CV)前沿国际国内期刊与会议-程序员宅基地

计算机视觉(CV)前沿国际国内期刊与会议1.国际会议 2.国际期刊 3.国内期刊 4.神经网络 5.CV 6.数字图象 7.教育资源,大学 8.常见问题1. 国际会议现在,国际上计算机视觉方面的三大国际会议是ICCV, CVPR和ECCV,统称之为ICE。ICCV的全称是International Comference on Computer...

Cadence Allegro设置默认打开为空白PCB文件的方法_allegro17.4designer product choices-程序员宅基地

Cadence Allegro设置默认打开为空白PCB文件的方法问题描述:每次打开 Allegro软件的时候,软件会自动打开上一次设计过的PCB文件。解决方法:1、打开Setup—User preferences,如下图所示:2、 点击打开UI文件夹中的Browser的子文件夹,勾选nolast_file选项即可,设置如下图所示:***CSDN每天一个小技巧,觉得有用记得关注哦!*..._allegro17.4designer product choices

王垠:完全用Linux工作-程序员宅基地

一年前在回家的火车上用手机看到了这篇文章,被王垠所讲的深深的触动了,居然还有一种windows以外的操作系统,这种系统居然还可以做这么多有趣的事.正是这篇启蒙了我学习Linux,使用Linux!内容有些偏激,今天再次看到这篇对其中所说的内容又有了新的了解.我看的时候文章的题目叫>转载网址:http://www.cnbeta.com/articles/76147.htm王垠:完全用Linux_完全用linux工作

【详解】oracle11g_win64+instantclient11.2_win32+plsql+plsql汉化_instantclient-basic-nt-11.2.0.4.0-程序员宅基地

oracle11g_win64+instantclient11.2_win32+plsql+plsql汉化写在前面所需材料文件说明oracle(11g)安装:PLSQL安装:PLSQL连接oracle所需 简易客户端(instantclient-basic-nt-11)插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义..._instantclient-basic-nt-11.2.0.4.0

随便推点

vs2019nuget管理器_VS使用Nuget教程详解 Visual studio 安装第三方的组件库_小莫笔记的博客-程序员宅基地

官方主页的介绍如下:What is NuGet?NuGet is the package manager for .NET. The NuGet client tools provide the ability to produce and consume packages. The NuGet Gallery is the central package repository used by a..._vs 2019 nuget package manager

如何通过想窗口控件发消息模拟点击按键-程序员宅基地

1.首先获取控件的句柄使用FindWindow来获取窗口句柄,再通过FindWindowEx来获取控件句柄;如果知道控件ID的情况下,直接通过GetDlgItem获取句柄2.获取控件的ID可以通过GetDlgCtrlID来获取控件的ID,或者通过资源获取3.发按键消息SendMessage(hWnd, WM_COMMAND, MAKELONG(nID, BN_CLICKED

golang面试题(带答案)-程序员宅基地

1.下面代码输出什么,为什么 //make([]T, length, capacity) s1 := []int{1, 2, 3} fmt.Println(s1, "哈哈") //[1 2 3] s2 := s1 fmt.Println(s1, "哈哈") //[1 2 3] for i := 0; i < 3; i++ { s2[i] = s2[i] + 1 } fmt.Println(s1) //[2 3 4] fmt.Println(s2) //[2 3 4][1 2_golang面试题

启动IDEA报错Failed to create JVM. JVM Path:_failed to create jvm.jvm path_慕白Lee的博客-程序员宅基地

启动IDEA报错Failed to create JVM. JVM Path:一、报错信息二、修改配置信息idea64.exe.vmoptions1、检查最近是否修改idea64.exe.vmoptions信息2、检查中新增配置是否正确3、还原配置信息_failed to create jvm.jvm path

PageHelper分页失效问题(通过List流操作和手动分页来解决)_热心码民阿振的博客-程序员宅基地

在公司项目中,成绩查询的业务中有点逻辑在内,需要数据显示两层数据结构和数据筛选和处理,web端需要分页显示,前端展示组件是饿了么UI(Element UI),Java后端接口分页插件使用的是PageHelper。_pagehelper分页失效

小辉从0到入土java基础笔记(数组篇)-程序员宅基地

为了解决上面的问题: 使用数组就可以简化上面的操作,使用数组时只需要定义一个变量名ages,且数组中存储数据之间是有规律的,数据存储到数组中,会为每个数据添加一个编号(索引,下标,脚标), 此时数据之间就有了关系,就可以使用循环的方式取出每个元素.声明一个变量, 用于存储要找到的最大值, 可以先把数组中第一个位置元素之赋值给这个变量, 使用这个变量和数组的其他的元素一个一个比较, 如果数组元素比变量中之大,就把数组元素赋值给变量,否则不做任何操作. 循环结束, 变量中存储的就是最大值了;