Transcript BPEL

BPEL
Dracea Alexandra
Grupa:342C5
Ce este BPEL?
• Business Process Execution Language , prescurtarea de la Web
Services Business Process Execution Language (WS-BPEL), este un
limbaj de programare bazat pe XML.
• Permite dezvoltatorilor sa-si descrie procesele de afaceri ca servicii
web
• Standardizat de OASIS, in 2004, dupa eforturi colaborative ale
firmelor IBM, Microsoft si alte companii pentru a crea acest limbaj.
Ce este BPEL?
• Derivat din WSFL( Web Services Flow Language - dezvoltat de
IBM ) si XLANG(Web Services Description Language (WSDL)
aplicat pentru business – dezvoltat de Microsoft)
• BPEL se focalizeaza pe modelarea proceselor moderne de afaceri,
adoptand serviciile web ca mecanism extern de comunicatie.
• Integrează facilităţile Web Services Description Language (WSDL)
1.1 pentru a descrie mesajele de intrare sau de ieşire.
BPEL
• Interactiunile in cadrul serviciilor Web pot fi descrie de 2 tipuri de
procese de afaceri:
▫ Procese de afaceri excutabile , modeleaza comportamentul actual al unui
participant intr-o interactiune de afaceri.
▫ Procese abstracte de afaceri, in care logica de decizie este definita, dar informatii
necesare pentru a alege un curs de actiune este ascuns altor procese partenere.
• BPEL este utilizat pentru a modela atat procese abstracte cat si
procese executabile.
• Pentru programare la scara larga, BPEL descrie procese abstracte ,
adica o serie de comportamente observabile .
Exemplu
Limbajul BPEL
• BPEL este un limbaj de orchestratie, nu de coregrafie.
• Limbaj de orchestratie specifica un process
de executie ce implica schimb de mesaje cu
alte sisteme.
• Limbaj de coregrafie specifica un protocol
de interactiune peer-to-peer.
• O coregrafie poate fi realizata prin scrierea
unei orchestratii, folosind BPEL ,pentru fiecare peer.
Structura unui process BPEL
<process ...>
<partners> ... </partners>
<!-- Web services the process interacts with -->
<containers> ... </containers>
<!– Data used by the process -->
<correlationSets> ... </correlationSets>
<!– Used to support asynchronous interactions -->
<faultHandlers> ... </faultHandlers>
<!–Alternate execution path to deal with faulty conditions -->
<compensationHandlers> ...
</compensationHandlers>
<!–Code to execute when “undoing” an action -->
(activities)*
<!– What the process actually does -->
</process>
Partners
• Defineste serviciul Web si rolurile pe care procesul le indeplineste
<partner name=“...” serviceLinkType=“...”
partnerRole=“...” myRole=“...”/>
<!– A partner is accessed over a WS “channel”, defined by
a service link type -->
<serviceLinkType name=“...">
<role name=“...">
<portType name=“..."/>*
</role>
<role name=“...">
<portType name=“...”/>*
</role>
</serviceLinkType>
<!– A SLT defines two roles and the portTypes that each role needs to
support -->
Variabile
• Mesaje trimise si primite de un partener
▫ Pot persista de-a lungul mai multor interactiuni
▫ Definite in WSDL
Activitati BPEL
<invoke partner=“...” portType=“...” operation=“...”
inputContainer=“...” outputContainer=“...”/>
<!-- process invokes an operation on a partner:
-->
<receive partner=“...” portType=“...” operation=“...”
container=“...” [createInstance=“...”]/>
<!-- process receives invocation from a partner:
-->
<reply partner=“...” portType=“...” operation=“...”
container=“...”/>
<!-- process send reply message in partner invocation:
-->
<assign>
<copy>
<from container=“...”/> <to container=“...”/>
</copy>+
</assign>
<!– Data assignment between containers:
-->
Alte activitati
<throw faultName=“..." faultContainer=“...“/>
<!-- process detects processing error and switches into fault
processing mode -->
<terminate/>
<!– pull the plug -->
<wait for=“...”? until=“...”?/>
<!-- process execution stops for a specified amount of time-->
<empty>
<!– Do nothing; a convenience element -->
Limbajul BPEL
• Features:
▫ Foloseste logica pentru a decide ce serviciu web va apela
▫ Constructii de tip if-then-elseif-else, while, sequence pentru executia comenzilor
secvential
▫ Constructii pentru executia paralela: flow
• BPEL ofera o activitate de tip “pick” astfel incat logici diferite pot fi
executate in functie de mesajul primit.
• Foloseste “correlation sets”, pentru a trimite mesaje asincrone de
tip “fire and forget” unui serviciu web, sa suspende firul de executie,
apoi mult mai tarziu sa primeasca un raspuns, coreleaza raspunsul
fluxului original( care a trimis mesajul ) si sa trezeasca fluxul
pentru a continua executia de unde a ramas.
BPEL Handlers and Scopes
• Scope reprezinta un set de activitati.
• Fiecare scope are asociat 2 tipuri de
handlere:
▫ Fault handlers . Pot fi atasate mai
multe pentru diferite tipuri de defectari.
▫ Compensation handlers , unul
singur per scope.
Cum functioneaza handlere-le
• Compensation handler -> folosit pentru a anula munca realizata de
un scope complet.
▫ Poate fi invocat doar de un fault handler sau de un compensation
handler al unui scope ce-l ingradeste.
• Fault scope defineste cai alternative de executie cand o defectare se produce
in cadrul unui scope
• Scenariu:
•
•
•
•
S-a produs o defectare
Executia unui scope s-a terminat
Este localizat un fault hander apropiat
Executia principala este compensata prin anularea efectului asupra procesului a
task-urilor neterminate.
BPEL si BPMN
• BPEL este adeseori asociat cu BPMN(Business Process Management
Notation), care se asemenea doreste modelarea proceselor de
afaceri.
• Spre deosebire de BPEL, BPMN nu este executabil fiind mai mult
creat pentru planificare si design.
• BPMN are o componenta visuala care face sa fie mai usor de inteles
de persoanele care nu sunt familiari cu limabaje de programare.
• Multe firme si-au dezvoltat propria notatie vizuala pentru BPEL
pentru a simplica limbajul.
BPEL si BPMN
• BPEL si BPMN au crescut in popularitate impreuna in ultimii ani pe
masura ce fiecare cauta sa simplifice procesul de managment al
afacerilor si incurajeaza colaborarea dintre dezvoltatori si oamenii
de afaceri.
• Translatarea de la BPEL la BPMN si invers continua sa ramana o
provocare.
• Este grea generearea de cod BPEL din diagrame BPMN , pastrarea
modelului BPMN original si sincronizarea codului BPEL.
BPEL extensions
• BPEL4People
▫ Taskuri umane pot fi incluse in procese BPEL
▫ Defineste un protocol bazat pe schimb de mesaje intre engine-ul BPEL si
componentele taskurilor.
▫ Este vazut ca o metoda de a adauga noi capabilitati BPEL, si astfel sa
devina mai compatibil cu BPM.
• BPELJ
▫ Combinare intre BPEL si limbajul Java
▫ Permite sectiuni de cod Java, numit Java snippets , in definirea
proceselor BPEL.
BPEL
Concluzii
• Rolul BPEL în schimbul de date prin intermediul serviciilor Web
este de:
▫ a defini toţi paşii într-o tranzacţie
▫ A se asigura că sunt executaţi într-o ordine corectă
• BPEL este destinat să funcţioneze în “spaţiul public” dintre
companii
▫ Poate automatiza secvenţierea mesajelor, dar NU se ocupă de
executarea efectivă a tranzacţiilor