参考文章:osworkflow、jbpm、activiti、flowable、camunda开源流程引擎哪个好?_大龄码农有梦想的博客-CSDN博客_流程引擎有哪些

工作流引擎选择(为何使用activiti而不是jbpm)_ClassFoo的博客-CSDN博客_为什么要用activiti

几大工作流引擎对比_长江七号zzj的博客-CSDN博客_工作流引擎对比

开源流程引擎该如何选择flowable还是camunda?_大龄码农有梦想的博客-CSDN博客_camunda和flowable

流程引擎应用及分析_徐志摩的博客-CSDN博客_流程引擎介绍

Camunda入门(一) - 选型及核心概念_罗小爬EX的博客-CSDN博客_camunda

Activiti7.1, jBPM7.25, Camunda, Flowable6.3技术组成对比_haysong的博客-CSDN博客 --imptt

官网:

  • Activiti:Open Source Business Automation | Activiti
  • JBPM:jBPM - Open Source Business Automation Toolkit - jBPM Business Automation Toolkit
  • Osworkflow :http://www.opensymphony.com/osworkflow/

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

  • BPMN(Business Process Modeling Notation)指业务流程建模与符号
  • CMMN(Case Management Model and Notation)案例管理模型与符号
  • DMN(Decision Model and Notation)决策模型与符号
  • 表单引擎(Form Engine)

工作流引擎对比概览

Activiti7.1, jBPM7.25, Camunda, Flowable6.3技术组成对比:

序号 技术组成 Activiti7.1 jBPM7.25 Camunda Flowable6.3.1
1 数据库持久层ORM MyBatis3.4.2 JPA2.2二次封装 Hibernate4.2.0 JPA 2.2
2 持久化标准 JPA规范 JPA规范 JPA规范 JPA规范
3 事务管理 MyBatis机制/Spring事务控制 Bitronix,基于JTA事务管理 hibernate机制/Spring事务控制 hibernate机制,Spring事务控制
4 分布式事务 MyBatis机制/Spring事务控制 Bitronix,基于JTA事务管理 补偿机制,SAGA 模式
4 数据库连接方式 Jdbc/DataSource Jdbc/DataSource Jdbc/DataSource Jdbc/DataSource
5 支持数据库 Oracle、SQL Server、MySQL Oracle、SQL Server、MySQL Oracle、SQL Server、MySQL、db2 Oracle、SQL Server、MySQL、db2
6 设计模式 Command模式、观察者模式等
7 内部服务通讯 Service间通过API调用 基于Apache Mina异步通讯 Service间通过API调用 Service间通过API调用
8 集成接口 SOAP、Mule、RESTful 消息通讯 SOAP、Mule、RESTful SOAP、Mule、RESTful
9 支持的流程格式 BPMN2、xPDL、jPDL等 目前仅只支持BPMN2 xml BPMN2、xPDL、jPDL等 BPMN2、xPDL、jPDL等
10 引擎核心 PVM(流程虚拟机) Drools PVM
11 架构 spring boot 2.1.2, spring 5.1.4 Drools Flow activiti5 spring boot 1.5,spring 4.3, spring.security 4.2
12 支持J2EE 兼容 天然支持EJB,J2EE 兼容 兼容
13 技术前身 jBPM3、jBPM4 Drools Flow activiti5 activiti5
14 API文档 swagger1.5 swagger1.5
15 日志 slf4j1.7门面,logback1.2.3 slf4j1.5门面, log4j slf4j1.7门面,logback1.2.3 slf4j1.7门面
16 所属公司 Alfresco jBoss.org Camunda Flowable

一、流程引擎选型

1、Osworkflow

Osworkflow是一个轻量化的流程引擎,比较灵活的轻量级的框架,但是在流程建模方面不太友好,需要手动编写xml文件去定义流程文件。

Osworkflow基于状态机机制,数据库表很少,Osworkflow提供的工作流构成元素有:步骤(step)、条件(conditions)、循环(loops)、分支(spilts)、合并(joins)等,但不支持会签、跳转、退回、加签等这些操作,需要自己扩展开发,有一定难度,如果流程比较简单,osworkflow是很好的选择,笔者在2008年给某大型国企集团开发OA系统,就是基于Osworkflow,至今仍稳定运行,性能也很高。

官方网站:http://www.opensymphony.com/osworkflow/

2、JBPM

Github:  https://github.com/kiegroup/jbpm

jBPM 是一套灵活的商业进程管理 (BPM) 套件。轻量、开源(基于Apache License 2.0) 、使用Java实现。你可以用于商业进程与案例整个生命周期中的建模、执行与监控。

