update - REQ-2324-增加异步审批任务处理失败listener
This commit is contained in:
parent
b1245757a0
commit
046600fedd
@ -0,0 +1,69 @@
|
||||
package cn.axzo.workflow.server.controller.listener.error;
|
||||
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAuditDTO;
|
||||
import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
|
||||
import cn.axzo.workflow.core.engine.job.AsyncApproveTaskJobHandler;
|
||||
import cn.axzo.workflow.core.listener.BpmnAsyncJobEventListener;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.flowable.common.engine.api.delegate.event.FlowableEngineEventType;
|
||||
import org.flowable.common.engine.api.delegate.event.FlowableEvent;
|
||||
import org.flowable.common.engine.impl.event.FlowableEntityExceptionEventImpl;
|
||||
import org.flowable.job.api.JobInfo;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import static cn.axzo.workflow.core.common.code.BpmnTaskRespCode.TASK_COMPLETE_FAIL_ASSIGN_NOT_SELF;
|
||||
import static cn.axzo.workflow.core.common.code.BpmnTaskRespCode.TASK_COMPLETE_FAIL_NOT_EXISTS;
|
||||
import static cn.axzo.workflow.core.common.code.BpmnTaskRespCode.TASK_HAS_BEEN_COMPLETE;
|
||||
import static org.flowable.common.engine.api.delegate.event.FlowableEngineEventType.JOB_MOVED_TO_DEADLETTER;
|
||||
|
||||
/**
|
||||
* 处理异步审批相关异常
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class ApproveErrorReporterEventListener implements BpmnAsyncJobEventListener {
|
||||
|
||||
private final List<String> IGNORE_ERROR_CODES = Arrays.asList(
|
||||
TASK_HAS_BEEN_COMPLETE.getRespCode(),
|
||||
TASK_COMPLETE_FAIL_NOT_EXISTS.getRespCode(),
|
||||
TASK_COMPLETE_FAIL_ASSIGN_NOT_SELF.getRespCode());
|
||||
|
||||
@Override
|
||||
public boolean support(FlowableEngineEventType eventType) {
|
||||
return Objects.equals(JOB_MOVED_TO_DEADLETTER, eventType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notify(FlowableEvent flowableEvent) {
|
||||
if (!(flowableEvent instanceof FlowableEntityExceptionEventImpl)) {
|
||||
return;
|
||||
}
|
||||
FlowableEntityExceptionEventImpl event = (FlowableEntityExceptionEventImpl) flowableEvent;
|
||||
JobInfo job = (JobInfo) event.getEntity();
|
||||
String handlerType = job.getJobHandlerType();
|
||||
//只处理审批类型任务
|
||||
if (AsyncApproveTaskJobHandler.TYPE.equals(handlerType)) {
|
||||
Throwable throwable = event.getCause();
|
||||
if (StringUtils.isNoneBlank(job.getCustomValues())) {
|
||||
BpmnTaskAuditDTO dto = JSONUtil.toBean(job.getCustomValues(), BpmnTaskAuditDTO.class);
|
||||
WorkflowEngineException exception = (WorkflowEngineException) (throwable);
|
||||
if (!IGNORE_ERROR_CODES.contains(exception.getCode())) {
|
||||
//TODO 判断是待办,如果是异常需要恢复待办,发送消息到senna,senna调用待办接口,恢复待办
|
||||
}
|
||||
} else {
|
||||
log.warn("审批类型错误,CustomValues内容为空,event:{}", event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOrder() {
|
||||
return Integer.MIN_VALUE;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user