maven设置(idea 2020 需要设置)
导入maven工程时大片cannot resolve的问题
IDEA2020.1导入开源Maven项目时,会默认勾选离线模式, 即下图红框. 修改设置, 不要勾选设置离线模式,如图, 重新同步, 导入maven依赖
设置好后重新导入
可参考博客blog.csdn.net/weixin_3997…
pom依赖
`
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>6.0.0</version>
<!-- 项目中已经有了mybatis 需要排除 再次引入 版本冲突 -->
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 配置中用自定义主键 需引入-->
<dependency>
<groupId>com.fasterxml.uuid</groupId>
<artifactId>java-uuid-generator</artifactId>
<version>3.1.4</version>
</dependency>
<!-- activiti end -->
`
springboot启动项设置
// 需要在启动项排除spring SecurityAutoConfiguration 类 有冲突,我项目中未使用
@SpringBootApplication(exclude = org.activiti.spring.boot.SecurityAutoConfiguration.class,
scanBasePackages = "io.geekidea.springbootplus.activiti")
public class ApplicationTestApplication {
}
config配置
import io.geekidea.springbootplus.framework.activiti.config.CustomActivitiEventListener;
import org.activiti.engine.TaskService;
import org.activiti.engine.delegate.event.ActivitiEventListener;
import org.activiti.engine.impl.persistence.StrongUuidGenerator;
import org.activiti.engine.impl.persistence.deploy.Deployer;
import org.activiti.engine.impl.rules.RulesDeployer;
import org.activiti.spring.SpringProcessEngineConfiguration;
import org.activiti.spring.boot.ProcessEngineConfigurationConfigurer;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
public class ActivitiConfiguration implements ProcessEngineConfigurationConfigurer {
@Override
public void configure(SpringProcessEngineConfiguration processEngineConfiguration) {
/*
小坑:监听器是自己写构造注入,没有加入spring管理,加入spring后,一些activiti的service 注入不进去
*/
TaskService taskService = processEngineConfiguration.getTaskService();
CustomActivitiEventListener myEventListener = new CustomActivitiEventListener(taskService);
processEngineConfiguration.setActivityFontName("宋体");
processEngineConfiguration.setLabelFontName("宋体");
processEngineConfiguration.setAnnotationFontName("宋体");
List<Deployer> customPostDeployers = new ArrayList<>();
customPostDeployers.add(new RulesDeployer());
processEngineConfiguration.setCustomPostDeployers(customPostDeployers);
processEngineConfiguration.setIdGenerator(new StrongUuidGenerator());
List<ActivitiEventListener> eventListeners = new ArrayList<>();
processEngineConfiguration.setEventListeners(eventListeners);
}
}
监听类
import org.activiti.engine.TaskService;
import org.activiti.engine.delegate.event.ActivitiEvent;
import org.activiti.engine.delegate.event.ActivitiEventListener;
import org.activiti.engine.task.Task;
import org.springframework.util.CollectionUtils;
import java.util.List;
public class CustomActivitiEventListener implements ActivitiEventListener {
private TaskService taskService;
public CustomActivitiEventListener(TaskService taskService) {
this.taskService = taskService;
}
/**
* Called when an event has been fired
*
* @param event the event
*/
@Override
public void onEvent(ActivitiEvent event) {
switch (event.getType()) {
case TASK_COMPLETED:
System.out.println("有任务执行人。。。");
System.out.println(event.getProcessInstanceId());
List<Task> list = taskService.createTaskQuery()
.processInstanceId(event.getProcessInstanceId())
.active()
.list();
if (!CollectionUtils.isEmpty(list)) {
for (Task task : list) {
System.out.println(task.getName());
System.out.println(task.getAssignee());
/* 能查到任务,就能发送通知 */
}
}
break;
case TASK_ASSIGNED:
break;
case TASK_CREATED:
break;
default:
// System.out.println("Event received: " + event.getType());
}
}
/**
* @return whether or not the current operation should fail when this listeners execution throws an exception.
*/
@Override
public boolean isFailOnException() {
return false;
}
}