小白学流程引擎-FLowable(一) —FLowable是什么

news2024/10/5 16:27:12

小白学流程引擎-FLowable(一) | FLowable是什么

一、什么是流程引擎?

通俗的说,流程引擎就是多种业务对象在一起合作完成某件事情的步骤,把步骤变成计算机能理解的形式就是流程引擎。

流程引擎,用来驱动业务按照设定的固定流程去流转的东西,在复杂多变的业务情况下,使用既定的流程能够大大降低我们设计业务的成本,并且保证了我们业务执行的准确性。

流程引擎应用广泛,在由流程驱动的各种系统中都有应用,例如OA、CRM、ERP、ECM、BI等。在企业应用中还有很多产品或平台集成流程引擎,用来处理系统运行过程中发起的业务流程。

Flowable是一个使用Java编写的轻量级业务流程引擎。

OA流程审批系统就是用到了流程引擎。
在这里插入图片描述

二、流程引擎框架有哪些?

常见的开源流程引擎有Osworkflow,JBPM,Activiti,Flowable,Camunda等。

其中:Jbpm4、Activiti、Flowable、camunda四个框架同宗同源,祖先都是Jbpm4,开发者只要用过其中一个框架,基本上就会用其它三个。开发低代码平台、OA系统、BPM软件均需要流程可视化功能,而流程可视化核心是流程引擎和流程设计器,对于市场上如此多的开源流程引擎,哪个功能和性能好,该如何选型呢?

三、常见的流程引擎对比

Osworkflow
是一个轻量级的流程引擎,提供的工作流构成元素有:步骤(step)、条件(conditions)、循环(loops)、分支(spilts)、合并(joins)等,但不支持会签、跳转、退回、加签等这些操作,需要自己扩展开发,有一定难度。如果流程比较简单,可以使用,但笔者不推荐。
官方网站:http://www.opensymphony.com/osworkflow/

JBPM
JBPM是一套灵活的商业进程管理 (BPM) 套件。轻量、开源(基于Apache License 2.0) 、使用Java实现。你可以用于商业进程与案例整个生命周期中的建模、执行与监控。
官方网站:https://www.jbpm.org/

Activiti
activiti由Alfresco软件开发,目前最高版本activiti 7。
activiti的版本比较复杂,有activiti5、activiti6、activiti7几个主流版本,选型时让人晕头转向,有必要先了解一下activiti这几个版本的发展历史。
由于团队内部分歧,在2017年时Tijs Rademakers离开团队,创建了后来的flowable, activiti6以及activiti5代码已经交接给了 Salaboy团队, activiti6以及activiti5的代码官方已经暂停维护了, Salaboy团队目前在开发activiti7框架,activiti7内核使用的还是activiti6,并没有为引擎注入更多的新特性,只是在activiti之外的上层封装了一些应用。结论是activiti谨慎选择。
官方网站:https://www.activiti.org/
github地址:https://github.com/Activiti/Activiti

Flowable
flowable基于activiti6衍生出来的版本,是一个使用Java编写的轻量级业务流程引擎,使用 Apache V2 license 协议开源。
Flowable 项目中包括 BPMN(Business Process Model and Notation)引擎、CMMN(Case Management Model and Notation)引擎、DMN(Decision Model and Notation)引擎、表单引擎(Form Engine)等模块。
官方网站:https://flowable.com/open-source/
github地址:https://github.com/flowable/flowable-engine

Camunda
Camunda基于activiti5,所以其保留了PVM,开发团队也是从activiti中分裂出来的,发展轨迹与flowable相似,同时也提供了商业版,不过对于一般企业应用,开源版本也足够了。
相对开源流程引擎来说,Camunda的功能和性能表现的更好更稳定。在性能和稳定性表现好,功能也是对比其他开源流程引擎来说更丰富和完善。
官方网站:https://docs.camunda.org/manual/7.15/
github地址:https://github.com/camunda/camunda-bpm-platform

更多
Activiti,Flowable,Camunda的详细对比可以翻阅文章末的参考文献。

四、总结

