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
- Create a DmnEngineConfiguration and call configurator.setDmnEngineConfiguration(dmnEngineConfiguration) before engine init.
- In Spring XML, inject the dmnEngineConfiguration property on the configurator bean.
- 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
- Always call setDmnEngineConfiguration after creating the configurator
- In Spring, inject the dmnEngineConfiguration property
- Boot engines in a smoke test early in CI
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
- couldn't initialize dmn engine from spring configuration res
- Could not execute decision instance: no dmn service found. F
- DMN repository service is not available
- Dmn engine is not configured
- no " + CmmnEngine.class.getName() + " defined in the applica
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/7f437c8c602fbdbd.
Report an issue: GitHub.