关于开源流程引擎activiti 的需要注意的几点 | bpm-九游会平台靠谱吗

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

基础概念

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

bpm(business process management),即业务流程管理,bpm系统,即业务流程管理的系统。

bpmn(business process model and notation), 业务流程模型和符号,是由bpmi(businessprocess management initiative)开发的一套标准的业务流程建模符号,使用 bpmn 提供的符号可以创建业务流程。即bpmn是用来建模业务流程的标准规则。

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

天翎低代码平台

(来源:网络)

流程引擎选型之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的限制,建议三思而后行。

推荐

网站地图