Priminimas: EAI - Vilniaus universitetasklevas.mif.vu.lt/~liutauras/data/webservices/... ·...

9
Web servisų kompozicija Priminimas: EAI Message Broker / Object Request Broker / ESB IS integravimas paremtas pranešimų apsikeitimų valdymu Sąvokos: pranešimas, siuntėjas, gavėjas, adapteris, registras, įvykiai, ... Workflow Sudėtingo verslo proceso aprašymas ir vykdymas Sąvokos: vykdomasis mazgas, maršrutas, aktoriai, proceso pradžia ir pabaiga,... Verslo procesas Procesas: veiksmų (activities) seka turinti pradžią ir pabaigą Inicijuojama įvykiu Atlieka informacijos, duomenų,... transformacijas Pagamina rezultatą Verslo procesas: susijusių veiksmų aibė leidžianti pasiekti iš anksto apibrėžtą rezultatą M.P. Papazouglu... Verslo procesų valdymas Verslo procesų integravimas (BPI) Eiliškumo, hierarchijos, vykdymo logikos, informacijos apsikeitimo apibrėžimas ir vykdymas Verslo procesų valdymas (BPM) BPI + „aukštesnio lygio“ valdymo funkcijos Analizė, apibrėžimas, keitimas, planavimas, efektyvumo ir kokybės nustatymas, optimizavimas... Remiasi valdymo priemonėmis (tools) Integruojami, bet nekuriami nauji procesai Web servisai ir BPM SOAP/WSDL/UDDI nepakankami BPM realizacijai naudojant Web ir XML technologijas Paprastos taikomosios programos, paprasta sąveika Web servisų kompozicijos sprendimai BPEL4WS (BPEL) WS-Coordination WS-Transaction WS-CDL

Transcript of Priminimas: EAI - Vilniaus universitetasklevas.mif.vu.lt/~liutauras/data/webservices/... ·...