流程引擎没有最优的一个,只有更适合的一个。选择符合自己业务发展的需要来选择对于的流程引擎。

以上的常见的开源流程引擎,Osworkflow功能简单,很多功能不支持;JBPM可能需要大量的扩展开发,才能实现中国特色的复杂流程需求,因此JBPM不是最佳选择;Activiti的版本比较复杂,有多个主流版本,选型复杂,当然Activiti也还不错,是后续Flowable和Camunda的前身;Flowable和Camunda相比Activiti,功能更完善,性能更好,当然Camunda会更优。
当然,Activiti,Flowable和Camunda这三个选择任意一个作为业务的流程引擎,都是能够满足大多是场景需求的,还要结合业务难易需求,系统架构等方面来综合考虑。

题外话,笔者在公司主要负责公司内部的流程引擎系统的开发,使用的是Flowable,后续会记录学习Flowable的笔记,一是让自己的知识形成体系化,二是让更多想要学习Flowable的同学们得到一点点帮助也好。

【参考文献】
1,Flowable用户手册v6.3.0
https://tkjohn.github.io/flowable-userguide/
2,CSDN博主「大龄码农有梦想」的原创文章“osworkflow、jbpm、activiti、flowable、camunda开源流程引擎哪个好?”
https://lowcode.blog.csdn.net/article/details/116405594
3,CSDN博主「分享牛」的原创文章“flowable camunda activiti 功能对比”
https://blog.csdn.net/qq_30739519/article/details/86682931
4,CSDN博主「分享牛」的原创文章“Camunda/Flowable/Activiti技术发展史/盘古BPM框架对比最新版”
https://blog.csdn.net/qq_30739519/article/details/105050776

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《Kafka 源码实战》看完面试不慌!

Kafka 一开始是 LinkedIn 公司开发的消息队列,随着 Kafka 代码被贡献给 Apache 软件基金会后,就成功孵化成 Apache 顶级项目,世界上有越来越多的公司和个人开始使用 Kafka,所以 Kafka 使用的范围是很普遍的。 同时,值得…

vue实现文件上传压缩优化处理

vue js实现文件上传压缩优化处理 两种方法 : 第1种是借助canvas的封装的文件压缩上传第2种(扩展方法)使用compressorjs第三方插件实现 目录 vue js实现文件上传压缩优化处理 借助canvas的封装的文件压缩上传 1.新建imgUpload.js 2.全局引…

grafana变量使用

注:基于Grafana v8.3.6编写 1 添加变量 在dashboard界面点击setting,就能进入设置页面, 再点击Variables tab,就可以添加变量 比如我们添加一个系统架构的变量,用于区分Linux和Windows系统,通过node_una…

这可能是2022年把微服务讲的最全了:SpringBoot+Cloud+Docker

前言 最近几年,微服务可谓是大行其道。在业务模型不完善,超大规模流量的冲击的情况下,许多企业纷纷抛弃了传统的单体架构,拥抱微服务。这种模式具备独立开发、独立部署、可扩展性、可重用性的优点的同时,也带来这样一…

【云原生】K8S master节点更换IP以及master高可用故障模拟测试

文章目录一、前言二、配置 多个master 节点1)节点信息1)安装docker或containerd2)安装kubeadm,kubelet和kubectl1、配置k8s yum源2、修改sandbox_image 镜像源3、配置containerd cgroup 驱动程序systemd4、开始安装kubeadm&#x…

SpringBoot SpringBoot 原理篇 1 自动配置 1.7 bean 的加载方式【五】

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇1 自动配置1.7 bean 的加载方式【五】1.7.1 register1 自动配置 1.7 bean 的…

FAIRNESS IN MACHINE LEARNING: A SURVEY 阅读笔记

论文链接 刚读完一篇关于机器学习领域研究公平性的综述,这篇综述想必与其有许多共通之处,重合部分不再整理笔记,可详见上一篇论文的笔记: A Survey on Bias and Fairness in Machine Learning 阅读笔记_Catherine_he_ye的博客 S…

红队隧道加密之MSF流量加密(二)

