工作流引擎技术选型

article/2025/10/24 4:55:06

一、主流开源框架介绍


1、工作流相关文档

1.Camunda

官方文档:https://camunda.com/

中文文档:介绍 | docs.camunda.org

2.Activiti

官方文档:https://www.activiti.org/

中文文档:[activiti6用户手册

3.Snaker

官方文档:http://snakerflow.com/

用户手册:Snaker 用户手册_深望的博客-CSDN博客_snaker

4.Flowable

官方文档:https://www.flowable.org/ Flowable6.3

中文文档:https://tkjohn.github.io/flowable-userguide/

2、工作流相关介绍

市场上比较有名的开源流程引擎有osworkflow、jbpm、activiti、flowable、camunda。其中:Jbpm4、Activiti、Flowable、camunda四个框架同宗同源,祖先都是Jbpm4。

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软件开发,目前最高版本Activiti7。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谨慎选择。

优点:

​ 1、 最大的优点就是免费开源,这也是很多人选择的原因

​ 2、 小项目中应用简单的串行并行流转基本能满足需求。

缺点:

​ 1、缺少节点实例轨迹数据的持久化,Activity运行时紧紧围绕act_ru_execution这张表来工作,此表也是整个流程引擎的运行核心表,执行时是一个树型表,这张表就是节点运行实例的过程,而且使用PARENT_ID_来从一个节点到多个节点的过程,只是仅仅有一个Parent_Id_来维护是不够的,因为我们知道关系有可能这是样的正向生成的树,也有倒生长的树

​ 2、Activity需要经过大量的扩展才能应用起来,直接从官网下载下来的Activity要达到企业级应用还需要一段痛苦的改造之路要走。Activity的扩展非常依懒事件监听和AOP切面事件,,代码执行到处乱跳,非常的不好维护,可读性也差,一是维护人员的技术门槛非常高,二是越到后面代码越难维护。久而久之会把项目拖跨。

​ 3、Activity最明显的一个地方就是事件机制,简单来说把Activity执行过程理解为一条直线,这条执行直线上你要做很多的AOP拦截,对这个拦截进行事件抛出,然后自己再捕获这个事件进行扩展开发

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)等模块。

5.Camunda

官网地址:https://camunda.com/

中文文档地址:http://camunda-cn.shaochenfeng.com/introduction/

​ Camunda基于Activiti5,所以其保留了PVM,最新版本Camunda7.18,保持每年发布两个小版本的节奏,开源团队也是从activiti中分裂出来的,发展轨迹与flowable相似,同时也提供了商业版,不过对于一般企业应用,开源版也足够了,功能和性能表现稳定。

6.Snaker

snaker是一个基于Java的轻量级工作流引擎,适用于企业应用中常见的业务流程。本着轻量、简单、灵巧理念设计,定位于简单集成,多环境支持

优点:

1.只需要9张表,即可开始业务流程的驱动使用,主要针对中小型项目需要增加工作流特性的系统;相比于UFLO2、Activti十几张以上表,上手和使用的难度很低。(只需要根据实际的项目环境配置snaker.properties/snaker.xml两个文件即可)

2.核心代码少,源码只有7000多行,设计、编写非常规范,易懂、易改造。对于学习工作流原理或者二次开发,都很友好;

3.除了提供的常用功能API,支持拓展支持一些原生SQL语句的查询服务

4.业务流程实列简单,可以直接把业务数据存在流程实例的变量中(数据以JSON形式保存在流程实例和任务表中的variable 字段中,长度默认varchar(2000)),但这样也会增加流程引擎和业务数据的耦合;(建议还是在业务表中增加order_id、task_id 来支持业务流引擎的集成)

5.对外提供了可扩展的接口,支持流程设计器,节点自定义,属性自定义,表单自定义

6.剥离了权限角色相关依赖,实际导入系统时需要根据需求自己添加权限相关内容

缺点:

1.受限于轻量级限制,支持的业务场景不够丰富;

2.流程设计器不支持IDEA插件

3.稳定版为2.4版本,目前已停止更新维护

二、各大工作流技术对比

序号技术组成Activiti7.1jBPM7.25CamundaSnakerFlowable6.3.1
1数据库持久层ORMMyBatis3.4.2JPA2.2二次封装MybatisMybatisJPA 2.2
2持久化标准JPA规范JPA规范JPA规范JPA规范JPA规范
3事务管理MyBatis机制/Spring事务控制Bitronix,基于JTA事务管理hibernate机制/Spring事务控制由snaker自身管理/Spring事务控制hibernate机制,Spring事务控制
4分布式事务MyBatis机制/Spring事务控制Bitronix,基于JTA事务管理补偿机制,SAGA 模式
5数据库连接方式Jdbc/DataSourceJdbc/DataSourceJdbc/DataSourceJdbc/DataSourceJdbc/DataSource
6支持数据库Oracle、SQL Server、MySQLOracle、SQL Server、MySQLOracle、SQL Server、MySQL、db2mysql,oracle,db2, h2 ,mssql,postgresOracle、SQL Server、MySQL、db2
7内部服务通讯Service间通过API调用基于Apache Mina异步通讯Service间通过API调用Service间通过API调用Service间通过API调用
8集成接口SOAP、Mule、RESTful消息通讯SOAP、Mule、RESTfulSOAP、Mule、RESTful
9架构spring boot 2.1.2, spring 5.1.4Drools Flowactiviti5spring boot 1.5,spring 4.3, spring.security 4.2
10支持J2EE兼容天然支持EJB,J2EE兼容兼容
11技术前身jBPM3、jBPM4Drools Flowactiviti5activiti5
12API文档swagger1.5swagger1.5
13日志slf4j1.7门面,logback1.2.3slf4j1.5门面, log4jslf4j1.7门面,logback1.2.3slf4j1.7门面

三、流程设计器选型

​ 目前市场上比较主流的流程设计器有bpmn-js、mxGraph、Activiti-Modeler、flowable-modeler、easy-flow、bpmn2-modeler插件等。

1、bpmn-js

bpmn-js 是 BPMN 2.0 渲染工具包和 Web 模型。bpmn-js 正在努力成为 Camunda BPM 的一部分。bpmn-js 使用 Web 建模工具可以很方便的构建 BPMN 图表,可以把 BPMN 图表嵌入到你的项目中,容易扩展。bpmn-js是基于原生js开发,支持集成到vue、react等开源框架中。

官方网站:https://bpmn.io/

img

2、mxGraph

mxGraph是一个强大的JavaScript流程图前端库,可以快速创建交互式图表和图表应用程序,国内外著名的ProcessOne和draw.io都是使用该库创建的强大的在线流程图绘制网站. 由于mxGraph是一个开放的js绘图开发框架,我们可以开发出很炫的样式,或者完全按照项目需求定制。官方网站:http://jgraph.github.io/mxgraph/

img

3、Activiti-Modeler

Activiti 开源版本中带了web版流程设计器,在Activiti-explorer项目中有Activiti-Modeler,优点是集成简单,开发工作量小,缺点是界面不美观,用户体验差。

img

4、flowable-modeler

flowable开源版本中带了web版流程设计器,展示风格和功能基本跟Activiti-Modeler一样,优点是集成简单,开发工作量小,缺点是界面不美观,用户体验差。

img

5、easy-flow

码云上开源的流程设计器,没有深入研究,感觉离真正的BPMN流程图设计差距较大,不过至少有个框架。

https://gitee.com/xiaoka2017/easy-flow

6、Eclipse插件bpmn2-modeler

C/S版本的流程设计器,如果没有强调基于浏览器设计流程图,也可以考虑Eclipse插件版流程设计器bpmn2-modeler。官方地址:http://www.eclipse.org/bpmn2-model

7、https://snaker.mldong.com/

snaker工作流只用得画图软件,用起来简单,中文界面,可以直接翻译成xml文件和json类型,从而进行解析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vzZ6w3mz-1687750154701)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== “点击并拖拽以移动”)]​

四、相关优劣势

相关工作流涉及引擎使用得比较以及在开发时需要得设计器得相关介绍

在本优劣比较中也比较了对应当前市场所使用得版本介绍

