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**/@Overridepublic void onEvent(ActivitiEvent activitiEvent) {//todo}@Overridepublic 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**/@Overridepublic void onEvent(ActivitiEvent activitiEvent) {//todo}@Overridepublic 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 {@Overridepublic void onEvent(ActivitiEvent activitiEvent) {//todo}@Overridepublic 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 {@Overridepublic void onEvent(ActivitiEvent activitiEvent) {//todo}@Overridepublic 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 {@Autowiredprivate DataSource dataSource;@Autowiredprivate PlatformTransactionManager transactionManager;@Beanpublic 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@Primarypublic TaskExecutor primaryTaskExecutor() {return new ThreadPoolTaskExecutor();}@Beanpublic ActivitiProcessStartedListener getActivitiProcessStartedListener(){return new ActivitiProcessStartedListener();}@Beanpublic ActivitiTaskCreateListener getActivitiTaskCreateListener(){return new ActivitiTaskCreateListener();}@Beanpublic ActivitiTaskCompleteListener getActivitiTaskCompleteListener(){return new ActivitiTaskCompleteListener();}@Beanpublic ActivitiProcessCompleteListener getActivitiProcessCompleteListener(){return new ActivitiProcessCompleteListener();}}
当流程启动时就会执行对应的监听器