登录后你可以
不限量看优质回答
私信答主深度交流
精彩内容一键收藏
选型的几个标准 :
- 社区活跃,至少在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有一个好东西就是它的编辑器,它是基于 http:// bpmn.io 的bpmn.js,cmmn.js,dmn.js来开发的,并且开源了自己的组件库,所以,如果你想做一个轻巧的、灵活的、定制性强的编辑器,工作流是嵌入式的,那么Camunda是一个好选择。