第一节:项目搭建、配置与初始化
1 项目准备
这是我的配置:
(1)jdk1.8.0_121
(2)apache-maven-3.5.2
(3)IDEA2020.3
(4)mysql5.7
(5)navicat11.2.7
有了这些之后:
1)在idea中要安装一个插件:Activiti BPMN visualizer:
安装成功后,打开idea将会看到如下:
2)建一个数据库:
3)建一个空白springboot项目,引入下列jar包:
spring-boot-starter-web、spring-boot-starter-web-services、mysql-connector-java、hutool-all、lombok、activiti-spring-boot-starter-basic、activiti-engine、activiti-spring、mybatis-plus-boot-starter。
此时pom.xml完整内容为:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.3</version>
<relativePath />
</parent>
<groupId>com.example.activiti</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo-activiti</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<activiti.version>6.0.0</activiti.version>
<mybatis-plus.version>3.4.2</mybatis-plus.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.6</version>
</dependency>
<!--activiti begin-->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>${activiti.version}</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>${activiti.version}</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring</artifactId>
<version>${activiti.version}</version>
</dependency>
<!-- mybatisPLUS-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
</dependencies>
<build>
<finalName>demo-activiti</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
我这里用的是springboot的web项目,所以引入spring-boot-starter-web,mybatisplus和mysql-connector-java是数据库用的,hutool是一个非常不错的工具包,activiti-engine是流程引擎核心包,activiti-spring是activiti与spring整合的包,activiti-spring-boot-starter-basic是springboot与activiti启动时的整合包。
综上,完整的项目结构为:
至此,基本配置完毕。
2 配置yml
基础的先配上:
server:
port: 8080
servlet:
context-path: /demo_activiti
spring:
#activiti流程引擎配置
activiti:
# 自动部署验证设置:true-开启(默认)、false-关闭
check-process-definitions: false
#完整的日志级别
history-level: full
#用历史表
db-history-used: true
# activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建。(开发时常用)
database-schema-update: true
#流程的文件为止前缀
process-definition-location-prefix: classpath:/processes/
#流程引擎启动不激活
async-executor-activate: false
#数据库配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/demo-activiti?useUnicode=true&nullCatalogMeansCurrent=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
username : root
password : 123456789
# mybatis-plus配置
mybatis-plus:
mapper-locations: classpath:/mapper/**/*.xml
global-config:
db-config:
id-type: auto
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
这里的datasource、mybatis部分我不做赘述了,一定把username和password配置正确,如果有疑问可以在评论区留言交流。
主要说一下spring的activiti集成部分。activiti与springboot集成的jar包中已经有了一些默认的基础配置,源代码在ActivitiProperties.java中。这个地方我解释一下,我不让系统自动部署流程,而且要让它生成activiti表结构;除此之外那些配置的意思,读者自己百度一下,如果有疑问可以在评论区或者单独跟我交流。
springboot的application配置好:
package com.example.activiti.demo;
import org.activiti.spring.boot.SecurityAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class})
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
3 启动项目
不出意外的话,应该是启动成功了,如果有意外的话,可以给我留言。
一定注意要加:**@SpringBootApplication(exclude = {SecurityAutoConfiguration.class})**如果是用@SpringBootApplication会报错找不到SecurityAutoConfiguration的!肯定很多人遇到这个坑的。
启动成功,看到下图:
恭喜你!
打开navicat看一下数据库,activiti表已经被初始化成功了:
一共28张表。
4 小结
这节我主要是说:
(1)基础环境的准备;
(2)整合springboot、activiti、mybatis的主要jar包;
(3)启动项目,自动生成activiti6的28张表。
细心而又睿智的读者已经发现,我开头说的Activiti BPMN visualizer插件还没说用途。Activiti BPMN visualizer是画流程图用的,在下一节,我会正式说一下如何画流程图、部署流程。还有,项目启动时生成了28张表,到底干嘛用的?未来就是要绕着28张表在反反复复的说、用、写。
谢谢大家看到这里,如果您有开发上面的难题,希望您能与我一起探讨,我是天赐我爱,谢谢。