什么是工作流?

工作流,是指“业务​过程的部分或整体在​计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。

在计算机中,工作流属于计算机支持的协同工作(CSCW)的一部分。

工作流是复杂版本的状态机

就好比一般的请假流程,小明会先提出请假申请,然后由Leader审批或者Manager进行审批,直至审批通过或者拒接。

如果让我们实现请假单状态的切换,那么用一个字段来标识就可以了。

然而对于复杂的状态或者状态维度增加且状态流转的条件极为复杂,可能单纯用字段记录状态的实现方式就会不那么理想。

工作流解决的痛点在于,解除业务宏观流程和微观逻辑的耦合,让熟悉宏观业务流程的人去制定整套流转逻辑,而让专业的人只需要关心他们应当关心的流程节点,就好比大家要一起修建一座超级体育场,路人甲只需要关心他身边的这一堆砖是怎么堆砌而非整座建筑。

Java工作流开源框架

目前主流的开源框架就是Activiti/Camunda/Flowable,它们都源自于jbpm。

先是有了jbpm4,随后出来了一个Activiti5,Activiti5经过一段时间的发展,核心人员出现分歧,又分出来了一个Camunda。

activiti5发展了4年左右,紧接着就出现了Flowable。

下面我们就来分别简单认识下这三兄弟

一、简介

Activiti

Activiti 是一个针对业务人员、开发人员和系统管理员的轻量级工作流和业务流程管理 (BPM) 平台。 它的核心是一个用于 Java 的超快速和坚如磐石的 BPMN 2 流程引擎。 它是开源的,并在 Apache 许可下分发。 Activiti 可以在任何 Java 应用程序、服务器、集群或云中运行。 它与 Spring 完美集成,非常轻量级,基于简单的概念。

Activiti Cloud 现在是新一代的业务自动化平台,提供一组旨在在分布式基础架构上运行的云原生构建块。

github地址:https://github.com/Activiti/Activiti

主要服务类:

调用方式:

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
RepositoryService repositoryService = processEngine.getRepositoryService();
TaskService taskService = processEngine.getTaskService();
ManagementService managementService = processEngine.getManagementService();
IdentityService identityService = processEngine.getIdentityService();
HistoryService historyService = processEngine.getHistoryService();
FormService formService = processEngine.getFormService();
DynamicBpmnService dynamicBpmnService = processEngine.getDynamicBpmnService();

设计器

activiti6 官方提供有Web设计器(Modeler设计器)。部署运行activiti-modeler模块即可使用.

activiti7 推荐使用bpmn.io提供的bpmn-js设计器,在线使用地址:https://demo.bpmn.io/new

Flowable

Flowable是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定义(用于定义流程的行业XML标准), 创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据

github地址:https://github.com/flowable/flowable-engine

主要服务类:flowable服务类和activiti类似,没有太大的变化

设计器:eclipse插件,支持5.x版本,不支持6.x版本中新增加的节点和属性,online web设计器基于AngularJs1.x版本开发, 如下:

兼容性:

  • Alfresco Activiti5
  • Flowable5

Camunda

Camunda 是一个基于 Java 的框架,支持用于工作流和流程自动化的 BPMN、用于案例管理的 CMMN 和用于业务决策管理的 DMN。

github地址:https://github.com/camunda/camunda-bpm-platform

工作原理:

设计器

兼容性:

  • Active BPEL
  • Alfresco Activiti
  • Appian BPM
  • Bonitasoft
  • JBoss jBPM
  • IBM WPS / IBM BPM / IBM MQ Workflow / IBM Lotus Notes
  • Oracle BPM
  • Software AG Webmethods
  • Pega BPM

二、支持DB对比

三、功能对比

  • Flowable VS Activiti

小结:

Flowable的核心思想更像是在做一个多彩的工具,它在工作流的基础功能上,提供了很多其他的扩展,使用者可以随心所欲地把Flowable打造成自己想要的样子

Activiti7着重于处理bpmn,它的方向在于云,他的设计会尽量像例如Spring Cloud、Docker、K8S靠拢。

Flowable在功能上比Activiti更加完善,基础轮子也更加全面。所以在开发契合国内特色的工作流系统中,Flowable是更佳的选择。

目前两者陆续都开始了商业化,同时也都支持了分布式和云端部署。

  • Flowable VS Camunda

小结:

Flowable从6.4.1版本开始大力发展其商业版产品,开源版本也不在及时维护。部分功能已经不再开源版发布,比如表单生成器(表单引擎)、历史数据同步至其他数据源、es等等。

dmn目前是个半成品,没有Camunda稳定和好用,对于dmn规范支持薄弱。部分商业版的组件被商业化,因此开源版不再维护。Mongdb目前也放到商业产品中了,开源版的几乎不能用。

在高并发场景下,Camunda性能比Flowable要好些,报错的几率也低很多。

四、社区活跃度对比

Flowable

Activiti

Camunda

小结:从github活跃度来看, activiti和flowable比较相似,camunda最不活跃(可能是过去国人关注的少,中文文档也欠缺)。

总结:

在微服务、云计算、服务编排、LCDP等大环境下,camunda的前景优势会慢慢体现出来,作为下一代的工作流引擎,也会逐渐引起更多人的关注。

