Introduction
Après avoir détaillé la mise en œuvre d’un flux OSB publiant des messages dans une queue AQ, je vous propose à présent de voir comment mettre en place le consommateur …
Le flux mis en œuvre ci-dessous consomme les messages d’une file de messages de type AQ et diffuse ce même message vers un processus BPEL.
Business Service
Dans un premier temps, créez le Business Service qui va permettre de diffuser le message vers le processus BPEL.
Sélectionnez le WSDL du processus BPEL :
Vérifiez que le endpoint est bien celui du Web Service (processus BPEL) :
Le Business Service étant fait, il reste à créer le Proxy.
Proxy Service
Créez un Proxy Service de type Messaging Service :
Précisez le schéma XML et l’élément root du message à récupérer dans la file de messages :
Renseignez le protocole et le endpoint :
- Protocole : JMS
- Endpoint : URI d’accès à la file JMS de la forme jms://serveur:port/JNDI_connectionFactory/JNDI_queue
Indiquez le type de file JMS dans laquelle vous consommez les messages : Queue ou Topic :
Dans la partie « Message Flow », ajoutez une règle de routage pour appeler le processus BPEL cible.
Il faut également formater le message d’entrée du processus BPEL à l’aide d’une activité « Replace » :
J’ai par ailleurs ajouté une activité de log pour tracer la consommation des messages.
Vous remarquerez que j’ai utilisé ici une transformation XQuery pour mettre la variable body au format attendu par le BPEL.
Tests
Message déposé dans la file JMS :
<exam:pp xmlns:exam="http://www.example.org"> <exam:nom>durand</exam:nom> <exam:prenom>jean</exam:prenom> <exam:age>25</exam:age> </exam:pp>
Trace d’exécution du flux dépilant dans une file JMS :
####<8 juin 2010 15 h 34 CEST> <Warning> <ALSB Logging> [...] <BEA-000000> < [RouteNode1, null, null, REQUEST] <soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <usin:process xmlns:usin="http://xmlns.oracle.com/UsineA/UsineA"> <usin:input>durandjean25</usin:input> </usin:process> </soapenv:Body>>
Par ailleurs, contrairement à l’OSB, les instances d’exécution des processus BPEL sont déshydratées et visualisables via la console EM.
Ci-dessous, on constate donc que le message a bien été dépilé et envoyé vers le processus BPEL :
Conclusion
Ces deux articles auront donc permis de donner un aperçu de la mise en œuvre de flux OSB et plus particulièrement de l’intégration de l’OSB avec les files JMS.