flowable/flowable-engine · error · FlowableException

no org.flowable.app.engine.AppEngine defined in the applicat

Error message

no org.flowable.app.engine.AppEngine defined in the application context <resource>

What it means

FlowableException thrown by SpringAppConfigurationHelper.buildAppEngine when the Spring XML application context loaded from the given URL contains no bean of type org.flowable.app.engine.AppEngine. The helper expects the context file to define an app engine bean (typically via SpringAppEngineConfiguration factory bean).

Source

Thrown at modules/flowable-app-engine-spring/src/main/java/org/flowable/app/spring/SpringAppConfigurationHelper.java:39

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.GenericXmlApplicationContext;
import org.springframework.core.io.UrlResource;

/**
 * @author Tijs Rademakers
 */
public class SpringAppConfigurationHelper {

    private static final Logger LOGGER = LoggerFactory.getLogger(SpringAppConfigurationHelper.class);

    public static AppEngine buildAppEngine(URL resource) {
        LOGGER.debug("==== BUILDING SPRING APPLICATION CONTEXT AND APP ENGINE =========================================");

        try (GenericXmlApplicationContext applicationContext = new GenericXmlApplicationContext(new UrlResource(resource))) {
            Map<String, AppEngine> beansOfType = applicationContext.getBeansOfType(AppEngine.class);
            if ((beansOfType == null) || beansOfType.isEmpty()) {
                throw new FlowableException("no " + AppEngine.class.getName() + " defined in the application context " + resource);
            }

            AppEngine appEngine = beansOfType.values().iterator().next();

            LOGGER.debug("==== SPRING APP ENGINE CREATED ==================================================================");
            return appEngine;
        }
    }

}

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. Define a bean of type SpringAppEngineConfiguration (factory bean producing AppEngine) in the XML context
  2. Verify the URL points to the intended Spring context file
  3. Check the bean's class attribute matches org.flowable.app.spring.SpringAppEngineConfiguration

Example fix

// before
<bean id="processEngineConfiguration" class="org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration"/>
// after
<bean id="appEngineConfiguration" class="org.flowable.app.spring.SpringAppEngineConfiguration">
  <property name="dataSource" ref="dataSource"/>
  <property name="transactionManager" ref="transactionManager"/>
</bean>
Defensive patterns

Strategy: validation

Validate before calling

GenericXmlApplicationContext ctx = new GenericXmlApplicationContext(new UrlResource(resource));
if (ctx.getBeansOfType(AppEngine.class).isEmpty()) {
    throw new IllegalStateException(resource + " defines no AppEngine bean");
}

Try / catch

try { AppEngine e = SpringAppConfigurationHelper.buildAppEngine(url); } catch (FlowableException ex) { log.error("Bad spring context: {}", ex.getMessage()); }

Prevention

When it happens

Trigger: Calling AppEngineConfiguration build from a spring XML resource (e.g. flowable.app.cfg.xml style context) whose file defines a different engine type or no engine bean at all.

Common situations: Copying a process-engine Spring config and forgetting to change the bean class to SpringAppEngineConfiguration, wrong resource URL loaded, bean defined with an unexpected type or not exported.

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