package com.dl.flowable.listener; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import com.dl.flowable.common.constant.ProcessConstants; import com.dl.flowable.common.enums.ProcessStatus; import org.flowable.common.engine.api.delegate.event.FlowableEngineEntityEvent; import org.flowable.engine.RuntimeService; import org.flowable.engine.delegate.event.AbstractFlowableEngineEventListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * Flowable 全局监听器 * * @author konbai * @since 2023/3/8 22:45 */ @Component public class GlobalEventListener extends AbstractFlowableEngineEventListener { @Autowired private RuntimeService runtimeService; /** * 流程结束监听器 */ @Override protected void processCompleted(FlowableEngineEntityEvent event) { String processInstanceId = event.getProcessInstanceId(); Object variable = runtimeService.getVariable(processInstanceId, ProcessConstants.PROCESS_STATUS_KEY); ProcessStatus status = ProcessStatus.getProcessStatus(Convert.toStr(variable)); if (ObjectUtil.isNotNull(status) && ProcessStatus.RUNNING == status) { runtimeService.setVariable(processInstanceId, ProcessConstants.PROCESS_STATUS_KEY, ProcessStatus.COMPLETED.getStatus()); } super.processCompleted(event); } }