前言 如今大多数企业的内网都部署了流量审计服务, 用来专门分析流量特征, 比如后门特征和行为特征 若直接使用Metasploit对内网进行横向渗透, 其产生的流量会很容易被内网防护工具检测出来, 因此需对流量进行加密来绕过检测 这里介绍使用OpenSSL对MSF流量进行加密 演示步骤 …

这么高颜值的Kubernetes管理工具Lens,难道还不能C位出道吗

一直使用官方的Kubernetes Dashboard来管理k8s,也算很友好的一款UI工具,但显示的资源不全、查看日志有限、时间久了要重要登陆,所以找了一款外观漂亮,用户体验很好的管理平台Lens。 2 特性与安装 2.1 特性 Lens的优势主要有&…

齐聚绿城 | 锦江都城酒店聚焦中高端酒店投资新方向

提起广西,不少人能想到 “桂林山水甲天下”的桂林,亦或因一碗螺蛳粉闻名全国的柳州。又或荣登《国家地理》的涠洲岛。但在你不知晓的时候,南宁这座城在静静的等你发掘。南宁——南疆安宁,是山环水绕的“绿城”,也是北回…

windows系统cmake生成动态库无lib文件解决方法

作为cmake初学者,在windows系统下使用cmake生成c动态库时出现了下图所示问题,是关于lib文件。找了一圈,也没发现生成有lib文件。 在google上查,才发现windows系统下动态库生成lib文件,还需要添加以下命令: …

java 同步锁synchronized 解决线程共享数据重复操作问题

我们先来写一个买票程序 我们先创建一个包 在包下创建两个类 customException 线程类 负责编写抢票的主要逻辑 参考代码如下 public class customException implements Runnable {private int tickets 100;public void run () {while (tickets > 0){if(tickets > 0) {…

【语音增强】多维谱自适应小波语音信号去噪【含Matlab源码 1972期】

⛄一、自适应小波语音信号去噪 1 引言 语音信号在传输过程中,容易受到环境噪声和其他语音的干扰,降低了语音通信质量,影响了语音处理系统工作。所以,语音的净化处理技术,在现代语音通信和数字音频广播系统中起到愈来愈…

特殊的转义字符—— \b 退格字符 ASCII 08

引入 我们在写 C 语言题目时,经常会碰见这样的输出 11 123 1236 123410如果用循环的话,这个加号是个大问题,如果直接用 printf("%d"),最后会多一个加号,用 printf("%d") 则前面会多一个加号。想…

Qt编写视频监控管理平台(支持海康/大华/宇视/华为/天地伟业/H264/H265等)

一、前言 海康大华等厂家自己的客户端软件,基本上都是支持自家的设备,不支持其他家的摄像机和硬盘录像机,并不是因为技术上做不到,这些大厂要实现支持兼容其他的家的(他们家的服务端或者收费的都是支持其他家的&#…

写个rpc调用,试试自己了解多少

什么是rpc rpc即是远程过程调用,简单来说就是调用其他服务的接口像调用自己的本地方法一样,通常我们的调用的时候不需要关心调用过程和底层的通信即可实现调用其他的服务; 大概流程就是服务模块双方都会向注册中心注册自己的服务&#xff0c…

开发工具vim

一、开发工具vim vim的安装:yum install -y vim 指令:vim --version可以查看当前的版本信息,没有弹出信息就是没有安装。 装的vim是没有相关配置文件的,配置文件需要后面自己装。 之前说过,vs2019是集成软件编译…

【畅购商城】购物车模块之修改购物车以及结算

目录 购物车操作:修改 分析 接口 后端实现:更新 前端实现:修改 前端实现:全选 后端实现:删除数据 结算 跳转页面 购物车操作:修改 分析 接口 PUT http://localhost:10010/cart-service/carts 后…

python数学基础——单词统计

这个练习使用的是英文的单词统计,使用split通过单词中间的空格来做区分,在遍历的过程中通过对【字典】类型进行【字典推导式】的处理来计算每个单词出现的频次。但是由于过程中我们通过re的正则表达式来替换掉了很多的符号,并没有替换成空&am…

【网页设计】web前端期末大作业html+css

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…