Chapitre 10. Intégration avec Spring

10.1. Configurer Red Hat JBoss BPM Suite avec Spring

Consulter le Guide d'installation de Red Hat JBoss BPM Suite pour télécharger le module Spring. Vous aurez besoin de télécharger la version déployable de JBoss BPM Suite.
Le module de Spring se trouve dans le fichier jboss-bpms-engine.zip et s'appelle kie-spring-VERSION-redhat-MINORVERSION.jar.
Ce que vous souhaitez faire avec les modules Spring affecte la façon dont vous aurez besoin de les configurer.

En tant que Moteur de processus auto gérés

C'est la façon habituelle de commencer à utiliser Suite BPM JBoss dans votre application Spring. Vous la pré-configurez une seule fois et vous l'exécutez dans le cadre de l'application. Grâce à l'API RuntimeManager, une synchronisation parfaite entre le service de tâches et le moteur de processus est gérée en interne et l'utilisateur final n'a pas à traiter le code interne pour les faire fonctionner ensemble.

En tant que service de tâches partagées

Lorsque vous utilisez une instance unique d'un TaskService, vous avez plus de flexibilité dans la configuration de l'instance de service de tâches car elle est indépendante du RuntimeManager. Une fois configurée, elle est ensuite utilisée par le RuntimeManager à la demande.
Pour créer un RuntimeEnvironment partir de votre application Spring, vous pouvez utiliser la classe org.kie.spring.factorybeans.RuntimeEnvironmentFactoryBean. Cette classe de fabrique est chargée de produire des instances de RuntimeEnvironment qui sont consommés par le RuntimeManager lors de la création. Illustré ci-dessous, vous verrez un RuntimeEnvironment configuré le gestionnaire d'entités, le gestionnaire de transactions et les ressources pour la 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>
L'environnement de runtime suivant peut être créé ou configuré :
  • DEFAULT - configuration par défaut (le plus commun) du RuntimeManager
  • EMPTY - environnement complètement vide à remplir manuellement
  • DEFAULT_IN_MEMORY - la même chose que DEFAULT mais sans persistence du moteur de runtime
  • DEFAULT_KJAR - la même chose que DEFAULT mais les ressources de connaissance sont prises dans le KJAR identifié par releaseId ou le GAV
  • DEFAULT_KJAR_CL - généré directement à partir d'une chemin de classe qui consiste en un descripteur kmodule.xml
Suivant le type sélectionné, plusieurs propriétés obligatoires sont requises. Cependant, une des propriétés de connaissance suivantes doit être fournie :
  • knowledgeBase
  • assets
  • releaseId
  • groupId, artifactId, version
Finalement, pour les types DEFAULT, DEFAULT_KJAR, DEFAULT_KJAR_CL, la persistance doit être configurée sous la forme de valeurs entity manager factory outransaction manager. Voici ci-dessous un exemple de RuntimeManager pour 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>