文章目录
- 1. Flowable全局监听配置
- 2. 流程启动的监听器
- 3. 流程结束的监听器
1. Flowable全局监听配置
package com.gblfy.flowable.config;import com.gblfy.flowable.listener.global.GlobalProcistEndListener;
import com.gblfy.flowable.listener.global.GlobalProcessStartedListener;
import com.gblfy.flowable.listener.global.GlobalTaskCompletedListener;
import org.flowable.common.engine.api.delegate.event.FlowableEngineEventType;
import org.flowable.common.engine.api.delegate.event.FlowableEventDispatcher;
import org.flowable.spring.SpringProcessEngineConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.ContextRefreshedEvent;/*** Flowable全局监听配置* 用途:在任务特殊节点或者流程的特殊节点做一些自定义操作** @author gblfy* @Date 2022-06-21**/
@Configuration
public class FlowableGlobListenerConfig implements ApplicationListener<ContextRefreshedEvent> {@Autowiredprivate SpringProcessEngineConfiguration configuration;@Autowiredprivate GlobalTaskCompletedListener globalTaskCompletedListener;@Autowiredprivate GlobalProcessStartedListener globalProcessStartedListener;@Autowiredprivate GlobalProcistEndListener globalProcistEndListener;@Overridepublic void onApplicationEvent(ContextRefreshedEvent event) {FlowableEventDispatcher dispatcher = configuration.getEventDispatcher();//任务创建全局监听dispatcher.addEventListener(globalTaskCompletedListener, FlowableEngineEventType.TASK_COMPLETED);//流程开始全局监听dispatcher.addEventListener(globalProcessStartedListener, FlowableEngineEventType.PROCESS_STARTED);//流程结束全局监听dispatcher.addEventListener(globalProcistEndListener, FlowableEngineEventType.PROCESS_COMPLETED);}}
2. 流程启动的监听器
package com.gblfy.flowable.listener.global;import org.flowable.engine.delegate.event.impl.FlowableEntityEventImpl;
import org.flowable.engine.delegate.event.AbstractFlowableEngineEventListener;
import org.flowable.engine.delegate.event.FlowableProcessStartedEvent;
import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;import java.util.Date;/*** 全局的流程启动的监听器** @author: gblfy* @date 2022-06-21*/
@Component
public class GlobalProcessStartedListener extends AbstractFlowableEngineEventListener {protected Logger logger = LoggerFactory.getLogger(this.getClass());@Overrideprotected void processStarted(FlowableProcessStartedEvent event) {logger.info("进入流程开始监听器------------------------Start---------------------->");String eventName = event.getType().name();FlowableEntityEventImpl flowableEntityEvent = (FlowableEntityEventImpl) event;ExecutionEntityImpl processInstance = (ExecutionEntityImpl) flowableEntityEvent.getEntity();Date startTime = processInstance.getStartTime();String processDefinitionKey = processInstance.getProcessDefinitionKey();String processInstanceId = processInstance.getProcessInstanceId();String processInstanceBusinessKey = processInstance.getProcessInstanceBusinessKey();int suspensionState = processInstance.getSuspensionState();logger.info("流程事件类型->{}", eventName);logger.info("流程开始时间->{}", startTime);logger.info("流程定义Key->{}", processDefinitionKey);logger.info("流程实例ID->{}", processInstanceId);logger.info("流程业务key->{}", processInstanceBusinessKey);logger.info("流程是否挂起标志->{}", suspensionState);logger.info("流程开始监听器------------------------End---------------------->");}
}
3. 流程结束的监听器
package com.gblfy.flowable.listener.global;import org.flowable.common.engine.api.delegate.event.FlowableEngineEntityEvent;
import org.flowable.engine.delegate.event.AbstractFlowableEngineEventListener;
import org.flowable.engine.delegate.event.impl.FlowableEntityEventImpl;
import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;import java.util.Date;/*** 流程结束全局监听器** @author: gblfy* @date 2022-06-21*/
@Component
public class GlobalProcistEndListener extends AbstractFlowableEngineEventListener {protected Logger logger = LoggerFactory.getLogger(this.getClass());@Overrideprotected void processCompleted(FlowableEngineEntityEvent event) {logger.info("进入流程完成监听器------------------------Start---------------------->");String eventName = event.getType().name();FlowableEntityEventImpl flowableEntityEvent = (FlowableEntityEventImpl) event;ExecutionEntityImpl processInstance = (ExecutionEntityImpl) flowableEntityEvent.getEntity();Date startTime = processInstance.getStartTime();String processDefinitionKey = processInstance.getProcessDefinitionKey();String processInstanceId = processInstance.getProcessInstanceId();String processInstanceBusinessKey = processInstance.getProcessInstanceBusinessKey();int suspensionState = processInstance.getSuspensionState();logger.info("流程事件类型->{}", eventName);logger.info("流程开始时间->{}", startTime);logger.info("流程定义Key->{}", processDefinitionKey);logger.info("流程实例ID->{}", processInstanceId);logger.info("流程业务key->{}", processInstanceBusinessKey);logger.info("流程是否挂起标志->{}", suspensionState);logger.info("流程完成监听器------------------------End---------------------->");}}
注意:FlowableEntityEventImpl类的包路径
import org.flowable.engine.delegate.event.impl.FlowableEntityEventImpl;