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>