工作流引擎的架构设计与对比

所谓工作流引擎是指 workflow 作为应用系统的一部分,并为之提供对各应用系统有决定作用的,根据角色、分工和条件的不同决定信息传递路由、内容等级 等核心解决方案。工作流引擎可以灵活地配置工作流程,并且可以自动化的根据配置进行状态变更和流程流转,包括流程的节点管理、流向管理、流程样例管理等重要功能。下面,介绍一个比较简单的工作流程,来演示一下工作流引擎到底是一个什么样的东西。

最简单流程

最简单的一个流程工单,申请人发起流程,每个节点审批人逐个审批,最终流程结束。

会签

在这个过程中,节点分成了两大类:简单节点和复杂节点。

简单节点处理逻辑不变,依然是处理完之后自动到下一个节点。

复杂节点比如说会签节点,则不同,需要其下的所有子节点都处理完成,才能到下一个节点。

并行

同样属于复杂节点,其任何一个子节点处理完成后,都可以进入到下一个节点。

条件判断

需要根据不同的表单内容进入不同的分支流程。

举一个例子,比如在进行休假申请时,请假一天需要直属领导审批,如果大于三天则需要部门领导审批。

动态审批人

审批节点的审批人需要动态获取,并且可配置。

审批人的获取方式可以分以下几种:

  1. 固定审批人

  2. 从申请表单中获取

  3. 根据组织架构,动态获取

  4. 从配置的角色组或者权限组中获取

撤销和驳回

节点状态变更可以有申请人撤回,审批人同意,审批人驳回等。那么在驳回时,可以直接驳回到开始节点,流程结束,也可以驳回到上一个节点。更复杂一些,甚至可以驳回到前面流程的任意一个节点。

以上便是简单工作流中的一些比较常见的需求点,还有像加签,代理,脚本执行等功能,如果都实现的话,应该会是一个庞大的工作量。这时,我们就需要用到一个开源的工作流引擎,来实现这些常用但开发起来却比较繁琐的流程功能。

目前,市场上比较有名的开源流程引擎有 Osworkflow、Jbpm、Activiti、Flowable、Camunda 等。其中:Jbpm、Activiti、Flowable、Camunda 四个框架同宗同源,祖先都是 Jbpm4,开发者只要用过其中一个框架,基本上就会用其它三个了。下面,我们就来了解下这些工作流引擎的一些特性和异同点。

工作流引擎对比

Osworkflow

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

Activiti

Activiti 由 Alfresco 软件开发,Activiti 的版本比较复杂,有 Activiti5、Activiti6、Activiti7 几个主流版本。Activiti5 和 Activiti6 的核心 leader 是 Tijs Rademakers,由于团队内部分歧,在 2017 年 Tijs Rademakers 离开团队,创建了后来的 Flowable。Activiti6 以及 Activiti5 代码已经交接给了 Salaboy 团队,Activiti6 以及 Activiti5 的代码官方已经暂停维护了。

Salaboy 团队目前在开发 Activiti7 框架,Activiti7 内核使用的还是 Activiti6,并没有为引擎注入更多的新特性,只是在 Activiti 之外的上层封装了一些应用。

Flowable

Flowable 是一个使用 Java 编写的轻量级业务流程引擎,使用 Apache V2 license 协议开源。2016 年 10 月,Activiti 工作流引擎的主要开发者离开 Alfresco 公司并在 Activiti 分支基础上开启了 Flowable 开源项目。基于 Activiti v6 beta4 发布的第一个 Flowable release 版本为 6.0。

Flowable 项目中包括 BPMN引擎、CMMN引擎、DMN引擎、表单引擎等模块。相对开源版,其商业版的功能会更强大。以 Flowable6.4.1 版本为分水岭,大力发展其商业版产品,开源版本维护不及时,部分功能已经不再开源版发布,比如表单生成器、历史数据同步至其他数据源、ES 等。

Camunda

Camunda 基于 Activiti5,所以其保留了 PVM,开发团队也是从 Activiti 中分裂出来的,发展轨迹与 Flowable 相似,同时也提供了商业版,不过对于一般企业应用,开源版本也足够了。

以上便是工作流引擎的一个大致设计思路,运用一些开源的工作流引擎,可以让我们的开发设计达到事半功倍的效果,更多详情了解可以看工作流引擎设计与应用icon-default.png?t=N7T8https://www.jnpfsoft.com/?csdnjie

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/258899.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于ssm生鲜配送系统设计及实现论文

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对生鲜配送信息管理混乱,出错率高,信息安全性差…

Floyd求最短路(Floyd算法)

参考:约会怎么走到目的地最近呢?一文讲清所有最短路算法问题-CSDN博客 有4个城市8条路,公路上的数字表示这条公路的长短,并且路是单向的,现在要求我们求出任意两个城市之间的最短路程,也就是求任意两个点之…

vscode颜色主题插件one dark Pro安装

1.点击扩展图标→搜索“one dark Pro”→第一个点击安装 2.安装成功后,不要忘了点击设置颜色主题 3.看下效果:

UCloud + 宝塔 + PHP = 个人网站

UCloud 宝塔 PHP 个人网站 文章目录 1.概要2.UCloud使用教程(租用云端服务器)3.宝塔使用教程(免费服务器运维面板)4.总结 1.概要 今天主要是想教大家如何将在网络上白嫖到源码(特指PHP源码!!!)搭建运行…

在mt4上怎么查看CHFJPY品种的合约细则?

