Activiti5、Activiti6、Activiti7对比分析,哪个版本好
Activiti是前些年项目最常用的开源流程引擎,Activiti的源头是由JBPM4流程引擎发展而来,activiti5以及ativiti6的核心开发团队是Tijs Rademakers团队,activiti6最终版本由Salaboy团队发布的,因为Tijs Rademakers团队后来去开发flowable流程引擎了,所以说activiti5和ativiti6的内核是一样的,是一个团队开发出来的,但ativiti6的命很短,从官方的git版本就能看出来。
Activiti5、Activiti6、Activiti7有何差异,项目中需要流程引擎,选择哪个版本比较合适,本文给出一些参考。
官方文档:https://www.activiti.org/
一、Activiti5版本
Activiti5.x的最后一个版本5.23.0, 从2019年8月起,git仓库的代码就没有更新过,官方已不再维护。
源码地址:https://github.com/Activiti/Activiti/tree/5.x
二、Activiti6版本
Activiti6.x, 从2020年5月起,git仓库的代码就没有更新过,官方已不再维护。Activiti6官方只发布过一个6.0.0版本,由于核心团队变动,经历的时间很多,没有持续发展。
三、Activiti7版本
Activiti7实际上官方现在叫Activiti Cloud。Activiti7跟Activiti5和Activiti6的定位和架构完全不一样,是按照标准云原生架构设计的,包括多个Cloud Native组件,可在分布式环境中工作。基于Kubernetes作为我们的主要部署基础设施,使用Spring Cloud/Spring Boot和Docker来对这些组件进行容器化。
Activiti7包括5个基础构建块:
l Activiti Cloud Runtime Bundle
l Activiti Cloud Query
l Activiti Cloud Audit
l Activiti Cloud Connectors
l Activiti Cloud Notifications Service (GraphQL)
Activiti7跟Activiti5和Activiti6比较,有两个方面显著的特点,一是云原生架构,依赖了多个k8s的云原生组件;二是对bpmn2的元素没有全部支撑。
1、Activiti7是标准云原生架构,集成多个云原生工具
标准云原生架构,满足云原生12要素。要构建云原生应用程序和服务,仅仅将旧的庞然大物打包在Docker Image中并在Kubernetes中运行是不够的,完全参考Heroku定义的云原生十二要素原则(https://content.pivotal.io/ebooks/beyond-the-12-factor-app)。如果没有这些指导原则,就很难在分布式环境中进行扩展。Activiti Cloud重新定位流程引擎,以便更好地与此类分布式环境中的其他组件交互。Activiti Cloud成功的衡量标准是与其他微服务的低阻抗不匹配,以及它们的设计、构建和部署方式。
Activiti7集成的云原生工具:
l Jenkins X: Kubernetes的CI/CD做得很好
l JHipster: Spring Cloud和Angular/React生成器
l HELM: Kubernetes Package Manager,我们用它在K8s中部署Activiti Cloud应用程序。
l Spring Cloud Kubernetes:我们使用它来避免与基础设施的重复/重叠
l Istio:基于K8s的服务网格
l KNative:作为K8s之上的服务层
官方文档:https://activiti.gitbook.io/activiti-7-developers-guide/overview/12factor
2、Activiti7为满足分布式和可扩展性,支撑的bpmn元素较少
BPMN规范描述了业务流程定义中允许的大量构造(BPMN元素)。虽然在Activiti 5.x和6.x中支持这一点都是由流程引擎完成的,但在Activiti Cloud(Activiti Core 7.x)中,由于我们现在正在处理分布式和高度可扩展的基础架构,因此支持的元素较少。计时器、信号和消息等元素现在需要与基础设施和其他服务进行交互才能正常工作。出于这个原因,Actiti Cloud的第一个版本选择了这些元素的子集来构建一个坚实的基础,可以保证分布式环境中一组组件之间的执行按预期进行,可以在出现问题时进行监控和跟踪。
7.1.x Release Train中支持的BPMN元素列表如下:
l 开始/结束事件
l SequenceFlows(有条件,默认)
l 服务任务
l 用户任务(受让人、候选用户、候选组)
l 网关:并行、独占、包容
l 呼叫活动
l 信号中间接球事件、信号中间投掷事件、信号边界事件
l 嵌入式子进程
官方文档:https://activiti.gitbook.io/activiti-7-developers-guide/overview/bpmn
四、总结:Activiti哪个版本好
1、activiti5和ativiti6官方已不再发展和维护,代码已经4年没有更新,不建议选择。
2、Activiti7即Activiti Cloud,定位云产品,完全面向云原生架构设计开发,依赖k8s等多个CNCF云组件,开发、集成、部署和运维均比较复杂,对团队技术人员能力要求高,一般中小型项目,要谨慎选择Activiti7,可以考虑更轻量化的开源流程引擎camunda7。