update(REQ-2516) - 重新设置异常的处理类
This commit is contained in:
parent
73f1361458
commit
355d9c3d1a
@ -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.RespErrorCodeMappingProperties;
|
||||||
import cn.axzo.framework.autoconfigure.web.exception.handler.AbstractExceptionApiResultHandler;
|
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.IRespCode;
|
||||||
import cn.axzo.framework.domain.web.code.RespCode;
|
import cn.axzo.framework.domain.web.code.RespCode;
|
||||||
import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
|
import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
|
||||||
@ -30,8 +31,8 @@ public class FlowableExceptionResultHandlerAdvice extends AbstractExceptionApiRe
|
|||||||
protected IRespCode decode(FlowableException ex, IRespCode fallbackCode) {
|
protected IRespCode decode(FlowableException ex, IRespCode fallbackCode) {
|
||||||
log.warn("发现 FlowableException Error: ", ex);
|
log.warn("发现 FlowableException Error: ", ex);
|
||||||
if (Objects.nonNull(ex.getCause()) && ex.getCause() instanceof WorkflowEngineException) {
|
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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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.RespErrorCodeMappingProperties;
|
||||||
import cn.axzo.framework.autoconfigure.web.exception.handler.AbstractExceptionApiResultHandler;
|
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.IRespCode;
|
||||||
import cn.axzo.framework.domain.web.code.RespCode;
|
import cn.axzo.framework.domain.web.code.RespCode;
|
||||||
import org.flowable.common.engine.api.FlowableOptimisticLockingException;
|
import org.flowable.common.engine.api.FlowableOptimisticLockingException;
|
||||||
@ -25,6 +26,6 @@ public class FlowableOptimisticLockingExceptionHandlerAdvice extends AbstractExc
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected IRespCode decode(FlowableOptimisticLockingException ex, IRespCode fallbackCode) {
|
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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user