JBPM由JBoss公司开发,目前最高版本JPBM7,不过从JBPM5开始已经跟之前不是同一个产品了,JBPM5的代码基础不是JBPM4,而是从Drools Flow重新开始。

JBPM自从版本五后,便重启炉灶,完全抛弃了JBMP4的代码基础,重新基于drools进行了实现。JBPM5,JBPM6似乎缺少一个合格的系统架构师,其接口设计匪夷所思,基本上是按照drools的接口再提供了一套JBPM接口,同名的接口,实现类不断重复出现,代码体系十分混乱。

基于Drools Flow技术在国内市场上用的很少,所有不建议选择jBPM5以后版本。

JBPM5,JBPM6是一个巨大的失败,使用drools规则引擎来实现工作流引擎听起来是一个很酷的概念,但JBPM开发团队显然没有很好地去掌控好整个架构的变化。因此选择activiti作为工作流引擎至少在可见的几年间都是正道,今后需要实现规则库时,再单独引入drools工具包,相信drools会是一个比JBPM靠谱的工具。

jBPM4诞生的比较早,后来JBPM4创建者Tom Baeyens离开JBoss后,加入Alfresco后很快推出了新的基于jBPM4的开源工作流系统Activiti, 另外JBPM以hibernate作为数据持久化ORM也已不是主流技术。笔者在2012年开发某集团BPM平台时,选择的就是JBPM4.4版本,也是4系列的最后一个版本,进行了大量的扩展开发,才实现中国特色的流程需求。现在时间节点选择流程引擎,JBPM不是最佳选择。官方网站:https://www.jbpm.org/

  1. jBPM3是一个完整的工作流系统实现,面向开发人员,目的在于简化对组织核心流程进行支撑的软件创建,不支持标准。
  2. jBPM4引入PVM,使其拥有更强大的扩展性,同时增加BPMS特性,这些特性包括了对BPMN的支持、面向业务人员的Web建模器和简单统计分析功能的加入。
  3. jBPM5基于原先的Drools Flow,支持BPMN,通过与Drools的合并支持BAM,通过内容仓库增加对流程可视化的支持。由于放弃了jBPM4的PVM,引擎的可扩展性受到损害,并且不再支持jPDL。

3、Activiti

activiti由Alfresco软件开发,目前最高版本activiti 7。

activiti的版本比较复杂,有activiti5、activiti6、activiti7几个主流版本,选型时让人晕头转向,有必要先了解一下activiti这几个版本的发展历史。

activiti5和activiti6的核心leader是Tijs Rademakers, Activiti5基于jBPM4的开源工作流系统,与Alfresco的集成增加了其流程可视化与管理能力,同时通过创新的Activiti Cycle协作组件支持流程相关人员之间的协调,最后,它加强了集成能力。

由于团队内部分歧,在2017年时Tijs Rademakers离开团队,创建了后来的flowable, activiti6以及activiti5代码已经交接给了 Salaboy团队, activiti6以及activiti5的代码官方已经暂停维护了, Salaboy团队目前在开发activiti7框架,activiti7内核使用的还是activiti6,并没有为引擎注入更多的新特性,只是在activiti之外的上层封装了一些应用。结论是activiti谨慎选择。官方网站:https://www.activiti.org/

4、flowable

flowable基于activiti6衍生出来的版本,flowable目前最新版本是v6.6.0,开发团队是从activiti中分裂出来的,修复了一众activiti6的bug,并在其基础上研发了DMN支持,BPEL支持等等,相对开源版,其商业版的功能会更强大。以flowable6.4.1版本为分水岭,大力发展其商业版产品,开源版本维护不及时,部分功能已经不再开源版发布,比如表单生成器(表单引擎)、历史数据同步至其他数据源、ES等。Flowable 是一个使用 Java 编写的轻量级业务流程引擎,使用 Apache V2 license 协议开源。2016 年 10 月,Activiti 工作流引擎的主要开发者离开 Alfresco 公司并在 Activiti 分支基础上开启了 Flowable 开源项目。基于 Activiti v6 beta4 发布的第一个 Flowable release 版本为6.0。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/

5、Camunda

