在 Spring Boot 項目中使用 activiti

鏈接:http://jvm123.com/2019/08/springboot-activiti.html

  • springMVC配置:
  • 1. 開始流程並“申請請假”(員工)
  • 2. 審批請假(老闆)
  • 3. 查詢記錄
  • 4. 前端展示和操作
  • 新建springBoot項目時勾選activiti,或者在已建立的springBoot項目添加以下依賴:

    <code><dependency>
    <groupid>org.activiti/<groupid>
    <artifactid>activiti-spring-boot-starter-basic/<artifactid>
    <version>6.0.0/<version>
    /<dependency>/<code>

    數據源和activiti配置:

    <code>server:
    port: 8081

    spring:
    datasource:
    url: jdbc:mysql://localhost:3306/act5?useSSL=true
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: root

    # activiti default configuration
    activiti:
    database-schema-update: true
    check-process-definitions: true
    process-definition-location-prefix: classpath:/processes/
    # process-definition-location-suffixes:
    # - **.bpmn
    # - **.bpmn20.xml
    history-level: full/<code>

    在activiti的默認配置中,process-definition-location-prefix 是指定activiti流程描述文件的前綴(即路徑),啟動時,activiti就會去尋找此路徑下的流程描述文件,並且自動部署;suffix 是一個String數組,表示描述文件的默認後綴名,默認以上兩種。

    springMVC配置:

    <code>package com.yawn.config;

    import org.springframework.context.annotation.Configuration;
    import org.springframework.format.FormatterRegistry;
    import org.springframework.http.HttpStatus;
    import org.springframework.web.servlet.config.annotation.*;

    /**
    * Created by yawn on 2017/8/5.
    */
    @EnableWebMvc
    @Configuration
    public class MvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
    registry.addResourceHandler("/templates/**").addResourceLocations("classpath:/templates/");
    super.addResourceHandlers(registry);
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/index");
    registry.addViewController("/user");
    registry.addRedirectViewController("/","/templates/login.html");
    // registry.addStatusController("/403", HttpStatus.FORBIDDEN);
    super.addViewControllers(registry);
    }
    }/<code>

    這裡配置靜態資源和直接訪問的頁面:在本示例項目中,添加了thymeleaf依賴解析視圖,主要採用異步方式獲取數據,通過angularJS進行前端數據的處理和展示。

    配置了數據源和activiti後,啟動項目,activiti 的各個服務組件就已經被加入到spring容器中了,所以就可以直接注入使用了。如果在未自動配置的spring環境中,可以使用通過指定bean的init-method來配置activiti的服務組件。

    以以下請假流程為例:

    在 Spring Boot 項目中使用 activiti

    1、開始流程並“申請請假”(員工)

    在 Spring Boot 項目中使用 activiti

    在此方法中,Vaction 是申請時的具體信息,在完成“申請請假”任務時,可以將這些信息設置成參數。


    2、審批請假(老闆)

    (1)查詢需要自己審批的請假

    在 Spring Boot 項目中使用 activiti

    在 Spring Boot 項目中使用 activiti

    老闆查詢自己當前需要審批的任務,並且將任務和參數設置到一個VacTask對象,用於頁面的展示。

    (2)審批請假

    在 Spring Boot 項目中使用 activiti

    同理,result是審批的結果,也是在完成審批任務時需要傳入的參數;taskId是剛才老闆查詢到的當前需要自己完成的審批任務ID。(如果流程在這裡設置分支,可以通過判斷result的值來跳轉到不同的任務)


    3、查詢記錄

    由於已完成的請假在數據庫runtime表中查不到(runtime表只保存正在進行的流程示例信息),所以需要在history表中查詢。

    (1)查詢請假記錄

    在 Spring Boot 項目中使用 activiti

    請假記錄即查出歷史流程實例,再查出關聯的歷史參數,將歷史流程實例和歷史參數設置到Vcation對象(VO對象)中去,即可返回,用來展示。

    在 Spring Boot 項目中使用 activiti

    此外,以上是查詢歷史流程實例和歷史參數後,設置VO對象的通用方法:可以根據參數列表中的參數,將與VO對象屬性同名的參數設置到VO對象中去。

    4、前端展示和操作

    (1)審批列表和審批操作示例

    在 Spring Boot 項目中使用 activiti


    在 Spring Boot 項目中使用 activiti


    在 Spring Boot 項目中使用 activiti

    對了,在這裡說一下,我目前是在職Java開發,如果你現在正在學習Java,瞭解Java,渴望成為一名合格的Java開發工程師,在入門學習Java的過程當中缺乏基礎入門的視頻教程,可以關注並私信我:01。獲取。我這裡有最新的Java基礎全套視頻教程。


    分享到:


    相關文章: