流程引擎课堂(一)| 关于开源流程引擎Activiti 的需要注意的几点

article/2025/8/27 13:51:59

编者按:流程引擎在各个行业都有应用,其重要性不言而喻,充分了解流程引擎是一项重要课题。本文详细介绍了开源流程引擎Activiti 的优点与局限性,为流程引擎的选型提出了参考性建议。

基础概念

首先,我们来了解几个概念:BPM、BPMN、流程引擎。

BPM(Business Process Management),即业务流程管理,BPM系统,即业务流程管理的系统。

BPMN(Business Process Model And Notation), 业务流程模型和符号,是由BPMI(BusinessProcess Management Initiative)开发的一套标准的业务流程建模符号,使用 BPMN 提供的符号可以创建业务流程。即BPMN是用来建模业务流程的标准规则。

流程引擎,用来驱动业务按照设定的固定流程去流转的东西,在复杂多变的业务情况下,使用既定的流程能够大大降低我们设计业务的成本,并且保证了我们业务执行的准确性。

4c8707e54389e575c78a0c02aca7b34e.png

流程引擎选型之Activiti

市场上比较有名的开源流程引擎有osworkflow、jbpm、activiti、flowable、camunda。其中:Jbpm4、Activiti、Flowable、camunda四个框架同宗同源,祖先都是Jbpm4,开发者只要用过其中一个框架,基本上就会用其它三个。另外,也有一些厂商自主研发的流程引擎,表现很不错,特别是在满足中国特色的流程需求方面,比如国产老厂商天翎。

孙子兵法有云:“知己知彼,百战不殆。”在充分了解流程引擎后,我们才能做出更好的选择。今天我们主要讲讲开源流程引擎Activiti。

Activiti由Alfresco软件开发,目前最高版本是Activiti 7。Activiti的版本比较复杂,有Activiti5、Activiti6、Activiti7几个主流版本。Activiti5和Activiti6的核心leader是Tijs Rademakers,由于团队内部分歧,在2017年时Tijs Rademakers离开团队,创建了后来的flowable, Activiti6以及Activiti5代码已经交接给了 Salaboy团队,Activiti6以及Activiti5的代码官方已经暂停维护了, Salaboy团队目前在开发Activiti7框架,activiti7内核使用的还是Activiti6,并没有为引擎注入更多的新特性,只是在Activiti6之外的上层封装了一些应用。

Activiti 是一个流程引擎, activiti 可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言(BPMN2.0)进行定义,业务系统按照预先定义的流程进行执行,实现了业务系统的业务流程由 Activiti 进行管理,减少业务系统由于流程变更进行系统升级改造的工作量,从而提高系统的健壮性,同时也减少了系统开发维护成本。

Activiti的设计初衷是嵌入式引擎应用,减少大量的硬编码工作,而应对BPM引擎中心需求仍有很多不足。

1 Activiti启动后,自动初始化23张数据表(作为Activiti升级版的Flowable,会自动创建46张表),实际业务场景中很多基本用不上。

2 流程变量属性数据的存储方式,采用纵表结构(为每个字段保存一条数据记录)。当一条流程记录中由500个字段,则会产生500条变量属性记录,当业务量大时会严重影响性能,并产生锁表现象。

3 自动数据源绑定,一个引擎实例指定一个数据源,在多应用(应用商店)场景下,无法为不同应用绑定不同的数据源

4 流程历史表同样采用纵表结构,不保存历史数据,则无法回溯,保存会产生单表过亿数据

5 无法多数据源同时工作,业务数据源和流程数据源不在一个数据库事务,会导致数据不一致。

6 表单和流程无法紧密耦合,如果有业务表单存在,则只能业务表单存一份数据,流程参数存一份数据,处理不好会导致数据不一致。

7 Activiti自带用户体系,主要是:用户 + 用户组实现,在复杂组织架构中,需要扩展。但扩展后无法做到向后兼容,后续(Activiti)版本升级是个问题。

8 Activiti和升级版Flowable(flowable是基于activiti6衍生出来的版本,flowable目前最新版本是v6.6.0)已经是属于两个商业实体,在后续的技术进化路线上产生明显的分歧。

小结:

目前市面上比较火爆的低代码平台,都是基于流程引擎开发的,我们在选择平台时需要仔细斟酌,比如宏天、红迅是基于开源Activiti作为流程引擎,所以不可避免受到Activiti的限制,建议三思而后行。


http://chatgpt.dhexx.cn/article/wFIJmqXB.shtml

相关文章

自主研发的流程引擎怎么样?好用吗?

编者按:随着数字化管理的发展,企业对于业务流程系统的要求越来越精细化,有些企业选择自主研发的流程引擎,自主研发的流程引擎怎么样?本文介绍了一款国产自主研发的流程引擎。 为什么要自主研发 企业的流程系统很重要&…

流程引擎设计思路

前言 在现代化的企业管理模式中,会通过日积月累的经验形成一套流程化的作业,来满足企业日常的经营活动,这不仅能够规范工作要求,还能提高人员工作效率。经常也会说道,流程化的工作模式是一个公司成熟的标记&#xff0c…

流程引擎activiti

1、Activiti简介 2、入门程序 3、使用详解 4、springboot2.0整合工作流activiti6.0以及与业务集成时的一些坑 5、删除异常的流程 6、系列文章 7、提交、审批、撤销 8、Activiti会签 系列文档 画图时将一个跳转条件${hr2}写成了${hr2}现在不能办理了! 如何删…

