找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4140

积分

0

好友

547

主题
发表于 3 天前 | 查看: 20| 回复: 0

市场上比较有名的开源流程引擎有 osworkflowjbpmactivitiflowablecamunda。其中:Jbpm4ActivitiFlowablecamunda 四个框架同宗同源,祖先都是 Jbpm4,开发者只要用过其中一个框架,基本上就会用其它三个。

低代码平台、办公自动化(OA)、BPM平台、工作流系统均需要流程引擎功能。面对市场上众多的开源流程引擎,哪个功能和性能更好,又该如何进行选型呢?

财务审批流程示意图

一、主流开源流程引擎介绍

1、Osworkflow

Osworkflow 是一个轻量化的流程引擎,基于状态机机制,数据库表很少。它提供的工作流构成元素有:步骤(step)、条件(conditions)、循环(loops)、分支(spilts)、合并(joins)等,但不支持会签、跳转、退回、加签等这些操作,需要自己扩展开发,有一定难度。如果流程比较简单,osworkflow 曾是很好的选择,但该开源组件已过时,长时间没有版本升级了。

官方网站:http://www.opensymphony.com/osworkflow/

2、JBPM

JBPMJBoss 公司开发,目前最高版本 JPBM7。不过从 JBPM5 开始已经跟之前不是同一个产品了,JBPM5 的代码基础不是 JBPM4,而是从 Drools Flow 重新开始。基于 Drools Flow 技术在国内市场上用的很少,所以不建议选择 jBPM5 以后版本。

jBPM4 诞生的比较早,后来 JBPM4 创建者 Tom Baeyens 离开 JBoss 后,加入 Alfresco 后很快推出了新的基于 jBPM4 的开源工作流系统 Activiti。另外,JBPMhibernate 作为数据持久化 ORM 也已不是主流技术。在当前时间节点选择流程引擎,JBPM 并非最佳选择。

官方网站:https://www.jbpm.org/

3、Activiti

activitiAlfresco 软件开发,目前最高版本 activiti 7activiti 的版本比较复杂,有 activiti5activiti6activiti7 几个主流版本,选型时容易让人困惑,有必要先了解一下其发展历史。

activiti5activiti6 的核心开发负责人是 Tijs Rademakers。由于团队内部分歧,在 2017 年时 Tijs Rademakers 离开团队,创建了后来的 flowable,而 activiti6 以及 activiti5 的代码已经交接给了 Salaboy 团队。

activiti6 以及 activiti5 的代码官方已经暂停维护了,Salaboy 团队目前在开发 activiti7 框架。但 activiti7 内核使用的还是 activiti6,并没有为引擎注入更多的新特性,只是在 activiti 之外的上层封装了一些应用。

综合来看,activiti 需要谨慎选择。

官方网站:https://www.activiti.org/

4、Flowable

flowable 是基于 activiti6 衍生出来的版本,目前最新版本是 v6.6.0。其开发团队正是从 activiti 中分裂出来的,修复了一众 activiti6bug,并在其基础上研发了 DMN 支持、BPEL 支持等。相对开源版,其商业版的功能会更强大。

flowable 6.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/

5、Camunda

Camunda 基于 activiti5,所以其保留了 PVM,最新版本为 Camunda 7.15,保持着每年发布 2 个小版本的节奏。其开发团队也是从 activiti 中分裂出来的,发展轨迹与 flowable 相似,同时也提供了商业版。不过对于一般企业应用,开源版本功能已足够强大,从功能和性能的稳定性来看,强烈推荐 camunda 流程引擎

选择 camunda 的主要理由如下:

  1. 通过压力测试验证,Camunda BPMN 引擎在性能和稳定性方面表现更好。
  2. 功能比较完善,除了 BPMNCamunda 还支持企业和社区版本中的 CMMN(案例管理)和 DMN(决策自动化)。Camunda 不仅带有引擎,还带有非常强大的工具,用于建模、任务管理、操作监控和用户管理,所有这些都是开源的。

官方网站:https://docs.camunda.org/manual/7.15/introduction/

二、flowable与Camunda对比分析

1、功能方面对比