Camunda基于activiti5,所以其保留了PVM,最新版本Camunda7.15,保持每年发布2个小版本的节奏,开发团队也是从activiti中分裂出来的,发展轨迹与flowable相似,同时也提供了商业版,不过对于一般企业应用,开源版本也足够了,详细见:https://blog.csdn.net/wxz258/article/details/10904373。官方网站:https://docs.camunda.org/manual/7.15/。笔者强烈推荐camunda流程引擎,并在云程低代码平台中使用了camunda,功能和性能表现稳定。
选择camunda的理由:
(1)通过压力测试验证Camunda BPMN引擎性能和稳定性更好。详细见:https://blog.csdn.net/wxz258/article/details/109030329
(2)功能比较完善,除了BPMN,Camunda还支持企业和社区版本中的CMMN(案例管理)和DMN(决策自动化)。Camunda不仅带有引擎,还带有非常强大的工具,用于建模,任务管理,操作监控和用户管理,所有这些都是开源的。详细见:https://blog.csdn.net/wxz258/article/details/109121092

6、 camunda与flowable对比

6.1 功能方面对比

由于Flowable与Camunda好多功能都是类似的,因此在这里重点罗列差异化的功能

(1)camunda支持流程实例的迁移,比如同一个流程有多个实例,多个流程版本,不同流程实例运行在不同的版本中,camunda支持任意版本的实例迁移到指定的流程版本中,并可以在迁移的过程中支持从哪个节点开始。

(2)camunda基于PVM技术,所以用户从Activii5迁移到camunda基本上毫无差异。flowable没有pvm了,所以迁移工作量更大(实例的迁移,流程定义的迁移、定时器的迁移都非常麻烦)。

(3) camunda对于每一个CMD命令类都提供了权限校验机制,flowable没有。

(4)camunda继续每一个API都有批处理的影子,flowable几乎没有。比如批量挂起流程、激活流程等,使用camunda可以直接使用API操作,使用Flowable则只能自己去查询集合,然后循环遍历集合并操作。

(5)camunda很多API均支持批处理,在批量处理的时候可以指定是异步方式操作或者是同步方式操作。异步的话定时器会去执行。Flowable没有异步批处理的机制。比如批量异步删除所有的历史数据。

(6)camunda启动实例的时候支持从哪个节点开始,而不是仅仅只能从开始节点运转实例。Flowable仅仅只能从开始节点运转实例。

(7)camunda支持任意节点的跳转,可以跳转到连线也可以跳转到节点,并且在跳转的过程中支持是否触发目标节点的监听器。flowable没有改原生API需用户去扩展。

(8)camunda支持双异步机制,第一个异步即节点可以异步执行,第二个异步方式是:完成异步任务后,还可以继续异步去执行任务后面的连线。所以称之为双异步机制,flowable只有第一种异步方式。

(9)camunda支持多种脚本语言,这些脚本语言可以在连线上进行条件表达式的配置,开箱即用。比如python、ruby、groovy、JUEL。flowable仅仅支持JUEL、groovy。开箱即用的意思就是如果想用python直接引入jython包就可以用了,不需要额外配置。

(10)camunda支持外部任务,比如我们有时候想在一个节点中执行调用第三方的API或者完成一些特定的逻辑操作,就可以使用外部任务,外部任务有两种表,并支持第三方系统定期来抓取并锁定外部任务,然后执行业务完毕之后,完成外部任务,流程实例继续往下执行。外部任务的好处就是解决了分布式事物的问题。在flowable中我们可以使用httpTask任务,我个人更倾向于camunda外部任务,因为这个外部任务有外部系统决定什么时候完成,httpTask是不等待任务,实例走到这个节点之后,调用一个api就直接往下跑了,外部任务不会继续往下跑,有外部系统去决定啥时候往下跑。

(11)camunda支持为用户定制一些个性化的偏好查找API,比如张三每次查询任务的时候,一般固定点击某某三个查询条件过滤数据,使用camunda就可以将这三个查询条件进行持久化,下次张三来了,就可以直接根据他的偏好进行数据的过滤,类似机器学习。

(12)camunda支持历史数据的批量删除或者批量迁移到其他介质,比如批量迁移到es,flowable没有该机制。

(13)camunda支持在高并发部署流程的时候,是否使用锁机制,flowable没有该机制。

(14) camunda支持单引擎多组合、多引擎多库。flowable仅仅支持单引擎多组合。

(15) camunda支持流程实例跨流程定义跳转,flowable没有该机制。

(16) camunda支持分布式定时器,flowable没有该机制。

(17) flowable支持nosql,camunda只有nosql的解决方案。

(18)camunda支持优化流程,以及了解流程引擎的瓶颈所在和每个环节的耗时,flowable没有该机制。

(19) camunda修改了流程模板xml解析方式,相比flowable性能更好。

