Vous êtes sur la page 1sur 59

<BPEL>

Orchestration de Web Services

Grgory Le Bonniec gregory.lebonniec@zenika.com 26 novembre 2009


Zenika 2009 BPEL Orchestration de Web Services 1

Zenika
Conseil / Dveloppement / Formation Localisation : Paris et Rennes Nos partenaires

Mon exprience
Consultant JEE/SOA depuis 8 ans Spring / GWT / Flex ... BPEL / WS / ESB / EIP...
Zenika 2009 BPEL Orchestration de Web Services 2

Sommaire

SOA : rappels BPEL : orchestration de services BPEL : bonnes pratiques

Zenika 2009

BPEL Orchestration de Web Services

SOA

Zenika 2009

BPEL Orchestration de Web Services

SOA : pourquoi ?
L'entreprise doit s'adapter continuellement L'entreprise est de plus en plus dpendante des technologies le SI peut devenir un frein C'est pas notre faute, c'est un problme informatique...

Acteurs mtiers

Acteurs techniques Objectif

Rconcilier le monde mtier et le monde technique

Zenika 2009

BPEL Orchestration de Web Services

SOA : principes
Simplicit Efficacit Communication mtier/technique Flexibilit et maintenabilit Prennit des systmes Rutilisabilit Rduction des anomalies Gain de productivit Indpendance vis vis des technologies S'appuyer sur les standards et les bonnes pratiques

Zenika 2009

BPEL Orchestration de Web Services

SOA : comment ?

Dfinition
dsigne un type d'architecture fournissant un ensemble de services localisables, des applications clientes ou d'autres services distribus sur un rseau, via des interfaces publies

Service = lment central de la dmarche SOA Fonctions Objet Service


Zenika 2009 BPEL Orchestration de Web Services 7

SOA : volution du SI

Service = Contrat
Fonctionnalits mtier Performances ; Robustesse ...

Intgration via des services


Les systmes communiquent via des protocoles et des formats standards La vision service remplace la vision silo Intgration de l'existant via des services

Zenika 2009

BPEL Orchestration de Web Services

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 rpondant aux critres SOA

Zenika 2009

BPEL Orchestration de Web Services

Web Services

Zenika 2009

BPEL Orchestration de Web Services

10

Web Services : principes

WSDL

Dcrit

Reli

Web Services (JEE, .Net ...)

Permet la communication avec

SOAP

Zenika 2009

BPEL Orchestration de Web Services

11

SOAP

Couche message
Bas sur XML Indpendant de la couche transport Normalis par W3C

WS-* (WS-STAR)
Extensions de SOAP : WS-Addressing ; WS-Security ; WS-Reliability ; ...

Zenika 2009

BPEL Orchestration de Web Services

12

SOAP : format
Enveloppe Entte 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>

Zenika 2009

BPEL Orchestration de Web Services

13

WSDL

Dcrit le Web Service


types, messages ; operations ; protocole ; adresse Bas sur XML

Normalis par W3C WSDL = Contrat

Zenika 2009

BPEL Orchestration de Web Services

14

WSDL : Format
Dfinitions types messages oprations protocole
<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>

adresse

Zenika 2009

BPEL Orchestration de Web Services

15

BPEL

Zenika 2009

BPEL Orchestration de Web Services

16

BPEL

Business Process Execution Language

Zenika 2009

BPEL Orchestration de Web Services

17

BPEL, c'est quoi ?

Standard issu du consortium OASIS


WS-BPEL 1.1 2004 WS-BPEL 2.0 2007 Diffrentes implmentations (Oracle, Apache,)

Langage
Description de Business Processes Interactions avec des Web Services crit en XML

Zenika 2009

BPEL Orchestration de Web Services

18

BPEL, quelle utilit ?

Business Process

Requte / Rponse Modle de donnes Activits et tches Sous-processus / Services

Business process = Processus BPEL Processus BPEL = Web Service

Zenika 2009

BPEL Orchestration de Web Services

19

BPEL, quelle utilit ?

Orchestrateur de Web Services


Abstraction Un processus BPEL orchestre l'appel d'autres WS Granularit inconnue du WS appel

Zenika 2009

BPEL Orchestration de Web Services

20

BPEL, a ressemble quoi ?

Processus BPEL

WSDL Types Messages Oprations / PortTypes

BPEL
PartnerLinks Variables Activits

Zenika 2009

BPEL Orchestration de Web Services

21

BPEL, a ressemble quoi ?


Processus BPEL Partenaires Variables globales Activits

Zenika 2009

BPEL Orchestration de Web Services

22

Oracle BPEL
JDeveloper BPEL Designer
BPEL

BPEL Process Manager Integrated BPM Services WSDL Binding Web services Workflow

Decision Service

Sensors

Java, JMS

Metadata Repository (Oracle Database)

File, FTP

Database Core BPEL Engine Apps Process Console

J2EE Application Server (Oracle AS, WebLogic, JBoss, WebSphere)

Zenika 2009

BPEL Orchestration de Web Services

MANAGE

23

Oracle BPEL : retour d'exprience

Mise en uvre d'un projet d'orchestration Tlcom