1.设计器比较:

设计器ActivitiCamundaSnakerFlowable
ideaactiBPM(不好用),Activiti BPMN visualizer集成camunda-modeler-
EclipesActiviti Designersnaker-designerFlowable BPMN 2.0 designer
客户端-Camunda Modeler--
网页版Activiti-Modeler、bpmn-jsbpmn-jsSnaker-webflowable-modeler、bpmn-js

2.数据库表比较

ActivitiCamundaSnakerFlowable
ACT_GE_* : “GE”代表“General”(通用)ACT_HI_* : “HI”代表“History”(历史)ACT_ID_* : “ID”代表“Identity”(身份)ACT_RE_* : “RE”代表“Repository”(仓库)ACT_RU_* : “RU”代表“Runtime”(运行时)ACT_RE_: 'RE’表示流程资源存储ACT_RU_: 'RU’表示流程运行时ACT_ID_: 'ID’表示组织用户信息ACT_HI_: 'HI’表示流程历史记录ACT_GE_*: ‘GE’表示流程通用数据wf_cc_order  抄送实例表、wf_hist_order  历史流程实例表wf_hist_task  历史任务表wf_hist_task_actor  历史任务参与者表wf_order  流程实例表、wf_process  流程定义表、wf_surrogate  委托代理表、wf_task  任务表、wf_task_actor  任务参与者表ACT_RE_* : ’RE’表示repository(存储)ACT_RU_* : ’RU’表示runtimeACT_ID_* : ’ID’表示identity(组织机构)ACT_HI_* : ’HI’表示history。ACT_GE_* : 普通数据,各种情况都使用的数据
23张(不同版本数量不一致)47张(不同版本数量不一致)9张(不同版本数量不一致)80张(不同版本数量不一致)
版本支持7.0.0(25张)7.15.0(19张)2.5.0(9张)6.7.2(47张)

3.相关版本介绍

Activiti7

  • 由Salaboy团队基于由Activiti6核心迭代的新版本,但是没有给引擎注入更多的新特性,只是在Activiti6之外的上层封装了一些应用。
  • 从2017开始截至到2022年5月,Activiti7迭代到的最新版本为:7.3.0
  • activiti6以及activiti5的代码官方已经宣称暂停维护了
  • BUG比较多

Flowable

  • 从2017开始截至到2022年5月,Flowable迭代到的最新版本为:6.7.2

  • 由Tijs Rademakers团队开发维护,是基于Activiti6初始版本迭代带。Flowable 6.4.1 以上版本修复了大量Activiti6版本BUG

  • flowable以6.4.1版本为分水岭,大力发展其商业版产品。开源版本维护不是很及时,并且部分功能已经不再开源版发布,比如表单生成器(表单引擎)、历史数据同步至其他数据源、es等等

Camunda

  • 2012年基于Activiti5.x分裂出来的一个新的开源流程引擎,称为:Camunda BPM

  • 从2012开始截至到2022年5月,迭代到的最新版本为:7.18.0-alpha1,最新稳定版本为:7.17.0

  • 2022年4月,Camunda云原生工作流引擎Camunda Cloud升级为:Camunda Platform 8

Snaker

  • 稳定版为2.4版本,支持的hibernate最高直到4版本,目前已停止更新维护
  • 目前所依赖在springboot中得版本是1.0.8

五、功能总结

Activiti7

1.功能强大,满足各种复杂的业务场景流程需求

2.表结构复杂,继承了用户权限表,需要完成用户同步

3.核心代码量大,逻辑较为复杂,二次开发难度较大

4.Activity的扩展非常依懒事件监听和AOP切面事件,,代码执行到处乱跳,非常的不好维护,可读性也差,一是维护人员的技术门槛非常高,二是越到后面代码越难维护

5.是一款比较重量级的流程引擎

Flowable

1.Flowable更注重其功能性、扩展性和性能

2.以flowable6.4.1版本为分水岭,大力发展其商业版产品,开源版本维护不及时,部分功能已经不再开源版发布

3.Flowable6.5版本是商业版本与开源版本的区割点,后续版本开源版本可能不在提供技术支持

