Capítulo 10. Integrando ao Spring

10.1. Configurando o Red Hat JBoss BPM Suite com Spring

Consulte o Guia de Instalação do Red Hat JBoss BPM Suite para baixar o módulo Spring. Você precisará baixar a versão genérica implantável do JBoss BPM Suite.
O módulo Spring está presente no arquivo jboss-bpms-engine.zip e é chamado de kie-spring-VERSION-redhat-MINORVERSION.jar.
A maneira como você pretende usar os módulos Spring no seu aplicativo afeta a forma como você deve configurá-los.

Como um Mecanismo de Processos Autogerenciados

Essa é a maneira padrão para começar a usar o JBoss BPM Suite no seu aplicativo Spring. Você o configura apenas uma vez e o executa como parte do aplicativo. Ao usar a API RuntimeManager, uma sincronização perfeita entre o mecanismo de processos e o serviço de tarefas é gerenciada internamente e o usuário final não precisa lidar com o código interno para fazer os dois funcionarem juntos.

Como um Serviço de Tarefas Compartilhado

Quando você usa uma única instância de um TaskService, você obtém mais flexibilidade na configuração da instância do serviço de tarefas, já que é independente do RuntimeManager. Depois de configurado, ele é, então, usado pelo RuntimeManager quando solicitado.
Para criar um RuntimeEnvironment a partir do seu aplicativo Spring, você pode usar a classe org.kie.spring.factorybeans.RuntimeEnvironmentFactoryBean. Essa classe de fábrica é responsável pela produção de instâncias do RuntimeEnvironment que são consumidas pelo RuntimeManager mediante criação. Segue abaixo um RuntimeEnvironment configurado com o gerenciador de entidade, gerenciador de transação e recursos para a classe org.kie.spring.factorybeans.RuntimeEnvironmentFactoryBean:
<bean id="runtimeEnvironment" class="org.kie.spring.factorybeans.RuntimeEnvironmentFactoryBean">
  <property name="type" value="DEFAULT"/>
  <property name="entityManagerFactory" ref="jbpmEMF"/>
  <property name="transactionManager" ref="jbpmTxManager"/>
  <property name="assets">
    <map>
      <entry key-ref="process"><util:constant static-field="org.kie.api.io.ResourceType.BPMN2"/></entry>
    </map>
  </property>
</bean>
O RuntimeEnvironment a seguir pode ser criado ou configurado:
  • DEFAULT - configuração padrão (mais comum) para o RuntimeManager
  • EMPTY - ambiente completamente vazio para ser populado manualmente
  • DEFAULT_IN_MEMORY - o mesmo que DEFAULT, mas sem persistências do mecanismo de tempo de execução
  • DEFAULT_KJAR - o mesmo que DEFAULT, mas os ativos de conhecimento são tomados do KJAR identificado por releaseid ou GAV
  • DEFAULT_KJAR_CL - construído diretamente a partir do caminho de classe que consiste no descritor kmodule.xml
Dependendo do tipo selecionado, diferentes propriedades mandatórias serão solicitadas. No entanto, pelo menos uma das propriedades de conhecimento a seguir deve ser fornecida:
  • knowledgeBase
  • assets
  • releaseId
  • groupId, artifactId, version
Por fim, para os tipos DEFAULT, DEFAULT_KJAR, DEFAULT_KJAR_CL, a persistência precisa ser configurada na forma de valores para entity manager factory e transaction manager. Segue abaixo um exemplo de RuntimeManager para org.kie.spring.factorybeans.RuntimeManagerFactoryBean:
<bean id="runtimeManager" class="org.kie.spring.factorybeans.RuntimeManagerFactoryBean" destroy-method="close">
  <property name="identifier" value="spring-rm"/>
  <property name="runtimeEnvironment" ref="runtimeEnvironment"/>
</bean>