《Flowable流程引擎从零到壹》Flowable流程引擎介绍和实战项目初始化流程引擎实例

article/2025/8/27 13:47:11

14天学习训练营导师课程:
邓澎波《Flowable流程引擎-基础篇【2022版】》
邓澎波《Flowable流程引擎-高级篇【2022版】》

学习笔记《Flowable流程引擎从零到壹》回城传送

❤️作者主页:小虚竹

❤️作者简介:大家好,我是小虚竹。Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主🏆,51CTO专家博主🏆

❤️技术活,该赏

❤️点赞 👍 收藏 ⭐再看,养成习惯

PC端左侧加我微信,进社群,有送书等更多活动!

文章目录

  • 前言
  • Flowable流程引擎
    • 介绍
    • Flowable与Activiti关系
  • 项目初始化流程引擎实例ProcessEngine
    • 必要的软件
    • 创建maven项目
    • pom引入依赖包
    • 初始化ProcessEngine流程引擎实例
      • 可能报错
        • 解决方案:
  • 总结
  • 参考

前言

今天学习的内容是Flowable框架介绍和实战项目初始化,和虚竹哥一起学习吧。

Flowable流程引擎

介绍

Flowable是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定义(用于定义流程的行业XML标准), 创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据,等等。

Flowable是BPMN的一个基于java的软件实现,不过Flowable不仅仅包括BPMN,还有DMN决策表和CMMN Case管理引擎,并且有自己的用户管理、微服务API等一系列功能,是一个服务平台。

Flowable与Activiti关系

在这里插入图片描述
从这个图可以看出来,Flowable 是 Activiti 的一个分支,同一个团队开发的。后来技术大佬跟公司不合,出来单干,研发了flowable。原公司继续在Activiti6的基础上开发7以及后面的版本。

项目初始化流程引擎实例ProcessEngine

官方手册

必要的软件

  • JDK 8+
  • IDE:可以自行选择用于Flowable开发的IDE。如果想要使用Flowable Designer,则需要Eclipse Mars或Neon。 后续章节会介绍。

创建maven项目

在这里插入图片描述
在这里插入图片描述
如图所示,maven项目创建完成。
在这里插入图片描述

pom引入依赖包

<dependency><groupId>org.flowable</groupId><artifactId>flowable-engine</artifactId><version>6.3.0</version>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.21</version>
</dependency>
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope>
</dependency>
  • Flowable流程引擎。使我们可以创建一个ProcessEngine流程引擎对象,并访问Flowable API。
  • 一个是MySQL的数据库驱动
  • junit单元测试包
    在这里插入图片描述

初始化ProcessEngine流程引擎实例

  • 这是一个线程安全的对象,因此通常只需要在一个应用中初始化一次。
  • ProcessEngine由ProcessEngineConfiguration实例创建
  • 通常使用一个配置XML文件创建ProcessEngineConfiguration
  • 也可以编程方式创建它

新创建一个mysql数据库:flowable-learn
在这里插入图片描述
不懂得怎么安装数据库的,可以看看这两篇:
SQL快速入门-安装MYSQL环境(多环境企业级指导)(sql 小虚竹)
mac安装mysql教程(docker版本)(sql 小虚竹)

数据库安装完成后,通过客户端去创建数据库就很简单了。
数据库创建完成后,表结构是空的。
在这里插入图片描述

