0
点赞
收藏
分享

微信扫一扫

flowable 全局监听 监听流程的启动和流程的结束


文章目录

  • ​​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> {
@Autowired
private SpringProcessEngineConfiguration configuration;

@Autowired
private GlobalTaskCompletedListener globalTaskCompletedListener;
@Autowired
private GlobalProcessStartedListener globalProcessStartedListener;
@Autowired
private GlobalProcistEndListener globalProcistEndListener;

@Override
public 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());

@Override
protected 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());

@Override
protected 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;


举报

相关推荐

0 条评论