org.activiti.springboot.boot.process.validation.AsyncPropertyValidator Maven / Gradle / Ivy
package org.activiti.springboot.boot.process.validation;
import org.activiti.bpmn.model.*;
import org.activiti.bpmn.model.Process;
import org.activiti.validation.ValidationError;
import org.activiti.validation.validator.Problems;
import org.activiti.validation.validator.ProcessLevelValidator;
import java.util.List;
public class AsyncPropertyValidator extends ProcessLevelValidator {
@Override
protected void executeValidation(BpmnModel bpmnModel, Process process, List errors) {
validateFlowElementsInContainer(process, errors, process);
}
protected void validateFlowElementsInContainer(FlowElementsContainer container, List errors, Process process) {
for (FlowElement flowElement : container.getFlowElements()) {
if (flowElement instanceof FlowElementsContainer) {
FlowElementsContainer subProcess = (FlowElementsContainer) flowElement;
validateFlowElementsInContainer(subProcess, errors, process);
}
if ((flowElement instanceof FlowNode) && ((FlowNode) flowElement).isAsynchronous()) {
addWarning(errors, Problems.FLOW_ELEMENT_ASYNC_NOT_AVAILABLE, process , flowElement, "Async property is not available when asyncExecutor is disabled.");
}
if ((flowElement instanceof Event)) {
((Event) flowElement).getEventDefinitions().stream().forEach(event -> {
if (event instanceof TimerEventDefinition) {
addWarning(errors, Problems.EVENT_TIMER_ASYNC_NOT_AVAILABLE, process, flowElement, "Timer event is not available when asyncExecutor is disabled.");
} else if ((event instanceof SignalEventDefinition) && ((SignalEventDefinition) event).isAsync() ) {
addWarning(errors, Problems.SIGNAL_ASYNC_NOT_AVAILABLE, process, flowElement, "Async property is not available when asyncExecutor is disabled.");
}
});
}
}
}
}