Page 1: Priminimas: EAI - Vilniaus universitetasklevas.mif.vu.lt/~liutauras/data/webservices/... · Orkestravimas BPEL BPEL Business Process Execution Language for Web Services (BPEL4WS,

Web servisų kompozicija

Priminimas: EAI● Message Broker / Object Request Broker / ESB

● IS integravimas paremtas pranešimų apsikeitimų valdymu

● Sąvokos: pranešimas, siuntėjas, gavėjas, adapteris, registras, įvykiai, ...

● Workflow● Sudėtingo verslo proceso aprašymas ir vykdymas● Sąvokos: vykdomasis mazgas, maršrutas, aktoriai,

proceso pradžia ir pabaiga,...

Verslo procesas● Procesas: veiksmų (activities) seka turinti

pradžią ir pabaigą● Inicijuojama įvykiu● Atlieka informacijos, duomenų,... transformacijas● Pagamina rezultatą

● Verslo procesas: susijusių veiksmų aibė leidžianti pasiekti iš anksto apibrėžtą rezultatą

M.P. Papazouglu...

Verslo procesų valdymas● Verslo procesų integravimas (BPI)

● Eiliškumo, hierarchijos, vykdymo logikos, informacijos apsikeitimo apibrėžimas ir vykdymas

● Verslo procesų valdymas (BPM)● BPI + „aukštesnio lygio“ valdymo funkcijos● Analizė, apibrėžimas, keitimas, planavimas,

efektyvumo ir kokybės nustatymas, optimizavimas...● Remiasi valdymo priemonėmis (tools)● Integruojami, bet nekuriami nauji procesai

Web servisai ir BPM● SOAP/WSDL/UDDI nepakankami BPM

realizacijai naudojant Web ir XML technologijas● Paprastos taikomosios programos, paprasta

sąveika● Web servisų kompozicijos sprendimai

● BPEL4WS (BPEL)● WS-Coordination● WS-Transaction● WS-CDL

Page 2: Priminimas: EAI - Vilniaus universitetasklevas.mif.vu.lt/~liutauras/data/webservices/... · Orkestravimas BPEL BPEL Business Process Execution Language for Web Services (BPEL4WS,

Integracija:„Paprastas“ sprendimas

Pvz.: Gamintojo/tiekėjo servisai

portType

Pervežimaioperacija 1

operacija n

portType

operacija 1

operacija n

Sandė-liavimas

.Net

Java

portType

operacija 1 Tiekėjas

Java

Klientas

Sudėtingasservisas

Užsakyti produktą

Patvirtinimas

Užsakyti pristatymąPatvirtinimas

„Integruojantis“Web servisas

„Paprastas“ sprendimas● Naujo sudėtingo proceso realizavimas naudojant

„klasikines“ programavimo priemones● Priklausomas nuo platformos● Priklauso nuo programavimo kalbos● Žinomos naujo serviso realizacijos techninės detalės● Nestandartizuotas sprendimas

● BPM specifikacijos – Web servisų kompozicijos standartizavimas

Servisų kompozicijos meta-modelis

kiekis

Formali reprezentacija: grafas

Registruotiužsakymą

Gauti užsakymą

Siųstiatmetimą

Tikrintikliento vertę

Tikrintiinventorių

Užsakytipristatymą

Siųsti sąskaitą

Gautisąskaitą

... ... ...

Patvirtintipristatymą

Pristatyti

užsakymas

atmetimo detalės

kliento info.

kiekis

kiekis

kiekis

pristatymo info.rezervavimo info

pristatym

o info.

sąskaita

„Veiksmas“

„Ryšys“

„Duomenys“

Abstraktus aprašas● Formali reprezentacija acikliniu grafu● Pagrindinės sąvokos

● Veiksmas/veikla (activity)● Ryšys (link): veiksmų vykdymo eiliškumas● Duomenų elementas (data item)● Perėjimo sąlyga (transition condition)

Page 3: Priminimas: EAI - Vilniaus universitetasklevas.mif.vu.lt/~liutauras/data/webservices/... · Orkestravimas BPEL BPEL Business Process Execution Language for Web Services (BPEL4WS,

Ryšiai ir perėjimo sąlygos

Registruotiužsakymą

Gauti užsakymą

Siųstiatmetimą

Tikrintikliento vertę

Tikrintiinventorių

Užsakytipristatymą

užsakymas

atmetimo detalės

kliento info.

kiekis

kiekis

kiekis

Kliento-id != nullKliento-kreditas != OK

Link#1:Kliento-id != nullKliento-kreditas == OK

Link#2:Kliento-vertė == OK

Link#1 OR Link#2

Perėjimosąlygos

Priklausomybėtarp ryšių(sinchronizavimas)

Kliento-verte != OK

Konkreti realizacija

Registruotiužsakymą

Gauti užsakymą

Siųstiatmetimą

Tikrintikliento vertę

Tikrintiinventorių

Užsakytipristatymą

Siųsti sąskaitą

Gautisąskaitą

... ... ...

užsakymas

atmetimo detalės

kliento info.

kiekis

kiekis

kiekis

pristatymoinfo.

rezervavimo info

pristatym

o info.

sąskaita

Patvirtintipristatymą

Pristatyti

pristatymoinfo.

Logistikostiekėjas

Orkestravimas ir choreografija● Web servisų kompozicija iš įvairių perspektyvų● Orkestravimas

● Web servisų interakcija, pranešimų apsikeitimas, vykdymo eiliškumas,...

● Iš konkretaus serviso/proceso pozicijų● Choreografija

● Bendras pranešimų apsikeitimas ir interakcijos taisyklės

● Iš visų komunikuojančių servisų pozicijų

Procesas

Gamintojas Tiekėjas

Užsakymas

Užsakymo patvirtinimas

Sąskaita

Orkestravimo perspektyva

Užsakymas

Užsakymo patvirtinimas

Sąskaita

Siųstiužsakymą

Gautipatvirtinimą

Gautisąskaitą

Iš resursųvaldymo skyriaus

Resursų valdymoskyriui

Gamintojo procesas

Choreografijos perspektyva

Užsakymas

Užsakymo patvirtinimas

Sąskaita

Siųstiužsakymą

Gautipatvirtinimą

Gautisąskaitą

Gamintojas

Gautiužsakymą

Siųstipatvirtinimą

Siųstisąskaitą

Tiekėjas

Viešas/bendras procesas

Page 4: Priminimas: EAI - Vilniaus universitetasklevas.mif.vu.lt/~liutauras/data/webservices/... · Orkestravimas BPEL BPEL Business Process Execution Language for Web Services (BPEL4WS,

OrkestravimasBPEL

BPEL● Business Process Execution Language for Web

Services (BPEL4WS, WS-BPEL arba BPEL)● XML specifikacija verslo procesų paremtų Web

servisais apibrėžimui● Web servisų orkestravimo kalba

● Remiasi WSDL apibrėžime deklaruotais elementais● portType, operation, message, ...

BPEL ir WSDL

ActionActionActionAction PartnerLink

PartnerLink

PartnerLink

PartnerLink

BPEL

Process

ActionActionRoleRole

BPEL / Partner Link Type

Partner Link Type

WSDL

Port Type

OperationInputInput

OutputOutputFaultFault

Message

MessagePart

MessagePart

MessagePart

MessagePart

ActionActionVariablesVariables

BPEL pagrindinės savybės● Modeliuojama procesų kompozicija (partneriai)● Modeliuojamas procesų vykdymo eiliškumas● Atskiriamas abstraktus apibrėžimas nuo

konkretaus sujungimo● Partnerių „rolių“ ir jų sąryšio palaikymas● Kompensavimo mechanizmo palaikymas● Konteksto palaikymas („stateful“)● Paralelizmas ir sinchronizavimas● Įvykių valdymas

BPEL istorija● 2002: BPEL 1.0

● IBM, Microsoft, BEA, SAP, Siebel● 2003: BPEL 1.1

● Pasiūlymas OASIS standartui● 2007: BPEL 2.0 (WS-BPEL)

● OASIS standartas

Page 5: Priminimas: EAI - Vilniaus universitetasklevas.mif.vu.lt/~liutauras/data/webservices/... · Orkestravimas BPEL BPEL Business Process Execution Language for Web Services (BPEL4WS,

Abstraktus ir vykdomas BP● Abstraktus procesas

● Aprašo pranešimų apsikeitimus tarp servisų● Tik tai, kas būtina bendravimui tarp partnerių

● Vykdomas procesas (executable)● Apibrėžia proceso pilną vidine struktūrą, proceso

logiką● Gali būti vykdomas

● Abiejų procesų aprašui gali būti naudojami tie patys specifikacijos elementai

BPEL elementai

Struktūra ir principai

portType<receive>

<invoke>

<invoke>

portType

portType

portType

Webservisas

Webservisas Partner

linksPartner

links

Webservisas

Partnerlinks

WebservisasPartner

links

<invoke>

<invoke>

<reply>

BPEL procesas

Kreditavimas

Sandėlys

Finansai

portType

portType

portType

Bendra struktūra<process name="PurchaseOrderProcess" xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable" ...>

<!-- Proceso dalyviai: su kuo bendraujama --> <partnerLinks> ... </partnerLinks>

<!-- Procesu naudojami duomenys: kuo apsikeičiama --> <variables> ... </variables>

<!-- Išimciu valdymas: alternatyvus vykdymo kelias --> <faultHandlers> ... </faultHandlers>

<!-- Asinchroniniai iškvietimai, konteksto, ID palaikymai --> <correlationSets> ... </correlationSets>

<!-- "Activities": <sequence>, <flow>,... Kas ir kaip daroma. --> (Activities)*

<!-- "Atšauktų" vieksmų vykdymas --> <compensationHandler> ... </compensationHandler>

<!-- Lygiagrečių įvykių valdymas --> <eventHandlers> ... </eventHandlers>

</process>

Pranešimų apsikeitimai● Nusakoma, kokius pranešimus gauna, ką

gražina, kokius servisus kviečia<process name="PurchaseOrderProcess" ...> <sequence>

<receive partnerLink="purchasing" portType="tns:purchaseOrderPT" operation="sendPurchaseOrder" variable="PO" createInstance="yes"/> ... <invoke partnerLink="shipping" portType="tns:shippingPT" operation="requestShipping" inputVariable="shippingRequest" outputVariable="shippingInfo"/> <receive partnerLink="shipping" portType="tns:shippingCallbackPT" operation="sendSchedule" variable="shippingSchedule"/> .... <reply partnerLink="purchasing" portType="tns:purchaseOrderPT" operation="sendPurchaseOrder" variable="Invoice"/>

</sequence></process>

Gaunama

Iškviečiama

Grąžinama

Gauti arbaparuoštipranešimas

(WSDL) interfeiso operacija

Kas gali kviesti (ar gauti)

Valdymo veiksmai (activities)● Struktūros valdymo veiksmai (stuctured

activities)<sequence> - vienas po kito<flow> - lygiagrečiai<pick> - laukti pranešimo arba „timeout“<if> (<switch>) - pasirinkti viena iš galimų veiksmų<while> - ciklas<scope> - vidinio konteksto apibrėžimas<invoke>, <receive>, <reply> - kviesti, gauti, atsakyti<assign> - kintamųjų manipuliavimas<wait> - laukti tam tikrą laiko tarpą / iki<throw> - išeiti su „fault“ į gaubiantį bloką...

Page 6: Priminimas: EAI - Vilniaus universitetasklevas.mif.vu.lt/~liutauras/data/webservices/... · Orkestravimas BPEL BPEL Business Process Execution Language for Web Services (BPEL4WS,

Pvz.: valdymo veiksmai

<process name="PurchaseOrderProcess" ...>

<sequence> <receive name="receiveOrder" ... /> <if name="isOrderBiggerThan5000Dollars"> <condition> $order &gt; 5000 </condition> <invoke name="calculateTenPercentDiscount" ... /> <elseif> <condition> $order &gt; 2500 </condition> <invoke name="calculateFivePercentDiscount" ... /> </elseif> <else> <reply name="sendNoDiscountInformation" ... /> </else> </if> <invoke name="checkPayment" ... /> <invoke name="shippingService" ... /> <reply name="sendConfirmation" ... /> </sequence>

</process>

Duomenų valdymas● Proceso būsena išsaugoma proceso

kintamuosiuose (<variable>)● Deklaruojamos (<variables>)● Reikšmės atitinka gaunamus ar siunčiamus (XML)

pranešimus● Reikšmės sukomponuojamos iš turimų reikšmių

– Remiasi XPath išraiškomis– Naudoja <assign> veiksmą

Kintamieji

...<variables> <variable name="Invoice" messageType="tns:InvMessage" /> <variable name="elemVar" element="myNS:myXMLElement" /> <variable name="repCode" type="xsd:string" /> <variable name="ctVar" type="myNS:myComplexType" /></variables>

WSDL pranešimo tipas

Vartotojo arbaXML Schema tipai

<assign> <from>$Invoice/contentPart/code</from> <to variable="repCode"></to></assign>

<assign> <from variable="Invoice" part="contentPart"></from> <to variable="ServiceResponse" part="rep"></to></assign>

<assign> <from><literal>OX0092AF</literal></from> <to variable="ThisServiceCode"></to></assign>

Deklaracija

VeiksmaiXPath išraiška

Kopijavimas tarp pranešimų

Fiksuotos reikšmės

Procesų susiejimas● „Partneris“: serviso teikėjas arba vartotojas● Išreikštinai deklaruojami ryšiai tarp partnerių

● Nusakomi ryšiai tarp servisų (<partnerLink>)● Nurodoma partnerio rolė deklaruotame ryšyje

● Deklaruojama atskirai (<partnerLinkType>)● Tą pačią rolę gali turėti keli partneriai

● Remiasi atitinkamu WSDL aprašu

<partnerLinkType> (in WSDL)<wsdl:definitions targetNamespace="http://manufacturing.org/wsdl/purchase" xmlns:pos="http://manufacturing.org/wsdl/purchase" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" ...>

<!-- portTypes supported by the purchase order process --> <wsdl:portType name="purchaseOrderPT"> <wsdl:operation name="sendPurchaseOrder"> <wsdl:input message="pos:POMessage" /> <wsdl:output message="pos:InvMessage" /> <wsdl:fault name="cannotCompleteOrder" message="pos:orderFaultType" /> </wsdl:operation> </wsdl:portType> <wsdl:portType name="invoiceCallbackPT"> ... </wsdl:portType> <wsdl:portType name="computePricePT"> ... </wsdl:portType>

<plnk:partnerLinkType name="purchasingLT"> <plnk:role name="purchaseService" portType="pos:purchaseOrderPT" /> </plnk:partnerLinkType>

<plnk:partnerLinkType name="invoicingLT"> <plnk:role name="invoiceService" portType="pos:computePricePT" /> <plnk:role name="invoiceRequester" portType="pos:invoiceCallbackPT" /> </plnk:partnerLinkType>

</wsdl:definitions>

PapildytasWSDLapibrė-žimas

<partnerLink> (& WSDL)<process name="PurchaseOrderProcess" ...>

<partnerLinks> <partnerLink name="purchasing" myRole="purchaseService" partnerLinkType="tns:purchasingLT" /> <partnerLink name="invoicing" partnerLinkType="tns:invoicingLT" myRole="invoiceRequester" partnerRole="invoiceService" /> </partnerLinks>

<sequence> <receive partnerLink="purchasing" portType="tns:purchaseOrderPT" operation="sendPurchaseOrder" variable="PO" createInstance="yes"> </receive> <flow> <sequence> <invoke partnerLink="invoicing" portType="tns:computePricePT"

operation="initiatePriceCalculation" inputVariable="PO"> </invoke> ... </sequence> </flow> <reply partnerLink="purchasing" portType="tns:purchaseOrderPT" operation="sendPurchaseOrder" variable="Invoice"> </reply> </sequence></process>

<process name="PurchaseOrderProcess" ...>

<partnerLinks> <partnerLink name="purchasing" myRole="purchaseService" partnerLinkType="tns:purchasingLT" /> <partnerLink name="invoicing" partnerLinkType="tns:invoicingLT" myRole="invoiceRequester" partnerRole="invoiceService" /> </partnerLinks>

<sequence> <receive partnerLink="purchasing" portType="tns:purchaseOrderPT" operation="sendPurchaseOrder" variable="PO" createInstance="yes"> </receive> <flow> <sequence> <invoke partnerLink="invoicing" portType="tns:computePricePT"

operation="initiatePriceCalculation" inputVariable="PO"> </invoke> ... </sequence> </flow> <reply partnerLink="purchasing" portType="tns:purchaseOrderPT" operation="sendPurchaseOrder" variable="Invoice"> </reply> </sequence></process>

<wsdl:definitions ...>

<wsdl:portType name="purchaseOrderPT"> <wsdl:operation name="sendPurchaseOrder"> <wsdl:input message="pos:POMessage" /> <wsdl:output message="pos:InvMessage" /> <wsdl:fault name="cannotCompleteOrder"

message="pos:orderFaultType" /> </wsdl:operation></wsdl:portType>

<plnk:partnerLinkType name="purchasingLT"> <plnk:role name="purchaseService"

portType="pos:purchaseOrderPT" /></plnk:partnerLinkType>

<wsdl:definitions ...>

<wsdl:portType name="purchaseOrderPT"> <wsdl:operation name="sendPurchaseOrder"> <wsdl:input message="pos:POMessage" /> <wsdl:output message="pos:InvMessage" /> <wsdl:fault name="cannotCompleteOrder"

message="pos:orderFaultType" /> </wsdl:operation></wsdl:portType>

<plnk:partnerLinkType name="purchasingLT"> <plnk:role name="purchaseService"

portType="pos:purchaseOrderPT" /></plnk:partnerLinkType>

BPEL

WSDL

Page 7: Priminimas: EAI - Vilniaus universitetasklevas.mif.vu.lt/~liutauras/data/webservices/... · Orkestravimas BPEL BPEL Business Process Execution Language for Web Services (BPEL4WS,

<invoke>portType

„ptA“(op1, op2)

Web Service

portType„ptB“

(opX, opY)

<wsdl:definitions ...> <wsdl:portType name="ptA"> op1, op2, ... </wsdl:portType> <wsdl:portType name="ptB"> opX, opY, ... </wsdl:portType>

<plnk:partnerLinkType name="lnTypeX"> <plnk:role name="rA" portType="tns:ptA" /> <plnk:role name="rB" portType="tns:ptB" /> </plnk:partnerLinkType>

</wsdl:definitions> <process name="ProcesZ" ...> ... <partnerLinks> <partnerLink name="linkL" partnerLinkType="tns:lnTypeX" myRole="rA" partnerRole="rB" /> </partnerLinks> ...</process>

<process name="ProcesZ" ...> ... <partnerLinks> <partnerLink name="linkL" partnerLinkType="tns:lnTypeX" myRole="rA" partnerRole="rB" /> </partnerLinks> ...</process>

lnTypeX / linkL

process „ProcessZ“

myRole „rA“ partnerRole „rB“

Susiejimas● Susiejimas tarp konkrečių partnerių/servisų

● Dinamiškas: nustatomas vykdymo metu● Statiškas: nustatomas įdiegimo metu● BPEL konteinerio (runtime) atsakomybė

● Gali remtis WS-Addressing EndpointReference elementu

<sref:service-ref reference-scheme="http://www.w3.org/2005/08/addressing">

<wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/08/addressing"> <wsa:Address>http://manufacturer.com/services/PurchaseService/wsdl</wsa:Address> <wsa:PortType>tns:purchaseOrderPT</wsa:PortType> ... </wsa:EndpointReference></sref:service-ref>

[A]Sinchroninis iškvietimas

<process ...> <receive partnerLink="purchasing" portType="tns:purchaseOrderPT" operation="sendPurchaseOrder" variable="PO"/>

<!-- ... Vykdomi kiti proceso veiksmai ... -->

<reply partnerLink="purchasing" portType="tns:purchaseOrderPT" operation="sendPurchaseOrder" variable="Invoice" /></process>

Sinchroninis iškvietimas

<process name="PurchaseOrderProcess" ...>

<receive partnerLink="purchasing" portType="tns:purchaseOrderPT" operation="sendPurchaseOrder" variable="PO" />

<!-- Vykdomi ilgai trunkantys proceso veiksmai ... -->

<invoke partnerLink="purchasing" portType="tns:purchaseOrderCallbackPT" operation="sendPurchaseOrderResponse" variable="InvoiceResponse" />

</process>

Asinchroninis iškvietimas

Lygiagretus vykdymas● <flow> veiksmas leidžia vykdyti vidinius

veiksmus lygiagrečiai● Sinchronizavimas pasiekiamas

naudojant <link> elementus● Atitinkami veiksmai nurodo, kuris

pradinis (<source>) ir galinis(<target>) ryšio elementas

● Gali turėti papildomas „sudėtingas“sąlygas

Link#1:

Link#2:

Link#1 AND Link#2

Lygiagretus valdymas... <flow> <links> <link name="ship-to-invoice" /> <link name="check-credit" /> </links> <invoke partnerLink="shipping" portType="tns:shippingPT" operation="requestShipping" inputVariable="shippingRequest" outputVariable="shippingInfo"> <source linkName="ship-to-invoice" /> </invoke> <invoke partnerLink="creditCheck" portType="tns:CheckCreditPT" operation="ceckCustomerCredit" inputVariable="customerInfo"> <source linkName="check-credit" /> </invoke> <invoke partnerLink="scheduling" portType="tns:schedulingPT" operation="sendShippingSchedule" inputVariable="shippingSchedule"> <targets> <joinCondition>$ship-to-invoice and $check-credit</joinCondition> <target linkName="ship-to-invoice" /> <target linkName="check-credit"/> </targets> </invoke> </flow>...

=

Klaidų valdymas● Proceso vidinės ar išorinės klaidos gali būti

apdorojamos <faultHandler> konteineryje● „Gaudomos“ visos gaubiančiame bloke esančių

veiksmų klaidos● Klaidos nurodomos jų vardu ir/arba susietų

duomenų turiniu (žr. WSDL <fault> elementą)● Proceso viduje gali būti išprovokuotos <throw>

veiksmu

Page 8: Priminimas: EAI - Vilniaus universitetasklevas.mif.vu.lt/~liutauras/data/webservices/... · Orkestravimas BPEL BPEL Business Process Execution Language for Web Services (BPEL4WS,

Pvz.: klaidos<process ...>

<variables> <variable name="ShipFault" messageType="tns:POShipFault" /> </variables> ...

<faultHandlers> <catch faultName="ship:IncorrectAddress" > <invoke ...> </catch>

<catch faultName="ship:IncorrectAddress" faultVariable="ShipFault" > <invoke ...> </catch>

<catch faultVariable="ShipFault" > <invoke ...> </catch>

<catchAll> <!-- ---> </catchAll> </faultHandlers>

<!-- ...Proceso veiksmai, kuriuos vykdant gali įvykti klaidos... -->

</process>

Blo

kas

Žr. WSDL

Šį vardą turintys fault bepapildomų duomenų

Šį vardą turintys fault su duomenimis, kurių struktūra atitinka ShipFaultBet kokie fault'ai, kurių struktūraatitinka ShipFault

Visi kiti fault'ai

Iškviečiami atitinkami veiksmai

Kiti elementai ir veiksmai● Pranešimų koreliacija

● Su pranešimais susiejami papildomi resursai<correlationSet>, <correlation>

● Kompensacijų valdymas● Atšaukiami prieš tai įvykdytų veiksmų rezultatai

<compensationHandler>● Sub-procesų apibrėžimas

● Proceso dalių izoliavimas<scope>

● Įvykių valdymas...

BPEL realizacijos

BPEL kūrimo ir valdymo priemonės● Integruotos SOA kūrimo priemonės

● BPEL visual designers● BPEL vykdymo platformos

● Apache ODE (Orchestration Director Engine)http://ode.apache.org/

● JBoss jBPMhttp://www.jboss.org/jbpm

● ...

Pavyzdys

Page 9: Priminimas: EAI - Vilniaus universitetasklevas.mif.vu.lt/~liutauras/data/webservices/... · Orkestravimas BPEL BPEL Business Process Execution Language for Web Services (BPEL4WS,

<definitions targetNamespace="http://jbpm.org/examples/hello" xmlns:tns="http://jbpm.org/examples/hello" xmlns:plt="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/">

<message name="nameMessage"> <part name="name" type="xsd:string" /> </message>

<message name="greetingMessage"> <part name="greeting" type="xsd:string" /> </message>

<portType name="Greeter"> <operation name="sayHello"> <input message="tns:nameMessage" /> <output message="tns:greetingMessage" /> </operation> </portType>

<plt:partnerLinkType name="Greeter-Caller"> <plt:role name="Greeter"> <plt:portType name="tns:Greeter" /> </plt:role> </plt:partnerLinkType>

</definitions>

WSDL

<process name="HelloWorld" targetNamespace="http://jbpm.org/examples/hello" xmlns:tns="http://jbpm.org/examples/hello" xmlns:bpel="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/">

<partnerLinks> <partnerLink name="caller" partnerLinkType="tns:Greeter-Caller" myRole="Greeter" /> </partnerLinks>

<variables> <variable name="request" messageType="tns:nameMessage" /> <variable name="response" messageType="tns:greetingMessage" /> </variables>

<sequence name="MainSeq">

<receive name="ReceiveName" operation="sayHello" partnerLink="caller" portType="tns:Greeter" variable="request" createInstance="yes" />

<assign name="ComposeGreeting"> <copy> <from expression="concat('Hello, ', bpel:getVariableData('request', 'name'), '!')" /> <to variable="response" part="greeting" /> </copy> </assign>

<reply name="SendGreeting" operation="sayHello" partnerLink="caller" portType="tns:Greeter" variable="response" />

</sequence>

</process>

BPEL

Choreografija

Choreografija● Procesų tarpusavio interakcijos apibrėžimas ir

kontrolė● Užtikrinama, jog procesų tarpusavio pranešimų

apsikeitimai vykdomi pagal numatytą planą● Užtikrinama, jog sistemos evoliucija ir pakeitimai

lieka suderinami su numatytais scenarijais

WS-CDL● WS-Choreography Definition Language

● W3C Candidate Recomendation 1.0, 2005● BPEL?

● BPEL gali būti matoma kaip choreografijos dalis„BPEL is a programming language to specify the behavior of a participant in a choreography [...] choreography is concerned with describing the message interchanges between participants. Participants of a choreography are peers, there is no center of control...“

Web Services Choreography Working Group

Pagrindiniai WS-CDL elementai<package ...>

<informationType ...> <token ....> <role ...> <relashionship ...> <role ...> <role ...>

<channelType ...> <role...> <reference ...> <identity ...>

<choreography ..> <variableDefinitions> <variable ...> <interaction ....> <participate ...> <exchange ...> <exchange ...> </interaction>

</choreography>

....

Pranešimų tipai irelementai

Rolės ir ryšiai tarppartnerių

Komunikacijos kanalai

Konkreti interakcijatarp partnerių: rolės,komunikacijos kanalai,apsikeičiami pranešimai