Activiti和Flowable作为传统的工作流引擎,其设计思想和理念还是很值得CRUD boy们去学习研究下的。

参考链接:

Camunda Platform documentation | docs.camunda.org

https://github.com/camunda/camunda-bpm-platform

Activiti User Guide

Introduction - Activiti & Activiti Cloud Developers Guide

https://github.com/Activiti/Activiti

Camunda/Flowable/Activiti技术发展史/盘古BPM框架对比最新版_分享牛-CSDN博客_camunda flowable 对比

Flowable Enterprise Documentation

https://github.com/flowable/flowable-engine

Java开源工作流框架对比相关推荐

  1. Java工作流详解(附6大工作流框架对比)

    目录 1.什么是工作流 2.工作流应用场景 3.工作流实现方式 4.有哪些工作流框架? 5.1.Activiti6. 2.Flowable7. 3.Camunda8.4.jBPM9. 5.oswork ...

  2. Java开源工作流对比

    Java开源工作流对比 工作流(Workflow) 1.业务过程的部分或整体在计算机应用环境下的自动化: 2.是对工作流程及其各步骤之间业务规则的抽象.概括描述: 3.工作流主要解决的问题是:为了实现 ...

  3. .NET 5 开源工作流框架elsa技术研究

    编者注: 工作流框架 elsa 是.NET基金会下面的开源项目,2.0版本即将在3月份发布,目前正在紧锣密鼓的开发之中,2020年2月份我也介绍过推荐一个很棒的开源工作流elsa-core ,今天给大 ...

  4. Java开源Web框架

     WebWork   点击次数:18070 WebWork 是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架.WebWork目前最新版本是2.1,现 ...

  5. Java开源 J2EE框架(二)

    Java开源 J2EE框架(二) 2007-01-06 12:34 Jofti [Java开源 其它开源项目] Jofti可对在缓存层中(支持EHCache,JBossCache和OSCache)的对 ...

  6. java开源工作流引擎优势是什么?

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.流程引擎的自我介绍 二.java开源工作流引擎优势介绍 总结 前言 IBPSv3.5是流辰信息团队面向Java开发 ...

  7. java开源服务框架_Java框架服务

    Java从诞生到现在,一路飙升,可以说红遍全球,红到发紫.随着Java的流行,促生了许多java框架:Spring.WebWork.Struts.HIbernate.JDiy.JFinal.Quart ...

  8. Java开源爬虫框架crawler4j

    花了两个小时把Java开源爬虫框架crawler4j文档翻译了一下,因为这几天一直在学习Java爬虫方面的知识,今天上课时突然感觉全英文可能会阻碍很多人学习的动力,刚好自己又正在接触这个爬虫框架,所以 ...

  9. java开源验证框架OVAL帮助文档

    OVAL验证框架帮助文档 目录 1.  注解说明 1.1.  @Assert 1.2.   @AssertFalse.@AssertTrue,@AssertNull 1.3.  @AssertURL ...

  10. Java开源JEE框架

     Spring Framework [Java开源JEE框架] Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不 ...

最新文章

  1. NSWindow添加NSViewController
  2. UITableView中selectRowAtIndexPath: animated:scrollPosition滚动到指定Row
  3. hive表 合并字段_hive 两字段合并成 一个字段 例如:字段a和字段b合并成a-b,请问如何实现、...
  4. 你真的弄明白了吗?Java并发之AQS详解
  5. 8张图告诉你如何运营微信公众号
  6. 理解Shadow DOM
  7. eclipse搜索关键字
  8. 第四范式:现代存储架构下的系统优化实践
  9. Java 字符串常用操作(比较、查找位置、删除字符、替换字符串、反向输出、是否存在、分割字符串、大小写转换,区域比较、拼接字符串)
  10. 与内存管理相关的几个宏
  11. n皇后问题c语言_用栈解决N皇后问题(C语言)
  12. 【机器学习-西瓜书】二、性能度量:召回率;P-R曲线;F1值;ROC;AUC
  13. C# ToString() 参数大全
  14. python中定义类的关键字_在Python中,定义一个类使用什么关键字?
  15. 《领域驱动设计 DDD》核心知识梳理笔记
  16. 2.2、云计算FusionCompute计算虚拟化
  17. 微信屏蔽网址解决办法:实现被微信屏蔽的网址在微信内正常访问
  18. 时尚pr标题模板,简约故障风格pr文字模板
  19. [笔试] 搜狗校招哈尔滨,武汉站 - 实现加减乘操作
  20. 帝国php被注入,帝国CMS(EmpireCMS) v7.5 代码注入分析(CVE-2018-19462)

热门文章

  1. STL模型文件修改软件magics 21.0的安装及使用
  2. Java多窗口编程示例
  3. svn删除文件出错的经验总结
  4. 瑞昱网卡linux通用驱动下载,Realtek瑞昱网卡万能驱动
  5. 《Java语言程序设计》(基础篇原书第10版)第五章复习题答案
  6. 遗传算法原理及代码讲解
  7. SQL Server数据库入门
  8. win98老机子安装linux,在win98下怎么安装linux?
  9. Win11繁体中文字体显示不全如何解决?
  10. 【基础数据库】经济行业分类