Springboot整合Flowable流程引擎

这篇具有很好参考价值的文章主要介绍了Springboot整合Flowable流程引擎。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

Flowable是一个开源的工作流引擎,它基于Activiti引擎进行发展,Flowable主要用于为业务流程管理(BPM)和工作流的设计、操作、监控提供支持。

1. Flowable的主要表结构

1.1 通用数据表(通用表)

这类表在Flowable中主要提供存储通用类型数据的功能,如流程名称,创建时间等。如下是通用表的主要成员:

  • act_ge_bytearray:存储二进制数据,如流程定义文件,流程图等。
  • act_ge_property:存储系统全局属性,如数据库版本信息等。

1.2运行时数据表(runtime表)

这类表主要用于在流程运行过程中,存储实时的流程数据。如下是运行时数据表的主要成员:

  • act_ru_event_subscr:存储运行时事件订阅数据,如boundary事件等。
  • act_ru_execution:存储运行时流程实例,包括当前状态,子流程引用等。
  • act_ru_identitylink:存储运行时任务的参与者(用户与组)的关联关系。
  • act_ru_job:存储工作任务的相关数据,如执行时间,重试次数等。
  • act_ru_task:存储运行时任务数据,如所属流程实例,任务名称等。
  • act_ru_variable:存储运行时的流程变量数据。

1.3.历史数据表(history表)

这类表主要用于在流程完成后,存储历史的流程数据,如流程实例,任务,变量等。如下是历史数据表的主要成员:

  • act_hi_attachment:存储附件相关历史数据。
  • act_hi_comment:存储评论相关历史数据。
  • act_hi_detail:存储流程变量修改相关历史数据。
  • act_hi_identitylink:存储任务参与者相关历史数据。
  • act_hi_procinst:存储流程实例相关历史数据。
  • act_hi_actinst:存储活动节点相关历史数据。
  • act_hi_taskinst:存储任务实例相关历史数据。
  • act_hi_varinst:存储流程变量相关历史数据。

1.4. 身份数据表(identity表)

这类表主要用于存储组织机构和用户权限相关的数据。如下是身份数据表的主要成员:

  • act_id_group:存储用户组相关数据。
  • act_id_membership:存储用户与用户组的关联关系。
  • act_id_user:存储用户相关数据。

1.5. 流程定义数据表(repository表)

这类表主要用于存储流程定义相关的数据。如下是流程定义数据表的主要成员:

  • act_re_deployment:存储流程部署相关数据。
  • act_re_model:存储流程设计模型相关数据。
  • act_re_procdef:存储流程定义相关数据。

2.springboot整合flowable

2.1 流程定义

  • . 流程定义(Process Definition):流程定义是包含所有流程与审批步骤(任务节点、网关等)的XML文件,通常使用BPMN(Business Process Model and Notation) 2.0语言编写。这些文件在部署到Flowable引擎时会存储到数据库中,以便在运行时创建实例。

  • 数据库表:Flowable使用关系型数据库来存储审批流相关的信息。其中的相关表格如下:

    • ACT_RE_PROCDEF: 存储流程定义信息
    • ACT_RE_DEPLOYMENT: 存储部署信息
    • ACT_RU_TASK: 存储运行时任务信息
    • ACT_RU_EXECUTION: 存储运行时流程实例
    • ACT_HI_PROCINST: 存储历史流程实例
    • ACT_HI_ACTINST: 存储历史活动实例
    • ACT_HI_TASKINST: 存储历史任务实例
    • ACT_HI_DETAIL: 存储历史明细数据
    • ACT_HI_COMMENT: 存储审批评论数据

2.2 引入依赖


  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <flowable.version>6.7.2</flowable.version>
  </properties>
  <dependency>
     <groupId>org.flowable</groupId>
     <artifactId>flowable-spring-boot-starter</artifactId>
     <version>${flowable.version}</version>
   </dependency>
 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
     <!--flowable引擎自动配置-->
    <dependency>
      <groupId>org.flowable</groupId>
      <artifactId>flowable-spring-boot-starter</artifactId>
      <version>${flowable.version}</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.22</version>
    </dependency>

