Camunda 7.x 系列【2】开源工作流引擎框架

有道无术,术尚可求,有术无道,止于术。

本系列Spring Boot 版本 2.7.9

本系列Camunda 版本 7.19.0

源码地址:https://gitee.com/pearl-organization/camunda-study-demo

文章目录

    • 1. 前言
    • 2. 开源工作流引擎框架
      • 2.1 jBPM
      • 2.2 Activiti
      • 2.3 Flowable
      • 2.4 Camunda
      • 2.5 compileflow

1. 前言

在软件系统中往往包含多种业务流程,在开发时,如果不借助工作流引擎,实现一个工作流是非常不靠谱的。每个流程都需要对应一套实现代码,十分冗余,而且一旦需要改动流程,就得改造代码。

而工作流引擎的出现,解决了上述问题,它和具体的业务无关,定义好流程规则后,可以通过引擎进行自动化的流程流转。

接下来我们介绍下比较常用的一个开源工作流引擎框架。

2. 开源工作流引擎框架

2.1 jBPM

GitHub地址

jBPM是一个用于实现业务流程决策自动化的工具包,目前由KIE社区进行开发维护,Red Hat提供支持。

jBPM的发展历程如下:

  • 2003年,jBPM的的创始人Tom Baeyens发布了1.0 版本
  • 2004年,jBPM发布了2.0版本,并加入JBoss组织,Tom Baeyens任该项目的Leader
  • 2005年,jBPM发布3.0版本
  • 2006年,JBossRed Hat红帽公司收购,jBPM获得了大量的社区和商业支持
  • 2009年,jBPM发布4.0版本
  • 2010年,创始人Tom Baeyens离开了JBossjBPM交由Kris Verlaenen负责
  • 2011年,jBPM基于Drools Flow发布5.0的全新版本,完全抛弃了jBPM4的代码。支持BPMN、业务活动监控、流程可视化
  • 2013年,jBPM发布6.0版本
  • 2017年,jBPM发布7.0版本
  • 当前,jBPM的最新版本为7.74.0

jBPM各方面已经落后于其他同类型框架,目前已经不是主流,不推荐使用,但是当前主流的开源工作流框架都是基于jBPM4
在这里插入图片描述

2.2 Activiti

官网地址
GitHub地址

Activiti是一个面向业务人员、开发人员和系统管理员的轻量级工作流BPM业务流程管理平台。

核心特性:

  • 基于Java的高性能BPMN2流程引擎
  • Apache开源许可
  • Spring完美集成
  • 支持在任何Java应用程序、服务器、集群或云中运行

Activiti的发展历程如下:

  • 2010年,jBPM的的创始人Tom Baeyens离开了JBoos后,加入了Alfresco,并基于jBPM4开发了Activiti5
  • 2012年,Tom Baeyens离职,由Tijs Rademakers接手负责
  • 2015年,Activiti发布6.0版本
  • 2016年,Tijs Rademakers离开团队,Activiti交由Salaboy团队负责
  • 2019年,Activiti发布7.0版本,即Activiti Cloud ,定位云产品,完全面向云原生架构设计开发
  • 当前,Activiti的最新版本为7.11.0

Activiti5Activiti6已经是历史版本,不再更新维护,而Activiti7是在Activiti Core基础上新增了云原生相关支持,即Activiti CloudActiviti目前各方面也已经慢慢迟暮,不太推荐使用。

2.3 Flowable

官网地址
GitHub地址

2017年,Tijs Rademakers离开Activiti后,基于Activiti6开发了Flowable6,在其基础上修复了大量BUG,并添加了很多新功能,目前最新版本为6.8.0

Flowable分为开源和商业版,开源版提供了BPMN流程引擎、CMMN引擎、DMN引擎功能。

Flowable 6.4.1版本后,重点放在了商业版产品,很多新特性已经不在开源版中发布,开源版目前更新维护并不及时,截止当前,最新的版本还是去年12月份发布的,所以也不太推荐使用。

2.4 Camunda

官方网站
中文文档

Camunda是基于Activiti5开发的一个用于工作流框架,由德国一家工作流程自动化软件开发商提供,也提供了开源版和商业版。

