Activiti集成到Spring中,需要根据Activiti版本的不同,使用对应版本的Spring框架。
- Activiti 5.x版本需要使用Spring 3.x版本,
- Activiti 6.x版本需要使用Spring 4.x版本或Spring Boot 1.x版本,
- Activiti 7.x版本需要使用Spring 5.x版本或Spring Boot 2.x版本。
需要注意的是,不同版本的Spring框架在API和配置上可能存在差异,因此在集成时需要根据具体的版本进行配置。在集成过程中,可以通过 Maven 或 Gradle 等依赖管理工具,将 Activiti 和 Spring 相关的依赖库引入到项目中,并按照官方文档提供的配置方式进行集成。
一、Activiti5版本
Activiti5.x的最后一个版本5.23.0, 从2019年8月起,git仓库的代码就没有更新过,官方已不再维护
二、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个基础构建块:
- Activiti Cloud Runtime Bundle
- Activiti Cloud Query
- Activiti Cloud Audit
- Activiti Cloud Connectors
- Activiti Cloud Notifications Service (GraphQL)
Activiti7是标准云原生架构,集成多个云原生工具
标准云原生架构,满足云原生12要素。要构建云原生应用程序和服务,仅仅将旧的庞然大物打包在Docker Image中并在Kubernetes中运行是不够的,完全参考Heroku定义的云原生十二要素原则(https://content.pivotal.io/ebooks/beyond-the-12-factor-app)。如果没有这些指导原则,就很难在分布式环境中进行扩展。Activiti Cloud重新定位流程引擎,以便更好地与此类分布式环境中的其他组件交互。Activiti Cloud成功的衡量标准是与其他微服务的低阻抗不匹配,以及它们的设计、构建和部署方式。
Activiti7集成的云原生工具:
- Jenkins X: Kubernetes的CI/CD做得很好
- JHipster: Spring Cloud和Angular/React生成器
- HELM: Kubernetes Package Manager,我们用它在K8s中部署Activiti Cloud应用程序。
- Spring Cloud Kubernetes:我们使用它来避免与基础设施的重复/重叠
- Istio:基于K8s的服务网格
- KNative:作为K8s之上的服务层
四、最新activiti依赖 pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.test</groupId> <artifactId>activiti01</artifactId> <version>1.0-SNAPSHOT</version> <!-- activiti 的相关包 mysql的驱动包 mybatis包 log4j包 数据库链接池--> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <slf4j.version>1.6.6</slf4j.version> <log4j.version>1.2.17</log4j.version> <activiti.version>6.0.0</activiti.version> </properties> <dependencies> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>${activiti.version}</version> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring</artifactId> <version>${activiti.version}</version> </dependency> <!-- bpmn 模型处理 --> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-bpmn-model</artifactId> <version>${activiti.version}</version> </dependency> <!-- bpmn 转换 --> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-bpmn-converter</artifactId> <version>${activiti.version}</version> </dependency> <!-- bpmn json数据转换 --> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-json-converter</artifactId> <version>${activiti.version}</version> </dependency> <!-- bpmn 布局 --> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-bpmn-layout</artifactId> <version>${activiti.version}</version> </dependency> <!-- activiti 云支持 --> <dependency> <groupId>org.activiti.cloud</groupId> <artifactId>activiti-cloud-services-api</artifactId> <version>7-201710-EA</version> </dependency> <!-- mysql驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> <!-- mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency> <!-- 链接池 --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.1</version> </dependency> <!-- log start --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.26</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> </dependencies> </project>
五、总结:
- activiti5和ativiti6官方已不再发展和维护,代码已经4年没有更新,不建议选择。
- Activiti7即Activiti Cloud,定位云产品,完全面向云原生架构设计开发,依赖k8s等多个CNCF云组件,开发、集成、部署和运维均比较复杂,对团队技术人员能力要求高,一般中小型项目,不建议选择Activiti7。