Puissance de Bonita
Bonita est un outil communiquant. Il permet de se connecter à de nombreuses
sources de données ou de services. De prime abord, cette fonctionnalité est
très appréciable. Malheureusement, elle souffre souvent de lacune
d'intégration. Sécurité, industrialisation de développement, tests unitaires
sont autant de fonction qui sont difficilement reproductibles dans un tel
outil. Finalement, le connecteur que je préfère, c'est le connecteur
groovy ! Non pas que je sois fan de ce langage (dont je ne suis vraiment
pas spécialiste...), mais il me permet d'utiliser n'importe quelle classe java
qu'un développeur aura réalisée. Je trouve alors que la puissance de Bonita
n'est pas tant ces nombreux connecteurs, mais plutôt sa capacité à intégrer des
jar dans ses classpath de build et de run.
Classes Java
Imaginons que nous avons une classe java à interfacer en web service avec Bonita. Nous pourrions utiliser naturellement le connecteur Web Service. Je trouve que celui-ci est difficile à utiliser. Tout d'abord, il faut y placer le WSDL, ensuite faire l'appel par un script groovy et récupérer le DOM de retour pour parser le flux XML pour le mapper dans une variable. Tout ceci peut très bien se faire par notre IDE préféré (!!). En effet, dans Eclipse, il existe de nombreuses façons d'invoquer un web service. Avec en prime la possibilité d'effectuer des call back client/serveur pour la sécurité, de contextualiser les utilisateurs d'appel et de récupérer directement le bean de retour. Nous pouvons utiliser SpringWS, CXF mais j'ai un petit faible pour SCA (j'utilise habituellement l'implémentation Tuscany d'Apache mais d'autres existes) Notre classe est très simple, Il s'agit d'une sorte d'individu avec son adresse. Cela pourrait-être n'importe quelle grappe d'objets.
Nous pouvons maintenant créer une méthode qui rend cette grappe d'objets
simples :
Bien sûr cette méthode rend ici un bouchon. Elle pourrait très bien faire une connexion à une base, un appel web service ou un look up JNDI. Peu importe ici. Ce qui est assez souple, c'est ce qui suit avec Bonita.
Intégration dans Bonita.
Nous pouvons exporter notre jar depuis Eclipse et l'importer dans Bonita. La
méthode d'import est très simple. Il s'agit simplement de déclarer notre jar
dans les dépendances du processus. Ici, il s'agit du jar JavaBonita.jar
Vous pouvez mettre ce jar au niveau du pool ou du processus directement.
Ceci n'impacte que la portée de votre import. Tout dépend où se trouve
l'activité qui doit faire appel au jar. Nous allons également déclarer une
variable au niveau du processus.
Maintenant, nous pouvons sélectionner l'activité de notre processus qui doit
faire appel à cette méthode puis choisir l'onglet Connecteur : Au début, il n'y
aura aucun connecteur mais en cliquant sur Ajouter, nous voyons apparaitre la
liste des connecteurs disponibles.Nous allons prendre ici Script puis
Groovy.Nous pouvons sélectionner le moment durant l'activité où ce script
s'exécutera. Pour ce tuto, ça n'a aucune importance. Nous pouvons maintenant
éditer notre script et simplement appeler notre classe java et affecter très
simplement le résultat à notre variable de processus.
Nous pouvons cliquer sur "Evaluer" ou "tester la configuration" pour tester notre appel. Normalement, nous voyons que le retour est "11111".
Et voilà, nous pouvons maintenant appeler très facilement une classe java qui elle-même utilise les standards d'appel de services que vous aurez établis.