CDI and Java EE Integration

The camunda-engine-cdi and camunda-engine-cdi-jakarta modules provide programming model integration with CDI (Context and Dependency Injection). CDI is the Jakarta EE/Java EE standard for Dependency Injection. The Camunda CDI integration leverages both the configuration of the Camunda engine and the extensibility of CDI. The most prominent features are:

  • A custom El-Resolver for resolving CDI beans (including EJBs) from the process.
  • Support for @BusinessProcessScoped beans (CDI beans, the lifecycle of which are bound to a process instance).
  • Declarative control over a process instance using annotations.
  • The Process Engine is hooked-up to the CDI event bus.
  • Works with Jakarta EE, Java EE, and Java SE.
  • Support for unit testing.

Quarkus Engine Extension

Since Quarkus ArC does not aim to fully implement CDI 2.0, you cannot use the full range of features the camunda-engine-cdi module provides. Read about the limitations in the Quarkus Integration guide.

Maven Dependency

To use the camunda-engine-cdi module inside your application, you must include the following Maven dependency:

Please import the Camunda BOM to ensure correct versions for every Camunda project.

<dependency>
  <groupId>org.camunda.bpm</groupId>
  <artifactId>camunda-engine-cdi</artifactId>
</dependency>

For Jakarta EE 9+ containers, use the following dependency instead:

<dependency>
  <groupId>org.camunda.bpm</groupId>
  <artifactId>camunda-engine-cdi-jakarta</artifactId>
</dependency>

There is a project template for Maven called camunda-archetype-ejb-war, which gives you a complete running project, including CDI integration.