SpringBoot整合Flowable【01】- 初识工作流引擎

简介: 本文介绍了工作流的基本概念,重点讲解了BPM(业务流程管理)和BPMN 2.0(业务流程建模符号)的关系,以及工作流引擎的发展。BPM是一种管理思想,BPMN是实现该思想的工具。文中还介绍了Flowable、Activiti等主流工作流引擎,并详细说明了流程设计的五种方式,包括FlowableUI、BPMN.js自定义、第三方设计器和代码实现等。最后通过一个请假流程图解释了流程图的组成元素,如事件、连线、任务和网关,帮助读者更好地理解工作流的设计与实现。

一、认识工作流

1.认识BPM与BPMN

如果我们翻阅Flowable的文档,可以看到对于它会有一段这样的描述-“可用于部署BPMN2.0流程定义”,那么BPMN2.0又是个什么东东呢?下面我们简单介绍一下。

要知道BPMN2.0是什么,我们需要先了解下BPM(Business Process Management,业务流程管理)。它说白了就是一种管理方法,或者说是一种思想,主要是用来管理业务流程,我们如今的很多涉及到业务关系和流程的系统都可以称为BPM系统,比如你一定在大学期间做过的图书管理系统当然也属于这一类。

针对复杂的问题,我们通常的解决方法是对其进行模型化的抽象,通过模型来推导解决问题,也就是建模(这一过程也被称之为Business Process Modeling业务流程建模)。BPM下就有很多种建模语言,BPMN(Business Process Modeling Notation)就是其中的一种建模语言。

在BPMN发展的过程中,基于BPMN的一些特性与业务流程管理中常见的一些情况,总结提炼出了一套标准。这套标准或者也可称之为规范,在2004年5月由BPMI Notation Working Group对外发布,这就是BPMN 1.0 规范。后来BPMI并入到OMG组织,并在2011年推出BPMN2.0标准,对BPMN进行了重新定义 (Business Process Model and Notation),这就是我们常说的BPMN2.0。

总的来说,BPM是一种管理思想,而BPMN是实现这种思想的一种工具,它们之间的关系就像是方法论与方法的关系。BPMN作为一种建模语言,可以帮助我们更好地理解和实现BPM的目标。

2.工作流引擎的发展

工作流引擎则可用于部署BPMN 2.0流程定义,创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据。而基于BPMN2.0标准也产生了很多工作流引擎,例如ActivitiFlowablejBPM等。
1.png

Flowable功能最全面,Camunda最轻,我的这次系列教程打算使用的是Flowable。毕竟这几个引擎可以说就是一家子,只要一个会用,其他上手也是很快的。

通过这个流程图,我们可以大致了解到主流工作流引擎的发展史。我这个系列将使用的是 Flowable,所以后续的文章都会围绕 Flowable 展开。通过前面的介绍,我们可以把 Flowable 与BPMN的关系理解为:Flowable 是一个工具,它使用BPMN 2.0作为其流程定义的标准,通过解析BPMN 2.0定义的流程图,Flowable 可以创建、管理和执行这些流程。这样,Flowable 就能够帮助我们实现业务流程的自动化管理。

二、流程设计

对工作流引擎有了一定的认识后,我们就需要开始工作流里最重要的一个环节,那就是设计流程。有了设计的流程模型后,我们才可以通过Flowable进行后续的操作。目前流程设计有以下五种方式,大家根据自己的需要选择适合自己需求的方式。

1.FlowableUI(不推荐)

2.png
官方出品,与 Flowable 后台引擎逻辑对接非常好,元素及属性也是最全的。但是真的不适合业务中使用,界面不是太友好,参数设置不是很灵活,基本都是输入框,在实际业务场景中,用户看到你这套估计都头晕。并且官方在7.0中也已经移除了这套设计器,鼓励开发者根据规范去定制自己的流程设计器。当然,FlowableUI 也不是一无是处,在学习阶段我认为还是挺好用的,对我们入门学习还是蛮方便的。

2.BPMN.js自定义

当 FlowableUI 无法满足复杂的流程业务需求时,这个时候“大手子”就可以基于bpmn.js来自定义流程设计器。官网地址:https://bpmn.io/
3.png
感兴趣的同学可以参考中文学习文档:https://github.com/LinDaiDai/bpmn-chinese-document

3.第三方的设计器(推荐)

自己从0到1做当然是个很耗费心力的事情,所以直接用别人开源的设计器当然也是不错的选择,如果自己有定制化需求,那从1到10去改也相对容易了。
比如:https://gitee.com/MiyueSC/bpmn-process-designer

4.代码实现

这个方法我推荐业务自定义程度不高的同学去使用,直接在后端通过 BpmnModel 对象创建流程。

三、流程图的组成

为了便于读者理解,我这里简单绘制一个请假的流程图进行讲解:
4.png

1.事件

事件用于控制流程的执行、任务分配和流程终止等关键操作,比如上图中看到的两个圆圈就分别是开始事件和结束事件。

2.连线

连线定义了流程的流转路径,决定了流程实例如何从一个节点到达另一个节点。比如上图中将其他元素连在一起的线条。

3.任务

任务是流程中的关键组成部分,用于协调和管理流程实例的执行。比如上图中请假的那个节点,在Flowable 中每一个任务都可以配置表单对该任务的相关信息进行配置,例如处理人。

4.网关

网关用于控制流程的流向和分支。不同类型的网关具有不同的作用。常见的网关有排他网关、并行网关、包容网关。在上图中我并没有绘制网关,为了便于大家理解,我辅助说明下,比如在上图请假节点的责任人同意请假或拒绝请假分别有不同的任务流向,就在这个任务后加个网关进行判断,有些类似于代码中的if判断语句,当然这只是一种情况。

