基于开源组件自主开发工作流引擎系统

news2024/9/29 23:34:49

目前基于Java语言开发的主流开源工作流引擎有osworkflow、jbpm、activiti、flowable、camunda。其中osworkflow、jbpm技术较老已经过时,activiti包括activiti5、activiti6、activiti7三个版本,flowable分开源版和商业版,camunda包括camunda7和camunda8两个系列的版本。这么多版本的开源流程引擎,哪个功能完善、性能最好,该如何选型呢?

一、开源流程引擎选型

1、Camunda

Camunda有Camunda7和Camunda8两个版本。

(1)Camunda7: Camunda7基于activiti5发展来来,所以其保留了PVM,最新版本Camunda7.18,BPMN标准模型,保持每年发布2个小版本的节奏,除了开源版本同时也提供了商业版,不过对于一般企业应用,开源版本也足够了。camunda7在功能方面比flowable、activiti流程引擎强大,性能和稳定性更突出。

(2)Camunda8:2022年4月,官方发布了Camunda8新版本,Camunda7和Camunda8在技术架构方面有本质区别。Camunda8定位于云架构SaaS模式,基于Zeebe流程引擎内核,采用gRPC API接口技术,不再使用关系型数据库。在开源和商业授权方面,Camunda8有诸多限制,Camunda8仅有Zeebe、modeler、elastic组件是开源的,可以免费使用,其它的组件Camunda Operate、Camunda Tasklist 、 Camunda Optimize等组件是需要商业授权才能使用。

私有化部署流程引擎需求的推荐选择camunda7,大部分组件开源,可免费使用,技术生态较好,程序员上手容易。

官方网站:Camunda Platform 7 documentation | docs.camunda.org

体验系统:http://www.yunchengxc.com

2、Activiti

Activiti的源头是由JBPM4流程引擎发展而来,activiti的版本比较复杂,有activiti5、activiti6、activiti7几个版本。

(1)activiti5和activiti6:activiti5以及ativiti6的核心开发团队是Tijs Rademakers团队,activiti6最终版本由Salaboy团队发布的,因为Tijs Rademakers团队后来去开发flowable流程引擎了。activiti5和activiti6的代码在github上已经4年没有更新了,官方已经停止维护和发展,新开发项目不建议选择activiti5以及ativiti6。

(2)activiti7即Activiti Cloud:定位云产品,完全面向云原生架构设计开发,依赖k8s等多个CNCF云原生组件,开发、集成、部署和运维均比较复杂,对团队技术人员能力要求高,一般中小型项目,不建议选择Activiti7,其它大型项目需谨慎选择Activiti7。

官方网站:https://www.activiti.org/

3、flowable

flowable基于activiti6衍生出来的版本,Flowable除了提供开源版本flowable-engine,它还提供了商业收费版本:Flowable Work、Flowable Orchestrate和Flowable Engage 。

(1)Flowable开源版最新版本是Flowable-7.0.0-M1,开源版本仅仅提供了流程引擎、CMMN引擎、DMN引擎功能,其它功能需要扩展开发。Flowable开源版本目前仍在持续发展,其github上源码工程较多,有技术能力的团队,可用选择Flowable进行扩展开发。

(2)Flowable Orchestrate除了支持Flowable开源版本的功能,还支持Automation Models、Case & Process Instances、High Availability & Scalability等功能。

(3)Flowable Work是一个功能强大的低代码自动化平台。它建立在我们引擎的开源版本上,但通过将三个开放标准BPMN、CMMN和DMN的强大功能与低代码功能相结合,将业务流程管理提升到了一个新的水平。  Flowable Work是一个基于SaaS化的商业收费版本。

官方网站:https://flowable.com/open-source/

二、开源流程设计器选型

基于activiti、flowable、camunda开源工作流引擎,如何选择一个开源免费的流程设计器,进行集成和扩展开发,快速交付项目使用。

1、bpmn-js专业流程设计器

