1. BPEL
Un orchestre de services
Luc Trudeau
4 avril 2014
Cette pr´esentation de Luc Trudeau est mise `a disposition selon les termes
de la licence Creative Commons Attribution 4.0 International.
2. Business Process Execution Language (BPEL)
Un langage standard (XML) permettant la composition de services.
Ref : Architecting Service-Oriented Systems, SEI, 2011
L. Trudeau BPEL (2/13)
3. Orchestration
BPEL permet de d´efinir un nouveau service compos´e qui orchestre
l’ex´ecution de services.
Ref : http://soapatterns.org/design patterns/composition autonomy
L. Trudeau BPEL (3/13)
8. Orchestre (Ochestra.wsdl)
Nous allons concevoir un service compos´e avec BPEL permettant
d’orchestrer les services : tambour, m´elodie et harmonie.
Logique d’affaires
Il faut d´emarrer les services m´elodie et harmonie en mˆeme temps,
suivis du service tambour 5 secondes plus tard.
L. Trudeau BPEL (8/13)
9. ´Etablir les liens avec les partenaires (PartnerLinks)
Dans ce contexte, il y a 4 partenaires :
Le client (celui qui ex´ecute le service compos´e)
Le service tambour
Le service m´elodie
Le service harmonie
<bpel:partnerLinks>
<bpel:partnerLink name="client" partnerLinkType="tns:
OrchestreService"
myRole="OrchestreServiceProvider" />
<bpel:partnerLink name="DrumServicePL"
partnerLinkType="tns:DrumServiceLT" partnerRole="
DrumServiceRole"></bpel:partnerLink>
...
</bpel:partnerLinks>
L. Trudeau BPEL (9/13)
11. BPEL (XML)
Voici le XML correspondant `a l’ex´ecution simultan´ee des services.
<bpel:flow name="StartTheMusic">
<bpel:invoke name="InvokeHarmony" partnerLink="
HarmonyServicePL" operation="play" portType="harmony:
Harmony" inputVariable="HarmonyServicePLRequest"
outputVariable="HarmonyServicePLResponse"/>
Ici, nous invoquons l’op´eration play avec comme param`etre la
variable HarmonyServicePLRequest. Pour ce faire, nous utilisons
le lien vers un partenaire d´efini par HarmonyServicePL.
L’op´eration play fait partie du portType Harmony qui est d´efini
dans le fichier harmony.wsdl.
L. Trudeau BPEL (11/13)
12. BPEL (XML)
Invocation du service m´elodie
<bpel:invoke name="InvokeMelody" partnerLink="MelodyServicePL
" operation="play" portType="melody:Melody" inputVariable
="MelodyServicePLRequest" outputVariable="
MelodyServicePLResponse"/>
Souvenez-vous du PortType contenu dans melody.wsdl notez
l’op´eration play (c’est celle qu’on invoque)
L. Trudeau BPEL (12/13)