Activiti、Flowable和Camunda用哪个会比较好?

三大主流工作流引擎横向对比
关注者
107
被浏览
886,065
登录后你可以
不限量看优质回答 私信答主深度交流 精彩内容一键收藏

选型的几个标准

  • 社区活跃,至少在Github上能排上名的
  • 至少支持BPMN2协议的
  • 免费、开源

根据上面的标准,目前几大工作流引擎就只有Activiti、Flowable和Camunda了,有些人会问为什么没有AirFlow相关的呢?很明显,AirFlow属于编排类流程引擎,跟工作流没太大关系,他们的共同点就是流程控制,工作流引擎>=编排类引擎。先给一个表格,下面给一些具体解释。

对比项\引擎 Activiti-7.x Flowable-6.x Camunda-
商业化
路线(Roadmap) 工具型 轻量&工具型
PVM引擎 × ×
BPMN2引擎
CMMN引擎 × ×
DMN引擎 × √(开源版支持不太好)
建模工具选型 √(AngularJS) √(AngularJS) √(Bpmn.js&Camunda Provider)
建模工具内容 BPMN2 BPMN2/CMMN/DMN BPMN2/CMMN/DMN
扩展节点(Mule\Http等) ×
Spring Boot
Spring Cloud × ×
Web控制台
Rest接口
历史异步归档 × ×
异步任务全局锁 × ×

上面的对比可能不完全,笔者在工作中选用的是Flowable核心+Camunda的编辑器,但并不是说Flowable一定好,下面做一些简单说明和一些选型的指导。

  • Activiti :Activiti在目前来看有点不思进取,核心功能和内核的优化并没有太大进步,着力点全在商业版和云上面,核心只支持BPMN2协议,跟6版本没有什么区别。如果你是一个老的Activiti使用者,并且只是用BPMN2协议,可以选用Activiti(非Cloud版本)。
  • Flowable :Flowable不管是功能层面还是在代码层面来讲,都是这3个中最重的,当初跟Activiti分道扬镳的原因也是因为理念不一样,Flowable更注重其功能性、扩展性和性能。在上面表格中,历史异步归档和异步任务全局锁都是对性能的极大优化,特别是异步任务这一项,当年在使用Activiti的使用是一个极大的困扰,因为异步任务的吞吐反而会随着实例数的增加而加速恶化。Flowable比较臃肿,它支持了太多的东西,以致于如果想做POC或者Demo,环境搭建这一步都够呛。但是如果你本身就想做一个扩展性强的,性能高的工作流平台(SaaS\PaaS),Flowable是不二的选择。
  • Camunda :Camunda是这3个里面比较轻量的一个,但是它并没有去掉PVM这个性能较差的流程推动引擎,所以如果你对性能要求很高的话,PVM肯定是不能满足的(Activiti已经在6.X版本的时候放弃了PVM,Flowable亦是如此)。但是Camunda有一个好东西就是它的编辑器,它是基于 bpmn.io 的bpmn.js,cmmn.js,dmn.js来开发的,并且开源了自己的组件库,所以,如果你想做一个轻巧的、灵活的、定制性强的编辑器,工作流是嵌入式的,那么Camunda是一个好选择。