前言:本篇文章适合有基础的开发者阅读(按道理说能读到这篇文章的都是有基础的-.-),所以一些常识的地方我就省略掉了,如有不懂的请在评论区留言,我会定期回复。
Activiti7是需要依赖于Security框架的,本文使用的是Security的默认配置,大家后面需要自己配置一下。
Activit7画流程图分为两个方式,第一个是直接在IDEA中画流程图,第二个是在浏览器上画流程图。本文只讲第二种方式,因为更推荐使用第二种方式,第一种方式从IDEA2020版本开始就不再维护(actiBPM)该插件了,而且该插件还有很多bug,还需要自己手动部署bpmn(流程)文件,这会大大降低我们的开发效率。如需要了解第一种方式的人比较多的话后期我会再出一篇第一种方式的教程。
好了,我们开始吧!
准备工作:
JDK:1.8
IDEA:2020版本以上
数据库:MySQL5.7
1. 创建Springboot项目:前面的命名那些就不讲了,最后一步的时候勾选下面的几个选项(Junit看自己需要勾选)
注:如果在项目初始化的时候mysql依赖报错,请移步第五步内容,把mysql依赖换一下
2. 配置application.properties:
# 应用名称
spring.application.name=自己的项目名称
# 应用服务 WEB 访问端口
server.port=8080
# 数据库驱动:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/改成自己的数据库名?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=UTC&nullCatalogMeansCurrent=true
# 数据库用户名&密码:
spring.datasource.username=账号
spring.datasource.password=密码
3.这时候项目基础搭建完了,自己写个controller启动项目测试一下能不能正常启动和访问(一定要测试一下):
在浏览器输入:localhost://8080/test 会跳转到-> localhost://8080/login 也就是如下界面,
用户名是user,密码在控制台中有(下下图)
密码在这:因为现在使用Security框架默认的配置,所以每启动一次密码都会变
登录成功后能正常看到返回的数据就说明项目搭建没问题了
4:再次配置application.properties:
#日志的相关配置
logging.level.root: info
#日志的相关配置
spring.activiti.history-level: full
spring.activiti.db-history-used: true
# spring-activiti
# 自动部署验证设置:true-开启(默认)、false-关闭
spring.activiti.check-process-definitions: false
5:配置pom文件:
<!--如果在初始化的时候mysql报错,使用这个依赖地址试一下-->
<!-- 连接MySQL数据库的依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<!-- 下面的这个依赖请先不要复制,按照文章正常流程走,走到这一步再添加该依赖 -->
<!--activiti7-->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>7.1.0.M4</version>
</dependency>
<dependency>
<groupId>org.activiti.dependencies</groupId>
<artifactId>activiti-dependencies</artifactId>
<version>7.1.0.M4</version>
<type>pom</type>
</dependency>
6:下载bpmnjs(核心步骤):把该文件拷贝到项目resources/resources(第二个resources是自己创建的)文件目录下:
阿里云盘地址:阿里云盘分享 提取码:oh74
7:如上步骤全部完成完成后就可以启动项目了。项目成功启动后数据库会自动添加25张Activiti7的相关数据表。这里我们需要自己再加两张表,一张是用户表(顺便再录入几条数据进去),一张是动态表单的数据存储表。还有一个修复Activiti7的M4版本缺失字段Bug
注:这里的user表是需要先配置Security框架才会用得到,如果你一直不配置的话就一直用不到
-- 创建user表
CREATE TABLE user(
`id` BIGINT(20) not null auto_increment,
`name` VARCHAR(32) DEFAULT null COMMENT '姓名',
`address` VARCHAR(64) DEFAULT NUll COMMENT '联系地址',
`username` VARCHAR(255) CHARACTER set utf8mb4 collate utf8mb4_bin DEFAULT NUll COMMENT '账号',
`passwoed` VARCHAR(255) CHARACTER set utf8mb4 collate utf8mb4_bin DEFAULT NUll COMMENT '密码',
`roles` VARCHAR(255) CHARACTER set utf8mb4 collate utf8mb4_bin DEFAULT NUll COMMENT '角色',
PRIMARY KEY (`id`)
)ENGINE=INNODB AUTO_increment=5 DEFAULT CHARSET=utf8;
-- 向user表插入数据 第五个参数是MD5加密后的密文,原始密码好像是1(我也忘了),可以自己去写个加密类然后生成加密后的密码来这把它替换掉
INSERT INTO `user` VALUES ('1', 'admincn', 'beijing', 'admin', '$2a$10$gw46pmsOVYO.smHYQ2jH.OoXoe.lGP8OStDkHNs/E74GqZDL5K7ki', 'ROLE_ACTIVITI_ADMIN');
INSERT INTO `user` VALUES ('2', 'bajiecn', 'shanghang', 'bajie', '$2a$10$gw46pmsOVYO.smHYQ2jH.OoXoe.lGP8OStDkHNs/E74GqZDL5K7ki', 'ROLE_ACTIVITI_USER,GROUP_activitiTeam,g_bajiewukong');
INSERT INTO `user` VALUES ('3', 'wukongcn', 'beijing', 'wukong', '$2a$10$gw46pmsOVYO.smHYQ2jH.OoXoe.lGP8OStDkHNs/E74GqZDL5K7ki', 'ROLE_ACTIVITI_USER,GROUP_activitiTeam');
INSERT INTO `user` VALUES ('4', 'salaboycn', 'beijing', 'salaboy', '$2a$10$gw46pmsOVYO.smHYQ2jH.OoXoe.lGP8OStDkHNs/E74GqZDL5K7ki', 'ROLE_ACTIVITI_USER,GROUP_activitiTeam');
-- 动态表单数据存储
CREATE TABLE `formdata` (
`PROC_DEF_ID_` varchar(64) DEFAULT NULL,
`PROC_INST_ID_` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`FORM_KEY_` varchar(255) DEFAULT NULL,
`Control_ID_` varchar(100) DEFAULT NULL,
`Control_VALUE_` varchar(2000) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 修复Activiti7的M4版本缺失字段Bug
ALTER table act_re_deployment add COLUMN project_release_version_ varchar(255) DEFAULT NULL;
ALTER table act_re_deployment add COLUMN version_ varchar(255) DEFAULT NULL
8:最后访问这个地址就可以开始画流程图了:http://localhost:8080/bpmnjs/dist/index.html
到这里项目整合就完成了。后续可能会出一篇启动流程流程实例和配置Security的文章(看情况而定)
谢谢大家阅读,如本文有错误请及时提出!