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

  1. Set a ProcessValidator on the configuration: processEngineConfiguration.setProcessValidator(new ProcessValidatorImpl()) or Spring XML equivalent.
  2. If you build configuration programmatically, add validatorFactoryBean / ProcessValidator before engine build, matching the flowable-spring-boot default.
  3. 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

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


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)