四、小结

作为系列文章的开篇,本篇文章主要是帮助读者对工作流引擎建立起一个初步的认识,在后续的篇章中我将使用Flowable帮助各位读者逐步学习如何在SpringBoot中进行整合和应用。

目录
相关文章
|
16天前
|
前端开发 Java API
SpringBoot整合Flowable【06】- 查询历史数据
本文介绍了Flowable工作流引擎中历史数据的查询与管理。首先回顾了流程变量的应用场景及其局限性,引出表单在灵活定制流程中的重要性。接着详细讲解了如何通过Flowable的历史服务API查询用户的历史绩效数据,包括启动流程、执行任务和查询历史记录的具体步骤,并展示了如何将查询结果封装为更易理解的对象返回。最后总结了Flowable提供的丰富API及其灵活性,为后续学习驳回功能做了铺垫。
27 0
SpringBoot整合Flowable【06】- 查询历史数据
|
16天前
|
存储 Java API
SpringBoot整合Flowable【02】- 整合初体验
本文介绍了如何基于Flowable 6.8.1版本搭建工作流项目。首先,根据JDK和Spring Boot版本选择合适的Flowable版本(7.0以下)。接着,通过创建Spring Boot项目并配置依赖,包括Flowable核心依赖、数据库连接等。然后,建立数据库并配置数据源,确保Flowable能自动生成所需的表结构。最后,启动项目测试,确认Flowable成功创建了79张表。文中还简要介绍了这些表的分类和常用表的作用,帮助初学者理解Flowable的工作原理。
125 0
SpringBoot整合Flowable【02】- 整合初体验
|
16天前
|
存储 Java 数据安全/隐私保护
SpringBoot整合Flowable【03】- 通过Flowable-UI体验一个简单流程
本文介绍了如何使用Flowable 7.0以下版本的flowable-ui进行流程建模、发布和执行。首先,通过解压并启动flowable-ui war包,访问http://localhost:8080/flowable-ui/idm/#/login登录系统。接着,创建并绘制一个简单的绩效流程模型,包含开始节点、任务节点(自评、上级评、隔级评)和结束节点,并为各节点分配处理人。然后,创建应用并发布绩效流程。最后,通过创建a、b、c三个用户分别完成各节点任务,演示了整个流程的执行过程。本文旨在帮助读者理解Flowable的基本操作和流程元素,后续将介绍通过Java代码控制流程的方法。
67 0
SpringBoot整合Flowable【03】- 通过Flowable-UI体验一个简单流程
|
16天前
|
前端开发 Java API
SpringBoot整合Flowable【07】- 驳回节点任务
本文通过绩效流程的业务场景,详细介绍了如何在Flowable工作流引擎中实现任务驳回功能。具体步骤包括:获取目标任务节点和当前任务节点信息,进行必要的判空和逻辑校验,调用API完成节点回退,并清理相关脏数据(如历史任务和变量)。最后通过测试验证了驳回功能的正确性,确保流程能够成功回退到指定节点并清除中间产生的冗余数据。此功能在实际业务中非常有用,能够满足上级驳回自评等需求。
33 0
|
16天前
|
存储 前端开发 Java
SpringBoot整合Flowable【05】- 使用流程变量传递业务数据
本文介绍了如何使用Flowable的流程变量来管理绩效流程中的自定义数据。首先回顾了之前的简单绩效流程,指出现有流程缺乏分数输入和保存步骤。接着详细解释了流程变量的定义、分类(运行时变量和历史变量)及类型。通过具体代码示例展示了如何在绩效流程中插入全局和局部流程变量,实现各节点打分并维护分数的功能。最后总结了流程变量的使用场景及其在实际业务中的灵活性,并承诺将持续更新Flowable系列文章,帮助读者更好地理解和应用Flowable。 简要来说,本文通过实例讲解了如何利用Flowable的流程变量功能优化绩效评估流程,确保每个环节都能记录和更新分数,同时提供了全局和局部变量的对比和使用方法。
45 0
|
16天前
|
XML 前端开发 Java
SpringBoot整合Flowable【04】- 通过代码控制流程流转
本文介绍了如何使用Flowable的Java API控制流程流转,基于前文构建的绩效流程模型。首先,通过Flowable-UI导出模型文件并部署到Spring Boot项目中。接着,详细讲解了如何通过代码部署、启动和审批流程,涉及`RepositoryService`、`RuntimeService`和`TaskService`等核心服务类的使用。最后,通过实际操作演示了流程从部署到完成的全过程,并简要说明了相关数据库表的变化。本文帮助读者初步掌握Flowable在实际业务中的应用,后续将深入探讨更多高级功能。
41 0
|
7天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue实现的留守儿童爱心网站设计与实现(计算机毕设项目实战+源码+文档)
博主是一位全网粉丝超过100万的CSDN特邀作者、博客专家,专注于Java、Python、PHP等技术领域。提供SpringBoot、Vue、HTML、Uniapp、PHP、Python、NodeJS、爬虫、数据可视化等技术服务,涵盖免费选题、功能设计、开题报告、论文辅导、答辩PPT等。系统采用SpringBoot后端框架和Vue前端框架,确保高效开发与良好用户体验。所有代码由博主亲自开发,并提供全程录音录屏讲解服务,保障学习效果。欢迎点赞、收藏、关注、评论,获取更多精品案例源码。
35 10
|
7天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue实现的家政服务管理平台设计与实现(计算机毕设项目实战+源码+文档)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
27 8
|
7天前
|
JavaScript 搜索推荐 Java
基于SpringBoot+Vue实现的家乡特色推荐系统设计与实现(源码+文档+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
19 8
|
7天前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生就业服务平台设计与实现(系统源码+文档+数据库+部署等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
33 6