Camunda主要分以下两个版本:

  • Camunda 7:基于组件,支持BPMNCMMNDMN
  • Camunda 8:基于云原生SaaS模式,但是开源的功能较少

近两年来,Camunda 7凭借其⾼性能、⾼扩展性、⾼稳定性、优良的API设计、技术生态丰富等优点,已经在国内渐渐流行起来,非常推荐使用。

2.5 compileflow

GitHub地址

compileflow Process引擎是淘宝工作流TBBPM引擎之一,是专注于纯内存执行,无状态的流程引擎,通过将流程文件转换生成java代码编译执行,简洁高效。当前是阿里业务中台交易等多个核心系统的流程引擎。

compileflow能让开发人员通过流程编辑器设计自己的业务流程,将复杂的业务逻辑可视化,为业务设计人员与开发工程师架起了一座桥梁。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/63749.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python识别抖音Tiktok、巨量引擎滑块验证码识别

由于最近比较忙,所以本周搞了一个相对简单的验证码,就是抖音Tiktok的滑块验证码,这也是接到客户的一个需求。这种验证码通常在电脑端登录抖音、巨量引擎的的时候出现。 首先看一下最终的效果: 验证码识别过程 1、利用爬虫采集图…

jenkins的cicd操作

cicd概念 持续集成( Continuous Integration) 持续频繁的(每天多次)将本地代码“集成”到主干分支,并保证主干分支可用 持续交付(Continuous Delivery) 是持续集成的下一步,持续…

【ArcGIS Pro二次开发】(57):地图系列

在ArcGIS Pro中,有一个地图系列,可以在一个布局中导出多个地图。 在SDK中为ArcGIS.Desktop.layout.MapSeries类和映射系列导出选项,可以以支持多页导出。 MapSeries类提供了一个静态CreateSpatialMapSeries方法,该方法使用指定的…

【0807作业】使用消息队列实现AB进程对话+使用共享内存实现A进程打印字符串,B进程逆置字符串,打印结果为【正序 逆序 正序 逆序】

作业一:使用消息队列实现AB进程对话 ① 打开两个终端,要求实现AB进程对话 A进程先发送一句话给B进程,B进程接收后打印B进程再回复一句话给A进程,A进程接收后打印重复1.2步骤,当收到quit后,要结束AB进程 ② …

K8s中的PV和PVC和监控

1.PV和PVC PV:持久化存储,对存储资源进行抽象,对外提供可以调用的地方(类似:生产者) PVC:用于调用,不需要关心内部实现细节(类似:消费者) 2.实…

ChatGPT 作为 Python 编程助手

推荐:使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 简单的数据处理脚本 我认为一个好的起点是某种数据处理脚本。由于我打算让 ChatGPT 之后使用各种 Python 库编写一些机器学习脚本,这似乎是一个合理的起点。 目标 首先,我想尝试…

8.7一日总结

后台管理项目(使用vue3) 1.创建项目 npm init vuelatest 2.进入项目,下载依赖 3.下载需要的项目依赖 下载重置样式表 npm install reset-css 在main.js中阴入 import reset-css 4.清理目录 将项目中不需要的内容删除 5.运行项目 npm run dev 6.将仓库推送…

Unity Shader编辑器工具类ShaderUtil 常用函数和用法

Unity Shader编辑器工具类ShaderUtil 常用函数和用法 Unity的Shader编辑器工具类ShaderUtil提供了一系列函数,用于编译、导入和管理着色器。本文将介绍ShaderUtil类中的常用函数和用法。 编译和导入函数 CompileShader 函数签名:public static bool C…

一百四十三、Linux——Linux的CentOS 7系统语言由中文改成英文

一、目的 之前安装CentOS 7系统的时候把语言设置成中文,结果Linux文件夹命名出现中文乱码的问题,于是决定把Linux系统语言由中文改成英文 二、实施步骤 (一)到etc目录下,找到配置文件locale.conf # cd /etc/ # ls…

Vue3 第三节 计算属性,监视属性,生命周期

1.computed计算属性 2.watch监视函数 3.watchEffect函数 4.Vue的生命周期函数 一.computed计算属性 计算属性简写和完整写法 <template><h1>一个人的信息</h1>姓&#xff1a;<input type"text" v-model"person.firstName" />…

