flowable/flowable-engine · error · FlowableException

DmnEngineConfiguration is required

Error message

DmnEngineConfiguration is required

What it means

DmnEngineConfigurator.buildEngine() requires a DmnEngineConfiguration to be set before building the DMN engine during ProcessEngine configuration. If the configurator was registered without providing its configuration, engine boot fails. This is a mandatory wiring check.

Source

Thrown at modules/flowable-dmn-engine-configurator/src/main/java/org/flowable/dmn/engine/configurator/DmnEngineConfigurator.java:81

        initEngine();
        
        initServiceConfigurations(engineConfiguration, dmnEngineConfiguration);
    }
    
    @Override
    protected List<Class<? extends Entity>> getEntityInsertionOrder() {
        return EntityDependencyOrder.INSERT_ORDER;
    }
    
    @Override
    protected List<Class<? extends Entity>> getEntityDeletionOrder() {
        return EntityDependencyOrder.DELETE_ORDER;
    }

    @Override
    protected DmnEngine buildEngine() {
        if (dmnEngineConfiguration == null) {
            throw new FlowableException("DmnEngineConfiguration is required");
        }

        return dmnEngineConfiguration.buildDmnEngine();
    }

    public DmnEngineConfiguration getDmnEngineConfiguration() {
        return dmnEngineConfiguration;
    }

    public DmnEngineConfigurator setDmnEngineConfiguration(DmnEngineConfiguration dmnEngineConfiguration) {
        this.dmnEngineConfiguration = dmnEngineConfiguration;
        return this;
    }

}

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. Create a DmnEngineConfiguration and call configurator.setDmnEngineConfiguration(dmnEngineConfiguration) before engine init.
  2. In Spring XML, inject the dmnEngineConfiguration property on the configurator bean.
  3. Use the provided helper (e.g. DmnEngineConfiguration.createDefaultDmnEngineConfiguration()) instead of a bare configurator.

Example fix

// before
configurator = new DmnEngineConfigurator();
processEngineConfig.addConfigurator(configurator);
// after
DmnEngineConfiguration dmnCfg = DmnEngineConfiguration.createDefaultDmnEngineConfiguration();
configurator.setDmnEngineConfiguration(dmnCfg);
processEngineConfig.addConfigurator(configurator);
Defensive patterns

Strategy: validation

Validate before calling

DmnEngineConfigurator configurator = new DmnEngineConfigurator();
if (configurator.getDmnEngineConfiguration() == null) {
    configurator.setDmnEngineConfiguration(DmnEngineConfiguration.createDefaultDmnEngineConfiguration());
}
processEngineConfiguration.addConfigurator(configurator);

Try / catch

try { processEngine.buildProcessEngine(); } catch (FlowableException e) { if (e.getMessage().contains("DmnEngineConfiguration is required")) { /* wire the config */ } else { throw e; } }

Prevention

When it happens

Trigger: Registering new DmnEngineConfigurator() in a process engine configuration without calling setDmnEngineConfiguration(...), then building the process engine.

Common situations: Programmatic engine configuration missing the setter, Spring XML config not injecting the dmnEngineConfiguration property, copying configurator setup from examples incompletely.

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/7f437c8c602fbdbd. Report an issue: GitHub.