2.3 启动类

/**
 * 启动类
 *
 */
@SpringBootApplication
public class FlowableApplication
{
    public static void main( String[] args )
    {
        System.out.println("流程系统启动.................");
        SpringApplication.run(FlowableApplication.class,args);
        System.out.println("流程系统启动成功.................");
    }
}

2.4 启动服务

启动服务会在数据库自动创建flowable的表,可能会出现下边的错误。

2.4.1 启动错误,数据库驱动版本问题

nested exception is org.flowable.common.engine.api.FlowableException: Could not update Flowable database schema: unknown version from database: ‘6.8.0.0’
解决方法:
修改mysql驱动的版本为8.0.22

2.4.2 启动报错

Caused by: java.sql.SQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes atcom.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) ~[mysql-connector-java-8.0.22.jar:8.0.22] at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.22.jar:8.0.22]

项目mysql的版本5.6.51
导致上面报错的原因是由于InnoDB表的索引长度限制,在MySQL5.6版本后引入了参数innodb_large_prefix可以解决这个问题。该参数控制是否允许单列的索引长度超过767字节,有ON和OFF两个取值:
ON :Innodb表的行记录格式是Dynamic或Compressed的前提下,单列索引长度上限扩展到3072个字节
OFF:Innodb表的单例索引长度最多为767个字节,索引长度超出后,主键索引会创建失败,辅助索引会被截断成为前缀索引。
进行如下设置,重启mysql:

set global innodb_large_prefix = ON;
SET GLOBAL innodb_file_format=Barracuda;
SET GLOBAL innodb_file_per_table=ON;

2.4 下载BPMN插件

Springboot整合Flowable流程引擎
新建流程
Springboot整合Flowable流程引擎

Springboot整合Flowable流程引擎

文件的后缀名字 demo.bpmn20.xml

demo.bpmn20.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="DemoProcess" name="DemoProcess">
    <startEvent id="start"/>
    <sequenceFlow id="flow1" sourceRef="start" targetRef="userTask"/>
    <userTask id="userTask" name="User Task" flowable:assignee="${creator}"/>
    <sequenceFlow id="flow2" sourceRef="userTask" targetRef="end"/>
    <endEvent id="end"/>
  </process>
</definitions>

2.5 部署流程

/**
 * 流程部署
 */
@Component
public class ProcessDeployer {
    @Autowired
    private RepositoryService repositoryService;

    @PostConstruct
    public void init() {
        repositoryService.createDeployment()
                .addClasspathResource("demo.bpmn20.xml")
                .deploy();
    }
}

启动完成之后数据库表存储流程定义:=>ACT_RE_PROCDEF
Springboot整合Flowable流程引擎
存储部署表
Springboot整合Flowable流程引擎

2.6 启动流程

    //查询指定流程所有启动的实例列表
    @Autowired
    private RuntimeService runtimeService;
  /**
     * 启动
     * @param creator
     */
    public void startProcess(String creator) {
        Map<String, Object> variables = new HashMap<>();
        variables.put("creator", creator);
        runtimeService.startProcessInstanceByKey("demoProcess", variables);
    }

2.7 完成流程

根据用户获取用户任务以及审批流文章来源地址https://www.toymoban.com/news/detail-449706.html

    @Autowired
    TaskService taskService;

    //获取用户ID获取的任务列表
    public List<Task> getTasksAssignedToUser(String userId) {

        TaskQuery taskQuery = taskService.createTaskQuery().taskAssignee(userId);
        return taskQuery.list();
    }
    //用户处理流程列表
    public void completeTask(String taskId, boolean approved) {
        Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
        if (task != null) {
            Map<String, Object> variables = new HashMap<>();
            variables.put("approved", approved);
            taskService.complete(taskId, variables);
        }
    }

