赞
踩
目录
市场上比较有名的开源流程引擎有 Osworkflow、JBPM、Activiti、Flowable、Camunda。其中,jBPM4、Activiti、Flowable、Camunda 四个框架同宗同源,祖先都是 jBPM4,开发者只要用过其中一个框架,基本上就会用其它三个。
低代码平台、办公自动化(OA)、BPM 平台、工作流系统均需要流程引擎功能,对于市场上如此多的开源流程引擎,哪个功能和性能好,该如何选型呢?
Osworkflow 是一个轻量化的流程引擎,基于状态机机制,数据库表很少,Osworkflow 提供的工作流构成元素有:步骤(step)、条件(conditions)、循环(loops)、分支(spilts)、合并(joins)等,但不支持会签、跳转、退回、加签等这些操作,需要自己扩展开发,有一定难度,如果流程比较简单,osworkflow 是很好的选择,但该开源组件已过时,长时间没有版本升级了。
官方网站:http://www.opensymphony.com/osworkflow/。
JBPM 由 JBoss 公司开发,目前最高版本 JBPM7,不过从 jBPM5 开始已经跟之前不是同一个产品了,jBPM5 的代码基础不是 jBPM4,而是从 Drools Flow 重新开始,基于 Drools Flow 技术在国内市场上用的很少,所以不建议选择 jBPM5 以后的版本。
jBPM4 诞生的比较早,后来 jBPM4 创建者 Tom Baeyens 离开 JBoss 后,加入 Alfresco 后很快推出了新的基于 jBPM4 的开源工作流系统 Activiti,另外 JBPM 以 Hibernate 作为数据持久化 ORM 也已不是主流技术,现在时间节点选择流程引擎,JBPM 不是最佳选择。
官方网站:https://www.jbpm.org/。
Activiti 由 Alfresco 软件开发,目前最高版本 Activiti 7。Activiti 的版本比较复杂,有 Activiti5、Activiti6、Activiti7 几个主流版本,选型时让人晕头转向,有必要先了解一下 Activiti 这几个版本的发展历史。
Activiti5 和 Activiti6 的核心 Leader 是 Tijs Rademakers,由于团队内部分歧,在2017年时 Tijs Rademakers 离开团队,创建了后来的 Flowable,Activiti6 以及 Activiti5 代码已经交接给了 Salaboy 团队。
Activiti6 以及 Activiti5 的代码官方已经暂停维护了,Salaboy 团队目前在开发 Activiti7 框架,Activiti7 内核使用的还是 Activiti6,并没有为引擎注入更多的新特性,只是在 Activiti 之外的上层封装了一些应用。
结论是 Activiti 谨慎选择。
官方网站:https://www.activiti.org/。
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/。
Camunda 基于 activiti5,所以其保留了 PVM,最新版本 Camunda7.15,保持每年发布2个小版本的节奏,开发团队也是从 Activiti 中分裂出来的,发展轨迹与 Flowable 相似,同时也提供了商业版,不过对于一般企业应用,开源版本也足够了,强烈推荐 Camunda 流程引擎,功能和性能表现稳定。
选择 Camunda 的理由:
官方网站:https://docs.camunda.org/manual/7.15/introduction/。
由于 Flowable 与 Camunda 好多功能都是类似的,因此在这里重点罗列差异化的功能:
作者通过 Flowable 和 Camunda 多组对比测试,Camunda 性能比 Flowablet 提升最少10%,最大39%,而且 Camunda 无报错,Flowable 有报错,Camunda 在高并发场景下稳定性更好。
通过压力测试工具 JMeter(详细参见《JMeter —— 3万字讲解让测试彻底臣服的基于 Java 之强大测试工具》) 分别对 Flowable 和 Camunda 进行高并发压力测试,并发用户数从100到1000,JMeter 设置 Ramp-up 为1,循环次数为10,测试数据如下:
并发数 | Flowable | Camunda | 性能对比 (Camunda比Flowable提升) |
---|---|---|---|
100并发 | 2269 ms | 1631 ms | +39% |
200并发 | 3907 ms | 3489 ms | +12% |
400并发 | 7250 ms | 6452 ms | +12% |
600并发 | 9943 ms | 8700 ms | +14% |
800并发 | 13700 ms | 12400 ms | +10% |
1000并发 | 18800 ms | 15700 ms | +20% |
测试结论:
在1000并发时,Flowable6 后台报错,但能执行成功。报错信息为:Caused by:com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction;Camunda 后台无报错,执行全部成功。
通过 Flowable 和 Camunda 多组对比测试,Camunda 性能比 Flowablet 提升最少10%,最大39%,而且 Camunda无报错,Flowable 有报错,Camunda 在高并发场景下稳定性更好。云程BPM(云程低代码开发平台)基于 Camunda 开发,可以在线体验,并在多个项目进行验证,性能表现良好。
推荐大家使用 Camunda(流程引擎)+ bpmn-js(流程设计器)组合,作者在公司项目中经过实战验证,Camunda 在功能方面比 Flowable、Activiti 流程引擎强大,性能和稳定性更突出。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。