Top Banner
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.
13

Orchestre de services

Dec 18, 2014

Download

Technology

Luc Trudeau

Une orchestre de services pour apprendre l'orchestration de service avec BPEL.

Attention! Peut contenir des traces de XML.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 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.

Page 2: Orchestre de services

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)

Page 3: Orchestre de services

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)

Page 4: Orchestre de services

Exemple d’orchestrationSupposons 3 services

Tambour (drumService)

Melodie (melodyService)

Harmonie (harmonyService)

L. Trudeau BPEL (4/13)

Page 5: Orchestre de services

Tambour (drum.wsdl)

Drum Service

Drum PortType (avec l’operation play)

L. Trudeau BPEL (5/13)

Page 6: Orchestre de services

Melodie (melody.wsdl)

Melody Service

Melody PortType (avec l’operation play)

L. Trudeau BPEL (6/13)

Page 7: Orchestre de services

Harmonie (harmony.wsdl)

Harmony Service

Harmony PortType (avec l’operation play)

L. Trudeau BPEL (7/13)

Page 8: Orchestre de services

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)

Page 9: Orchestre de services

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)

Page 10: Orchestre de services

Processus BPEL

Eclipse BPEL Designer (http://www.eclipse.org/bpel/)

L. Trudeau BPEL (10/13)

Page 11: Orchestre de services

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)

Page 12: Orchestre de services

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)

Page 13: Orchestre de services

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)