首页 > 编程语言 >Java工作流详解(附6大工作流框架对比)​

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

时间:2023-01-09 15:32:53浏览次数:37  
标签:Java Activiti Flowable 流程 工作 开源 引擎 详解

目录​

1.什么是工作流​

2.工作流应用场景​

3.工作流实现方式​

4.有哪些工作流框架?​

5.1.Activiti6. 2.Flowable7. 3.Camunda8.4.jBPM9. 5.osworkflow,6.jflow.​

10.工作流框架对比​

什么是工作流工作流(Worklow)​

工作流是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工作流建模,即将工作流程中的工作如前后组织在一起的逻辑和规则,在计算机中以恰当的模型表逢并对其实施计算。工作流要解决的主要问题是: 为实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。​

那么再简单点说,我认为工作流就是对业务的流程化抽象,WFMC给出了工作流参考模型如下:​

Java工作流详解(附6大工作流框架对比)​_流程引擎


工作流应用场景​

具体场景,凡是涉及到业务流程的所有场景​

。关键业务流程:订单、报价处理、合同审核、客户电话处理、供应链管理等。行政管理类:出差申请、加班申请、请假申请、用车申请、各种办公用品申请、购买申请、日报周报等凡是原来手工流转处理的行政表单。。人事管理类:员工培训安排、绩效考评、职位变动处理、员工档案信息管理等。财务相关类:付款请求、应收款处理、日常报销处理、出差报销、预算和计划申请等.。客户服务类:客户信息管理、客户投诉、请求处理、售后服务管理等。​

工作流实现方式目前常见的工作流程有两种方式:​

。通过状态字段实现流程控制。原始,适合简单流程控制。​

。工作流引擎实现流程控制。适用场景更广泛,扩展性更好​

有哪些工作流框架?​

目前市面上主流的开源流程引擎主要有 Activiti、Flowable,CamundajBPM,jflow, oworkflow等。现在我们对这些开源流程框架进行调研和分析。​

1.Activiti

Activiti 由 Alfresco 公司开发,目前最高版本为 Activiti cloud 71.0​

其中 activiti5 和 activiti6 的核心 leader 是 Tijs Rademakers,由于团队内部分歧,2017 年 Tijs Rademakers 离开团队,创建​

了后来的 Flowable。​

activiti6 以及 activiti5 代码则交接给 Salabov 团队维护,activiti6 以及 activiti5 的代码官方已经暂停维护。往后 Salaboy 团开发了 activiti7 框架,ativiti7 内核使用的还是 activiti6,并没有为引擎注入更多的新特性,只是在 Activiti 之外的上层封装了​

些应用。​

直到 Activiti cloud710版本,Activiti coud 将系统分为 Runtime Bundle、 Audit Service Query Service、 CloudConnectors、Application Service、 Notification Service。这些工作的主要目的其实就是为了上云,减少对 Activiti 依赖的糖合,需要使用Activiti的系统只需要通过调用 http 接口的方式来实现工作流能力的整合,将工作流业务托管上云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 Modeland Notation)引擎、DMN (Decision Model and Notation) 引擎和表单引擎 (Form Engine) 等模块。​

3.Camunda

Camunda 基于activiti5,所以其保留了 PVM,最新版本Camunda7.17,开发团队也是从activiti 中分裂出来的,发展轨与Flowable 相似。​

通过压力测试验证 Camunda BPMN 引擎性能和稳定性更好。功能比较完善,除了BPMN,Camunda 还支持 CMMN(案例管理)和 DMN (决策自动化)。Camunda 不仅带有引擎,还带有非常强大的工具[6],用于建模、任务管理、操作监控和用户管理​

jBPM

BPM 由JBoss 公司开发,目前最高版本 7.61.0.Final,不过从BPM5开始已经限之前不是同一个产品了,BPM5 的代码基础不是jBPM4,而是从 Drools Flow 重新开始,基于 Drools Flow 技术在国内市场上用的很少,jBPM4 诞生的比较早,后来jBPM4创建者 Tom Baeyens 离开JBoss 后,加入 Alfresco 后很快推出了新的基于jBPM4 的开源工作流系统 Activiti,另外jBPM 以Hibernate 作为数据持久化 ORM,而 Hibernate 也已不是主流技术mikechen的互联网架松首页架构视频技术文章面试题库问答社区。​

