flowable/flowable-engine · error · FlowableException
No formEngine '
Error message
No formEngine '
What it means
FlowableException thrown by GetRenderedStartFormCmd.execute when the process engine configuration has no FormEngine registered under the requested formEngineName. The command looks the engine up in ProcessEngineConfiguration.getFormEngines() and fails because the map lookup returns null.
Source
Thrown at modules/flowable-engine/src/main/java/org/flowable/engine/impl/cmd/GetRenderedStartFormCmd.java:65
if (processDefinition == null) {
throw new FlowableObjectNotFoundException("Process Definition '" + processDefinitionId + "' not found", ProcessDefinition.class);
}
if (Flowable5Util.isFlowable5ProcessDefinition(processDefinition, commandContext)) {
return Flowable5Util.getFlowable5CompatibilityHandler().getRenderedStartForm(processDefinitionId, formEngineName);
}
FormHandlerHelper formHandlerHelper = CommandContextUtil.getProcessEngineConfiguration(commandContext).getFormHandlerHelper();
StartFormHandler startFormHandler = formHandlerHelper.getStartFormHandler(commandContext, processDefinition);
if (startFormHandler == null) {
return null;
}
FormEngine formEngine = CommandContextUtil.getProcessEngineConfiguration(commandContext).getFormEngines().get(formEngineName);
if (formEngine == null) {
throw new FlowableException("No formEngine '" + formEngineName + "' defined process engine configuration");
}
StartFormData startForm = startFormHandler.createStartFormData(processDefinition);
return formEngine.renderStartForm(startForm);
}
}
View on GitHub (pinned to d6d39ce1c6)
Solutions
- Call getRenderedStartForm(processDefinitionId) without an engine name to use the default form engine.
- Register the form engine: processEngineConfiguration.getFormEngines().put(name, new MyFormEngine()) or via a ProcessEngineConfigurator before engine startup.
- Fix the engine-name string; verify available names by inspecting processEngineConfiguration.getFormEngines().keySet().
- If forms were migrated from Activiti 5, confirm the form engine implementation is present on the classpath (missing dependency).
Example fix
// before (engine not registered, name typo)
Object form = formService.getRenderedStartForm(pdId, "Juel");
// after — register engine in config
processEngineConfiguration.getFormEngines().put("juel", new JuelFormEngine());
Object form = formService.getRenderedStartForm(pdId, "juel"); Defensive patterns
Strategy: validation
Validate before calling
Set<String> available = processEngineConfiguration.getFormEngines().keySet();
if (!available.contains(formEngineName)) throw new IllegalArgumentException("Form engine '" + formEngineName + "' not registered; available: " + available); Try / catch
try {
return formService.getRenderedStartForm(pdId, formEngineName);
} catch (FlowableException e) {
if (e.getMessage().startsWith("No formEngine")) { /* fall back to default form handling */ }
} Prevention
- Omit the engine-name argument when the default form engine is sufficient.
- Register custom form engines in the engine configuration at startup, before any command runs.
- Verify configuration after ProcessEngine build: assert getFormEngines() contains the names you use.
- Check dependencies (form engine implementations on the classpath) after upgrades.
When it happens
Trigger: formService.getRenderedStartForm(processDefinitionId, formEngineName) with a formEngineName that is not registered — e.g. "juel"/custom name while only the default form engines exist, or a typo in the engine name.
Common situations: Custom form engine not registered on the process engine configuration (missing formEngine init or custom config bean removed); a rename between Flowable/Activiti versions; copying code that references a form engine from another project's configuration.
Understand the failure class
Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.
Related errors
- Form engine is not initialized
- Form repository service is not available
- No formEngine '
- Form engine is not initialized
- no org.flowable.app.engine.AppEngine defined in the applicat
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/f0dffc7e25f5a481.
Report an issue: GitHub.