工作流框架研究

news/2025/3/15 3:31:32/

工作流框架研究

  • 主流开源框架介绍
    • OsWorkFlow
    • JBPM
    • Activiti
    • Flowable
    • Camunda
    • Camunda 和Flowable对比
      • 功能上对比
      • 性能上对比
  • 总结

主流开源框架介绍

OsWorkFlow

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

JBPM

JBPM由JBoss公司开发,目前最高版本JBPM7,不过从JBPM5开始已经跟之前不是同一个产品了,JBPM5的代码基础不是JBPM4,而是Draools Flow 重新开始,基于Drools Flow技术在国内市场用的很少,所以不建议选择JBPM5以后的版本,JBMP4诞生的比较早,后来JBPM创建者Tom Baeyens 离开JBoss后,加入Alfresco后很快推出了新的基于JBMP4的开源工作流系统Activiti,另外JBPM以hibernate作为数据持久化ORM也已经不是主流技术,现在时间节点选择流程引擎,JBPM不是最佳选择。
在这里插入图片描述

Activiti

Activiti由Alfresco软件开发,目前最高版本Activiti7,Activiti的版本比较复杂,有activiti5,activiti6、activiti7几个主流版本,选型时让人晕头转向,有必要先了解一下activiti的几个版本的发展历史。Activiti5和activit6的核心leader是Tijs Rademakers,由于团队内部分歧,2017年Tijs Rademakers离开团队,创建了后来的Flowable,Activiti6以及Activiti7代码已经交接给了Salaboy团队,Activiti6以及Activiti5的代买官方已经暂停维护了。Salaboy团队目前在开发Activiti7,Activiti7内核使用的还是Activiti6。并没有为引擎注入更多的新的特性,只是在activiti之外的上次封装了一些应用。结论是Activiti谨慎使用。

Flowable

Flowable基于activiti6衍生出来的版本,flowable目前最新版本v6.7.2,开发团队是从activiti分离出来的,修复了一众的activiti6的bug,并在其基础上研发出了DMN支持,BPEL支持等等,相对开源版,其商业办的功能会更强大,以flowwable6.4.1版本为分水岭,大力发展其商业版本产品,开源版本维护不及时,部分功能已经不再开源版发布,比如表番生成器(表单引擎)、历史数据同步至其他数据源、ES等。

Flowanble是一个使用Java编写的轻量级业务流程引擎,使用Apache V2 Licence协议开源。2016年10月,Activiti工作引擎的主要开发者离开Alfresco公司并在Activiti分支基础上开启了Flowable开源项目、基于Activiti v6 bet4a发布第一个Flowable relase版本为6.0.Flowable项目包括BPMN引擎、CMMN引擎、DMN引擎、表单引擎等模块。

Camunda

Camunda基于Activiti5,所以其保留了PVM,最新版本Camunda7.17,保持每年发布2个版的的节奏,开发团队也是从activiti中分离出来的,发展轨迹与Flowable相似,同时也提供商业版本,不过对于一般企业应用,开源版本也就足够了,强烈推荐Camunda流程引擎,功能和性能表现稳定。

Camunda 和Flowable对比

功能上对比

Flowable和Camunda都是工作流程引擎,但在功能上有非常多的相似之处。我们罗列几个比较重要的给大家看看:
在这里插入图片描述

性能上对比

通过压力测试工具Jmeter分别对Flowable和Camunda进行高并发压力测试,并发数从100到1000,Jmeter设置Ramp-up为1,循环次数为1,测试数据如下:

并发数FlowableCamunda性能对比
1002702115450%
200X2103
400X4467
600X4928
800X6571
1000X8780
Camunda 我们还能正常测试,Flowable在并发100的情况下还可以但是在200的时候就直接没有了反应。

总结

因为我们业务对性能要求不高,所以最终选择了Flowable工作流。

http://www.ppmy.cn/news/57987.html

相关文章

2023年软件测试常见面试题100%问必背全套教程

随着数字化时代的到来,软件测试越来越受到重视。在未来的几年里,软件测试将继续成为信息技术领域中的热门职业之一。如果你是一名正在寻找或准备进入软件测试行业的人,那么这套常见面试题全套教程对你来说会非常有用。 这套教程旨在帮助你了…

GO Select 使用

Go select case 用法 case 1 func Test_Select_Case_1(t *testing.T) {chan1 := make(chan int)chan2 := make(chan int)go

EventBus(事件总线)的使用和源码的简单解析

Google Guava EventBus(事件总线)的使用和源码的简单解析 什么是EventBus? 事件总线(EventBus)是一种广泛用于软件架构中的设计模式,用于实现解耦和松散耦合的通信机制。它可以帮助组织和管理应用程序中不同组件之间的通信&…

JdbcTemplate常用语句代码示例

目录 JdbcTemplate 需求 官方文档 JdbcTemplate-基本介绍 JdbcTemplate 使用实例 需求说明 创建数据库 spring 和表 monster 创建配置文件 src/jdbc.properties 创建配置文件 src/JdbcTemplate_ioc.xml 创建类JdbcTemplateTest测试是否可以正确得到数据源 配置 J…

Python环境设置

对应B站视频讲解地址:https://www.bilibili.com/video/BV1Ds4y1w7pJ/?vd_source515e6808c21c69114a4fae34589dfb0e 在了解Python语言的历史和介绍之后,要想开始学习Python语言,还需要在计算机中安装Python编译环境,本期就来聊聊…

Python程序员如何写简历容易找到好工作?分享4个制作简历的细节

在写简历时,你需要注意很多细节,因为简历是展示你个人能力和经验的关键。在本次前端简历写作法文章中,我们分享了一些写简历的技巧和要点,以帮助你写出一份优秀的简历。我们将进一步探讨一些你不应该在简历中写的东西,…

【模板方法设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

简介 模板方法模式(Template Method Pattern)也叫模板模式,是一种行为型模式。它定义了一个抽象公开类,包含基本的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构,只…

【Java笔试强训 29】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥求正数数…