springboot郑和mysql_springboot2.0+activiti 7 整合(一)--初识activiti和创建数据库

一、初识activiti

因最近项目需求需要运用流程,选择使用activiti流程框架,网上大多是springboot2.0以下版本和activiti6.0的整合,因项目已经使用springboot2.0,所以记录整合activiti7的过程。

个人对activiti的印象:

1.activiti本身就是一个比较完整的应用程序,它包含数据库,API和前端;**可独立运行,详细可参考[activiti 6.0](https://www.activiti.org/get-started)的三个应用activiti-admin.war,activiti-app.war,activiti-rest.war(不要问我为啥不说7.0的,是因为我在官网没找到7.0的相关文档,6.0的反而非常全)

2.activiti只是流程框架;**关于原有项目与activiti整合,现在大致的想法是使用activiti的接口,创建和管理流程,具体的内容还是存在自己创建的数据库中。

二、创建activiti数据库

现在开始用,先跑起来再说:

2.1 pom.xml

springboot 版本:2.2.1.RELEASE

activiti 版本:7.1.0.M1

mysql 版本:5.1.30(很关键)

具体代码:

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.2.1.RELEASE

com.example

activiti-demo2

0.0.1-SNAPSHOT

activiti-demo2

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-starter-web

org.activiti

activiti-spring-boot-starter

7.1.0.M1

mysql

mysql-connector-java

5.1.30

org.springframework.boot

spring-boot-starter-jdbc

org.springframework.boot

spring-boot-maven-plugin

2.2 创建activiti.cfg.xml文件

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

2.3 创建activiti数据库

需要先在mysql数据库中创建名为“activiti”的数据库

2.4 创建main函数

package com.example.activitidemo2;

import org.activiti.engine.impl.db.DbSchemaCreate;

/**

* @Description: test

* @Author: zx

* @Time: 2019-11-20 09:25

**/

public class Test {

public static void main(String[] args) {

DbSchemaCreate.main(args);

}

}

运行main函数

2.5 创建成功

数据库表说明:

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

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

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

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

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

表只有25张,(activiti7没有ID类的表,不影响整合,本来也不想要identity部分)(activiti6是28张)

![activiti数据库](https://img-blog.csdnimg.cn/20191120170924833.png)

三、踩过的坑

3.1 Springboot和activiti版本问题

springboot2.0以上建议用activiti7.0以上,不然可能会遇到很多版本问题,activiti6出的时候springboot2.0还没出。

3.2 mysql和activiti版本问题

生成数据库表的时候一定不能用com.mysql.cj.jdbc.Driver驱动,原因是activiti暂时只支持com.mysql.jdbc.Driver,所以需要把mysql版本降低。

bug:

Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)

at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:85)

at com.mysql.cj.util.TimeUtil.getCanonicalTimezone(TimeUtil.java:132)

at com.mysql.cj.protocol.a.NativeProtocol.configureTimezone(NativeProtocol.java:2121)

at com.mysql.cj.protocol.a.NativeProtocol.initServerSession(NativeProtocol.java:2145)

at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:1310)

at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:967)

at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:826)

... 30 more

参考网站:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值