由于 FlowableCamunda 在基础功能上高度相似,以下重点罗列它们在功能上的差异化特性。

  • 流程实例迁移camunda 支持流程实例的迁移。例如,当同一个流程有多个版本在运行时,camunda 支持将运行在旧版本的实例迁移到指定的新版本中,并可以指定从哪个节点开始继续执行。flowable 则无此原生功能。
  • 技术传承与迁移成本camunda 基于 PVM(Process Virtual Machine) 技术,因此用户从 Activiti5 迁移到 camunda 基本没有差异。flowable 已经移除了 PVM,迁移工作量相对更大(实例、流程定义、定时器的迁移都更复杂)。
  • 权限校验camunda 为每一个 CMD 命令类都提供了权限校验机制,而 flowable 没有。
  • 批处理支持camunda 的很多 API 都设计有批处理的特性。例如批量挂起、激活流程等,可以直接使用 API 操作。flowable 则通常需要开发者自己查询集合,然后循环遍历操作。camunda 的批处理还支持异步或同步执行方式。
  • 灵活的实例启动与跳转camunda 启动流程实例时,支持从任意节点开始,而不仅仅是开始节点。同时,它也支持任意节点的跳转(可跳转到节点或连线),并能控制是否触发目标节点的监听器。flowable 缺乏这些原生 API,需要用户自行扩展。
  • 双异步机制camunda 支持“双异步”。第一重是常见的节点异步执行;第二重是,在异步任务完成后,还可以继续异步执行任务后面的连线。flowable 仅支持第一种异步方式。
  • 脚本语言支持camunda 开箱即用地支持多种脚本语言(如 PythonRubyGroovyJUEL)在流程连线上配置条件表达式。flowable 主要支持 JUELGroovy
  • 外部任务camunda 原生支持外部任务(External Task)。这为解决调用第三方 API 或执行特定业务逻辑时遇到的分布式事务问题提供了优雅方案。外部任务由外部系统抓取、锁定、完成,流程实例等待其完成后才继续。flowable 中可以使用 HttpTask,但它是非等待的,调用 API 后流程会立刻继续,适用场景不同。
  • 个性化查询偏好camunda 支持为用户定制并持久化其常用的任务查询条件(偏好),实现类似“机器学习”的个性化查询体验。
  • 历史数据处理camunda 支持历史数据的批量删除或迁移(例如到 ES),flowable 没有该机制。
  • 高并发部署锁机制camunda 支持在高并发部署流程定义时,选择是否使用锁机制来保证一致性。
  • 架构支持camunda 支持单引擎多租户、多引擎多库的架构。flowable 主要支持单引擎多租户。
  • 跨流程定义跳转camunda 支持流程实例跨流程定义跳转,这是一个高级功能。
  • 分布式定时器camunda 支持分布式定时器,flowable 没有该机制。
  • NoSQL 支持flowable 支持 NoSQL 数据库,camunda 仅有相关的解决方案,非原生开箱支持。
  • 流程优化与分析camunda 支持流程优化,并提供工具帮助分析流程引擎的瓶颈及每个环节的耗时。
  • 性能与解析camunda 修改了流程模板 XML 的解析方式,性能相比 flowable 更优。同时,它去除了 Activiti5 中存在的“双解析”机制。
  • 自定义属性camunda 允许在任意流程元素上添加自定义属性,flowable 需要自己扩展。
  • 流程图生成camunda 框架本身不提供生成流程图片的 API(所有流程图展示及高亮均在前端动态计算),而 activiti5/6flowable5/6 有相关 API
  • 定时作业优先级camunda 可以在节点或全局定义定时作业的优先级。
  • 流程标记(Tag)camunda 可以为流程定义添加标记(Tag)。
  • 国产数据库支持camundaactiviti5/6flowable5/6 均不支持人大金仓、达梦等国产数据库。
  • LDAP 支持flowable6 支持 LDAPopenLDAPcamundaactiviti5 不支持。

2、性能方面对比

通过多组对比测试发现,camunda 的性能相比 flowable 有显著提升,最小提升 10%,最大可达 39%。在测试过程中,camunda 运行稳定无报错,而 flowable 在高并发场景下偶有错误出现,这表明 camunda 在高并发下的稳定性更优。

Flowable与Camunda性能对比表

性能测试详细文章见:https://lowcode.blog.csdn.net/article/details/109030329

三、选型推荐

综合功能、性能、稳定性及社区活跃度,推荐使用 Camunda(流程引擎) + bpmn-js(流程设计器) 的组合。该方案在实际企业项目中经过验证,Camunda 在功能丰富度、BPMN引擎性能及系统稳定性方面,相比 FlowableActiviti 表现更为突出。

希望这篇横向对比能为你的技术选型提供清晰的参考。更多关于架构设计与技术实践的深度讨论,欢迎在云栈社区交流分享。




上一篇:Arthas实战:排查Spring Boot接口响应延迟,定位Tomcat静态资源加载性能瓶颈
下一篇:基于SpEL表达式实现灵活业务校验:开源Java参数校验组件实践
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-10 12:45 , Processed in 0.545342 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表