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。