哪个开源工作流引擎更好?Flowable or Camunda ?
哪个开源工作流引擎更好?
lecture:波哥
当下在国内大家可以选择的开源的工作流引擎还是比较多的,但是对于具体选择用哪个产品,各自的优缺点有哪些其实并不是太清楚,为此波哥今天专门给大家来整理总结下。
一、主流开源框架介绍
1.OsWorkFlow
对于比较简单的流程,OsWorkFlow会是一个比较好的选择,对于复杂的流程就不推荐了,OsWorkFlow是一个轻量化的流程引擎,基于状态机机制,数据库表很少,Osworkflow提供的工作流构成元素有:步骤(step)、条件(conditions)、循环(loops)、分支(spilts)、合并(joins)等,但不支持会签、跳转、退回、加签等这些操作,需要自己扩展开发,有一定难度。而且OsWorkFlow组件已过时,长时间没有版本升级了。
2.JBPM
JBPM由JBoss公司开发,目前最高版本JPBM7,不过从JBPM5开始已经跟之前不是同一个产品了,JBPM5的代码基础不是JBPM4,而是从Drools Flow重新开始,基于Drools Flow技术在国内市场上用的很少,所有不建议选择jBPM5以后版本,jBPM4诞生的比较早,后来JBPM4创建者Tom Baeyens离开JBoss后,加入Alfresco后很快推出了新的基于jBPM4的开源工作流系统Activiti, 另外JBPM以hibernate作为数据持久化ORM也已不是主流技术,现在时间节点选择流程引擎,JBPM不是最佳选择。
3.Activiti
官网地址:https://www.activiti.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谨慎选择。
4.Flowable
Flowable基于activiti6衍生出来的版本,flowable目前最新版本是v6.7.2,开发团队是从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://tkjohn.github.io/flowable-userguide/#_conclusion
5.Camunda
Camunda基于Activiti5,所以其保留了PVM,最新版本Camunda7.17,保持每年发布2个小版本的节奏,开发团队也是从activiti中分裂出来的,发展轨迹与flowable相似,同时也提供了商业版,不过对于一般企业应用,开源版本也足够了,强烈推荐camunda流程引擎,功能和性能表现稳定。
二、Camunda和Flowable对比
1.功能上对比
Flowable和Camunda都是工作流引擎,在功能上有非常多的相似之处。我们罗列几个比较重要的给大家看看
2.性能上对比
通过压力测试工具JMeter分别对flowable和camunda进行高并发压力测试,并发用户数从100到1000,JMeter设置Ramp-up为1,循环次数为1,测试数据如下:
并发数 | Flowable | Camunda | 性能对比 |
---|---|---|---|
100 | 2702 | 1154 | 50% |
200 | × | 2103 | |
400 | × | 4467 | |
600 | × | 4928 | |
800 | × | 6571 | |
1000 | × | 8780 |
Camunda我们还能正常的测试,Flowable在并发100的情况下还可以,但是200的时候就直接没有了反应。
结论:对并发量有要求的强烈推荐Camunda