4.Flowable比较臃肿,它支持了太多的东西

Camunda

1.Camunda是这3个里面比较轻量的一个,但是它并没有去掉PVM(流程虚拟机)这个性能较差的流程推动引擎,所以如果你对性能要求很高的话,PVM肯定是不能满足的(Activiti已经在6.X版本的时候放弃了PVM,Flowable亦是如此)

2.Camunda的内部运行的性能也比较好

3.功能比较完善,除了BPMN,Camunda还支持企业和社区版本中的CMMN(案例管理)和DMN(决策自动化)。Camunda不仅带有引擎,还带有非常强大的工具,用于建模,任务管理,操作监控和用户管理,所有这些都是开源的

Snaker

1.Snaker是基于java的轻量级工作流引擎,接口丰富,使用简单

2.剥离了权限角色相关依赖,实际导入系统时需要根据需求自己添加权限相关内容

3.受限于轻量级限制,支持的业务场景不够丰富;

2.Camunda的内部运行的性能也比较好

3.功能比较完善,除了BPMN,Camunda还支持企业和社区版本中的CMMN(案例管理)和DMN(决策自动化)。Camunda不仅带有引擎,还带有非常强大的工具,用于建模,任务管理,操作监控和用户管理,所有这些都是开源的

Snaker

1.Snaker是基于java的轻量级工作流引擎,接口丰富,使用简单

2.剥离了权限角色相关依赖,实际导入系统时需要根据需求自己添加权限相关内容

3.受限于轻量级限制,支持的业务场景不够丰富;

4.因为内部源码简单,有些功能可以根据自己的业务场景重写代码,不太过于依赖里面场景


http://chatgpt.dhexx.cn/article/Rnmpu58F.shtml

相关文章

Java开源工作流引擎 介绍

Java开源工作流引擎 http://www.open-open.com/08.htm 身为拿来主义者, 很好的吸取经验才是我们的目的! Willow 由Huihoo Power开发详细可到其中文主页查看。 更多Willow信息 OpenWFE OpenWFE是一个开放源码的Java工作流引擎。它是一个完整的业务处理…

最近进行的一次技术选型(工作流引擎)及相关知识介绍

前言 最近有个新项目,需要实现类似工作流引擎的效果,如果不知道是啥,看完本文就懂了。 公司内其实也有些自研的,可能就是不像开源的这些那样,还支持这个那个规范,都是基于需求定制开发的,扩展…

java工作流引擎(j-roadflow)快速入门教程

使用j-roadflow java工作流引擎创建一个流程分为两个步骤,创建表单和创建流程。 一、创建表单。 在流程管理--表单管理下点新建表单即开始创建一个新的表单: 点击之后打开表单设计器并弹出表单属性设置: 表单名称:为您新建的表单…

为什么使用工作流引擎,什么是工作流引擎,工作流引擎选型以及如何使用

文章目录 为什么使用工作流引擎?不使用工作流存在以下问题工作流优缺点 什么是工作流引擎尝试自己构建工作流引擎有哪些选型方案呢基于bpmn标准进行流程定义国产自定义 如何使用SnakerFlow工作流以请假流程来看下数据库中数据流转情况初始状态员工发起请假申请 常见…

工作流引擎

1 绪论 【社会上的需求.】 1.1 课题的研究背景 工作流的概念起源于生产组织和办公自动化领域。它是针对日常工作中具有固定程序的活动而提出得一个概念。它的主要特点是使处理过程自动化,通过将工作分解成定义良好的任务、角色,按照一定的规则和过程来执…

LeaRun.Java工作流引擎 快速开发业务流程

工作流引擎是用来开发工作流转的框架。作为应用系统的一部分,能根据角色、分工和条件的不同决定信息传递路由、内容等级等核心解决方案,包含组织结构、流程、节点、转向规则等。 而低代码开发框架,是能够解决一个可以直接在后台配置就可以开…

IBPS java工作流引擎介绍