Oracle BPEL 10.1.3 (WS-BPEL 1.1) Avant-vente Architecture Dveloppement Chantier robustesse/performances Production Plusieurs centaines de milliers de requtes par jour Web Services, MQ/JMS

Zenika 2009

BPEL Orchestration de Web Services

24

Dmonstration

Dmonstration n1

Orchestration de 2 processus BPEL Cration dun processus BPEL parent Dploiement Simulation sur Oracle BPEL PM 10.1.3.1

Zenika 2009

BPEL Orchestration de Web Services

25

Qu'est-ce que BPEL sait faire ?

Le langage BPEL est compos dun nombre restreint de briques logicielles (activits BPEL) qui permettent :

De communiquer avec des web services De manipuler des donnes XML De grer des exceptions De grer la compensation (ie. rollback)

Zenika 2009

BPEL Orchestration de Web Services

26

Activits BPEL de base (1/3)


Nom Symbole Description
Permet de manipuler les variables dun processus Initialisation de variable Copie de variable Manipulation XML (XPath) Dcoupe de manire logique un processus BPEL. Il permet : De dclarer des variables locales De rcuprer des exceptions

Assign

Scope

Excute diffrents traitements en parallle.

Flow
Zenika 2009 BPEL Orchestration de Web Services 27

Activits BPEL de base (2/3)


Nom Symbole

Description
Fournit n branches. Chacune de ces branches est associe une expression boolenne. La premire branche (de gauche droite) dont la condition est vraie est excute. Il est possible de fournir une branche otherwise qui est lance si aucune des autres branches nest valide. Effectue un traitement tant que la condition associe nest pas respecte.

Switch

While

Zenika 2009

BPEL Orchestration de Web Services

28

Activits BPEL de base (3/3)


Nom Symbole Description
Lance une exception interne. Les exceptions peuvent ensuite tre rcupres dans un Catch du mme processus BPEL.

Throw

Catch

Rcupre au sein dun scope les exceptions dun type donn et permet dy associer un traitement spcifique.

Symbole Nom CatchAll


Zenika 2009

Permet de rcuprer lensemble des exceptions non rcupres par des catchs simples.

BPEL Orchestration de Web Services

29

Activits BPEL d'orchestration


Nom Invoke Receive Reply Symbole Description
Appelle un web service partenaire (PartnerLink) Permet de recevoir un message dun 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).

Pick

Zenika 2009

BPEL Orchestration de Web Services

30

Processus synchrone/asynchrone 2 catgories principales de processus BPEL

Processus synchrone

attente active (appel bloquant) de la rponse traitements courts (quelques secondes) sortie = message ou exception

Processus asynchrone

pas dattente active (appel non bloquant) dune ventuelle rponse traitements longs sortie = message

Zenika 2009

BPEL Orchestration de Web Services

31

Dmonstration

Dmonstration n2
Cration de 2 processus BPEL
Synchrone Asynchrone avec timer de 20 secondes Dploiement Simulation sur Oracle BPEL PM 10.1.3.1

Zenika 2009

BPEL Orchestration de Web Services

32

Base de dshydratation

Dshydratation = Mmoire long terme

Zenika 2009

BPEL Orchestration de Web Services

33

Base de dshydratation

Pourquoi dshydrater ?
Ncessit technique (gestion mmoire) Robustesse du systme Cohrence et intgrit

Quand dshydrater ?
Selon implmentation Activits BPEL spcifiques (Receive, Wait) Action utilisateur

Zenika 2009

BPEL Orchestration de Web Services

34

Dshydratation : quand ?

Zenika 2009

BPEL Orchestration de Web Services

35

Communications asynchrones
Problmatique : dbloquer une instance BPEL en attente de rponse Processus appelant : attente passive cest au processus appel de rveiller le processus appelant

Rveil = envoi dun message (appel WS)

Zenika 2009

BPEL Orchestration de Web Services

36

Comparaison technique : synchrone/asynchrone


Synchrone
<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>

Asynchrone
<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

Zenika 2009

BPEL Orchestration de Web Services

WS-Addressing
Spcifications W3C : mcanismes permettant aux WS de communiquer des informations dadressage
donnes de routage de messages incluses au header SOAP

utilis par Oracle BPEL pour grer les communications asynchrones

Zenika 2009

BPEL Orchestration de Web Services

38

WS-Addressing - tape 1
<soap:Envelope ...> <soap:Header>

Processus

Id

Contexte

<soap:Header> <soap:Body> </soap:Body> </soap:Envelope>

<wsa:MessageID>123</wsa:MessageID> <wsa:ReplyTo> <wsa:Address> http://localhost:9700/process/callback </wsa:Address> </wsa:ReplyTo>

ProcessAppel
Zenika 2009 BPEL Orchestration de Web Services

ProcessWait
39

WS-Addressing - tape 2

Processus

Id

Contexte
<ProcessAppel> <Receive_1> en cours </Receive_1> </ProcessAppel>

ProcessAppel

123

ProcessAppel
Zenika 2009 BPEL Orchestration de Web Services

ProcessWait
40

WS-Addressing - tape 3

Processus

Id

