Spring Boot集成Activiti 7的基本步骤
在现代企业应用开发中,工作流技术已经成为业务流程自动化和管理的重要工具。Activiti 7作为一款轻量级、易集成的工作流引擎,与Spring Boot的结合使用,可以大大简化开发过程,提高开发效率。本文将详细讲解如何在Spring Boot项目中集成Activiti 7,并实现基本的工作流功能。
一、环境准备
在开始集成之前,确保你已经具备以下开发环境:
- Java开发环境:确保已安装JDK 8或更高版本,并配置好环境变量。
- 开发工具:推荐使用IntelliJ IDEA或Eclipse等集成开发环境。
- Spring Boot:确保你对Spring Boot有一定的了解,并能够创建基本的Spring Boot项目。
- 数据库:Activiti 7支持多种数据库,本文将以MySQL为例。
二、创建Spring Boot项目
首先,创建一个新的Spring Boot项目。你可以使用Spring Initializr(https://start.spring.io/)来快速生成项目结构。
1. 使用Spring Initializr创建项目
访问Spring Initializr网站,填写以下信息:
- Project:Maven Project
- Language:Java
- Spring Boot:选择最新稳定版本(例如2.5.4)
- Project Metadata:填写Group、Artifact、Name、Description、Package Name等信息
- Packaging:Jar
- Java Version:8或更高
在“Dependencies”部分,添加以下依赖:
- Spring Web
- Spring Data JPA
- MySQL Driver
- Lombok(可选)
点击“Generate”按钮,下载生成的项目压缩包,解压后导入到你的IDE中。
2. 配置pom.xml文件
在项目的pom.xml
文件中,添加Activiti 7的依赖:
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>7.1.0.M6</version>
</dependency>
完整的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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>activiti-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>activiti-demo</name>
<description>Demo project for Spring Boot and Activiti 7</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>7.1.0.M6</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
三、配置数据库连接
在src/main/resources
目录下,找到application.properties
文件,配置数据库连接信息:
spring.datasource.url=jdbc:mysql://localhost:3306/activiti_demo?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
四、配置Activiti
在src/main/resources
目录下,创建一个名为activiti.cfg.xml
的文件,配置Activiti的基本信息:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti_demo?useSSL=false&serverTimezone=UTC"/>
<property name="jdbcDriver" value="com.mysql.cj.jdbc.Driver"/>
<property name="jdbcUsername" value="root"/>
<property name="jdbcPassword" value="your_password"/>
<property name="databaseSchemaUpdate" value="true"/>
</bean>
</beans>
五、创建Spring Boot启动类
在src/main/java/com/example/activiti_demo
目录下,创建一个名为ActivitiDemoApplication.java
的文件,作为Spring Boot应用的启动类:
package com.example.activiti_demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ActivitiDemoApplication {
public static void main(String[] args) {
SpringApplication.run(ActivitiDemoApplication.class, args);
}
}
六、创建工作流定义
在src/main/resources
目录下,创建一个名为processes
的文件夹,并在其中创建一个名为simple-process.bpmn20.xml
的文件,定义一个简单的工作流:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
id="Definitions_1"
targetNamespace="http://activiti.org/bpmn20">
<process id="simpleProcess" name="Simple Process">
<startEvent id="startEvent" name="Start"></startEvent>
<sequenceFlow id="flow1" sourceRef="startEvent" targetRef="task1"></sequenceFlow>
<userTask id="task1" name="Task 1"></userTask>
<sequenceFlow id="flow2" sourceRef="task1" targetRef="endEvent"></sequenceFlow>
<endEvent id="endEvent" name="End"></endEvent>
</process>
</definitions>
七、创建工作流服务类
在src/main/java/com/example/activiti_demo
目录下,创建一个名为WorkflowService.java
的文件,实现工作流的部署和启动:
package com.example.activiti_demo;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class WorkflowService {
@Autowired
private RepositoryService repositoryService;
@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
public void deployProcess() {
Deployment deployment = repositoryService.createDeployment()
.addClasspathResource("processes/simple-process.bpmn20.xml")
.deploy();
System.out.println("Process deployed: " + deployment.getId());
}
public void startProcess() {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("simpleProcess");
System.out.println("Process started: " + processInstance.getId());
}
}
八、创建控制器类
在src/main/java/com/example/activiti_demo
目录下,创建一个名为WorkflowController.java
的文件,提供REST接口:
package com.example.activiti_demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/workflow")
public class WorkflowController {
@Autowired
private WorkflowService workflowService;
@GetMapping("/deploy")
public String deployProcess() {
workflowService.deployProcess();
return "Process deployed successfully";
}
@GetMapping("/start")
public String startProcess() {
workflowService.startProcess();
return "Process started successfully";
}
}
九、运行项目
在IDE中运行ActivitiDemoApplication
类,启动Spring Boot应用。打开浏览器,访问以下URL:
- 部署流程:http://localhost:8080/workflow/deploy
- 启动流程:http://localhost:8080/workflow/start
你将看到控制台输出相应的部署和启动信息,表示流程已成功部署和启动。
十、总结
通过以上步骤,我们成功地在Spring Boot项目中集成了Activiti 7,并实现了基本的工作流功能。通过这种方式,你可以轻松地将工作流技术应用于你的Spring Boot项目中,实现业务流程的自动化和管理。
Activiti 7提供了丰富的功能和API,可以满足各种复杂的工作流需求。通过进一步学习和实践,你可以充分发挥Activiti 7的潜力,为你的企业应用带来更高的效率和价值。