SpringBoot + Flowable的使用

前言

我们在项目中需要使用到Flowable,鉴于之前对流程引擎并不是很了解,这里准备写一篇作为入门文章。

实践

这次例子是基于springboot + Flowable ,springboot 的版本是2.3.4.RELEASE,Flowable 的版本为6.3.0

1、依赖

<!--flowable工作流依赖-->
        <dependency>
            <groupId>org.flowable</groupId>
            <artifactId>flowable-spring-boot-starter</artifactId>
            <version>6.3.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
          <!-- 加载jdbc连接数据库 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!-- 加载mybatis jar包 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.2</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.10</version>
            <scope>compile</scope>
        </dependency>


2、依赖(主要添加数据库和flowable相关依赖)

server:
  port: 8082
spring:
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    type: com.zaxxer.hikari.HikariDataSource
    url: jdbc:mysql://localhost:3306/test_mybatis?serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    hikari:
      read-only: false
      #客户端等待连接池连接的最大毫秒数
      connection-timeout: 60000
      #允许连接在连接池中空闲的最长时间(以毫秒为单位)
      idle-timeout: 60000
      #连接将被测试活动的最大时间量
      validation-timeout: 3000
      #池中连接关闭后的最长生命周期
      max-lifetime: 60000
      #最大池大小
      maximum-pool-size: 60
      #连接池中维护的最小空闲连接数
      minimum-idle: 10
      #从池返回的连接的默认自动提交行为。默认值为true
      auto-commit: true
      #如果您的驱动程序支持JDBC4,我们强烈建议您不要设置此属性
      connection-test-query: SELECT 1
      #自定义连接池名称
      pool-name: myHikarCp

flowable:
  database-schema-update: false
    #关闭定时任务JOB
  async-executor-activate: false

3、如何定义xml
flowable建议采用业界标准BPMN2.0的XML来描述需要定义的工作流。所以我们需要在项目中创建一个流程定义,下面这个是我创建的一个xml定义,
在这里插入图片描述

很多文章上面并没有如何定义BPMN2.0的XML的操作(主要需要 tomcat 和下载flower)
(1) 下载tomcat

   [tomcat 下载官网](https://tomcat.apache.org/download-80.cgi)

(2) 下载flowable的zip文件

https://github.com/flowable/flowable-engine/releases/download/flowable-6.4.0/flowable-6.4.0.zip 下载flowable的zip文件

下载下来解压之后,我们把flowable-6.4.0/wars 下的所有war包复制到tomcat/webapps下面:
在这里插入图片描述

拷入
在这里插入图片描述

(3)登录编辑流程图

启动成功之后,可以登陆创建流程:http://localhost:8080/flowable-modeler :

默认账号密码:admin 密码 test

在这里插入图片描述
BPMN2.0 图有两个需要注意的地方,确定Flowable 中的审批,驳回放置内容(这里例子用的${taskUser} ,也可以用其他的,决定放置到那个地方)
在这里插入图片描述

这里判断之后走那个流程需要(${finishFlag==“NO”} 或者 ${finishFlag==“YES”} )选择走那个方向,这里的这两个都是自定义的
在这里插入图片描述

3、例子使用BPMN2.0的XML 文件例子

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.flowable.org/processdef">
  <process id="adviceApply" name="投诉建议" isExecutable="true">
    <documentation>投诉建议流程</documentation>
    <startEvent id="startEvent1" name="开始" flowable:formFieldValidation="true"></startEvent>
    <userTask id="customerService" name="客服代表" flowable:candidateGroups="${customerServiceId}" flowable:formFieldValidation="true"></userTask>
    <sequenceFlow id="sid-C443333F-D5FF-41E4-9F84-AA4B33BC57AB" sourceRef="startEvent1" targetRef="customerService"></sequenceFlow>
    <userTask id="department" name="部门领导" flowable:assignee="${taskUser}" flowable:formFieldValidation="true">
      <extensionElements>
        <modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
      </extensionElements>
    </userTask>
    <userTask id="support" name="专业主管" flowable:assignee="${taskUser}" flowable:formFieldValidation="true">
      <extensionElements>
        
  • 8
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值