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之外的上层封装了一些应用。

https://www.activiti.org/quick-start

  • 开源社区活跃度(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

2.X 小结:jBPM | Activiti | Flowable | Camunda | Osworkflow 的渊源与联系

X 参考文献

[技术选型与调研] 流程引擎/工作流引擎:Activiti、Flowable、Camunda的更多相关文章

  1. java开源工作流引擎jflow的流程应用类型分类讲解

    关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 开发者表单  拖拽式表单 工作流系统CCBPM节点访问规则接收人规则 适配数据库: o ...

  2. java工作流引擎证照库类型的流程设计 实现方案与演示案例

    关键词:.Net开源工作流    工作流引擎   工作流引擎常用信息存储  流程前置导航 证照库的概念&应用场景: 我们在梳理流程的时候,会发现有一些流程的发起是基于一个实体信息的. 比如:纳 ...

  3. Java工作流引擎jflow对流程的结束大总结

    关键字: 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 表单引擎 工作流功能说明  工作流设计 工作流快速开发平台   业务流程管理   bpm工作流系统  java工 ...

  4. Java工作流引擎关于数据加密流程(MD5数据加密防篡改)

    关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 开发者表单  拖拽式表单 工作流系统 流程数据加密  md5  数据保密流程数据防篡改 ...

  5. .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比

    Pop分组模式和表格模式对比 关键词: 驰骋工作流引擎  表单引擎  ccflow   .net开源工作流  jflow Java工作流引擎 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 a ...

  6. .net工作流引擎ccflow新增支持PostgreSQL数据库的功能的发布说明

    关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎  java工作流引擎. 各位驰骋工作流引擎爱好着,经过驰骋公司与正元公司的共同努力,ccflow支持Post ...

  7. 驰骋工作流引擎ccflow-流转自定义功能使用说明

    流转自定义功能使用说明 关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 节点跳转 节点流转自定义 应用背景: 有一些流程在运行过程中是 ...

  8. 驰骋工作流引擎-ccflow单据模式介绍与使用

    Ccflow单据模式 关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎.  表单引擎  表单单据模式增删改查   应用场景: 一些客户在使 ...

  9. .net工作流引擎ccflow开发平台属性功能的隐藏显示介绍

    关键字: 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 表单引擎 工作流功能说明  工作流设计 工作流快速开发平台   业务流程管理   bpm工作流系统  java工 ...

  10. Java工作流引擎节点接收人设置20种规则讲解一

    关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 开发者表单  拖拽式表单 工作流系统CCBPM节点访问规则接收人规则 适配数据库: o ...

随机推荐

  1. 07-verilog & sytem verilog

    一.数据类型 二值逻辑变量 bit 不赋值的时候,变量初始默认为0 x或z的值会转变为0 bit vector--bit矢量 bit [msb,lsb] variable_name = [initia ...

  2. Linux性能分析——TOP命令详解

    Linux性能分析--TOP命令详解 1.Top命令介绍 Linux系统中,Top命令主要用于实时运行系统的监控,包括Linux内核管理的进程或者线程的资源占用情况. 这个命令对所有正在运行的进程和系 ...

  3. Docker-02应用部署案例

    1.Docker部署mysql 拉取mysql镜像 # 查询mysql镜像 docker search mysql # 拉取镜像命令 docker pull centos/mysql-57-cento ...

  4. [转帖]谨慎调整内核参数:vm.min_free_kbytes

    https://www.cnblogs.com/muahao/p/8082997.html 内核参数:内存相关 内存管理从三个层次管理内存,分别是node, zone ,page; 64位的x86物理 ...

  5. ARM下KVM虚拟化的损耗验证--redis

    ARM下KVM虚拟化的损耗验证 摘要 看Windows 上面的 Workstation的虚拟机的 网络层的延迟特别高. 突然想之前统计都是直接在本地验证的, 只考虑了虚拟化CPU的性能损耗 没有考虑虚 ...

  6. [转帖]Linux性能分析:理解系统平均负载

    Linux系统中,平均负载是指单位时间内,处于可运行状态和不可中断状态的进程数.它不仅包括了正在使用CPU的进程,也包括处于不可打断的睡眠状态的进程-它们是在等待其它系统资源如磁盘 I/O 等的进程. ...

  7. [转帖]windows使用net user add用户并加入管理员,从而支持rdp远程登陆访问

    C:\phpstudy_pro\WWW> net user test2 /add 命令成功完成.    C:\phpstudy_pro\WWW> net user test2 Huawei ...

  8. [转帖]SYSTEMD 配置文件

    https://www.cnblogs.com/xiexun/p/13643952.html [Unit]区块通常是配置文件的第一个区块,用来定义 Unit 的元数据,以及配置与其他 Unit 的关系 ...

  9. [转帖]OutOfMemoryError内存溢出相关的JVM参数

    原文在这里: OutOfMemoryError内存溢出相关的JVM参数 JVM提供了很多处理内存溢出的相关参数,本文主要来讲解下这些参数,当你遇到内存溢出的时候可能会对你非常有帮助,这些参数主要有: ...

  10. Ubuntu编译Xilinx的u-boot

    博主这里的是Ubuntu20.04LTS+Vivado2017.4+ZedBoard 注意:本文使用的环境变量导入方法是临时的,只要退出当前终端或者使用其他终端就会失效,出现异常问题,请随时expor ...