序:相信很多小伙伴和我一样,很想入门activiti工作流,但是无耐 版本更新太快,网上资料鱼龙混杂,翻来覆去竟找不到一篇有点干货的文章,好了,废话不多说,先上效果,如不满意,直接关闭,节省大家时间
实例:
1.小明新建了一个请假流程,请假25天,启动该流程后,下一步经过排他网关,到达并行网关1号,然后将流程转到主任和老师
2.老师审批通过后,小明查看流程 如下
3.最终走完是这个样子
同时驳回效果是这个样子:
怎么样各位小伙伴,您满意吗,现在可以往下看了。
本工程主要采用的技术栈:(都很新、很前沿 ,有木有)
后端
- Springboot 版本 :2.1.5.RELEASE
- activiti7 版本 :7.1.0.M1
- Mybatis-Plus 版本 :3.1.1
- Shiro 版本: 1.3.2
前端采用
- 开源框架 layui模板 ok-admin (文章最后都会给出链接)
- 流程设计器采用最新的 bpmn-js
先说说后端吧,因为activiti7 集成的东西太多了,默认mybatis 作为持久层与数据库进行交互,默认使用security来控制权限,因为我们本工程使用的shiro ,所以要配置一下,让security的拦截全部放行就可以了。
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().permitAll().and().logout().permitAll()//配置不需要登录验证
.and().headers().frameOptions().sameOrigin() // 解决 frame because it set 'X-Frame-Options' to 'deny'
.and().csrf().disable() //关闭跨站请求伪造
;
}
}
Activiti7可以使用的设计器
要想非常方便的使用Activiti7框架,则必须要安装流程设计器插件,关于Activiti7流程设计器相关插件说明如下:
- activiti6 官方提供有Web设计器(Modeler设计器)。这个不需要进行安装,直接部署运行activiti-modeler模块即可使用。
- 官方提供有Eclipse开发工具流程插件。
- 官方提供有IntelliJ IDEA开发工具相关的流程插件(plugin 里面搜索 actiBPM 即可)
由于Activiti7新团队将开发重心放到了云Bpmn上,所以对于上述的几个流程设计器都不在进行维护。对于Eclipse开发工具的流程插件止步不前,几乎停滞更新和维护。这样就导致了开发人员使用Eclipse或者IntelliJ IDEA开发工具的流程插件有如下几个风险:
- Activiti7.x版本中的新增特性、新功能无法使用。
- 使用Activiti流程插件绘制的流程不一定完全可以在Activiti7框架中运行。
- Activiti流程插件(该插件对准的是5.x版本)。
- 使用IntelliJ IDEA开发工具的读者可以安装Activiti流程插件(actibpm)进行开发。但是无法享受Activiti7.x版本带来的的新功能。
Activiti7推荐使用的设计器
Activiti7开发团队已经完全抛弃了IntelliJ IDEA/Eclipse中的流程插件以及Modeler设计器。开始使用了bpmn.io提供的bpmn-js设计
效果:
对了,最终的pom 贴一下,供大家参考:
<?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 http://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.1.4.RELEASE</version>-->
<version>2.1.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.bzgwl</groupId>
<artifactId>mybatis_plus</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mybatis_plus</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<mybatisplus.version>3.1.1</mybatisplus.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--mybatis-plus 依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.1</version>
</dependency>
<!--mybatis-plus-generator-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatisplus.version}</version>
</dependency>
<!--thymeleaf springboot 默认引入2x-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<!--<version>3.0.0.RELEASE</version>-->
</dependency>
<!--去掉页面标签 强制闭合 依赖-->
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.22</version>
</dependency>
<!--mysql 驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
<!--java.lang.AbstractMethodError: Method com/mysql/jdbc/JDBC4ResultSet.getObject
(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object; is abstract-->
<!--<version>8.0.11</version>-->
<scope>runtime</scope>
</dependency>
<!--Lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.16</version>
</dependency>
<!--freemaker-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<!--引入fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.15</version>
</dependency>
<!-- spring整合shiro -->
<!-- maven会自动添加shiro-core,shiro-web依赖 -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-ehcache</artifactId>
<version>1.2.4</version>
</dependency>
<!--thymeleaf-extras-shiro H5 thymeleaf 引入shiro标签必备-->
<!--<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>-->
<dependency>
<groupId>com.github.theborakompanioni</groupId>
<artifactId>thymeleaf-extras-shiro</artifactId>
<version>2.0.0</version>
</dependency>
<!--Springboot热部署依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional><!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖myboot项目的项目如果想要使用devtools,需要重新引入 -->
</dependency>
<!--activity 依赖-->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>7.1.0.M1</version>
<exclusions>
<exclusion>
<artifactId>mybatis</artifactId>
<groupId>org.mybatis</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<!--fork : 如果没有该项配置则devtools不会起作用,即应用不会restart -->
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
</project>
源码分享地址:https://gitee.com/logwto/mybatis_plus(各位小伙伴,不求捐赠,只求一赞就是对我最大的支持!!)
站在巨人的肩膀上(鸣谢):
分享牛:https://blog.csdn.net/qq_30739519/article/details/92578594
ok-admin模板:
- 演示地址:http://ok-admin.xlbweb.cn/
- git源码地址:https://gitee.com/bobi1234/ok-admin (注意切换到2.0最新分支)
bpmn-io :https://bpmn.io/toolkit/bpmn-js/examples/