SpringBoot3 + Flowable7 工作流引擎使用笔记

Flowable 简介

Flowable 由 Activiti 项目分支演变而来,用于构建和管理各种业务流程。其核心是一个通用的流程引擎,支持 BPMN 2.0(Business Process Model and Notation)标准,这是一种业务流程建模和执行的国际标准。Flowable 完全支持 BPMN 2.0,使得非技术人员也能参与流程的设计。

BPMN 是一种用于业务流程建模的标准化图形表示法。它定义了一套符号和规则,用于描述业务流程的各个方面,如任务、事件、网关等。BPMN 的目标是提供一种统一的、易于理解的图形化语言来表示业务流程。

BPMN 2.0是 BPMN 规范的2.0版本,是当前比较稳定且广泛使用的版本。

Flowable 7.x 是目前 Flowable 的最新版本,该版本基于 JDK 17,如果使用 Spring Boot 集成的话,需要 Spring Boot 的版本最少为 SpringBoot 3.x。

官方文档地址

流程设计器

安装

BPMN 定义了如何用符号来描述业务流程,这种符号组合在一起就是个模型,但是程序不能直接识别这些符号,因此 BPMN 规定使用 XML 格式来编码业务流程模型,这种编码形式称为 BPMN XML。

我们一般使用流程设计器画图业务流程模型,再导出为 BPMN 规范的 XML 文件,然后再使用。

Flowable 官方有提供一个名为 Flowable-UI 的东西,这是一个 Web 应用,可以直接在这上面设计业务流程,但是 Flowable-UI 从 Flowable 7 以后就没提供了,但是经过我的测试,用旧版本的UI 也可以实现对应功能,以下提供一个我目前使用版本的 Docker 命令:

docker run -p 8080:8080 flowable/flowable-ui:6.8.0

使用以下命令启动后,访问地址端口,可以看到以下界面:
flowable-ui
使用默认的用户名密码登录:

user: admin
password: test

flowable-ui登陆后的页面

使用

打开建模应用程序,可以看到以下界面:
在这里插入图片描述
点击创建流程,可以创建一个业务流程,其中模型 key 用于唯一标识一个业务流程模型,这个后面会有用的,模型名称可以重复:
在这里插入图片描述
创建完成后,进入流程的编辑页面:
在这里插入图片描述
编辑完成后,保存,查看模型,会进到这个界面,这里可以将模型导出成为XML:
在这里插入图片描述

SpringBoot 3 整合

使用 SpringBoot 整合,首先需要引入以下依赖:

<!-- https://mvnrepository.com/artifact/org.flowable/flowable-spring-boot-starter -->
<dependency>
	<groupId>org.flowable</groupId>
	<artifactId>flowable-spring-boot-starter</artifactId>
	<version>7.0.1</version>
</dependency>

由于 Flowable 运行需要数据库的支持,所以需要配置一个数据源:

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/flowable_test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 123456
    type: com.zaxxer.hikari.HikariDataSource
flowable:
  # 关闭定时任务JOB
  async-executor-activate: false
  # 在引擎启动时,如果数据库架构与 Flowable 引擎期望的架构不一致,Flowable 会自动更新数据库架构。这包括创建缺失的表和列,以及修改现有的表和列以匹配最新版本
  database-schema-update: true

配置数据源后,启动项目,Flowable会自动识别数据库,并帮你新建对应的表,大约有70个。

表结构

主要表前缀及其用途

  • ACT_RE_*:RE 代表 repository(存储)。这些表包含静态信息,如流程定义和流程的资源(图片、规则等)。RepositoryService 接口操作的表。
  • ACT_RU_*:RU 代表 runtime。这些表存储运行时信息,如流程实例、用户任务、变量、作业等。Flowable 只在流程实例运行中保存运行时数据,并在流程实例结束时删除记录,以保证运行时表小且快。RuntimeService 接口操作的表。
  • ACT_HI_*:HI 代表 history。这些表存储历史数据,如已完成的流程实例、变量、任务等。HistoryService 接口操作的表。
  • ACT_ID_*:ID 表示 identity(组织机构)。这些表包含标识的信息,如用户、用户组等。IdentityService 接口操作的表。
  • ACT_GE_*:通用数据表,用于存储各种情况下都可能需要的数据。

核心表

  • act_ge_bytearray:二进制数据表,用于存储流程定义、流程模板、流程图的图片等
  • act_re_deployment:记录部署操作的表,一次部署操作对应一条记录
  • act_re_procde:流程定义表,一次部署可以部署多个流程,一个流程对应一条记录
  • act_ru_task:存储运行中流程的任务节点信息,常用于查询人员或部门的待办任务。
  • act_ru_execution:运行时流程执行实例表,记录运行中流程运行的各个分支信息。
  • act_hi_procinst:历史流程实例表,存储流程实例历史数据(包含正在运行的流程实例)。

流程部署

  1. 导出流程模型 XML
  2. 通过 ProcessEngine 获取 RepositoryService,或直接注入 RepositoryService
    private ProcessEngine processEngine;
    private RepositoryService repositoryService;
    
    @Autowired
    public void setRepositoryService(RepositoryService repositoryService) {
         
        this.repositoryService = repositoryService;
    }
    
    @Autowired
    public void setProcessEngine(ProcessEngine processEngine) {
         
        this.processEngine = processEngine;
    }
    
    @Test
    public void test() {
         
        System.out.println(repositoryService != null && repositoryService == processEngine.getRepositoryService());
    }
    
  3. 部署流程图,一次部署可以部署多个
    @Test
    public void testDeploy(</
要在Spring Boot中引入Flowable的依赖,您可以添加以下Maven依赖项到您的项目的pom.xml文件中: ```xml <dependency> <groupId>org.flowable</groupId> <artifactId>flowable-spring-boot-starter</artifactId> <version>6.7.2</version> </dependency> ``` \[1\] 您还可以从Flowable的官方GitHub页面下载最新的源码文件,地址是:https://github.com/flowable/flowable-engine/releases/tag/flowable-6.7.2 \[2\] 在Flowable工作流开发中,有两种常见的方式来整合流程设计器。一种是使用Flowable官方提供的FlowableUI设计器,另一种是使用开源组件如LogicFlow或EasyFlow,或者使用bpmn.js自己处理流程设计。\[3\] #### 引用[.reference_title] - *1* [Flowable学习笔记(一):SpringBoot项目整合Flowable](https://blog.csdn.net/u012734723/article/details/128401929)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【第二十一篇】FlowableSpringBoot集成FlowableUI](https://blog.csdn.net/qq_38526573/article/details/124204304)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值