update(REQ-2364) - 对引擎内的处理命令时的非 FlowableException 日志降级
This commit is contained in:
parent
4af7e2a7a3
commit
3e4d0644e0
@ -1,6 +1,7 @@
|
|||||||
package cn.axzo.workflow.core.conf;
|
package cn.axzo.workflow.core.conf;
|
||||||
|
|
||||||
import cn.axzo.workflow.core.engine.behavior.CustomActivityBehaviorFactory;
|
import cn.axzo.workflow.core.engine.behavior.CustomActivityBehaviorFactory;
|
||||||
|
import cn.axzo.workflow.core.engine.cmd.CustomCommandContextFactory;
|
||||||
import cn.axzo.workflow.core.engine.id.DistributedTimeBasedIdGenerator;
|
import cn.axzo.workflow.core.engine.id.DistributedTimeBasedIdGenerator;
|
||||||
import cn.axzo.workflow.core.engine.job.AsyncAbortProcessInstanceHandler;
|
import cn.axzo.workflow.core.engine.job.AsyncAbortProcessInstanceHandler;
|
||||||
import cn.axzo.workflow.core.engine.job.AsyncApproveTaskJobHandler;
|
import cn.axzo.workflow.core.engine.job.AsyncApproveTaskJobHandler;
|
||||||
@ -68,6 +69,7 @@ public class FlowableConfiguration {
|
|||||||
configuration.setDefaultFailedJobWaitTime(30);
|
configuration.setDefaultFailedJobWaitTime(30);
|
||||||
configuration.setAsyncFailedJobWaitTime(30);
|
configuration.setAsyncFailedJobWaitTime(30);
|
||||||
configuration.setCustomAsyncRunnableExecutionExceptionHandlers(Lists.newArrayList(new CustomAsyncRunnableExecutionExceptionHandler()));
|
configuration.setCustomAsyncRunnableExecutionExceptionHandlers(Lists.newArrayList(new CustomAsyncRunnableExecutionExceptionHandler()));
|
||||||
|
configuration.setCommandContextFactory(new CustomCommandContextFactory());
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,44 @@
|
|||||||
|
package cn.axzo.workflow.core.engine.cmd;
|
||||||
|
|
||||||
|
import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
|
||||||
|
import org.flowable.common.engine.api.FlowableException;
|
||||||
|
import org.flowable.common.engine.api.FlowableOptimisticLockingException;
|
||||||
|
import org.flowable.common.engine.impl.interceptor.Command;
|
||||||
|
import org.flowable.common.engine.impl.interceptor.CommandContext;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO
|
||||||
|
*
|
||||||
|
* @author wangli
|
||||||
|
* @since 2024/5/21 09:46
|
||||||
|
*/
|
||||||
|
public class CustomCommandContext extends CommandContext {
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(CommandContext.class);
|
||||||
|
|
||||||
|
public CustomCommandContext(Command<?> command) {
|
||||||
|
super(command);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void logException() {
|
||||||
|
if (exception instanceof FlowableException && !((FlowableException) exception).isLogged()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exception instanceof FlowableOptimisticLockingException) {
|
||||||
|
// reduce log level, as normally we're not interested in logging this exception
|
||||||
|
LOGGER.debug("Optimistic locking exception : {}", exception.getMessage(), exception);
|
||||||
|
|
||||||
|
} else if (exception instanceof FlowableException && ((FlowableException) exception).isReduceLogLevel()) {
|
||||||
|
// reduce log level, because this may have been caused because of job deletion due to cancelActiviti="true"
|
||||||
|
LOGGER.info("Error while closing command context", exception);
|
||||||
|
} else if (exception instanceof WorkflowEngineException) {
|
||||||
|
LOGGER.warn("Workflow error while closing command context", exception);
|
||||||
|
} else {
|
||||||
|
LOGGER.error("Error while closing command context", exception);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
package cn.axzo.workflow.core.engine.cmd;
|
||||||
|
|
||||||
|
import org.flowable.common.engine.impl.interceptor.Command;
|
||||||
|
import org.flowable.common.engine.impl.interceptor.CommandContext;
|
||||||
|
import org.flowable.common.engine.impl.interceptor.CommandContextFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO
|
||||||
|
*
|
||||||
|
* @author wangli
|
||||||
|
* @since 2024/5/21 09:45
|
||||||
|
*/
|
||||||
|
public class CustomCommandContextFactory extends CommandContextFactory {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommandContext createCommandContext(Command<?> cmd) {
|
||||||
|
CommandContext commandContext = new CustomCommandContext(cmd);
|
||||||
|
commandContext.setSessionFactories(sessionFactories);
|
||||||
|
return commandContext;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user