100G光模块的应用案例分析:电信、云计算和大数据领域

100G光模块是一种高速光模块&#xff0c;由于其高速率和低延迟的特性&#xff0c;在电信、云计算和大数据领域得到了广泛的应用。在本文中&#xff0c;我们将深入探讨100G光模块在这三个领域的应用案例。 一、电信领域 在电信领域&#xff0c;100G光模块被广泛用于构建高速通…

什么是应用的贴身防护盾?来看F5洞察风险

从云原生的发展来看&#xff0c;由于云原生技术的革新以及现代应用随之进化&#xff0c;可以清晰地看到云原生吞噬一切的势头&#xff0c;但是云原生也面临着众多挑战。2022 年很多公开调查报告显示&#xff0c;在云原生发展中&#xff0c;CEO/CIO 最关注的就是云原生安全&…

FFmpeg将编码后数据保存成mp4

以下测试代码实现的功能是&#xff1a;持续从内存块中获取原始数据&#xff0c;然后依次进行解码、编码、最后保存成mp4视频文件。 可保存成单个视频文件&#xff0c;也可指定每个视频文件的总帧数&#xff0c;保存多个视频文件。 为了便于查看和修改&#xff0c;这里将可独立的…

SpringBoot整合Sfl4j+logback的实践

一、概述 对于一个web项目来说&#xff0c;日志框架是必不可少的&#xff0c;日志的记录可以帮助我们在开发以及维护过程中快速的定位错误。slf4j,log4j,logback,JDK Logging等这些日志框架都是我们常见的日志框架&#xff0c;本文主要介绍这些常见的日志框架关系和SpringBoot…

自然语言处理: 第六章Transformer- 现代大模型的基石

理论基础 Transformer&#xff08;来自2017年google发表的Attention Is All You Need (arxiv.org) &#xff09;&#xff0c;接上面一篇attention之后&#xff0c;transformer是基于自注意力基础上引申出来的结构&#xff0c;其主要解决了seq2seq的两个问题: 考虑了原序列和目…

拦截器对接口细粒度权限校验

文章目录 一、逻辑分析二、校验规则1.规则类型2.规则划分3.规则配置信息4.规则案例说明5.规则加载 三、拦截器定义1.自定义拦截器2.注册拦截器 四、获取请求参数1.获取get提交方式参数2.获取post提交方式参数&#xff08;1&#xff09;定义RequestWrapper类&#xff08;2&#…

【知网检索】2023年金融,贸易和商业管理国际学术会议(FTBM2023)

随着经济全球化&#xff0c;贸易自由化的进程加快&#xff0c;我国经济对外开放程度不断加深&#xff0c;正在加快融入世界经济一体化当中。当今世界各国竞争过程中&#xff0c;金融、贸易以及商业形态已成为其关键与焦点竞争内容。 2023年金融、贸易和商业管理国际学术会议(F…

科技云报道:向量数据库:AI时代的下一个热点

科技云报道原创。 最近&#xff0c;又一个概念火了——向量数据库。 随着大模型带来的应用需求提升&#xff0c;4月以来多家海外知名向量数据库创业企业传出融资喜讯。 4月28日&#xff0c;向量数据库平台Pinecone宣布获得1亿美元&#xff08;约7亿元&#xff09;B轮融资&am…

尚品汇总结七:商品详情模块(面试专用)

一、业务介绍 订单业务在整个电商平台中处于核心位置&#xff0c;也是比较复杂的一块业务。是把“物”变为“钱”的一个中转站。 整个订单模块一共分四部分组成&#xff1a; 结算页面 在购物车列表页面中,有一个结算的按钮,用户一点击这个按钮时,跳转到结算页,结算页展示了用…

ROS实现机器人移动

开源项目 使用是github上六合机器人工坊的项目。 https://github.com/6-robot/wpr_simulation.git 机器人运动模型 运动模型如下所示&#xff1a;&#x1f447; 机器人运动的消息包&#xff1a; 实现思路&#xff1a;&#x1f447;   为什么要使用/cmd_vel话题。因为这…