flowable/flowable-engine · error · FlowableException
No process validator defined
Error message
No process validator defined
What it means
Thrown when ValidateBpmnModelCmd executes but the ProcessEngineConfiguration has no ProcessValidator configured. The command's sole purpose is to delegate BPMN model validation to the configured validator, so without one there is nothing to run and the command fails with a generic FlowableException.
Solutions
- Set a ProcessValidator on the configuration: processEngineConfiguration.setProcessValidator(new ProcessValidatorImpl()) or Spring XML equivalent.
- If you build configuration programmatically, add validatorFactoryBean / ProcessValidator before engine build, matching the flowable-spring-boot default.
- If validation is not wanted, avoid invoking the validate command rather than calling it with a null validator.
Example fix
// before ProcessEngineConfiguration cfg = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration(); // no validator // after cfg.setProcessValidator(new org.flowable.validation.validator.impl.ProcessValidatorImpl());
Defensive patterns
Strategy: validation
Validate before calling
if (processEngineConfiguration.getProcessValidator() == null) { processEngineConfiguration.setProcessValidator(new ProcessValidatorImpl()); } Try / catch
try { validateCmd.execute(ctx); } catch (FlowableException e) { LOG.error("validator missing or failed", e); } Prevention
- Mirror the flowable-spring-boot defaults when building configuration programmatically
- Add a startup smoke test that deploys a trivial process to catch config gaps
- Keep ProcessValidator set in a shared configuration module
When it happens
Trigger: Invoking the repository deployment validation command (e.g. RepositoryService/management API path that triggers ValidateBpmnModelCmd) on an engine built without setting processValidator in the configuration.
Common situations: Programmatic engine configuration that omitted the ProcessValidator; a custom ProcessEngineConfigurator replaced the config and dropped the validator; tests building a minimal engine configuration without validation.
Understand the failure class
Background: "X is required", "must be set", "cannot be empty": the missing-required-config error family, from Vertex AI project/location to WeChat keys — this error's family across 18 libraries.
Related errors
- No process validator defined
- A channel key detection value is required for the channel…
- ' ' is not valid boolean in mapException with errorCode=…
- Cannot complete BPMN job. There is no BPMN engine available
- Cannot create an event-throwing event-listener, unknown…
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/c6de5742006389e9.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable-engine/src/main/java/org/flowable/engine/impl/cmd/ValidateBpmnModelCmd.java:40
import org.flowable.validation.ProcessValidator;
import org.flowable.validation.ValidationError;
/**
* @author Joram Barrez
*/
public class ValidateBpmnModelCmd implements Command<List<ValidationError>> {
protected BpmnModel bpmnModel;
public ValidateBpmnModelCmd(BpmnModel bpmnModel) {
this.bpmnModel = bpmnModel;
}
@Override
public List<ValidationError> execute(CommandContext commandContext) {
ProcessValidator processValidator = CommandContextUtil.getProcessEngineConfiguration(commandContext).getProcessValidator();
if (processValidator == null) {
throw new FlowableException("No process validator defined");
}
return processValidator.validate(bpmnModel);
}
}
View on GitHub (pinned to d6d39ce1c6)