java工作流引擎是什么?看了这篇文章,相信80%的人都会明白的。IBPS低代码开发平台是近些年流辰信息的主打产品,实践证明,该产品推向市场后,得到了企业信息化部门、各高校、电力等企业的喜爱和支持。本文为大家着重介绍I…

Java开源工作流引擎有什么突出特点?

在高效办公需求日渐增长的当天,如何利用优质软件助力企业提升办公效率,是很多企业一直在寻觅的途径。Java开源工作流引擎可以借助其优势特点助力企业实现标准化发展,高效提高工作效率。那么,Java开源工作流引擎到底有什么用的突出…

后端web开发框架——Spring Boot

为什么使用Spring Boot 简化配置,无需编写太多的 xml 配置文件,效率很高;Spring 可以整合很多各式各样的框架,并能很好的集成;基于 Spring 构建,使开发者快速入门,门槛很低;Spring …

Web前端开发工具和框架

摘要:技术的快速发展让很多人学习起来无所适从,幸运的是,很多优秀的 Web 开发人员和设计人员在努力寻找各种有特色的解决方案。 因此,我们有了很多优秀的小工具和库,每一个都是用来解决特定的问题或维护一组特定的项目…

后端Web开发框架(Java)

本文节选自霍格沃兹测试学院内部教材 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。讲的通俗一点就是 Spring …

Python中如何选择Web开发框架?

Python开发中Web框架可谓是百花齐放,各式各样的web框架层出不穷,那么对于需要进行Python开发的我们来说,如何选择web框架也就变成了一门学问了。本篇文章主要是介绍目前一些比较有特点受欢迎的Web框架,我们可以根据各个Web框架的特…

移动web开发框架研究

纯粹的总结一下移动web开发框架,移动web开发框架有jQuery Mobile 、Sencha Touch等等,他们都来源于web开发,是成熟的框架,jQuery Mobile出自于jQuery家族,Sencha Touch来自于ExtJS。jQuery Mobile 和Sencha Touch都是比较成熟老牌…

【Web开发】框架篇

前后端分离 为了适应技术和业务发展的需求,采用前后端分离的技术,前端应用和后端应用以JSON格式进行数据交互,采用的解决方案Spring Boot Vue。 单体——> 前端应用 后端应用 前端应用:负责数据展示和用户交互 后端应用&…

Python Web开发框架

一、WEB应用服务的认知 WEB应用服务基于HTTP协议/规范,实现静态资源和动态资源的请求与处理。 静态资源包括:html网页、图片、样式、javascript脚本、视频、音频等等。动态资源包括:通过程序(java/php/python/.net)和…

Web前端开发框架推荐

原本写这篇文章想围绕着 CSS 框架来的,但因为目前界内比较流行并遍地开花的主要还是 JSCSS 模式的框架,并且自己靠着一点 JS 功底,就想专门针对 CSS,所以最后来个大锅乱炖都大致聊聊。下面的框架也没有什么先后顺序之分&#xff0…

Java开源Web框架

URL:http://www.open-open.com/07.htm WebWork 点击次数:18070 WebWork 是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。WebWork目前最新版本是2.1,现在的WebWork2.x前身是Rickard Oberg开发的…

37 个 Python Web 开发框架总结

1. Django 框架 官 网: https://github.com/django/django.git 优 点:是一个高层次 Python Web 开发框架,特点是开发快速、代码较少、可扩展性强。Django 采用 MTV(Model、Template、View)模型组织资源,框…

web框架

目录 1 左右分割窗口 2 上下分割窗口 3 嵌套分割窗口 4 内联框架 框架的作用是把浏览器窗口划分成若干个小窗口&#xff0c;每个小窗口可以分别显示不同的网页。 框架的基本结构主要分为框架集和框架两个部分&#xff0c;在网页中分别用<frameset>和<frame>标记…

热门开源Web开发框架推荐

程序员圈有这么一句话&#xff1a;“不要重复造轮子” &#xff0c;这句话也带来许多争议。 要不要重复造轮子&#xff1f; 有的人认为这是一种“拿来主义”的傲慢体现&#xff0c;因为你不造自己的轮子&#xff0c;就会缺乏核心技术&#xff0c;由此将一直受限&#xff0c;创…