Contexte
<ProcessAppel> <Receive_1> en cours </Receive_1> </ProcessAppel>

ProcessAppel

123

ProcessAppel
Zenika 2009 BPEL Orchestration de Web Services

ProcessWait
41

WS-Addressing - tape 4
<soap:Envelope ...> <soap:Header> <soap:Header> <soap:Body> </soap:Body> </soap:Envelope>

<wsa:RelatesTo>123</wsa:RelatesTo>

Processus

Id

Contexte
<ProcessAppel> <Receive_1> en cours </Receive_1> </ProcessAppel>

ProcessAppel

123

ProcessAppel
Zenika 2009 BPEL Orchestration de Web Services

ProcessWait
42

Fonction XPath
XPath est une syntaxe (non XML) pour dsigner une portion dun document XML (variable XML dans Oracle BPEL). XPath = langage dinterrogation 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 personnalises ( base de classe Java)

Fonction XPath = Pont BPEL/Java

Zenika 2009

BPEL Orchestration de Web Services

43

Corrlation custom

Permet dassocier un message une instance de processus donne Quelles utilisations ?


o o

Dblocage extrieur WS-Addressing non gr par le processus appel

Zenika 2009

BPEL Orchestration de Web Services

44

Corrlation custom : dblocage

initiate

correlate

Zenika 2009

BPEL Orchestration de Web Services

45

Corrlation custom tape 1


<soap:Envelope ...> <soap:Body> <requete> <input>123456</input> </requete> </soap:Body> </soap:Envelope>

Zenika 2009

BPEL Orchestration de Web Services

46

Corrlation custom tape 2


<soap:Envelope ...> <soap:Body> <requete> <input>123456</input> </requete> </soap:Body> </soap:Envelope>

Processus ProcessCorrelate

Id 965

Correlation 123456

Zenika 2009

BPEL Orchestration de Web Services

47

Corrlation custom tape 3

Processus ProcessCorrelate Id

Id 965

Correlation 123456 Contexte

965

<ProcessCorrelate> <Receive_1> en cours </Receive_1> </ ProcessCorrelate>


BPEL Orchestration de Web Services 48

Zenika 2009

Corrlation custom tape 4


<soap:Envelope ...> <soap:Body> <requete_autre> <abc>123456</abc> </requete_autre> </soap:Body> </soap:Envelope>

Processus ProcessCorrelate Id

Id 965

Correlation 123456 Contexte

965

Zenika 2009

<ProcessCorrelate> <Receive_1> en cours </Receive_1> </ ProcessCorrelate>

BPEL Orchestration de Web Services

49

Corrlation custom tape 5


<soap:Envelope ...> <soap:Body> <requete_autre> <abc>123456</abc> </requete_autre> </soap:Body> </soap:Envelope>

Processus ProcessCorrelate Id

Id 965

Correlation 123456 Contexte

965

Zenika 2009

<ProcessCorrelate> <Receive_1> en cours </Receive_1> </ ProcessCorrelate>

BPEL Orchestration de Web Services

50

BPEL : bonnes pratiques

Zenika 2009

BPEL Orchestration de Web Services

51

BPEL : une brique parmi dautres

Services
SOA s'appuie avant tout sur la notion de service

ESB
Outil d'intgration

BPEL
pour orchestrer des services...il faut des services

EIP
Les patterns de l'intgration

...

Zenika 2009

BPEL Orchestration de Web Services

52

BPEL et Systme d'information

SI = Ensemble de systmes htrognes Les diteurs fournissent des adaptateurs Les adaptateurs Oracle BPEL

Fichier JMS MQ ...

Zenika 2009

BPEL Orchestration de Web Services

53

Oracle BPEL : les adaptateurs

Les adaptateurs Oracle s'appuient sur la technologie JCA Interface Web Service intgration simplifie BPEL

Adaptateurs non dfinis par les spcifications BPEL

Zenika 2009

BPEL Orchestration de Web Services

54

Adaptateurs : Alternative

BPEL est un langage ddi 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 systme de custom correlation

http://java-soa.blogspot.com
Zenika 2009 BPEL Orchestration de Web Services 55

BPEL : les bonnes pratiques

Utiliser BPEL comme intermdiaire entre le systme appelant et les systmes appels
Implmenter dans loutil la logique de routage et dchange avec les autres systmes Concevoir un processus comme une suite dchanges avec des services

Sparer ce qui est du ressort du moteur BPEL de ce qui ne lest pas


Ne pas lutiliser comme un langage de programmation

Zenika 2009

BPEL Orchestration de Web Services

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 dshydration
Performances

Failover

Zenika 2009

BPEL Orchestration de Web Services

57

Oracle BPEL aujourd'hui


Dernire version : 11g R1 Intgration la suite SOA Oracle 11g Architecture SCA
Simplification des dploiements et de l'intgration aux autres briques SOA (ESB, BAM...) Gestion des Policy (scurit, robustesse...)

Zenika 2009

BPEL Orchestration de Web Services

58

Des questions ?

Grgory LE BONNIEC
Zenika 2009 BPEL Orchestration de Web Services

gregory.lebonniec@zenika.com
59