flowable/flowable-engine · error · FlowableException

Could not find org.flowable.http.HttpActivityBehavior:

Error message

Could not find org.flowable.http.HttpActivityBehavior: 

What it means

For HTTP service tasks (flowable:type="http"), DefaultActivityBehaviorFactory.createHttpActivityBehavior loads the HTTP behavior class from the flowable-http module. If that class is not on the classpath, the ClassNotFoundException is wrapped in FlowableException("Could not find org.flowable.http.HttpActivityBehavior: ").

Source

Thrown at modules/flowable-engine/src/main/java/org/flowable/engine/impl/bpmn/parser/factory/DefaultActivityBehaviorFactory.java:367

                    break;
                }
            }

            if (behaviorExtension != null) {
                serviceTask.getFieldExtensions().remove(behaviorExtension);
            }

            if (theClass == null) {
                return createDefaultActivityBehaviour(serviceTask);
            }

            return classDelegateFactory.create(serviceTask.getId(), theClass.getName(),
                    createFieldDeclarations(serviceTask.getFieldExtensions()),
                    serviceTask.isTriggerable(),
                    getSkipExpressionFromServiceTask(serviceTask), serviceTask.getMapExceptions());

        } catch (ClassNotFoundException e) {
            throw new FlowableException("Could not find org.flowable.http.HttpActivityBehavior: ", e);
        }
    }

    protected ActivityBehavior createDefaultActivityBehaviour(ServiceTask serviceTask) {
        if (ImplementationType.IMPLEMENTATION_TYPE_CLASS.equals(serviceTask.getImplementationType())) {
            return createClassDelegateServiceTask(serviceTask);
        } else if (ImplementationType.IMPLEMENTATION_TYPE_DELEGATEEXPRESSION.equals(serviceTask.getImplementationType())) {
            return createServiceTaskDelegateExpressionActivityBehavior(serviceTask);
        } else {
            return classDelegateFactory.create(serviceTask.getId(), DefaultBpmnHttpActivityDelegate.class.getName(),
                    createFieldDeclarations(serviceTask.getFieldExtensions()),
                    serviceTask.isTriggerable(),
                    getSkipExpressionFromServiceTask(serviceTask), serviceTask.getMapExceptions());
        }
    }

    @Override
    public ActivityBehavior createBusinessRuleTaskActivityBehavior(BusinessRuleTask businessRuleTask) {

View on GitHub (pinned to d6d39ce1c6)

Solutions

  1. Add the flowable-http dependency (org.flowable:flowable-http) to the application
  2. If HTTP tasks are not intended, remove/replace the http service tasks in the BPMN XML
  3. Confirm the jar containing org.flowable.http.HttpActivityBehavior is packaged in the deployment artifact

Example fix

// before (pom.xml)
<!-- missing -->
// after (pom.xml)
<dependency>
  <groupId>org.flowable</groupId>
  <artifactId>flowable-http</artifactId>
  <version>${flowable.version}</version>
</dependency>
Defensive patterns

Strategy: fallback

Validate before calling

try {
    Class.forName("org.flowable.http.HttpActivityBehavior");
} catch (ClassNotFoundException e) {
    throw new IllegalStateException("flowable-http module missing from classpath");
}

Try / catch

try {
    repositoryService.createDeployment().deploy();
} catch (FlowableException e) {
    if (e.getMessage().startsWith("Could not find org.flowable.http.HttpActivityBehavior")) {
        log.error("Add org.flowable:flowable-http to dependencies");
    }
}

Prevention

When it happens

Trigger: Deploying or executing a process with <serviceTask flowable:type="http"> while the flowable-http dependency is missing from the engine's runtime classpath.

Common situations: Engine installed without the optional flowable-http module; process definitions using http tasks moved to a slim deployment; dependency exclusions stripping flowable-http.

Related errors


AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11). Data as JSON: /api/errors/de1a1f14589997d6. Report an issue: GitHub.