activiti 配置监听器 流程启动/结束 任务创建/结束
监听的作用
比如流程启动的时候更改一些单据的单据由待提交-》提交
流程结束更改其审批状态
任务创建的时候需要给待办推送信息
任务结束的需要处理一些逻辑等等
创建这4个监听器
流程创建监听器
package com.example.activiti.listener;
import org.activiti.engine.delegate.event.ActivitiEvent;
import org.activiti.engine.delegate.event.ActivitiEventListener;
/**
* @date 2019/11/21 19:54
* @description: 流程启动监听器
*/
public class ActivitiProcessStartedListener implements ActivitiEventListener {
/**
* @Param [activitiEvent]
* @return void
**/
@Override
public void onEvent(ActivitiEvent activitiEvent) {
//todo
}
@Override
public boolean isFailOnException() {
return false;
}
}
任务创建监听器
package com.example.activiti.listener;
import org.activiti.engine.delegate.event.ActivitiEvent;
import org.activiti.engine.delegate.event.ActivitiEventListener;
/**
* @description 任务创建监听器
*/
public class ActivitiTaskCreateListener implements ActivitiEventListener {
/**
* @Author Pan Weilong
* @Description 存储节点任务
* @Date 18:35 2019/12/5
* @Param [activitiEvent]
* @return void
**/
@Override
public void onEvent(ActivitiEvent activitiEvent) {
//todo
}
@Override
public boolean isFailOnException() {
return false;
}
}
任务结束监听器
package com.example.activiti.listener;
import org.activiti.engine.delegate.event.ActivitiEvent;
import org.activiti.engine.delegate.event.ActivitiEventListener;
/** 任务完成的需要处理的逻辑
*/
public class ActivitiTaskCompleteListener implements ActivitiEventListener {
@Override
public void onEvent(ActivitiEvent activitiEvent) {
//todo
}
@Override
public boolean isFailOnException() {
return false;
}
}
流程结束监听器
package com.example.activiti.listener;
import org.activiti.engine.delegate.event.ActivitiEvent;
import org.activiti.engine.delegate.event.ActivitiEventListener;
/**
* @Description 流程结束监听器
* @Date 22:44 2019/11/27
* @Param
* @return
**/
public class ActivitiProcessCompleteListener implements ActivitiEventListener {
@Override
public void onEvent(ActivitiEvent activitiEvent) {
//todo
}
@Override
public boolean isFailOnException() {
return false;
}
}
然后配置到activiti配置文件中
package com.example.activiti.config;
import com.example.activiti.listener.ActivitiProcessCompleteListener;
import com.example.activiti.listener.ActivitiProcessStartedListener;
import com.example.activiti.listener.ActivitiTaskCompleteListener;
import com.example.activiti.listener.ActivitiTaskCreateListener;
import org.activiti.engine.delegate.event.ActivitiEventListener;
import org.activiti.spring.SpringProcessEngineConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.task.TaskExecutor;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.transaction.PlatformTransactionManager;
import javax.sql.DataSource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Configuration
public class ActivitiConfig {
@Autowired
private DataSource dataSource;
@Autowired
private PlatformTransactionManager transactionManager;
@Bean
public SpringProcessEngineConfiguration getProcessEngineConfiguration() {
SpringProcessEngineConfiguration config =
new SpringProcessEngineConfiguration();
// 流程图字体设置
config.setActivityFontName("宋体");
config.setAnnotationFontName("宋体");
config.setLabelFontName("黑体");
config.setDataSource(dataSource);
config.setTransactionManager(transactionManager);
config.setDatabaseType("mysql");
//设置自动创建表
config.setDatabaseSchemaUpdate("true");
//springboot中配置全局监听类
//流程启动监听器
Map<String, List<ActivitiEventListener>> typedListeners = new HashMap<>();
List<ActivitiEventListener> activitiEventListener =new ArrayList<>();
activitiEventListener.add(getActivitiProcessStartedListener());
typedListeners.put("PROCESS_STARTED", activitiEventListener);
//任务创建监听
List<ActivitiEventListener> activitiTaskCreateEventListener = new ArrayList<>();
activitiTaskCreateEventListener.add(getActivitiTaskCreateListener());
typedListeners.put("TASK_CREATED", activitiTaskCreateEventListener);
//任务完成监听
List<ActivitiEventListener> activitiTaskCompletedEventListener = new ArrayList<>();
activitiTaskCompletedEventListener.add(getActivitiTaskCompleteListener());
typedListeners.put("TASK_COMPLETED", activitiTaskCompletedEventListener);
//流程结束监听
List<ActivitiEventListener> activitiProcessCompletedEventListener = new ArrayList<>();
activitiProcessCompletedEventListener.add(getActivitiProcessCompleteListener());
typedListeners.put("PROCESS_COMPLETED", activitiProcessCompletedEventListener);
config.setTypedEventListeners(typedListeners);
return config;
}
@Bean
@Primary
public TaskExecutor primaryTaskExecutor() {
return new ThreadPoolTaskExecutor();
}
@Bean
public ActivitiProcessStartedListener getActivitiProcessStartedListener(){
return new ActivitiProcessStartedListener();
}
@Bean
public ActivitiTaskCreateListener getActivitiTaskCreateListener(){
return new ActivitiTaskCreateListener();
}
@Bean
public ActivitiTaskCompleteListener getActivitiTaskCompleteListener(){
return new ActivitiTaskCompleteListener();
}
@Bean
public ActivitiProcessCompleteListener getActivitiProcessCompleteListener(){
return new ActivitiProcessCompleteListener();
}
}
当流程启动时就会执行对应的监听器