(20)camunda在解析流程模板xml的时候,去除了activiti5的双解析机制,相对而言耗时时间更短。flowable没有了pvm所以规避了双解析机制。

(21)camunda可以在任意节点添加任意的属性,flowable原生API没有,需要自己扩展。

(22)camunda框架没有为流程生成图片的API(所有流程图展示以及高亮均在前端动态计算),activiti5/6/flowable5/flowable6有图片生成以及高亮的API.

(23)camunda可以在节点中定义定时作业的优先级,也可以在流程中进行全局优先级的定义。当节点没有定义优先级的时候可以使用全局的优先级字段。activiti5/6/flowable5/flowable6没有改功能。

(24)camunda可以再流程中定义流程的tag标记,activiti5/6/flowable5/flowable6没有改功能。

(25)camunda/activiti5/6/flowable5/flowable6 均不支持国产数据库,比如人大金仓 和 达梦。

(26)flowable6支持LDAP,openLDAP,camunda不支持。activiti5不支持。

6.2 性能方面对比

通过flowable和camunda多组对比测试,camunda性能比flowablet提升最小10%,最大39%,而且camunda无报错,flowable有报错,camunda在高并发场景下稳定性更好。

具体内容见:flowable与camunda性能对比测试_大龄码农有梦想的博客-CSDN博客_camunda flowable

6.3 项目验证