JFlow

Jflow是一个国产的开源工作流引擎,与业务场景结合紧密,再带表单引擎,数据表较多,中文概念较多,可配置型性强,支持作为中间件模式的集成。配置点集中在,节点属性,流程属性,方向条件。概念名词比较清晰,文档全面。有qq群技术支持。​

流程设计器界面干净,从节点类型分类,分流,合流,分合流,子线程等等。表单与流程完美结合,与其它几款流程引擎设计理念不同。Jflow更适用,贴近用户操作。​

表单引擎中的精华是审核组件,满足国内审批要求的需求,退回,分合流审核,会签,并行处理,队列处理,概念清晰,容易理解。​

osworkflow

是一个轻量化的流程引擎,基于状态机机制,数据库表很少,osworkflow 提供的工作流构成元素有: 步骤​

(step) 、条件(conditions) 、循环(loops) 、分支(spilts) 、合并 joins)等,但不支持会签、跳转、退回、加签等这些​

操作,需要自己扩展开发,有一定难度。如果流程比较简单,osworkflow 是很好的选择​

标签:Java,Activiti,Flowable,流程,工作,开源,引擎,详解
From: https://blog.51cto.com/u_15343873/5997324

相关文章

  • 两款开源.NET工作流引擎 Elsa 与ccflow使用比较
    ​相对java开源的工作流程引擎.net开源的工作流程引擎相对较少,这里整理两款.net开源工作流引擎,做一下对比使用。elsa示例代码:Githubd地址:https://github.com/zhenl/MyElsac......
  • Apache Spark + 海豚调度:PB 级数据调度挑战,教你如何构建高效离线工作流
    2010年,我国进入移动互联网,数据规模成几何式增长。在大数据开源技术领域,以Hadoop为核心的大数据生态系统面对海量数据也不断发展与迭代,大数据处理流程中的各个开源组件,也一起......
  • Model-Agnostic Meta-Learning (MAML)模型介绍及算法详解
    paper:​​​https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1703.03400.pdf​​ MAML在学术界已经是非常重要的模型了,论文Model-AgnosticMeta-LearningforFa......
  • 详解 Kruskal 最小生成树算法
     求最小生成树算一般有两种算法:Prim和Kruskal。Prim的时间复杂度为\(O(|V|^{2})\),更适合稠密图。而Kruskal的时间复杂度为\(O(logV)\)或\(O(logE)\)。更适......
  • Java面试题Day06
    1.如何将字节流转为字符流?InputStreamReader是字节流通向字符流的桥梁BufferedReaderin=newBufferedReader(newInputStreamReader(System.in))OutputStreamWriter......
  • 倒排索引的 JAVA 简单实现
      倒排索引的简单JAVA实现,当玩具其实都很粗糙,简单实现下原理:publicclassIntertedIndex{//倒排索引privateMap<String,List<String>>indexMa......
  • Java内存区域有哪些构成?
    目录前言Java内存区域程序计数器虚拟机栈本地方法栈堆方法区字符串常量池运行时常量池直接内存小结作者:小牛呼噜噜|https://xiaoniuhululu.com计算机内功、JAVA底层......
  • javascript将文本转语音功能
    通过jiavascript将文本内容转化为语音播放,代码如下:<body><buttononclick="start()">点击</button><script>vartext='语音输入开始'var......
  • java根据xml节点地址获取指定节点内容
    备好几个前同事问过怎么获取xml指定节点内容后,终于决定写个工具类,今天特地分享给大家,写的不好,不要喷maven依赖包<dependency><groupId>dom4j</groupId><artifactId>do......
  • java文件夹和文件
    本文主要讲述java如何创建文件夹和文件题目:指定路径,判断当前路径是否有目标文件夹,如果没有,则创建;如果有,在目标文件夹下创建目标文件【txt文件】,并使用转换流+处理流写入......