Orchestre de services
-
Upload
luc-trudeau -
Category
Technology
-
view
107 -
download
0
description
Transcript of Orchestre de services
BPELUn orchestre de services
Luc Trudeau
4 avril 2014
Cette presentation de Luc Trudeau est mise a disposition selon les termesde la licence Creative Commons Attribution 4.0 International.
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)
OrchestrationBPEL permet de definir un nouveau service compose qui orchestrel’execution de services.
Ref : http://soapatterns.org/design patterns/composition autonomy
L. Trudeau BPEL (3/13)
Exemple d’orchestrationSupposons 3 services
Tambour (drumService)
Melodie (melodyService)
Harmonie (harmonyService)
L. Trudeau BPEL (4/13)
Tambour (drum.wsdl)
Drum Service
Drum PortType (avec l’operation play)
L. Trudeau BPEL (5/13)
Melodie (melody.wsdl)
Melody Service
Melody PortType (avec l’operation play)
L. Trudeau BPEL (6/13)
Harmonie (harmony.wsdl)
Harmony Service
Harmony PortType (avec l’operation play)
L. Trudeau BPEL (7/13)
Orchestre (Ochestra.wsdl)
Nous allons concevoir un service compose avec BPEL permettantd’orchestrer les services : tambour, melodie et harmonie.
Logique d’affaires
Il faut demarrer les services melodie et harmonie en meme temps,suivis du service tambour 5 secondes plus tard.
L. Trudeau BPEL (8/13)
Etablir les liens avec les partenaires (PartnerLinks)
Dans ce contexte, il y a 4 partenaires :
Le client (celui qui execute le service compose)
Le service tambour
Le service melodie
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)
Processus BPEL
Eclipse BPEL Designer (http://www.eclipse.org/bpel/)
L. Trudeau BPEL (10/13)
BPEL (XML)
Voici le XML correspondant a l’execution simultanee 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’operation play avec comme parametre lavariable HarmonyServicePLRequest. Pour ce faire, nous utilisonsle lien vers un partenaire defini par HarmonyServicePL.L’operation play fait partie du portType Harmony qui est definidans le fichier harmony.wsdl.
L. Trudeau BPEL (11/13)
BPEL (XML)
Invocation du service melodie
<bpel:invoke name="InvokeMelody" partnerLink="MelodyServicePL
" operation="play" portType="melody:Melody" inputVariable
="MelodyServicePLRequest" outputVariable="
MelodyServicePLResponse"/>
Souvenez-vous du PortType contenu dans melody.wsdl notezl’operation play (c’est celle qu’on invoque)
L. Trudeau BPEL (12/13)
BPEL (XML)
<bpel:sequence name="WaitForTheDrums">
<bpel:wait name="Wait">
<bpel:for>’PT5S’</bpel:for>
</bpel:wait>
<bpel:invoke name="InvokeDrum" partnerLink="DrumServicePL
" operation="play" portType="drum:Drum" inputVariable
="DrumServicePLRequest" outputVariable="
DrumServicePLResponse"></bpel:invoke>
</bpel:sequence>
</bpel:flow>
L. Trudeau BPEL (13/13)