Les Enterprise Service Bus
L'intégration des applications
Un exemple d'intégration
L'une des questions les plus souvent levée lors de l'utilisation d'un ESB est la réutilisation : comment encapsuler un service, ou une application déjà existante dans un module de l'ESB (notre fameux Service Engine de la norme JBI) ?
En pratique, les différentes solutions offrent des modules qui permettent d'intégrer très simplement les applications déjà existantes. Voici quelques un des modules utilisés par l'ESB d'Apache ServiceMix :
- servicemix-bean : invocation de code Java
- servicemix-cxf-* : invocation de Service Web
- servicemix-ftp : utilisations de commandes FTP
- servicemix-jms : envoi/reception de messages JMS
- servicemix-snmp : envoi de trames SNMP
Le client disposait d'une application de type Corbeille de tâches, qui envoyait des notifications en JMS. Elle permettait très simplement d'affecter des tâches à une personne, de prévenir son chef lorsque l'une des tâches était traitée, etc. Cette application, écrite en Java, utilisait une application externe permettant l'envoi des mails, ainsi qu'une application d'orchestration pour gérer la logique métier. Voici la solution retenue :

Voici comment la fonctionnalité a été intégrée au bus. On peut remarquer plusieurs choses :
- Ajout d'un Service Engine Mail à l'ESB
- Ajout d'un Service Engine Corbeille à l'ESB. Ce SE utilise le module servicemix-bean afin d'encapsuler l'application corbeille de tâche existante
- Ajout d'un Service Engine JMS. Ce SE utilise le module servicemix-jms afin de lire les notifications émises par la corbeille, pour les envoyer dans l'ESB sous la forme d'un Normalized Message (CF Partie JBI)
- Ajout d'un Service Engine Orchestration, qui va se charger de refaire les appels à la corbeille, ou au service mail en fonction de la logique métier implémentée
Dans le cas de ServiceMix, toute la configuration passe par des fichiers XML (Cf ma présentation dans la page Liens utiles). Cependant, certains ESB proposent une interface graphique simplifiée pour la création des Binding Component et des Service Engine. C'est le cas d'Oracle Service Bus par exemple :

Choix de l'ESB >>>