Chapter 16. CDI Integration

16.1. About CDI

Apart from the API based approach, Red Hat JBoss BPM Suite 6 also provides the Context and Dependency Injection (CDI) to build your custom applications. CDI is a collection of component management services for the Java EE platform that enables developers to use enterprise beans in web applications. The benefits of CDI include a simplified architecture and more resuable code.

The jbpm-services-cdi module provides CDI wrappers of Kie Services that enable these services to be injected in any CDI bean.


A workaround is needed on the Oracle WebLogic Server for CDI to work. For more information, see Additional Notes in the Red Hat JBoss BPM Suite Oracle WebLogic Installation and Configuration Guide.

16.2. Defining MBeans for CDI Integration

To make use of jbpm-kie-services in your system, you must provide some MBeans to satisfy all dependencies of the services. There are several MBeans that depend on actual scenarios.

  • Entity manager and entity manager factory
  • User group callback for human tasks
  • Identity provider to pass authenticated user information to the services


  1. When running in a JEE environment such as JBoss Application Server, ensure that the mbean satisfies all requirements of the jbpm-kie-services:

    public class EnvironmentProducer {
        @PersistenceUnit(unitName = "org.jbpm.domain")
        private EntityManagerFactory emf;
        private UserGroupCallback userGroupCallback;
        public EntityManagerFactory getEntityManagerFactory() {
            return this.emf;
        public EntityManager getEntityManager() {
            EntityManager em = emf.createEntityManager();
            return em;
        public void close(@Disposes EntityManager em) {
        public UserGroupCallback produceSelectedUserGroupCalback() {
            return userGroupCallback;
        public IdentityProvider produceIdentityProvider {
            return new IdentityProvider() {
                 // implement IdentityProvider
  2. Configure the deployments/business-central.war/WEB-INF/beans.xml file to change the current settings of the new usergroupcallback implementation:

    <beans xmlns="" xmlns:xsi=""
    Note is just an example here to demonstrate the settings of the application server regardless of what it actually is (LDAP, DB, etc).