bpmn-js 是 BPMN 2.0 渲染工具包和 Web 模型。bpmn-js 正在努力成为 Camunda BPM 的一部分。bpmn-js 使用 Web 建模工具可以很方便的构建 BPMN 图表,可以把 BPMN 图表嵌入到你的项目中,容易扩展。bpmn-js是基于原生js开发,支持集成到vue、react等开源框架中,集成起来也比较简单,而且与activiti、flowable、camunda开源工作流引擎无缝集成。使用bpmn-js也有缺点,由于bpmn-js底层依赖了画图工具diagram-js 和bpmn模型解析组件bpmn-moddle ,这两个开源组件的源代码比较复杂,一般前端开发人员很难搞定,功能和样式扩展修改比较费劲。

官方网站:Web-based tooling for BPMN, DMN, CMMN, and Forms | bpmn.io

建议:专业的BPM项目选择bpmn-js流程设计器,因为bpmn-js包含了全部BPMN 2.0的元素配置,设计的流程图可以很复杂,尤其是流程事件和协作,非钉钉流程设计器或OA类工作流设计器可取代。

2、仿钉钉流程设计器

阿里钉钉作为中国协同办公的主流平台,其中表单设计器和流程设计器的功能及交互风格,对国内的企业和用户影响很大,一部分专业的低代码平台/BPM厂商也推出了仿钉钉版流程设计器,也有一部分客户提出流程设计器要改造程钉钉类的。在开源社区里也有vue和react版本的仿钉钉流程设计器框架。

仿钉钉版流程设计器不能与activiti、flowable、camunda等开源流程引擎无法集成,因为钉钉版流程设计器生成的模型不是bpmn2.0标准规范,需要中间做转化才可以,转化可以是前端JS处理,也可以是后端Java处理,大部分公司是基于BPMN模型的工具类在Java后端进行处理的,这个处理相当于做一个适配器,把A模型转化成B模型,其工作量不小,而且复杂的模型转化很容易出错。

开源地址:GitHub - StavinLi/Workflow-Vue3: 仿钉钉审批流程设置vue3版本

建议:钉钉流程设计器尤其明显的优点和缺点。优点是更符合业务人员操作习惯,使用起来比较容易理解,更适合简单的人工审批流程,缺点是不能设计复杂的BPMN流程。如果系统的定位是简单的办公类需求,仿钉钉流程设计器是可取的,反之需要谨慎考虑。

3、基于G6开发流程设计器

Antv G6本是阿里Antv团队开源的一个可视化图形框架。G6 是一个简单、易用、完备的图可视化引擎,它在高定制能力的基础上,提供了一系列设计优雅、便于使用的图可视化解决方案。能帮助开发者搭建属于自己的图可视化、图分析、或图编辑器应用。G6是绘图方面也是可以选择的,可以使用 canvas 或 svg 渲染,默认是Canvas,在可视化及交互方面,G6是比较突出的,比jsplumb 更好用。

开源地址:GitHub - guozhaolong/wfd-vue: flowable workflow designer for Vue base on @antv/g6

建议:bpmn-js 版流程设计器太专业太复杂,仿钉钉流程设计器太简单使用场景太局限,有没有折中的方案?选择一个好的图画工具自行开发流程设计器,即选择Antv G6开源框架开发流程设计器就是好的方案,优点是画图功能比较强大,可按业务需求灵活定制。缺点是Antv G6的生成的流程图模型与bpmn2.0模型不一致,也需要自己开发适配器进行模块转换。

4、基于mxGraph开发流程设计器

mxGraph是一个强大的JavaScript流程图前端库,可以快速创建交互式图表和图表应用程序,国内外著名的ProcessOne和draw.io都是使用该库创建的强大的在线流程图绘制网站. 由于mxGraph是一个开放的js绘图开发框架,我们可以开发出很炫的样式,或者完全按照项目需求定制。官方网站:http://jgraph.github.io/mxgraph/

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【深蓝学院】移动机器人运动规划--第1章 运动规划介绍与地图构建--笔记

