<BPEL> Orchestration de Web Services Grégory Le Bonniec gregory.lebonniec@zenika.com 26 novembre 2009 1
Zenika Conseil / Développement / Formation Localisation : Paris et Rennes Nos partenaires Mon expérience Consultant JEE/SOA depuis 8 ans Spring / GWT / Flex... BPEL / WS / ESB / EIP... 2
Sommaire SOA : rappels BPEL : orchestration de services BPEL : bonnes pratiques 3
SOA 4
SOA : pourquoi? L'entreprise doit s'adapter continuellement L'entreprise est de plus en plus dépendante des technologies le SI peut devenir un frein «C'est pas notre faute, c'est un problème informatique...» Acteurs métiers Acteurs techniques Objectif Réconcilier le monde métier et le monde technique 5
SOA : principes Simplicité Efficacité Communication métier/technique Flexibilité et maintenabilité Pérennité des systèmes Réutilisabilité Réduction des anomalies Gain de productivité Indépendance vis à vis des technologies S'appuyer sur les standards et les bonnes pratiques 6
SOA : comment? Définition «désigne un type d'architecture fournissant un ensemble de services localisables, à des applications clientes ou à d'autres services distribués sur un réseau, via des interfaces publiées» Service = élément central de la démarche SOA Fonctions Objet Service 7
SOA : évolution du SI Service = Contrat Fonctionnalités métier Performances ; Robustesse... Intégration via des services Les systèmes communiquent via des protocoles et des formats standards La vision «service» remplace la vision «silo» Intégration de l'existant via des services 8
SOA et Web Services Ne pas confondre Web Services et SOA SOA = architecture WS = technologie SOA n'est pas lié aux technologies SOA compatible avec : WS, MOM, POX les Web Services restent malgré tout une technologie répondant aux critères SOA 9
Web Services 10
Web Services : principes WSDL Décrit Web Services (JEE,.Net...) Relié à Permet la communication avec SOAP 11
SOAP Couche message Basé sur XML Indépendant de la couche transport Normalisé par W3C WS-* (WS-STAR) Extensions de SOAP : WS-Addressing ; WS-Security ; WS-Reliability ;... 12
SOAP : format Enveloppe Entête Corps <soapenv:envelope...> <soapenv:header> <add:messageid>132465789</add:messageid> </soapenv:header> <soapenv:body> <ns:requete> <ns:element> <ns:action>creation</ns:action> <ns:id>123</ns:id> </ns:element> </ns:requete> </soapenv:body> </soapenv:envelope> 13
WSDL Décrit le Web Service types, messages ; operations ; protocole ; adresse Basé sur XML Normalisé par W3C WSDL = Contrat 14
WSDL : Format Définitions types messages opérations protocole adresse <definitions name="exemple"...> <types> <schema> <import namespace="http://zenika.com" schemalocation="exemple.xsd"/> </schema> </types> <message name="exemplerequestmessage"> <part name="payload" element="tns:exempleprocessrequest"/> </message> <message name="exempleresponsemessage"> <part name="payload" element="tns:exempleprocessresponse"/> </message> <porttype name="exemple"> <operation name="process"> <input message="tns:exemplerequestmessage"/> <output message="tns:exempleresponsemessage"/> </operation> </porttype> <binding name="exemplebinding" type="tns:exemple"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="process"> <soap:operation style="document" soapaction="process"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="exemple"> <port name="exempleport" binding="tns:exemplebinding"> <soap:address location="http://localhost:8080/exemple/1.0"/> </port> </service> </definitions> 15
BPEL 16
BPEL Business Process Execution Language 17
BPEL, c'est quoi? Standard issu du consortium OASIS WS-BPEL 1.1 2004 WS-BPEL 2.0 2007 Différentes implémentations (Oracle, Apache, ) Langage Description de «Business Processes» Interactions avec des Web Services Écrit en XML 18
BPEL, quelle utilité? Business Process Requête / Réponse Modèle de données Activités et tâches Sous-processus / Services Business process = Processus BPEL Processus BPEL = Web Service 19
BPEL, quelle utilité? Orchestrateur de Web Services Abstraction Un processus BPEL orchestre l'appel à d'autres WS Granularité inconnue du WS appelé 20
BPEL, ça ressemble à quoi? Processus BPEL WSDL Types Messages Opérations / PortTypes BPEL PartnerLinks Variables Activités 21
BPEL, ça ressemble à quoi? Processus BPEL Partenaires Variables globales Activités 22
Oracle BPEL JDeveloper BPEL Designer BPEL BPEL Process Manager Integrated BPM Services WSDL Binding Web services Workflow Decision Service Sensors Metadata Repository (Oracle Database) Java, JMS File, FTP Database Core BPEL Engine Process Console J2EE Application Server (Oracle AS, WebLogic, JBoss, WebSphere) MANAGE Apps 23
Oracle BPEL : retour d'expérience Mise en œuvre d'un projet d'orchestration Télécom Oracle BPEL 10.1.3 (WS-BPEL 1.1) Avant-vente Architecture Développement «Chantier robustesse/performances» Production Plusieurs centaines de milliers de requêtes par jour Web Services, MQ/JMS 24
Démonstration Démonstration n 1 Orchestration de 2 processus BPEL Création d un processus BPEL parent Déploiement Simulation sur Oracle BPEL PM 10.1.3.1 25
Qu'est-ce que BPEL sait faire? Le langage BPEL est composé d un nombre restreint de briques logicielles (activités BPEL) qui permettent : De communiquer avec des web services De manipuler des données XML De gérer des exceptions De gérer la compensation (ie. rollback) 26
Activités BPEL de base (1/3) Nom Assign Scope Symbole Description Permet de manipuler les variables d un processus Initialisation de variable Copie de variable Manipulation XML (XPath) Découpe de manière logique un processus BPEL. Il permet : De déclarer des variables locales De récupérer des exceptions Exécute différents traitements en parallèle. Flow 27
Activités BPEL de base (2/3) Nom Symbole Description Fournit n branches. Chacune de ces branches est associée à une expression booléenne. La première branche (de gauche à droite) dont la condition est vraie est exécutée. Il est possible de fournir une branche otherwise qui est lancée si aucune des autres branches n est valide. Switch Effectue un traitement tant que la condition associée n est pas respectée. While 28
Activités BPEL de base (3/3) Nom Symbole Description Throw Lance une exception interne. Les exceptions peuvent ensuite être récupérées dans un Catch du même processus BPEL. Catch Récupère au sein d un scope les exceptions d un type donné et permet d y associer un traitement spécifique. Nom CatchAllSymbole Permet de récupérer l ensemble des exceptions non récupérées par des catchs simples. 29
Activités BPEL d'orchestration Nom Invoke Receive Reply Pick Symbole Description Appelle un web service partenaire (PartnerLink) Permet de recevoir un message d un web service partenaire Envoie un message (ou une exception) en sortie de processus. Permet de combiner plusieurs Receive et Timeout (Une seule branche peut être prise en compte). 30
Processus synchrone/asynchrone 2 catégories principales de processus BPEL Processus synchrone attente active (appel bloquant) de la réponse traitements courts (quelques secondes) sortie = message ou exception Processus asynchrone pas d attente active (appel non bloquant) d une éventuelle réponse traitements longs sortie = message 31
Démonstration Démonstration n 2 Création de 2 processus BPEL Synchrone Asynchrone avec timer de 20 secondes Déploiement Simulation sur Oracle BPEL PM 10.1.3.1 32
Base de déshydratation Déshydratation = Mémoire à long terme 33
Base de déshydratation Pourquoi déshydrater? Nécessité technique (gestion mémoire) Robustesse du système Cohérence et intégrité Quand déshydrater? Selon implémentation Activités BPEL spécifiques (Receive, Wait) Action utilisateur 34
Déshydratation : quand? 35
Communications asynchrones Problématique : débloquer une instance BPEL en attente de réponse Processus appelant : attente passive c est au processus appelé de «réveiller» le processus appelant «Réveil» = envoi d un message (appel WS) 36
Comparaison technique : synchrone/asynchrone Synchrone Asynchrone <definitions name="processsync"...>... <porttype name="processsync"> <operation name="process"> <input message="tns:imessage"/> <output message="tns:omessage"/> </operation> </porttype>... <service name="processsync"> <port name="processsyncport" binding="tns:processsyncbinding"> <soap:address location="http://localhost:8888/orabpel/default/ ProcessSync/1.0"/> </port> </service>... </definitions> <definitions name="processwait"...>... <porttype name="processwait"> <operation name="initiate"> <input message="tns:imessage"/> </operation> </porttype> <porttype name="processwaitcallback"> <operation name="onresult"> <input message="tns:omessage"/> </operation> </porttype>... <service name="processwait"> <port name="processwaitport" binding="tns:processwaitbinding"> <soap:address location="http://localhost:8888/orabpel/default/ ProcessWait/1.0"/> </port> </service> <service name="processwaitcallbackservice"> <port name="processwaitcallbackport" binding="tns:processwaitcallbackbinding"> <soap:address location="http://set.by.caller"/> </port> </service>... </definitions> 37
WS-Addressing Spécifications W3C : mécanismes permettant aux WS de communiquer des informations d adressage données de routage de messages incluses au header SOAP utilisé par Oracle BPEL pour gérer les communications asynchrones 38
WS-Addressing - étape 1 <soap:envelope...> <soap:header> Processus Id Contexte <wsa:messageid>123</wsa:messageid> <wsa:replyto> <wsa:address> http://localhost:9700/process/callback </wsa:address> </wsa:replyto> <soap:header> <soap:body> </soap:body> </soap:envelope> ProcessAppel ProcessWait 39
WS-Addressing - étape 2 Processus ProcessAppel Id 123 Contexte <ProcessAppel> <Receive_1> en cours </Receive_1> </ProcessAppel> ProcessAppel ProcessWait 40
WS-Addressing - étape 3 Processus ProcessAppel Id 123 Contexte <ProcessAppel> <Receive_1> en cours </Receive_1> </ProcessAppel> ProcessAppel ProcessWait 41
WS-Addressing - étape 4 <soap:envelope...> <soap:header> <wsa:relatesto>123</wsa:relatesto> Processus ProcessAppel Id 123 Contexte <ProcessAppel> <Receive_1> en cours </Receive_1> </ProcessAppel> <soap:header> <soap:body> </soap:body> </soap:envelope> ProcessAppel ProcessWait 42
Fonction XPath XPath est une syntaxe (non XML) pour désigner une portion d un document XML (variable XML dans Oracle BPEL). XPath = langage d interrogation Oracle BPEL propose un ensemble de fonctions de base permettant de manipuler plus finement les expressions XPath nombre de fonctions XPath limité Oracle BPEL permet de construire des fonctions personnalisées (à base de classe Java) Fonction XPath = Pont BPEL/Java 43
Corrélation «custom» Permet d associer un message à une instance de processus donnée Quelles utilisations? o Déblocage extérieur o WS-Addressing non géré par le processus appelé 44
Corrélation «custom» : déblocage initiate correlate 45
Corrélation «custom» étape 1 <soap:envelope...> <soap:body> <requete> <input>123456</input> </requete> </soap:body> </soap:envelope> 46
Corrélation «custom» étape 2 <soap:envelope...> <soap:body> <requete> <input>123456</input> </requete> </soap:body> </soap:envelope> Processus Id Correlation ProcessCorrelate 965 123456 47
Corrélation «custom» étape 3 Processus Id Correlation ProcessCorrelate 965 123456 Id 965 Contexte <ProcessCorrelate> <Receive_1> en cours </Receive_1> </ ProcessCorrelate> 48
Corrélation «custom» étape 4 <soap:envelope...> <soap:body> <requete_autre> <abc>123456</abc> </requete_autre> </soap:body> </soap:envelope> Processus Id Correlation ProcessCorrelate 965 123456 Id 965 Contexte <ProcessCorrelate> <Receive_1> en cours </Receive_1> </ ProcessCorrelate> 49
Corrélation «custom» étape 5 <soap:envelope...> <soap:body> <requete_autre> <abc>123456</abc> </requete_autre> </soap:body> </soap:envelope> Processus Id Correlation ProcessCorrelate 965 123456 Id 965 Contexte <ProcessCorrelate> <Receive_1> en cours </Receive_1> </ ProcessCorrelate> 50
BPEL : bonnes pratiques 51
BPEL : une brique parmi d autres Services SOA s'appuie avant tout sur la notion de service ESB Outil d'intégration BPEL pour orchestrer des services...il faut des services EIP Les patterns de l'intégration... 52
BPEL et Système d'information SI = Ensemble de systèmes hétérogènes Les éditeurs fournissent des adaptateurs Les adaptateurs Oracle BPEL Fichier JMS MQ... 53
Oracle BPEL : les adaptateurs Les adaptateurs Oracle s'appuient sur la technologie JCA Interface Web Service intégration simplifiée à BPEL Adaptateurs non définis par les spécifications BPEL 54
Adaptateurs : Alternative BPEL est un langage dédié aux Web Services Adaptateur = Web Service MOM, BDD, Fichiers mise en œuvre de Web Services Possibilité de mettre en place des Web Services asynchrones via le système de «custom correlation» http://java-soa.blogspot.com 55
BPEL : les bonnes pratiques Utiliser BPEL comme intermédiaire entre le système appelant et les systèmes appelés Implémenter dans l outil la logique de routage et d échange avec les autres systèmes Concevoir un processus comme une suite d échanges avec des services Séparer ce qui est du ressort du moteur BPEL de ce qui ne l est pas Ne pas l utiliser comme un langage de programmation 56
Performances et robustesse Importance du «sizing» serveur Clustering Importance du tuning JVM et BPEL Possibilité de mettre en place Oracle Coherence sur la base de déshydration Performances Failover 57
Oracle BPEL aujourd'hui Dernière version : 11g R1 Intégration à la suite SOA Oracle 11g Architecture SCA Simplification des déploiements et de l'intégration aux autres briques SOA (ESB, BAM...) Gestion des «Policy» (sécurité, robustesse...) 58
Des questions? Grégory LE BONNIEC gregory.lebonniec@zenika.com 59