package com.xiaoxuzhu.flowable.test;import org.flowable.engine.ProcessEngine;
import org.flowable.engine.ProcessEngineConfiguration;
import org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration;
import org.junit.Test;public class Test01 {/*** 获取流程引擎对象*/@Testpublic void testProcessEngine() {ProcessEngineConfiguration configuration = new StandaloneProcessEngineConfiguration();//数据库配置configuration.setJdbcDriver("com.mysql.cj.jdbc.Driver");configuration.setJdbcUsername("root");configuration.setJdbcPassword("123456");configuration.setJdbcUrl("jdbc:mysql://localhost:3306/flowable-learn?serverTimezone=UTC");//自动创建表结构-表不存在时configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);ProcessEngine processEngine = configuration.buildProcessEngine();System.out.println(processEngine);}
}

执行代码后,如图所示,成功。
在这里插入图片描述

看下数据库表结构,顺利创建成功:
在这里插入图片描述
在这里插入图片描述

可能报错

注意在mysql8.0中执行可能出现如下的错误:

table 'flowable-learn2.act_ge_property' doesn't exist

在这里插入图片描述

解决方案:

出现这种情况只需要在mysql的连接字符串中添加上nullCatalogMeansCurrent=true,设置为只查当前连接的schema库即可。

package com.xiaoxuzhu.flowable.test;import org.flowable.engine.ProcessEngine;
import org.flowable.engine.ProcessEngineConfiguration;
import org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration;
import org.junit.Test;public class Test02 {/*** 获取流程引擎对象*/@Testpublic void testProcessEngine() {ProcessEngineConfiguration configuration = new StandaloneProcessEngineConfiguration();//数据库配置configuration.setJdbcDriver("com.mysql.cj.jdbc.Driver");configuration.setJdbcUsername("root");configuration.setJdbcPassword("123456");configuration.setJdbcUrl("jdbc:mysql://localhost:3306/flowable-learn?serverTimezone=UTC&nullCatalogMeansCurrent=true");//自动创建表结构-表不存在时configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);ProcessEngine processEngine = configuration.buildProcessEngine();System.out.println(processEngine);}
}

在这里插入图片描述

总结

今天认识了什么是flowable流程引擎,也八卦了Flowable与Activiti关系,刺激,哈哈。

实战学习了项目初始化流程引擎实例和自动创建Flowable流程引擎的相关表结构。
从今天开始Flowable流程引擎的学习之路,一起学习,一起成长。

参考

官方手册
SQL快速入门-安装MYSQL环境(多环境企业级指导)(sql 小虚竹)
mac安装mysql教程(docker版本)(sql 小虚竹)

我是虚竹哥,我们下文见~


http://chatgpt.dhexx.cn/article/grHXN5ef.shtml

相关文章

流程引擎的架构设计

流程引擎的架构设计 1 什么是流程引擎 流程引擎是一个底层支撑平台&#xff0c;是为提供流程处理而开发设计的。流程引擎和流程应用&#xff0c;以及应用程序的关系如下图所示。 常见的支撑场景有&#xff1a;Workflow、BPM、流程编排等。本次分享&#xff0c;主要从 BPM 流程…

流程引擎是什么?有什么作用?

编者按&#xff1a;本文详细论述了流程引擎的概念&#xff0c;流程引擎的作用以及选型的要旨&#xff0c;并介绍了自主研发具有中国特色的流程引擎。 关键词&#xff1a;流程引擎&#xff0c;集成性&#xff0c;数据分析&#xff0c;BPMN2.0规范&#xff0c;中国特色&#xff…

流程引擎BPM对比

流程引擎定义 流程引擎就是“业务过程的部分或整体在计算机应用环境下的自动化”&#xff0c;它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行&#xff0c;从而实现某个预期的业务目标&#xff0c;或者促使此目标的实现”。通俗的…

流程引擎camunda

简介 Camunda是一个基于Java的框架&#xff0c;支持用于工作流和流程自动化的BPMN、用于案例管理的CMMN和用于业务决策管理的DMN。笔者单位里主要是用于业务审批。 学习了解资料尽量去官方查看https://docs.camunda.org&#xff0c;查看版本7.18&#xff0c;一步一个环节比较详…

选对流程引擎,玩转流程设计不是梦

编者按&#xff1a;本文详细论述了流程引擎的概念&#xff0c;流程引擎选择的要旨&#xff0c;并介绍了流程引擎的应用场景。 流程引擎的概念流程引擎怎么选流程引擎能做什么 在这个数字化办公时代&#xff0c;流程设计对于企业管理者来具有重大意义&#xff0c;一个优秀的工作…

pojo类转换工具

每次pojo类转换的时候很麻烦&#xff0c;所以就在搜pojo类快速转换方法&#xff0c;突然发现一个比较好的pojo类转换工具mapstruct 。 项目中只需要添加如下依赖&#xff1a; 然后定义一个接口添加Mapper(componentModel "spring")注解 便可以直接使用该工具…

JOIOJI

JOIOJI (joioji.c/.cpp/.pas) 【问题描述】 JOIOJIさん是JOI君的叔叔。“JOIOJI”这个名字是由“J、O、I”三个字母各两个构成的。 最近&#xff0c;JOIOJIさん有了一个孩子。JOIOJIさん想让自己孩子的名字和自己一样由“J、O、I”三个字母构成&#xff0c;并且想让“J、O、…

ARM BTI指令介绍

目录 一、JOP 二、BTI 三、启用BTI 四、BTI是怎么实现的 一、JOP JOP&#xff08;Jump-oriented programming&#xff09;类似于ROP&#xff08;Return-Oriented Programming&#xff09;。在 ROP 攻击中&#xff0c;会扫描出useful gadgets&#xff08;易被攻击的一段代码…

Jopr介绍

转载文章请注明&#xff1a;转载自JBossWeek.com [ http://www.jbossweek.com] 如果您是一名系统管理员&#xff0c;正在承受着如下的煎熬&#xff1a;发疯地寻找配置某个服务的JBoss AS配置文件&#xff1b;痛苦地敲着冗长的JBoss管理命令行&#xff1b;眼花缭乱地在n个终端窗…

JOptionPane

JOptionPane提供了许多对话框样式&#xff0c;该类能够让你在不编写任何专门对话框代码的情况下弹出一个简单的对话框。 JOptionPane类提供了7个构造方法用于创建JOptionPane的类对象&#xff0c;不过在实际使用时&#xff0c; 通常不是用new方式创建&#xff0c;而是使用JOpti…

什么pojo

pojo&#xff08;Plain Ordinary Java Object&#xff09;&#xff1a;普通的Java对象&#xff0c;其实就是简单的JavaBean实体类。对应数据库里的某一张表&#xff0c;pojo里的每一个属性都和该表中的字段一 一对应。 POJO有一些private的参数作为对象的属性。然后针对每个参…

随机变量的期望和方差

X服从两点分布&#xff0c;则 X服从超几何分布&#xff0c;即 &#xff0c;则 X服从二项分布&#xff0c;即 &#xff0c;则 X服从泊松分布&#xff0c;即 &#xff0c;则 连续型 X服从均匀分布&#xff0c;即 &#xff0c;则 &#xff0c; X服从指数分布&#xff…

概率论 —— 相关分布以及期望方差的求法汇总

离散型 1. 两点分布&#xff08;伯努利分布&#xff09; 在一次试验中&#xff0c;事bai件A出现的概du率为P&#xff0c;事件A不出现的概率为ql -p&#xff0c;若以X记一次试zhi验中A出现的次数&#xff0c;则X仅取0、I两个值。 两点分布是试验次数为1的伯努利试验。 2. 二项…

概率论笔记(四)概率分布的下期望和方差的公式总结

文章目录 一&#xff1a;期望1.1离散型随机变量的期望1.2连续型随机变量的期望1.3期望的性质 二&#xff1a;随机变量函数&#xff08;复合随机&#xff09;的数学期望三&#xff1a;方差3.1离散型随机变量的方差3.2连续性随机变量的方差3.3方差的性质 四&#xff1a;协方差4.1…

概率论与数理统计:六大基本分布及其期望和方差

绪论&#xff1a; 概率论中有六大常用的基本分布&#xff0c;大致可分成两类&#xff1a;离散型&#xff08;0-1分布、二项分布、泊松分布&#xff09;&#xff0c;连续型&#xff08;均匀分布、指数分布、正态分布&#xff09;。 补充&#xff1a; 在进入正文之前先讲一下期…

几何分布的期望和方差公式推导_GPR(高斯过程回归)详细推导

GPR(高斯过程回归)详细推导 一、综述 GPR来源于线性模型,有两种方式可以推导出GPR,一种是weight space view,另外一种是function space view。两者考察方式假设不同,关注的对象不同,但是最后导出的结果是相同的。其中,function view的推导方式更加简单,GPR最终的为了实现…

C/C++ :Sizeof 的用法

Sizeof有以下特点&#xff1a; Sizeof是C/C中的一个运算符&#xff0c;不是一个函数&#xff0c;返回值为size_tsizeof不能被编译成机器码&#xff0c;编译过程中就会计算sizeof的具体值&#xff0c;然后用值替换掉sizeof ()。所以可以用sizeof() 来定义数组的维数。sizeof ()…

C语言中sizeof用法

sizeof()简单介绍 &#xff08;一&#xff09;基本概念 sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 &#xff08;二&#xff09;使用方法 1、用于数据类型 sizeof使用形式&#x…

【C语言】如何正确使用sizeof

sizeof用过吧&#xff1f;你肯定用过&#xff0c;至少你刚开始学C或者C的时候&#xff0c;学到类型这一节&#xff0c;你一定会写如下代码测试每个类型的长度。 printf("%d", sizeof(int));printf("%d", sizeof(char));printf("%d", sizeof(shor…

Sizeof的用法;他是一个函数吗?

1.一直以来以为sizeof是一个函数&#xff0c;看过c语言深度剖析才知道&#xff0c;sizeof是一个骗子&#xff0c;它伪装的很好~~~ 以下我们用实际代码来告诉你它其实是 关键字 #include<stdio.h> int main() { int i 0; printf("%d %d %d\n",sizeof(int)…