Activiti设计与实现(一)

1,Activiti发展史

  Activiti是一个工作流引擎, activiti可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言BPMN2.0进行定义,业务流程按照预先定义的流程进行执行,实现了系统的流程由activiti进行管理,减少业务系统由于流程变更进行系统升级改造的工作量,从而提高系统的健壮性,同时也减少了系统开发维护成本。 Alfresco软件在2010年5月17日宣布Activiti业务流程管理(BPM)开源项目的正式启动,其首席架构师由业务流程管理BPM的专家 Tom Baeyens担任,Tom Baeyens就是原来jbpm的架构师 activiti5以及ativiti6的核心开发团队是Tijs Rademakers团队,可惜Tijs Rademakers团队因与公司理念不合去开发flowable流程引擎,activiti6最终版本因此由Salaboy团队发布

2,运行必要环境

JDK版本:1.8

maven版本:3.3.9+

数据库ORM:MyBatis3

事务管理:MyBatis机制/Spring事务控制

数据库类型:MySQL

集成接口:SOAP、Mule、RESTful

内部服务通讯:Service间通过API调用

框架使用:Springboot+MyBatis

前端语言:vue

3,工作流简介

一,BPM(Business Process Management)——“通过建模、自动化、管理和优化流程,打破跨部门跨系统业务过程依赖,提高业务效率和效果”。

二,Workflow——“全部或者部分由计算机支持或自动处理的业务过程”(工作流管理联盟WFMC组织对工作流概念的经典定义)

三,BPMN2.0规范的工作流产品能很大程度上解决此类问题。BPMN2.0相对于旧的1.0规范以及XPDL、BPML及BPEL等最大的区别是定义了规范的执行语义和格式,利用标准的图元去描述真实的业务发生过程,保证相同的流程在不同的流程引擎得到的执行结果一致。其三要素为: (1) Activities(活动)——在工作流中所有具备生命周期状态的都可以称之为“活动”,如原子级的任务(Task)、流向(Sequence Flow),以及子流程(Sub-Process)等 (2)Gateways(网关)——顾名思义,所谓“网关”就是用来决定流程流转指向的,可能会被用作条件分支或聚合,也可以被用作并行执行或基于事件的排它性条件判断 (3)Events(事件)——在BPMN2.0执行语义中也是一个非常重要的概念,像启动、结束、边界条件以及每个活动的创建、开始、流转等都是流程事件,利用事件机制,可以通过事件控制器为系统增加辅助功能,如其它业务系统集成、活动预警等

4,版本区别

一,Activiti5.x版本详情

优势:

采用了PVM(流程虚拟机),支持除了BPMN2.0规范之外的流程格式,与外部服务有良好的集成能力,延续了jBPM3、jBPM4良好的社区支持,服务接口清晰,链式API更为优雅;

劣势:

持久化层没有遵循JPA规范。 最后一个版本5.23.0,从2019年8月起,git仓库的代码就没有更新过,官方已不再维护。

二,Activit6.x版本详情

优势:


1. Activiti 6.0开始,只支持Async Executor。

2. Async Executor 将以可插拔的方式,支持两种模式。

3. 模式1:Thread Pool backed Async Executor(通过线程池实现Async Executor)

4. 模式2:Message Queue based Async Executor(通过消息队列实现Async Executor)

5. ACT_RU_JOB表被拆分,减小了以往处理timer和异步任务时轮询这张表的压力。

6. ACT_RU_JOB表被拆分为了: ACT_RU_TIMER_JOB、ACT_RU_JOB、ACT_RU_DEADLETTER_JOB、ACT_RU_SUSPENDED_JOB。

7. Job的重试次数将可配默认次数还是3。 处理高负载高并发任务的能力将发生质的飞跃

劣势:

Tijs Rademakers团队离开公司后,Activit6.x版本匆匆上线,以至于近几年都没有进行更新维护

三,Activit7.x版本详情

优势:

Activiti7实际上官方现在叫Activiti Cloud。Activiti7跟Activiti5和Activiti6的定位和架构完全不一样,是按照标准云原生架构设计的,包括多个Cloud Native组件,可在分布式环境中工作。基于Kubernetes作为我们的主要部署基础设施,使用Spring Cloud/Spring Boot和Docker来对这些组件进行容器化。 标准云原生架构,集成多个云原生工具 为满足分布式和可扩展性

劣势:

支撑的bpmn元素较少

总结

1、activiti5官方已不再发展和维护,代码已经几年没有更新,但框架稳定适合中小型项目。 2、ativiti6官方也已不再发展和维护,代码发布后更新较少,内部团队新老交替,导致上线后,框架问题较多,不建议使用。 3、Activiti7即Activiti Cloud,定位云产品,完全面向云原生架构设计开发,依赖k8s等多个CNCF云组件,开发、集成、部署和运维均比较复杂,对团队技术人员能力要求高,一般中小型项目,不建议选择Activiti7。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值