文章目录 1. Course introduction2. Course Outline2.1 课程概览2.2 课程算法概览2.2.1 基于搜索的前端2.2.2 基于采样的前端2.2.3 满足动力学约束的路径搜索2.2.4 后端轨迹优化 3. 地图表示3.1 Occupancy grid map占用栅格地图3.2 八叉树地图3.3 Voxel hashing(体素…

虾皮开通:如何在虾皮(Shopee)平台上开通店铺详细步骤

在全球电商市场的竞争中,越来越多的卖家选择在虾皮(Shopee)平台上开设店铺。作为东南亚地区最大的电子商务平台之一,虾皮提供了一个便捷的销售渠道,吸引了数百万的买家和卖家。如果您想在虾皮上开设自己的店铺&#xf…

写一个判断鼠标进入方向切换图片的效果

直接看代码&#xff1a; <template><div class"mainrouter centerWindi"><div ref"mouse" class"mouse" mouseenter"handleMouse"></div></div> </template> <script setup> import { onMo…

#AIGC##VDB# 【一篇入门VDB】矢量数据库-从技术介绍到选型方向

文章概览&#xff1a; 这篇文章深入探讨了矢量数据库的基本概念、工作原理以及在人工智能领域的广泛应用。 首先&#xff0c;文章解释了矢量的数学和物理学概念&#xff0c;然后引入了矢量在数据科学和机器学习中的应用。随后&#xff0c;详细介绍了什么是矢量数据库&#xff0…

【KMP】【二分查找】【C++算法】100207. 找出数组中的美丽下标 II

作者推荐 【矩阵快速幂】封装类及测试用例及样例 本文涉及的基础知识点 二分查找算法合集 LeetCode100207. 找出数组中的美丽下标 II 给你一个下标从 0 开始的字符串 s 、字符串 a 、字符串 b 和一个整数 k 。 如果下标 i 满足以下条件&#xff0c;则认为它是一个 美丽下标…

建设企业微电网能效系统浅谈

1 综合智慧零碳电厂前景广阔 2022年8月国家电投提出“雪炭N行动”&#xff0c;重点是打造综合智慧零碳电厂&#xff0c;这是国家电投创新打造的一种能源保供新模式。利用电力网连接&#xff0c;通过协调控制、智能计量以及信息通信等关键技术&#xff0c;将相对分散的源、网、…

Centos 更换内核

文章目录 一、查看/更换系统内核1.1 查看当前运行环境的内核1.2 查看系统上所有可用内核1.3 切换内核方法一&#xff1a;通过启动菜单更换内核方法二&#xff1a;更换默认启动内核 二、安装内核参考资料 查看有哪些内核内核包的区别如何下载安装 一、查看/更换系统内核 1.1 查…

总结微机原理8255芯片常考题型

正文开始啦! 实验一&#xff1a; 分析&#xff1a; 这是一个数码管图示 数码管 最上面是a&#xff0c;逆时针依次是bcdef中间的扛是g 右下角的点是dp 看题图灯是共阳极 灯是0亮&#xff0c;1是不亮。 要看到数字0 只有g和dp不亮 不亮为1 PA7(dp) PA6(g) PA5(f) PA4(e) PA3(…

02.部署LVS-DR群集

技能展示&#xff1a; 了解LVS-DR群集的工作原理 会构建LVS-DR负载均衡群集 2.1 LVS-DR 集群 LVS-DR&#xff08; Linux Virtual Server Director Server &#xff09;工作模式&#xff0c;是生产环境中最常用的一种工作模式。 2.1.1&#xff0e;LVS-DR 工作原理 LVS-DR 模式&…

GitHub 上传超过 100M 文件方法

GitHub 上传超过 100M 文件方法 报错信息报错原因解决办法 报错信息 remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com. remote: error: Trace: a703cdcc9fade51f2a131142249cb422 rem…

Lunule: An Agile and Judicious Metadata Load Balancer for CephFS——论文泛读

SC 2021 Paper 元数据论文阅读汇总 问题 CephFS采用动态子树分区方法&#xff0c;将分层命名空间划分并将子树分布到多个元数据服务器上。然而&#xff0c;这种方法存在严重的不平衡问题&#xff0c;由于其不准确的不平衡预测、对工作负载特性的忽视以及不必要/无效的迁移活动…

2024年,文旅行业如何抓住流量密码

去年的“进淄赶烤”&#xff0c;今年哈尔滨的“讨好型市格”&#xff0c;回顾2023&#xff0c;大家都去了哪里玩呢&#xff1f;随着人们生活水平的提高&#xff0c;文旅消费需求也发生了升级&#xff0c;人们更加注重文化体验、参与感和个性化服务。那么在2024年&#xff0c;文…

冯诺依曼体系结构和操作系统

文章目录 冯诺依曼体系结构对冯诺依曼体系结构的理解——用QQ和朋友聊天时数据的流动过程操作系统是什么操作系统的作用操作系统 冯诺依曼体系结构 冯诺依曼结构也称普林斯顿结构&#xff0c;是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据…

数据资产入表背后:中国To B数字化驶入“数据时代”

数据资产“入表”&#xff0c;更像是一剂通过颠覆旧的生产关系&#xff0c;从根上医治数字化转型的“良方”。 那么&#xff0c;数据资产到底是什么&#xff1f;以及在愈发被规范的数据市场大背景下&#xff0c;对中国的To B企业和To B服务商而言&#xff0c;正在或者即将发生…

WaitForSingleObject 函数的诸多用途与使用场景总结

目录 1、WaitForSingleObject函数详细说明 2、在线程函数中调用WaitForSingleObject实现Sleep&#xff0c;可立即退出Sleep状态 3、调用WaitForSingleObject函数监测线程或进程是否已经退出 3.1、子进程实时监测主进程是否已经退出&#xff0c;主进程退出了&#xff0c;则子…

高级分布式系统-第15讲 分布式机器学习--神经网络理论

神经网络理论 模糊控制在处理数值数据、自学习能力等方面还远没有达到人脑的境界。人工神经网络从另一个角度出发&#xff0c;即从人脑的生理学和心理学着手&#xff0c;通过人工模拟人脑的工作机理来实现机器的部分智能行为。 人工神经网络&#xff08;简称神经网络&#xf…

【嘉立创EDA】原理图显示/隐藏引脚标识

文章路标👉 文章解决问题主题内容be end..文章解决问题 1️⃣ 嘉立创EDA专业版,操作版本是V2.1.17客户端半离线版本。 本文基于嘉立创EDA专业版讲述如何将原理图中已建立的器件的引脚标识进行显示或隐藏。本文将此过程记录,以供有需要的读者参考。 主题内容 2️⃣ 对目…

html5+css3+bootstrap+js 新闻网页

新闻网页练习打卡&#xff01; 一、首页 二、社会 三、财经 四、视频展示 简易新闻网站&#xff08;期末作业&#xff09;

无纸化革新:纸质文件转在线存储和检索 | 开源日报 No.141

paperless-ngx/paperless-ngx Stars: 13.9k License: GPL-3.0 Paperless-ngx 是一个文档管理系统&#xff0c;将您的纸质文件转换为可搜索的在线存档&#xff0c;以便您可以保留更少的纸张。 完整功能列表和截图可在文档中找到通过 docker compose 最简单地部署 paperless可以…

Linux驱动学习—IIC总线之FT5X06触摸驱动实验

1、实现触摸坐标值上报 流程图&#xff1a; 设备树如下&#xff1a; 触摸设备对应的设备树节点是&#xff1a; 读取坐标的寄存器&#xff1a; #include <linux/init.h> #include <linux/module.h> #include <linux/i2c.h> #include <linux/gpio.h> #i…