在MetaTrader 4 (MT4) 上查看CHFJPY品种的合约细则的方法如下: FXCM福汇官方个人注册登录流程 1.打开MT4软件并登录到您的交易账户。 2.在MT4界面的"市场观察"窗格中,找到并右键单击"CHFJPY"货币对。如果您无法找到"市场观察…

AI毕业设计生成器(可生成java或python系统源码),使用Tensorflow训练的AI代码大模型

这是一个辅助生成计算机毕业设计的工具,可以自动完成毕业设计的源码。它基于几百个github上面开源的java和python项目,运用tengsorflow技术,训练出了AI大模型。基本实现了计算机毕业设计生成器,能够初步生成Java或python基本源码。…

CentOS7.9安装Mysql5.7-m14

简介 本文介绍了Linux CentOS系统下Mysql5.7-m14的下载和安装方法 环境 CentOS Linux release 7.9.2009 (Core) mysql Ver 14.14 Distrib 5.7.4-m14, for Linux (x86_64) using EditLine wrapper 正文 一、去官网下载mysql 5.7.4-m14 官网下载链接: https://d…

跟着野火学FreeRTOS:第一段(任务定义,切换以及临界段)

在裸机系统中,系统的主体就是 C P U CPU CPU按照预先设定的程序逻辑在 m a i n main main函数里面顺序执行的无限循环。在多任务系统中,根据功能的不同,把整个系统分割成一个个独立的,无限循环且不能返回的的函数,这个…

公众号商务合作投放怎么做,公众号商务合作流程!

微信公众号已经成为企业品牌推广、产品宣传的重要渠道。企业通过公众号进行商务合作投放广告,引爆产品流量,投放的公众号要有一定的粉丝基础,投放出去产生一定的投放效果。 本文伯乐网络传媒将为您详细介绍公众号商务合作投放的流程及注意事…

计算机硬件系统设计——运算器设计

计算机硬件系统设计——运算器设计 文章目录 计算机硬件系统设计——运算器设计8位可控加减法器2位加法器:3位加法器:串行进位加法器(把n个全加器相连得到的n位加法器) 4位先行进位电路74182并行进位加法器 4位快速加法器16位快速…

力扣日记12.19-【二叉树篇】二叉搜索树中的搜索

力扣日记:【二叉树篇】二叉搜索树中的搜索 日期:2023.12.19 参考:代码随想录、力扣 700. 二叉搜索树中的搜索 题目描述 难度:简单 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中…

CloudPulse:一款针对AWS云环境的SSL证书搜索与分析引擎

关于CloudPulse CloudPulse是一款针对AWS云环境的SSL证书搜索与分析引擎,广大研究人员可以使用该工具简化并增强针对SSL证书数据的检索和分析过程。 在网络侦查阶段,我们往往需要收集与目标相关的信息,并为目标创建一个专用文档&#xff0c…

解决win10下强制设置web浏览器为microsoft edge的方法

目录 问题场景实现方法禁止edge默认选项设置默认浏览器 反思 问题场景 因为一些特殊的原因,我需要第二个浏览器,我的第一个浏览器是google的chrome浏览器,所以我选择的是windows的默认浏览器,就是microsoft edge浏览器&#xff0…

SpringBoot actuator应用监控

文章目录 引入依赖端点(Endpoints)端点种类端点开启配置暴露端点手动暴露端点 端点保护引入spring security依赖配置security 端点响应缓存访问端点路径修改CORS跨域支持健康信息(/actuator/health)自定义healthInfo 应用信息(/actuator/info) 监控信息可视化引入依赖配置查看配…

fastadmin自定义添加、修改弹窗大小

找到对应的js文件,添加: // 修改添加窗口的大小 $(".btn-add").data("area", ["50%", "60%"]); // 修改编辑窗口的大小 $(".btn-edit").data("area", ["50%", "60%"]…

2024Web自动化测试的技术框架和工具有哪些?

Web 自动化测试是一种自动化测试方式,旨在模拟人工操作对 Web 应用程序进行测试。这种测试方式可以提高测试效率和测试精度,减少人工测试的工作量和测试成本。在 Web 自动化测试中,技术框架和工具起着至关重要的作用。本文将介绍几种常见的 W…

数据库面试题

数据库面试题 Mysql Q:数据库索引有哪些?有什么作用以及优缺点? 普通索引 alter table table_name add index index_name (column) MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值&…

Swagger升级指南:Swagger2与Swagger3注解差异揭秘

在API开发的世界里,Swagger已经成为了一个不可或缺的工具,它让API的文档化和前后端的协作变得前所未有地简单。随着Swagger的进化,我们迎来了Swagger3,也被称为OpenAPI Specification 3.0。本篇博客将带大家深入了解Swagger2和Swa…

Swagger不显示接口注释

如果 Swagger 不显示接口注释,请检查以下两点: 1、缺少 XML 注释文件:Swagger 默认使用 XML 注释文件中的注释来生成接口文档。确保在项目的生成设置中启用了 XML 文档生成,并将生成的 XML 注释文件放置在与生成的 DLL 文件相同的…

计算机组成原理(复习题)

更多复习详情请见屌丝笔记 一、选择题 计算机系统概述 1、至今为止,计算机中的所有信息仍以二进制方式表示的理由是( C )。 A.运算速度快 B.信息处理方便 C.物理器件性能所致 D.节约元件 2、运算器的核心功能部件是( D &am…
最新文章