springboot项目(六)版本不兼容重新整合activity

2024-10-24 02:46:48

1、在我用整合activity版本后整合swagger2的时候,发现spring-boot-starter-web与activiti-spring-boot-starter-basic存在冲突,报如下图错误,多次解决无果后,决定放弃activiti-spring-boot-starter-basic不是很成熟的版本,使用原版的jar包。

springboot项目(六)版本不兼容重新整合activity

3、接着我们需要创建两个配置类来初始化activ坡纠课柩ity需要用到的服务;首先先创建能初始化出ProcessEngine的配就女蒿鸳置类,代码如下:import org.activiti.engine.ProcessEngine;import org.activiti.spring.SpringProcessEngineConfiguration;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.annotation.Order;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import javax.annotation.Resource;import javax.sql.DataSource;/** * Created by 30721 on 2019/7/7. */@Order(1)@Configurationpublic class ProcessEngineConfiguration extends SpringProcessEngineConfiguration { @Resource private DataSource dataSource; @Resource private DataSourceTransactionManager dataSourceTransactionManager; @Bean(name = "processEngine") public ProcessEngine initProcessEngine() { super.setDataSource(dataSource); super.setTransactionManager(dataSourceTransactionManager); super.setDatabaseSchemaUpdate("true"); ProcessEngine processEngine = super.buildProcessEngine(); return processEngine; }}

springboot项目(六)版本不兼容重新整合activity

5、为何要将两个类加入@Order呢?这是因为这两个类存在先后加载问题,只有ProcessEngineConfiguration加载完,并注入ProcessEngine的bean,配置类中的@Autowired private ProcessEngine engine;代码才会生效

6、测试代码沿用了Springboot项目(三)的测试代码,代码如下:@Test publ坡纠课柩ic void test() {// RepositoryService repositoryService = engine.getRepositoryService();// // 部署流程文件// repositoryService.createDeployment()// .addClasspathResource("processes/First.bpmn").deploy(); // 启动流程 ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("process1"); // 查询第一个任务 Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); System.out.println("当前节点名称" + task.getName()); // 完成第一个任务 taskService.complete(task.getId()); task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult(); System.out.println("流程结束后,查找任务:" + task); engine.close(); System.out.println("================================================"); }注意点:我为何要将// RepositoryService repositoryService = engine.getRepositoryService();// // 部署流程文件// repositoryService.createDeployment()// .addClasspathResource("processes/First.bpmn").deploy();这些代码给注释掉呢?是因为我在Springboot项目(三)中已经部署过这个流程文件了,所以不需要重新部署了,如果还没有部署就需要将这三行代码解除注释

猜你喜欢