Activiti7工作流+Springboot快速入門

序:相信很多小夥伴和我一樣,很想入門activiti工作流,但是無耐 版本更新太快,網上資料魚龍混雜,翻來覆去竟找不到一篇有點乾貨的文章,好了,廢話不多說,先上效果,如不滿意,直接關閉,節省大家時間  

實例:

1.小明新建了一個請假流程,請假25天,啓動該流程後,下一步經過排他網關,到達並行網關1號,然後將流程轉到主任和老師

2.老師審批通過後,小明查看流程 如下

3.最終走完是這個樣子

同時駁回效果是這個樣子:

怎麼樣各位小夥伴,您滿意嗎,現在可以往下看了。

本工程主要採用的技術棧:(都很新、很前沿 ,有木有

後端

  1. Springboot       版本 :2.1.5.RELEASE  
  2. activiti7             版本 :7.1.0.M1
  3. Mybatis-Plus    版本  :3.1.1
  4. Shiro                版本: 1.3.2

前端採用

  1. 開源框架 layui模板  ok-admin  (文章最後都會給出鏈接)
  2. 流程設計器採用最新的 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模板:

  1. 演示地址:http://ok-admin.xlbweb.cn/
  2. git源碼地址:https://gitee.com/bobi1234/ok-admin (注意切換到2.0最新分支)

bpmn-io :https://bpmn.io/toolkit/bpmn-js/examples/

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章