1 概述:流程与流程引擎
-
低代码平台、办公自动化(OA)、BPM平台、工作流系统均需要流程引擎功能
-
【工作流引擎的三大功能】
1)验证当前过程状态:在给定当前状态的情况下,检查是否有效执行任务。
2)确定用户权限:检查是否允许当前用户执行任务。
3)执行条件脚本:经过前两个步骤后,工作流引擎将执行任务,如果执行成功完成,则返回成功,否则返回错误并触发并回滚更改。 -
工作流引擎是任务分配软件(例如业务流程管理)的一项核心技术,其中,工作流引擎在参与者之间交流数据的同时将任务分配给不同的执行者。工作流引擎可以执行任何任意步骤序列,例如医疗保健数据分析。
2 流程引擎的开源框架
- 市场上比较有名的开源流程引擎有osworkflow、jbpm、activiti、flowable、camunda。其中:Jbpm4、Activiti、Flowable、camunda四个框架同宗同源,祖先都是Jbpm4,开发者只要用过其中一个框架,基本上就会用其它三个。
2.1 Activiti
- 简述
activiti由Alfresco软件开发,目前最高版本activiti 7。activiti的版本比较复杂,有activiti5、activiti6、activiti7几个主流版本,选型时让人晕头转向,有必要先了解一下activiti这几个版本的发展历史。
activiti5和activiti6的核心leader是Tijs Rademakers,由于团队内部分歧,在2017年时Tijs Rademakers离开团队,创建了后来的flowable,activiti6以及activiti5代码已经交接给了 Salaboy团队。
activiti6以及activiti5的代码官方已经暂停维护了,Salaboy团队目前在开发activiti7框架,activiti7内核使用的还是activiti6,并没有为引擎注入更多的新特性,只是在activiti之外的上层封装了一些应用。
-
开源社区活跃度(Github):9.8K star / 7K fork
-
主要编程语言: Java
-
URL
2.2 Flowable
- 简述
flowable基于activiti6衍生出来的版本,flowable目前最新版本是v6.6.0,开发团队是从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)等模块。
-
开源社区活跃度(Github):7.2K star / 2.5K fork
-
主要编程语言: Java
-
URL
2.3 Camunda : { camunda-bpm-platform / ... } 【推荐】
- 简述
Camunda基于activiti5,所以其保留了PVM,最新版本Camunda7.15,保持每年发布2个小版本的节奏,开发团队也是从activiti中分裂出来的,发展轨迹与flowable相似,同时也提供了商业版,不过对于一般企业应用,开源版本也足够了,强烈推荐camunda流程引擎,功能和性能表现稳定。
- 选择camunda的理由:
1)通过压力测试验证Camunda BPMN引擎性能和稳定性更好。
2)功能比较完善,除了BPMN,Camunda还支持企业和社区版本中的CMMN(案例管理)和DMN(决策自动化)。Camunda不仅带有引擎,还带有非常强大的工具,用于建模,任务管理,操作监控和用户管理,所有这些都是开源的。
推荐:使用
camunda
(流程引擎)+bpmn-js
(流程设计器)组合,有网友在公司项目中经过实战验证,camunda在功能方面比flowable、activiti流程引擎强大,性能和稳定性更突出。
-
开源社区活跃度(Github):3.8k star / 1.5k fork
-
主要编程语言: Java
-
URL
2.4 osworkflow 【建议弃用】
- 简述
Osworkflow是一个轻量化的流程引擎,基于状态机机制,数据库表很少
Osworkflow提供的工作流构成元素有:
- 步骤(step)
- 条件(conditions)
- 循环(loops)
- 分支(spilts)
- 合并(joins)等
但不支持会签、跳转、退回、加签等这些操作,需要自己扩展开发,有一定难度。
如果流程比较简单,osworkflow是很好的选择,但该开源组件已过时,长时间没有版本升级了。
- URL
2.5 jBPM 【建议弃用】
- 简述
jBPM 由 JBoss 公司开发,目前最高版本JPBM7,不过从JBPM5开始已经跟之前不是同一个产品了,JBPM5的代码基础不是JBPM4,而是从Drools Flow重新开始,基于Drools Flow技术在国内市场上用的很少,所以不建议选择jBPM5以后版本。
jBPM4 诞生的比较早,后来JBPM4创建者Tom Baeyens离开JBoss后,加入Alfresco后很快推出了新的基于jBPM4的开源工作流系统Activiti,另外JBPM以hibernate作为数据持久化ORM也已不是主流技术,现在时间节点选择流程引擎,JBPM不是最佳选择。
-
开源社区活跃度(Github):1.6k star / 1.2k fork
-
主要编程语言: Java
-
URL
2.Y 补充:Apache Dolphi Scheduler (大数据生态中的工作流引擎 + 任务调度平台) 【推荐】
- 简述
Apache DolphinScheduler 是现代数据编排平台。以低代码敏捷创建高性能工作流程。它还提供了强大的用户界面,致力于解决数据管道中复杂的任务依赖关系,并提供开箱即用的各种类型的作业
DolphinScheduler 的主要功能如下:
- 易于部署,提供Standalone、Cluster、Docker、Kubernetes四种部署方式。
- 易于使用,可以通过四种方式创建和管理工作流,包括Web UI、Python SDK、Yaml文件和Open API
- 高可靠高可用,多master多worker的去中心化架构,原生支持水平扩展。
- 高性能,性能比其他编排平台快N倍,每天可支持千万级任务
- 云原生,DolphinScheduler支持编排多云/数据中心工作流程,并支持自定义任务类型
- 对工作流和工作流实例(包括任务)进行版本控制
- 工作流程和任务的多种状态控制,支持随时暂停/停止/恢复
- 多租户支持
- 其他如回填支持(Web UI原生),包括项目、资源和数据源的权限控制
原理与架构
Homepage
Workflow Definition
Workflow Tree View
Data source
-
开源社区活跃度(Github):11.7k star / 4.3k fork
-
主要编程语言: Java
-
URL