Capítulo 10. Integración con Spring
10.1. Configuración de Red Hat JBoss BPM Suite con Spring
Consulte la Guía de instalación de Red Hat JBoss BPM Suite para descargar el módulo Spring. Tendrá que descargar la versión genérica implentable de JBoss BPM Suite.
El módulo Spring está presente en el archivo
jboss-bpms-engine.zip y se llama kie-spring-VERSION-redhat-MINORVERSION.jar.
La manera en que tenga planeado el utilizar los módulos Spring en su aplicación afecta la manera en que se deben configurar.
Como una máquina de procesos auto administrada
Esta es la manera estándar para empezar a utilizar JBoss BPM Suite en su aplicación Spring. Solo necesita configurarlo una vez y ejecutarlo como parte de la aplicación. Al utilizar la API
RuntimeManager, se administra internamente una sincronización perfecta entre la máquina de procesos y el servicio de tareas y el usuario final no tiene que tocar el código interno para que estos dos funcionen juntos.
Como servicio de tarea compartida
Cuando utiliza una sola instancia de un
TaskService, tiene mayor flexibilidad al configurar la instancia del servicio de tarea ya que es independiente del RuntimeManager. Una vez configurado luego el RuntimeManager lo utiliza cuando se requiere.
Para crear un RuntimeEnvironment desde su aplicación Spring, puede utilizar la clase
org.kie.spring.factorybeans.RuntimeEnvironmentFactoryBean. Esta clase de fábrica es la responsable de producir instancias del RuntimeEnvironment que son consumidas por el RuntimeManager al ser creadas. A continuación puede ver ilustrado un RuntimeEnvironment configurado con el gestor de entidades, gestor de transacciones y los recursos para la clase 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>
Los siguientes entornos RuntimeEnvironment pueden ser creados o configurados:
- DEFAULT - configuración predeterminada (la más común) para RuntimeManager
- EMPTY - entorno completamente vació para ser rellenado manualmente
- DEFAULT_IN_MEMORY - igual a DEFAULT pero sin persistencia de motor de tiempo de ejecución
- DEFAULT_KJAR - igual a DEFAULT pero activo de conocimientos se toman del KJAR identificado por releaseid o GAV
- DEFAULT_KJAR_CL - construido directamente desde classpath, que consta del descriptor kmodule.xml
Dependiendo del tipo seleccionado se requieren propiedades obligatorias diferentes. Sin embargo, se debe proporcionar por lo menos una de las siguientes propiedades de conocimiento:
- knowledgeBase
- activos
- releaseId
- groupId, artifactId, versión
Finalmente, para los tipos DEFAULT, DEFAULT_KJAR, DEFAULT_KJAR_CL es necesario configurar la persistencia en con los valores para
entity manager factory y transaction manager. A continuación puede ver ilustrado un RuntimeManager de ejemplo 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>