返回

Apache Activiti集成SpringBoot操作流程定义详解

后端

如何在 Spring Boot 中轻松整合 Activiti

1. 引入依赖

在你的 pom.xml 文件中添加以下依赖:

<!-- Activiti 依赖 -->
<dependency>
  <groupId>org.activiti</groupId>
  <artifactId>activiti-spring-boot-starter-basic</artifactId>
  <version>7.3.0</version>
</dependency>

2. 配置流程引擎

在你的 Spring Boot 主类中,添加以下配置:

@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
    
    @Bean
    public CommandLineRunner init(RuntimeService runtimeService, RepositoryService repositoryService) {
        return args -> {
            // 部署流程定义
            Deployment deployment = repositoryService.createDeployment()
                .addClasspathResource("processes/simple-process.bpmn20.xml")
                .deploy();
            
            // 启动流程实例
            ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("simple-process");
            
            // 完成第一个任务
            Task task = runtimeService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
            runtimeService.complete(task.getId());
            
            // 查询历史信息
            List<HistoricActivityInstance> activities = historyService.createHistoricActivityInstanceQuery()
                .processInstanceId(processInstance.getId())
                .list();
        };
    }
}

3. 部署流程定义

使用以下代码部署流程定义:

Deployment deployment = repositoryService.createDeployment()
    .addClasspathResource("processes/simple-process.bpmn20.xml")
    .deploy();

4. 启动流程实例

使用以下代码启动流程实例:

ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("simple-process");

5. 完成任务

使用以下代码完成任务:

Task task = runtimeService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
runtimeService.complete(task.getId());

6. 查询历史信息

使用以下代码查询历史信息:

List<HistoricActivityInstance> activities = historyService.createHistoricActivityInstanceQuery()
    .processInstanceId(processInstance.getId())
    .list();

恭喜!你已经成功地将 Activiti 集成了 Spring Boot。

常见问题解答

1. 如何在 Activiti 中定义流程?

你可以使用 BPMN 2.0 XML 或 Java 代码定义流程。

2. 如何部署流程定义到 Activiti?

你可以使用 repositoryService.createDeployment() 方法部署流程定义。

3. 如何启动流程实例?

你可以使用 runtimeService.startProcessInstanceByKey() 方法启动流程实例。

4. 如何完成任务?

你可以使用 runtimeService.complete() 方法完成任务。

5. 如何查询历史信息?

你可以使用 historyService.createHistoricActivityInstanceQuery() 方法查询历史信息。