如何设计一个流程引擎

编者按:流程引擎是低代码平台的核心,它可以帮助我们去实现非常灵活的流程设计,极大的助力实现数据流转的的规范化。流程引擎是什么?国内外流程引擎有什么区别?如何设计一个流程引擎? 流程引擎 什么是流程引…

规则/流程引擎-ice简介

ice简介 视频地址: https://www.bilibili.com/video/BV1hg411A7jx/ ice简介视频 致力于解决灵活繁复的硬编码问题 官方文档:http://waitmoon.com/zh 背景介绍 规则/流程引擎想必大家并不陌生,耳熟能详的就有Drools,Esper&#x…

流程引擎基础知识

流程引擎基础知识 流程部署流程取消部署流程发起流程取回流程作废流程委托流程流转常用流程表介绍备注 流程部署 1.后台直接导入bpmn /**流程部署源代码*/public void deploy() {ProcessEngine processEngine ProcessEngines.getDefaultProcessEngine();RepositoryService re…

规则引擎和流程引擎我该怎么理解

流程引擎 什么是流程引擎 流程引擎就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实…

流程引擎:流程定义、流程实例、任务

流程引擎:流程定义、流程实例、任务 流程定义(ProcessDefinition) 基于bpmn2图形流程 流程实例(ProcessInstance) 一个流程定义可以启动多个流程实例,流程实例之间互不影响 流程实例任务(Tasks) 一个流程实例对应多个流程任务(人工与自动)

流程引擎(flowable)之流程相关

代码示例:流程部署/发布 InputStream inputStream new DefaultResourceLoader().getResource("classpath:BusinessProcessBeanTest.test.bpmn20.xml").getInputStream();Deployment deploy configuration.getRepositoryService().createDeployment()//…

流程引擎应用及分析

介绍:工作流引擎目前比较热门的有Activiti、Flowable等,Flowable是Activiti(Alfresco持有的注册商标)的fork版本。下面就两种工作流引擎做一个比较和入门分析。 模块一 对比: Activiti现存文档比Flowable多,有大量与业务集成的文…

《Flowable流程引擎从零到壹》Flowable流程引擎介绍和实战项目初始化流程引擎实例

14天学习训练营导师课程: 邓澎波《Flowable流程引擎-基础篇【2022版】》 邓澎波《Flowable流程引擎-高级篇【2022版】》 学习笔记《Flowable流程引擎从零到壹》回城传送 ❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。Java领域优质创…

流程引擎的架构设计

流程引擎的架构设计 1 什么是流程引擎 流程引擎是一个底层支撑平台,是为提供流程处理而开发设计的。流程引擎和流程应用,以及应用程序的关系如下图所示。 常见的支撑场景有:Workflow、BPM、流程编排等。本次分享,主要从 BPM 流程…

流程引擎是什么?有什么作用?

编者按:本文详细论述了流程引擎的概念,流程引擎的作用以及选型的要旨,并介绍了自主研发具有中国特色的流程引擎。 关键词:流程引擎,集成性,数据分析,BPMN2.0规范,中国特色&#xff…

流程引擎BPM对比

流程引擎定义 流程引擎就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。通俗的…

流程引擎camunda

简介 Camunda是一个基于Java的框架,支持用于工作流和流程自动化的BPMN、用于案例管理的CMMN和用于业务决策管理的DMN。笔者单位里主要是用于业务审批。 学习了解资料尽量去官方查看https://docs.camunda.org,查看版本7.18,一步一个环节比较详…

选对流程引擎,玩转流程设计不是梦

编者按:本文详细论述了流程引擎的概念,流程引擎选择的要旨,并介绍了流程引擎的应用场景。 流程引擎的概念流程引擎怎么选流程引擎能做什么 在这个数字化办公时代,流程设计对于企业管理者来具有重大意义,一个优秀的工作…

pojo类转换工具

每次pojo类转换的时候很麻烦,所以就在搜pojo类快速转换方法,突然发现一个比较好的pojo类转换工具mapstruct 。 项目中只需要添加如下依赖: 然后定义一个接口添加Mapper(componentModel "spring")注解 便可以直接使用该工具…

JOIOJI

JOIOJI (joioji.c/.cpp/.pas) 【问题描述】 JOIOJIさん是JOI君的叔叔。“JOIOJI”这个名字是由“J、O、I”三个字母各两个构成的。 最近,JOIOJIさん有了一个孩子。JOIOJIさん想让自己孩子的名字和自己一样由“J、O、I”三个字母构成,并且想让“J、O、…

ARM BTI指令介绍

目录 一、JOP 二、BTI 三、启用BTI 四、BTI是怎么实现的 一、JOP JOP(Jump-oriented programming)类似于ROP(Return-Oriented Programming)。在 ROP 攻击中,会扫描出useful gadgets(易被攻击的一段代码…

Jopr介绍

转载文章请注明:转载自JBossWeek.com [ http://www.jbossweek.com] 如果您是一名系统管理员,正在承受着如下的煎熬:发疯地寻找配置某个服务的JBoss AS配置文件;痛苦地敲着冗长的JBoss管理命令行;眼花缭乱地在n个终端窗…