工作流引擎学习

1. 什么是工作流?什么是工作流引擎?

工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。在计算机中,工作流属于计算机支持的协同工作(CSCW)的一部分。后者是普遍地研究一个群体如何在计算机的帮助下实现协同工作的。

工作流主要解决的主要问题是:为了实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。

工作流引擎是指workflow作为应用系统的一部分,并为之提供对各应用系统有决定作用的根据角色、分工和条件的不同决定信息传递路由、内容等级等核心解决方案。工作流引擎包括流程的节点管理、流向管理、流程样例管理等重要功能。

2. 为什么使用工作流、工作流引擎?

2.1 不使用工作流

工作流引擎学习_第1张图片
不使用工作流存在以下问题

  • 流程设计没有可视化

  • 流程没有版本管理,热部署等

  • 每个活动的流转都需要硬性判断下一步活动节点及其操作人

  • 每次操作都需要维护业务数据和流程的相关数据

  • 缺乏数据管理、流程监控等功能

2.2 使用工作流

对上面共性问题进行抽象,抽象,抽象,可以得出下面的视图。
工作流引擎学习_第2张图片
把业务和流程进行了抽象分离,降低耦合。

2.3 工作流优缺点

优点:

  • 具有可视化的流程设计工具
  • 业务数据和流程数据的分离,可以进行更专注的性能优化,业务划分
  • 内置API能很好的完成常见的功能场景
  • 具有完善的流程监控体系
  • 具备大量的自定义扩展接口

缺点:

  • 需要额外的学习成本

3. 主流工作流引擎调研

目前市面上主流的开源流程引擎主要有 Activiti、Flowable、Camunda、jBPM和 osworkflow 等。

3.1 Activiti

Activiti 由 Alfresco 公司开发,目前最高版本为 Activiti cloud 7.1.0。其中 activiti5 和 activiti6 的核心 leader 是 Tijs Rademakers,由于团队内部分歧,2017 年 Tijs Rademakers 离开团队,创建了后来的 Flowable。activiti6 以及 activiti5 代码则交接给 Salaboy 团队维护,activiti6 以及 activiti5 的代码官方已经暂停维护。往后 Salaboy 团队开发了 activiti7 框架,activiti7 内核使用的还是 activiti6,并没有为引擎注入更多的新特性,只是在 Activiti 之外的上层封装了一些应用。直到 Activiti cloud 7.1.0 版本,Activiti cloud 将系统拆分为 Runtime Bundle、Audit Service、Query Service、Cloud Connectors、Application Service、Notification Service。这些工作的主要目的其实就是为了上云,减少对 Activiti 依赖的耦合,需要使用 Activiti 的系统只需要通过调用 http 接口的方式来实现工作流能力的整合,将工作流业务托管上云。

3.2 Flowable

Flowable 是基于 activiti6 衍生出来的版本,目前最新版本是 v6.7.0。开发团队是从 Activiti 中分裂出来的,修复了一众 activiti6 的 bug,并在其基础上实现了 DMN 支持,BPEL 支持等。相对开源版,其商业版的功能会更强大。Flowable 是一个使用 Java 编写的轻量级业务流程引擎,使用 Apache V2 license 协议开源。2016 年 10 月,Activiti 工作流引擎的主要开发者离开 Alfresco 公司并在 Activiti 分支基础上开启了 Flowable 开源项目。Flowable 项目中包括 BPMN(Business Process Model and Notation)引擎、CMMN(Case Management Model and Notation)引擎、DMN(Decision Model and Notation)引擎和表单引擎(Form Engine)等模块。

3.3 Camunda

Camunda 基于 activiti5,所以其保留了 PVM,最新版本 Camunda7.17,开发团队也是从 activiti 中分裂出来的,发展轨迹与 Flowable 相似。通过压力测试验证 Camunda BPMN 引擎性能和稳定性更好。功能比较完善,除了 BPMN,Camunda 还支持 CMMN(案例管理)和 DMN(决策自动化)。Camunda 不仅带有引擎,还带有非常强大的工具[6],用于建模、任务管理、操作监控和用户管理。

3.4 jBPM

jBPM 由 JBoss 公司开发,目前最高版本 7.61.0.Final,不过从 jBPM5 开始已经跟之前不是同一个产品了,jBPM5 的代码基础不是 jBPM4,而是从 Drools Flow 重新开始,基于 Drools Flow 技术在国内市场上用的很少,jBPM4 诞生的比较早,后来 jBPM4 创建者 Tom Baeyens 离开 JBoss 后,加入 Alfresco 后很快推出了新的基于 jBPM4 的开源工作流系统 Activiti,另外 jBPM 以 Hibernate 作为数据持久化 ORM,而 Hibernate 也已不是主流技术。

3.5 osworkflow

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

3.6 开源框架对比

经过对比,camunda 在功能方面比 flowable、activiti 流程引擎强大,性能和稳定性更突出。在开源流程引擎选型方面,camunda 是很好的方案之一。

4. 补充

4.1 什么是BPMN ?

BPMN 是 Business Process Modeling Notation 的简称,即业务流程建模与标注。BPMN 定义了一个业务流程图,这个流程图被设计用于创建业务流程操作的图形化模型 。 而一个业务流程模型( Business Process Model ),指一个由图形对象( graphical objects )组成的网状图,图形对象包括活动(activities) 和用于定义这些活动执行顺序的流程控制器( flow controls )。

参考文章:
https://blog.csdn.net/abu935009066/article/details/119636532
https://www.zhihu.com/question/320229748/answer/2279875175

你可能感兴趣的:(个人学习,后端)