笔者从事工作流研发多年,用过osworkflow、jbpm、activiti、flowable、camunda等多个开源流程引擎,后来遇到了camunda,经过功能和性能验证测试,最终选择了camunda,开发了云程BPM(http://www.yunchengxc.com,云程BPM也是一款云原生低代码开发平台,即云程低代码开发平台),并在多个项目上进行验证,性能和稳定性表现良好。

二、流程设计器选型

对于低代码平台中的流程可视化,流程设计器是重要的支撑工具,目前市场上比较主流的流程设计器有bpmn-js、mxGraph、Activiti-Modeler、flowable-modeler、easy-flow、bpmn2-modeler插件等。

1、bpmn-js

bpmn-js 是 BPMN 2.0 渲染工具包和 Web 模型。bpmn-js 正在努力成为 Camunda BPM 的一部分。bpmn-js 使用 Web 建模工具可以很方便的构建 BPMN 图表,可以把 BPMN 图表嵌入到你的项目中,容易扩展。bpmn-js是基于原生js开发,支持集成到vue、react等开源框架中。
官方网站:https://bpmn.io/

2、mxGraph

mxGraph是一个强大的JavaScript流程图前端库,可以快速创建交互式图表和图表应用程序,国内外著名的ProcessOne和draw.io都是使用该库创建的强大的在线流程图绘制网站. 由于mxGraph是一个开放的js绘图开发框架,我们可以开发出很炫的样式,或者完全按照项目需求定制。官方网站:http://jgraph.github.io/mxgraph/

3、Activiti-Modeler

Activiti 开源版本中带了web版流程设计器,在Activiti-explorer项目中有Activiti-Modeler,优点是集成简单,开发工作量小,缺点是界面不美观,用户体验差。

4、flowable-modeler

flowable开源版本中带了web版流程设计器,展示风格和功能基本跟Activiti-Modeler一样,优点是集成简单,开发工作量小,缺点是界面不美观,用户体验差。

5、easy-flow

码云上开源的流程设计器,没有深入研究,感觉离真正的BPMN流程图设计差距较大,不过至少有个框架。
https://gitee.com/xiaoka2017/easy-flow?_from=gitee_search

6、Eclipse插件bpmn2-modeler

C/S版本的流程设计器,如果没有强调基于浏览器设计流程图,也可以考虑Eclipse插件版流程设计器bpmn2-modeler。官方地址:http://www.eclipse.org/bpmn2-modeler/

三、选型推荐

推荐大家使用camunda(流程引擎)+bpmn-js(流程设计器)组合,笔者在云程BPM和多个项目中经过实战验证,camunda在功能方面比flowable、activiti流程引擎强大,性能和稳定性更突出,详细对比见:https://blog.csdn.net/wxz258/article/details/109121092。体验系统:http://www.yunchengxc.com。

常见的工作流引擎(osworkflow、jbpm、activiti、flowable、camunda)比较相关推荐

  1. Activiti工作流引擎使用(Activiti的乱码问题)

    Activiti工作流引擎使用(Activiti的乱码问题) 1.简单介工作流引擎与Activiti 对于工作流引擎的解释请参考百度百科:工作流引擎 Activiti与JBPM5?对于Activiti ...

  2. Activiti/Flowable/Camunda介绍

    发展历史 目前开源主流的工作流框架有三个:Activiti 7.x,Camunda 7.x,Flowable 6.x,这三个框架同宗同源,都是从JBPMN4衍生出来的,并且都是遵照BPMN2.0规范, ...

  3. 工作流引擎JFlow与activiti 对比分析(一)5种基本控制流模式的对比

    为了更好的说明activiti 与jflow的两款工作流引擎的特点与区别,我们按照如下几个方面做一次全面的.客观的对比. 首先activiti是国外的一款开源的工作流程引擎,在国际上影响比较深远与广泛 ...

  4. 驰骋工作流引擎JFlow与activiti的对比之5种基本控制流模式的对比

    前言 为了更好的说明activiti 与jflow的两款工作流引擎的特点与区别,我们按照如下几个方面做一次全面的.客观的对比. 首先activiti是国外的一款开源的工作流程引擎,在国际上影响比较深远 ...

  5. 驰骋工作流引擎JFlow与activiti的对比 -总结

    共同点: 1. 嵌入式的工作流引擎,降低集群复杂性. 2. 严格而灵活的流程版本控制 3. 支持多种数据库 4. 支持多种流程设计模式 5. 成熟度高的开源工作流,具有可靠的稳定性和性能. 区别: 1 ...

  6. 常见的工作流框架 Activity JBPM

    常用工作流框架有Activity.JBPM.OSWorkFlow.WorkFlow 一.BPMN2.0规范 BPMN(Business Process Model and Notation)--业务流 ...

  7. 驰骋工作流引擎JFlow与activiti的对比之4种包含多实例的模式

    为什么80%的码农都做不了架构师?>>>    4种包含多实例的模式 无同步的多实例(MIwithout) 在流程中,一个活动可以激活多个实例,每个实例相互独立,并不需要在后面进行同 ...

  8. Camunda工作流引擎简记

    本文转载自玩转Camunda之实战篇-赶紧收藏起来吧_哔哩哔哩_bilibili 其中部分内容,经过本人修改 一.工作流相关介绍 BPM(BusinessProcessManagement),业务流程 ...

  9. SprinBoot 集成 Flowable/Activiti工作流引擎

    文章目录 一. Flowable工作流引擎 1. flow 2. flowable 3. cims 4. RuoYi-flowable 5. springboot-flowable-modeler 6 ...

最新文章

  1. 压力测试工具ab 及 centos下单独安装方法
  2. 机器学习预测农民是否可以得到贷款
  3. mybatisnet - 1 获取 mybatisnet
  4. 部署和调优 1.5 vsftp部署和优化-1
  5. python用for循环读取图片_python 使用for循环简单爬取图片(1)
  6. python去重复行_python 去除Excel中的重复行数据
  7. Python使用递归对任意嵌套列表进行扁平化
  8. Rokon 关于精灵的点击事件
  9. 苹果se2_搜狗输入法适配苹果se2,给用户带来新玩法。
  10. Python学习笔记—Dict和set
  11. 如何用python创建文件_终于明了python如何创建文件
  12. 第三章 高级请求-应答模式
  13. Formtec.NCspeed.v5.1.0.4
  14. 谷歌无法打开微信二维码链接解决方案 之 使用谷歌模拟微信浏览器
  15. android m是什么版本号,Android m是什么版本
  16. 电商平台对接第三方快递鸟物流轨迹查询api接口申请对接全流程
  17. java爬虫京东商品,Java爬虫实现爬取京东上的手机搜索页面 HttpCliient+Jsoup
  18. 对OSGB倾斜摄影数据进行范围裁剪
  19. ActiveX(VB6)+JavaScript让IE浏览器与光标阅读器交互
  20. MySQL填坑系列--Linux平台下MySQL区分大小写问题

热门文章

  1. 阿里 P10 级大佬吴翰清离职,下一步或将开启 AI 短视频创业
  2. 聚合支付怎么申请收款码?
  3. C语言简单编程:计算球的体积
  4. python统计个数的函数_EXCEL函数篇——计算统计函数
  5. 计算机系统基础实验:认识logisim软件、门电路逻辑功能测试(仿真)
  6. 信念不息,希望不灭。(中英文对照)
  7. 简易自动售货机控制电路
  8. 淘宝模板开发系列之Widget规范
  9. 高校团队竟在 FinClip 黑客马拉松中放出了大招
  10. 基于Tensorflow2.1的Mask RCNN兼容性问题(Variables were created within a Lambda layer (anchors))