在 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基础全套视频教程。


    分享到:


    相關文章: