update(REQ-2516) - 重新设置异常的处理类

This commit is contained in:
wangli 2024-06-20 09:51:17 +08:00
parent 73f1361458
commit 355d9c3d1a
3 changed files with 41 additions and 3 deletions

View File

@ -2,6 +2,7 @@ package cn.axzo.workflow.server.advice;
import cn.axzo.framework.autoconfigure.web.exception.RespErrorCodeMappingProperties;
import cn.axzo.framework.autoconfigure.web.exception.handler.AbstractExceptionApiResultHandler;
import cn.axzo.framework.domain.web.code.BaseCode;
import cn.axzo.framework.domain.web.code.IRespCode;
import cn.axzo.framework.domain.web.code.RespCode;
import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
@ -30,8 +31,8 @@ public class FlowableExceptionResultHandlerAdvice extends AbstractExceptionApiRe
protected IRespCode decode(FlowableException ex, IRespCode fallbackCode) {
log.warn("发现 FlowableException Error: ", ex);
if (Objects.nonNull(ex.getCause()) && ex.getCause() instanceof WorkflowEngineException) {
return new RespCode(UNAVAILABLE_FOR_LEGAL_REASONS.getCode(), ex.getCause().getMessage());
return new RespCode(BaseCode.SUCCESS.getCode(), ex.getCause().getMessage());
}
return new RespCode(UNAVAILABLE_FOR_LEGAL_REASONS.getCode(), ex.getMessage());
return new RespCode(BaseCode.SUCCESS.getCode(), ex.getMessage());
}
}

View File

@ -2,6 +2,7 @@ package cn.axzo.workflow.server.advice;
import cn.axzo.framework.autoconfigure.web.exception.RespErrorCodeMappingProperties;
import cn.axzo.framework.autoconfigure.web.exception.handler.AbstractExceptionApiResultHandler;
import cn.axzo.framework.domain.web.code.BaseCode;
import cn.axzo.framework.domain.web.code.IRespCode;
import cn.axzo.framework.domain.web.code.RespCode;
import org.flowable.common.engine.api.FlowableOptimisticLockingException;
@ -25,6 +26,6 @@ public class FlowableOptimisticLockingExceptionHandlerAdvice extends AbstractExc
@Override
protected IRespCode decode(FlowableOptimisticLockingException ex, IRespCode fallbackCode) {
return new RespCode(UNAVAILABLE_FOR_LEGAL_REASONS.getCode(), ex.getMessage());
return new RespCode(BaseCode.SUCCESS.getCode(), ex.getMessage());
}
}

View File

@ -0,0 +1,36 @@
package cn.axzo.workflow.server.advice;
import cn.axzo.framework.autoconfigure.web.exception.RespErrorCodeMappingProperties;
import cn.axzo.framework.autoconfigure.web.exception.handler.AbstractExceptionApiResultHandler;
import cn.axzo.framework.domain.web.code.BaseCode;
import cn.axzo.framework.domain.web.code.IRespCode;
import cn.axzo.framework.domain.web.code.RespCode;
import cn.axzo.workflow.client.feign.bpmn.ProcessActivityApi;
import cn.axzo.workflow.client.feign.bpmn.ProcessInstanceApi;
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnActivitySetAssigneeDTO;
import org.springframework.stereotype.Component;
import java.sql.SQLIntegrityConstraintViolationException;
/**
* 处理多个接口同时操作一个流程实例时可能会抛出数据库的异常这种异常是可以被忽略的
* <p>
* 例如 {@link ProcessActivityApi#setAssignee(BpmnActivitySetAssigneeDTO)} {@link ProcessInstanceApi#abortProcessInstance(BpmnProcessInstanceAbortDTO)}
* 两个接口并发访问时由于 abort 先执行完并提交事务后setAssignee 方法内虽然有判断实例状态但最后事务提交时突然发现实例状态被中止了就会抛出异常
*
* @author wangli
* @since 2024/6/20 09:42
*/
@Component
public class SQLIntegrityConstraintViolationExceptionHandlerAdvice extends AbstractExceptionApiResultHandler<SQLIntegrityConstraintViolationException> {
public SQLIntegrityConstraintViolationExceptionHandlerAdvice(RespErrorCodeMappingProperties properties) {
super(properties);
}
@Override
protected IRespCode decode(SQLIntegrityConstraintViolationException ex, IRespCode fallbackCode) {
return new RespCode(BaseCode.SUCCESS.getCode(), ex.getMessage());
}
}