到了这里,关于Springboot整合Flowable流程引擎的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小白学流程引擎-FLowable(四) —Flowable UI应用程序详解

    环境版本:Flowable UI 6.7.2 1.1 Flowable-idm主要提供以下功能: 提供用户管理功能:可以添加用户、编辑用户、删除用户和密码修改功能 提供用户分组功能:提供用户组的创建、用户组的删除、添加删除用户到组功能,方便统一管理用户权限,是一个简化版的角色处理 提供权限管

    2024年02月09日
    浏览(63)
  • Activiti,Flowable,Camunda流程引擎对比

            市场上比较有名的开源流程引擎有osworkflow、jbpm、activiti、flowable、camunda。其中:Jbpm4、Activiti、Flowable、camunda四个框架同宗同源,祖先都是Jbpm4,开发者只要用过其中一个框架,基本上就会用其它三个。osworkflow目前功能简单,目前已处于不活跃状态,此处就不展开描

    2024年02月03日
    浏览(43)
  • Springboot整合Flowable6.x导出bpmn20

    项目源码仓库 BPMN2.0(Business Process Model and Notation)是一套业务流程模型与符号建模标准,以XML为载体,以符号可视化业务,支持精准的执行语义来描述元素的操作。 Flowable诞生于Activiti,是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定义,

    2023年04月18日
    浏览(34)
  • springboot,Flowable 流程实例的激活与挂起(一)

    要实现流程实例的挂起和激活,首先要知道什么是流程实例的挂起和激活。 挂起: ①一个定义好的 流程模板(流程定义) ,如果挂起了,那么就无法据此创建新的流程实例。 ② 一个 流程实例 如果挂起了,那么就无法执行流程中的任务。 激活: 就跟挂起是相反的。 1.查询

    2024年02月05日
    浏览(42)
  • Springboot +Flowable,详细解释啥叫流程实例(二)

    上一篇中学习了Flowable 中的流程模板(流程定义)的部署问题,这一篇来学习什么叫流程实例。 部署之后的流程模板,还不能直接运行,例如我们部署了一个请假流程,现在 张三想要请假,他就需要开启一个请假流程,李四 想请假,他也需要开启一个请假流程,这开启的请

    2024年02月02日
    浏览(36)
  • Springboot +Flowable,详细解释啥叫流程实例(一)

    上一篇中学习了Flowable 中的流程模板(流程定义)的部署问题,这一篇来学习什么叫流程实例。 部署之后的流程模板,还不能直接运行,例如我们部署了一个请假流程,现在 张三想要请假,他就需要开启一个请假流程,李四 想请假,他也需要开启一个请假流程,这开启的请

    2024年02月01日
    浏览(36)
  • Springboot +Flowable,通过代码绘制流程图并设置高亮

    通过代码绘制一张流程图,并设置成高亮。 首先先来看一下绘制出来的效果图,截图如下: 已经执行的节点和连线用红色标记出来,大致上就是这么一个效果。 将一个流程图绘制成图片,相关的 API 在 flowable 中其实都是有提供的,流程图片的绘制,是根据流程的定义来绘制

    2024年02月02日
    浏览(51)
  • springboot整合ES索引引擎

    1.创建springboot工程并导入相关的依赖 2.3.12.RELEASE 2.创建一个配置类,返回 RestHighLevelClient 修改一下版本 创建路径config包下的ESconfig类 3.测试 在Test中测试 结果: 判断索引是否存在 结果: 删除索引 结果: 在索引中添加文档 在entity包创建celebrity实体类 结果: 根据id查询文档内容 结

    2024年02月11日
    浏览(40)
  • SpringBoot整合模板引擎Thymeleaf(4)

    本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 在之前的教程中,我们介绍了Thymeleaf的基础知识。在此,以案例形式详细介绍Thymeleaf的基本使用。 要点概述: 1、在static下创建css文件夹用于存放css文件 2、在static下创建img文件夹用于存放图片文件 请在pom.xml文

    2024年02月10日
    浏览(48)
  • 【Springboot】SpringBoot基础知识及整合Thymeleaf模板引擎

    🌕博客x主页:己不由心王道长🌕! 🌎文章说明:spring🌎 ✅系列专栏:spring 🌴本篇内容:对SpringBoot进行一个入门学习及对Thymeleaf模板引擎进行整合(对所需知识点进行选择阅读呀~)🌴 ☕️每日一语:在人生的道路上,即使一切都失去了,只要一息尚存,你就没有丝毫理

    2023年04月23日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包