web services 07 bpel slides
DESCRIPTION
services web et bpelTRANSCRIPT
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 1/34
Processus metier et services : Illustration a travers WS-BPEL
Processus metier et services :
Illustration a travers WS-BPEL
E.Coquery
http://liris.cnrs.fr/~ecoquery
→ Enseignement→ TIW5
E.Coquery 1/34
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 2/34
Processus metier et services : Illustration a travers WS-BPEL
Processus metier 1
Ensemble d’actions
Visant a realiser une tache de haut niveauAyant un sens metier
En general pas informatique
Comment l’implementer dans une architecture SOA ?
1. Business Process (BP)E.Coquery 2/34
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 3/34
Processus metier et services : Illustration a travers WS-BPEL
Retour sur la commande de glaces
Representer un processus de traitement d’une commande de glaces
CommandePaiement
Livraison
...
E.Coquery 3/34
S
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 4/34
Processus metier et services : Illustration a travers WS-BPEL
Specificites
Plusieurs acteurs
Pas toujours connus au demarrage
Temps d’execution long
Transactions de longue dureeNecessite d’un etat persistant pour le processusPlusieurs instances simultanees pour un meme processus
Transactions complexes
Multiparties
Non annulables, mais compensablesVue a haut niveau
Details geres par les services
E.Coquery 4/34
P ´ i i Ill i ` WS BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 5/34
Processus metier et services : Illustration a travers WS-BPEL
WS-BPEL
Langage pour l’orchestration de services
Decrit un enchaınement d’actions (workflow)Langage et moteur d’execution dedies au processus metier :
Acteurs multiples et dynamiquesTransaction complexesLongue duree
E.Coquery 5/34
P ti t i Ill t ti ` t WS BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 6/34
Processus metier et services : Illustration a travers WS-BPEL
BPEL : structure de base
Syntaxe XML
targetNamespaceimports possibles
Blocs
<s c o p e name=” t o t o ”> . . .</ s c o p e>
E.Coquery 6/34
Processus metier et services : Illustration a travers WS BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 7/34
Processus metier et services : Illustration a travers WS-BPEL
Glaces : quels acteurs, quelles actions ?
Client
Passe la commandePaie
Preparateur de glaces
Prepare les glaces a livrer
Livreur
Prend les glaces et effectue la livraison
Banque
Effectue le transfert d’argent lors du paiementProcessus de traitement
Orchestre les interactionsPrevient le client du bon deroulement des actions
E.Coquery 7/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 8/34
Processus metier et services : Illustration a travers WS-BPEL
Acteurs en WS-BPEL
Representes par des services, exposes :
Par le process lui-meme
Par des services externes
Definition
Dans le BPEL :partnerLink (= nom + partnerLinkType)Quel role est joue par
le process ( myRole)le partenaire (partnerRole)
Dans le WSDL :partnerLinkType (= mapping role ↔ portType)
Souvent un seul role
sauf pour les process interactions asynchrones
E.Coquery 8/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 9/34
Processus metier et services : Illustration a travers WS BPEL
Exemple glaces : myRole
BPEL :
<b p e l : p a r t n e r L i n kname=” C l i e n t ”partnerLinkType=”tns:CommandePLT”m y R o l e = ” p r o c e s s R o l e ” />
WSDL :
<p l n k : p a r t n e r L i n k T y p e name=”CommandePLT”><
p l n k : r o l e name=” p r o c e s s R o l e ”portType=”wsdl:CommandPortType”/></ p l n k : p a r t n e r L i n k T y p e>
+ Banque
E.Coquery 9/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 10/34
Processus metier et services : Illustration a travers WS BPEL
Exemple glaces : partnerRole
BPEL :
<b p e l : p a r t n e r L i n kname=” L i v r e u r ”p a r t n e r L i n k T y p e = ” t n s : L i v r e u r P L T ”p a r t n e r R o l e=” l i v r e u r R o l e ” />
WSDL :
<p l n k : p a r t n e r L i n k T y p e name=” L i v r e u r PL T ”><
p l n k : r o l e name=” l i v r e u r R o l e ”p o r t Ty p e=” w s d l : L i v r a i s o n P o r t T y p e ” /></ p l n k : p a r t n e r L i n k T y p e>
+ LivraisonLookup, ClientInfo
E.Coquery 10/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 11/34
Workflow en BPEL
Machine a etats
1 etat↔
une actionou un ensemble d’action : nesting via les scope
Transitions = relation de dependance
Instructions de controle classiques en plus
pour simplifier la modelisation
E.Coquery 11/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 12/34
Workflow des glaces - 1
E.Coquery 12/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 13/34
Workflow des glaces - 2
E.Coquery 13/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 14/34
Premiere action
Engendre une nouvelle instance
Declenchement par un evenementEn general : reception d’un message
Attribut createInstance="yes"
Glace : reception d’un message de commande
E.Coquery 14/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 15/34
Variables
4 sortes :
message
element XMLtype complexetype simple
<b p e l : v a r i a b l e name=”CommandeV”
messageType=”ns:CommandeGlaceRequest”/>
E.Coquery 15/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 16/34
Controle
Sequences<sequence> ... </sequence>
If then else
<if><condition>...</condition>...<elseif><condition>...</condition>...</elseif>
<else>...</else></if>
Boucles (while/ repeat until)
<while><condition>...</condition>...</while><repeatUntil>...<condition>...</condition>
</repeatUntil>
E.Coquery 16/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 17/34
Interactions avec les partners
Roles
Appel a un service (partnerRole)
Necessairement synchrone et bloquant<invoke ...
Implementation d’un endpoint ( myRole)Synchrone egalement<receive ...
bloquant
<reply ...
Valeurs en entree et en sortie
Variables
+ XPath / XQuery / ...
E.Coquery 17/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 18/34
Exemple glaces : reception de commande
<b p e l : r e c e i v e name=”Commande”p a r t n e r L i n k=” C l i e n t ”operation=”CommandeGlace”c r e a t e I n s t a n c e = ” y e s ”
variable=”CommandeV”/>
<b p e l : r e p l y name=”RepCommande”p a r t n e r L i n k=” C l i e n t ”operation=”CommandeGlace”variable=”RepCommandeV”>
. . .</ b p e l : r e p l y>
E.Coquery 18/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 19/34
Exemple glaces : recherche d’un livreur
<b p e l : i n v o k e name=” L i v r e u r L o o k u p ”
p a r t n e r L i n k = ” L i v r a i s o n L o o k u p ”o p e r a t i o n = ” R e c h e r c h e L i v r e u r ”i n p u t V a r i a b l e = ” L i v r a i s o n L o o k u p R e q u e s t V ”o u t p u t V a r i a b l e=” L i v r a i so n L o o ku p R e s po n s e V ” />
E.Coquery 19/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 20/34
receive a plusieurs possibilites : pick
<b p e l : p i c k name=” R e p o n s e D u C l i e n t ”><b p e l : o n M e s s a g e p a r t n e r L i n k=” C l i e n t ”
o p e r a t i o n = ” C o n f i r m a t i o n ”portType=”ns:CommandPortType”v a r i a b l e = ” C o n f i r m a t i o n V ”>
. . .</ b p e l : o n M e s s a g e><b p e l : o n M e s s a g e p a r t n e r L i n k=” C l i e n t ”
o p e r a t i o n = ” A n n u l a t i o n ”portType=”ns:CommandPortType”
v a r i a b l e = ” A n n u l a t i o n V ”><b p e l : e x i t name=” E x i t ” />
</ b p e l : o n M e s s a g e></ b p e l : p i c k>
E.Coquery 20/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 21/34
Affectations
<assign><copy><from>...</from><to>../<to></copy>...</assign>
Depuis / vers :
Variables
Messages
PartnerLinks
Expressions
XPath / XQuery
Pour la source et la destination
Atomicite
<assign> = ensemble d’affectation
<assign> ↔ transaction ACID
E.Coquery 21/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 22/34
Adresses de services
<sref:service-ref> : element contenant l’adresse
peut contenir une adresse au format WS-Addressing
<wsa:EnpointReference>
Utile pour
les callback
la parallelisation d’appelsl’utilisation d’annuaires de services (lookupLivraison)
E.Coquery 22/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 23/34
Correlations
Valeurs utilisees pour aiguiller les messages sur la bonne instance
Propriete (= nom + type) :
valeur utilisee pour des correlations∈ WSDL
Alias (= propriete + message + emplacement)ou trouver la propriete dans le messageaussi bien en entree qu’en sortie∈ WSDL
Correlation set (= ensemble de proprietes)
tuple de valeurs a utiliser pour une correlationpeut etre reference dans une interactioninitiate="yes"
∈ BPEL
E.Coquery 23/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 24/34
Correlation de reponses
Plusieurs messages
sur un meme parnerLink
peuvent etre recusavant que la reponse du premier ne soit envoyee
→ messageExchange="..." pour correler un receive avec unreply
E.Coquery 24/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 25/34
Exemple glaces : correlation sets, WSDL
<v p r o p : p r o p e r t y name=” C md Id Pt y ”t y p e=” x s d : s t r i n g ” />
<v p r o p : p r o p e r t y A l i a smessageType=”wsdl:CommandeGlaceResponse”p a r t = ” p a r a m e t e r s ”p r o p e r t y N a m e = ” t n s : C m d I d P t y ”><
v p r o p : q u e r y><
! [CDATA
[ @cmdid ] ]><
/ v p r o p : q u e r y>
</ v p r o p : p r o p e r t y A l i a s>
E.Coquery 25/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 26/34
Exemple glaces : correlation sets, BPEL
<b p e l : c o r r e l a t i o n S e t name=” CmdIdSet ”p r o p e r t i e s = ” t n s : C m d I d P t y ” />
. . .<b p e l : r e p l y name=”RepCommande”
p a r t n e r L i n k=” C l i e n t ”operation=”CommandeGlace”variable=”RepCommandeV”><b p e l : c o r r e l a t i o n s>
<b p e l : c o r r e l a t i o n i n i t i a t e =” y e s ”set=”CmdIdSet”/>
</ b p e l : c o r r e l a t i o n s></ b p e l : r e p l y>
E.Coquery 26/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 27/34
Parallelisme
<f o r E a c h counte rName=”N” p a r a l l e l=” y e s ”><s t a r t C o u n t e r V a l u e>1</ s t a r t C o u n t e r V a l u e><f i n a l C o u n t e r V a l u e>5</ f i n a l C o u n t e r V a l u e><
c o m p l e t i o n C o n d i t i o n>
<b r a n c h e s>3</ b r a n c h e s></ c o m p l e t i o n C o n d i t i o n>
. . .</ f o r E a c h>
La valeur du compteur peut etre utilisee dans une expressionXPath
$lookupResponse/services/service[$N]
E.Coquery 27/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 28/34
Concurrence : Flow
<flow>Lien (= dependance) <link>
Actions :source : action terminee → activation d’un liencible : combinaison de liens actives → action demarree
Combinaison : expression booleennevariables : liensvaleur : vrai si lien active
Valeur expression :vrai : declenchement de l’action
indeterminee : rien ne se passefaux : erreur
suppressJoinFailure
no : erreur si une action ne peut etre declencheeyes : pas d’erreur si une combinaison s’evalue a false
E.Coquery 28/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 29/34
Handlers
<faultHandler>
↔ try/catch
faute SOAP↔
exception<terminationHandler>
Appele a la fin d’un <scope>
<eventHandlers> → <onEvent>
similaire au pick
pas de point d’attente bloquant
E.Coquery 29/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 30/34
Exemple glace : eventHandlers
<b p e l : e v e n t H a n d l e r s><b p e l : o n E v e n t p a r t n e r L i n k =” C l i e n t ”
o p e r a t i o n = ” A n n u l a t i o n ”portType=”ns:CommandPortType”v a r i a b l e = ” A n n u l a t i o n V ”
m e s s a g e T y p e = ” n s : A n n u l a t i o n R e q u e s t ”><b p e l : s c o p e>
<b p e l : e x i t name=” E x i t 1 ” /></ b p e l : s c o p e><b p e l : c o r r e l a t i o n s>
<
b p e l : c o r r e l a t i o n s e t=” CmdIdSet ”i n i t i a t e=” no ” /></ b p e l : c o r r e l a t i o n s>
</ b p e l : o n E v e n t></ b p e l : e v e n t H a n d l e r s>
E.Coquery 30/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 31/34
Versions de processus
Execution de longue duree
Mise a jour lors d’une executionMigration parfois impossible :
Changement des donnees / d’un schemaDisparition d’etats (actions)
Plusieurs version d’un meme process simultanement
E.Coquery 31/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 32/34
Deploiement
Informations
Essentiellement les partnerLinks :
Les partenaires distants (e.g. lookupLivraison)Les interfaces du process
partenerLinks avec myRole=...
Persistence de l’etat/des donnees
In memory : plus rapideDans un SGBD
Propriete (constantes) pour la configuration du process e.g. :
valeur de seuil utilisee dans une condition metierniveau de parallelisme /seuil de deblocage d’un forEachparallele
E.Coquery 32/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 33/34
Processus abstraits
Process avec des parties non definies
Correspondrait a des trous dans le process
<opaqueActivity>Peut etre instancie en un processus executable .
sans opaqueActivity
Possibilite d’utilisation sous forme de patron (template ) de
services
E.Coquery 33/34
Processus metier et services : Illustration a travers WS-BPEL
7/21/2019 Web Services 07 Bpel Slides
http://slidepdf.com/reader/full/web-services-07-bpel-slides 34/34
References
BPEL Primer
https://www.oasis-open.org/committees/download.php/23964/wsbpel-v2.0-primer.htm
Documentation d’Apache ODEhttp://ode.apache.org/userguide/
E.Coquery 34/34