Capítulo 11. Integração CDI

11.1. Integração CDI

Para utilizar jbpm-kie-services no seu sistema, você precisará fornecer alguns mbeans para satisfazer todas as dependências dos serviços. Existem vários mbeans que dependem dos cenários vigentes.
  • gerenciador de entidades e fábrica de gerenciador de entidades
  • retorno de chamadas de grupos de usuários para tarefas humanas
  • provedor de identidade para passar informações sobre o usuário para os serviços
Durante a execução em um ambiente JEE, como o JBoss Application Server, o mbeam deve satisfazer todos os requisitos de jbpm-kie-services
public class EnvironmentProducer { 

    @PersistenceUnit(unitName = "org.jbpm.domain")
    private EntityManagerFactory emf;

    @Inject
    @Selectable
    private UserGroupCallback userGroupCallback;

    @Produces
    public EntityManagerFactory getEntityManagerFactory() {
        return this.emf;
    }

    @Produces
    @RequestScoped
    public EntityManager getEntityManager() {
        EntityManager em = emf.createEntityManager();
        return em;
    }

    public void close(@Disposes EntityManager em) {
        em.close();
    }

    @Produces
    public UserGroupCallback produceSelectedUserGroupCalback() {
        return userGroupCallback;
    }
    @Produces

    public IdentityProvider produceIdentityProvider {
        return new IdentityProvider() {
             // implement IdentityProvider
        };
    }
}
Depois, o arquivo deployments/business-central.war/WEB-INF/beans.xml pode ser configurado para alterar os parâmetros de configuração atuais da nova implementação usergroupcallback.
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://docs.jboss.org/cdi/beans_1_0.xsd">

<alternatives>
  <class>org.jbpm.services.task.identity.JAASUserGroupCallbackImpl</class>
</alternatives>

</beans>

Nota

org.jbpm.services.task.identity.JAASUserGroupCallbackImpl é apenas um exemplo dado aqui para demonstrar as configurações do servidor do aplicativo, independente do que ele seja na verdade (LDAP, DB, etc).