workflow流程
一、主流开源流程引擎介绍
1. Osworkflow
Osworkflow是一个轻量级的流程引擎,基于状态机机制,其数据库表设计简洁。Osworkflow提供的工作流构成元素包括步骤、条件、循环、分支、合并等,但在会签、跳转、退回、加签等高级操作上需要用户自行扩展开发,这具有一定的难度。如果流程较为简单,osworkflow是一个不错的选择。该开源组件已经过时,长时间没有版本更新了。
2. JBPM
JBPM由JBoss公司开发,目前最高版本为JPBM7。从JBPM5开始,其与之前的版本已有较大差异,其代码基础不再是JBPM4,而是基于Drools Flow技术。但Drools Flow在国内市场上应用较少,因此不建议选择JBPM5及以后的版本。JBPM4诞生较早,其创建者Tom Baeyens离开JBoss后,很快推出了基于jBPM4的开源工作流系统Activiti。JBPM使用的hibernate作为数据持久化ORM也已不是主流技术。在当前时间节点,JBPM可能不是流程引擎的最佳选择。
3. Activiti
Activiti由Alfresco软件开发,目前最高版本为activiti 7。Activiti的版本众多,有activiti5、activiti6、activiti7等主流版本,选型时可能会让人感到困惑。Activiti5和activiti6的核心开发者Tijs Rademakers因团队内部分歧而离开团队,创建了后来的Flowable。Activiti6及之前的版本代码已经交接给Salaboy团队,但该团队目前主要开发activiti7框架。Activiti7内核仍使用activiti6的代码基础,并未注入更多新特性,只是在上层封装了一些应用。对Activiti的选择需要谨慎。
4. Flowable
Flowable是基于activiti6衍生出来的版本,其最新版本为v6.6.0。Flowable开发团队是从Activiti来的,修复了一系列activiti6的bug,并在其基础上研发了DMN支持、BPEL支持等。与开源版相比,其商业版功能更为强大。以flowable6.4.1版本为分界点,其商业版产品得到了大力发展,开源版本的维护则相对不及时,部分功能不再在开源版中发布。Flowable是一个使用Java编写的轻量级业务流程引擎,使用Apache V2 license协议开源。
更多信息请访问其官方网站:/open-source/
5. Camunda
Camunda基于activiti5开发,保留了PVM(Process Virtual Machine),其最新版本为Camunda7.15。Camunda开发团队与Flowable有相似的发展轨迹,也是从Activiti来的。Camunda提供了商业版,但一般企业应用使用其开源版本也足够。选择Camunda的理由包括其通过压力测试验证的BPMN引擎性能和稳定性更好,功能比较完善,除了BPMN还支持CMMN(案例管理)和DMN(决策自动化)。Camunda不仅带有引擎,还提供了建模、任务管理、操作监控和用户管理等强大工具,所有这些都是开源的。
更多信息请访问其官方网站:docs./manual/7.15/introduction/
二、Flowable与Camunda对比分析
在功能方面,Flowable与Camunda有许多相似之处,但也存在一些差异化的功能。例如:
1. Camunda支持流程实例的迁移,可以在同一流程中运行多个实例和版本,并任意迁移流程实例到指定版本。而Flowable在这方面支持较弱。
2. Camunda基于PVM技术,用户从Activii5迁移到Camunda较为容易。而Flowable没有PVM机制,迁移工作量较大。
3. Camunda为每一个CMD命令类提供了权限校验机制,而Flowable没有。
4. Camunda的API支持批处理操作,包括异步批处理机制如批量异步删除历史数据。而Flowable没有该机制。
5. Camunda支持从任意节点开始启动实例,而不是仅从起始节点开始。Flowable仅支持从起始节点开始运转实例。
6. Camunda还支持多种脚本语言在连线上的条件表达式配置,如python、ruby、groovy等。而Flowable仅支持JUEL和groovy。此外Camunda还支持外部任务等功能和特性。关于外部任务的好处是解决了分布式事务问题等等其他优势在此不再赘述。而在性能方面Camunda经过多组对比测试证明其在性能上有所提升稳定性也更好一些具体细节可查阅相关性能测试文章了解更全面的信息在选型方面推荐使用Camunda流程引擎结合bpmn-js流程设计器组合进行使用在实际项目中经过验证Camunda在功能和性能方面表现出色特别是在高并发