Vzory interakce zpráv v komponenteˇ „BPEL Process“ Marek Rychlý Vysoké uˇcení technické v Brneˇ Fakulta informaˇcních technologií Ústav informaˇcních systému˚
Pˇrednáška pro IOA 5. listopadu 2014
Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
1 / 25
Obsah
1
Orchestrace služeb s asyncrhonním voláním Aktivity BPEL související s orchestrací Asynchronní volání orchestrovaných služeb Pˇríklad BPEL procesu s asynchronním voláním
2
Techniky korelace asynchronních zpráv WS-Addressing Correlation Sets Problémy pˇri korelaci zpráv
3
ˇ Shrnutí a záver
Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
2 / 25
Orchestrace služeb s asyncrhonním voláním Techniky korelace asynchronních zpráv ˇ Shrnutí a záver
Aktivity BPEL související s orchestrací Asynchronní volání orchestrovaných služeb Pˇríklad BPEL procesu s asynchronním voláním
Orchestrace služeb a „BPEL Process“ komponenta (opakování ze 4. pˇrednášky)
Orchestruje napojené komponenty/služby pomocí vlastní logiky. (komponenta je vhodná pro implementaci business procesu/služeb) ˚
Logika orchestrace zapsána v jazyce BPEL v1.1 nebo BPEL v 2.0. (BPEL v1.1 aka BPEL4WS a BPEL v2.0 aka WS-BPEL jsou standardizovány)
BPEL nemá stanovenou grafickou notaci, narozdíl od BPMN. (BPMN modely jsou pˇrevoditelné do BPEL, ikdyž to je pak velmi špatneˇ cˇ itelné)
(diagram pˇrevzat z „Oracle SOA Suite 11g: Essential Concepts“) Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
4 / 25
Orchestrace služeb s asyncrhonním voláním Techniky korelace asynchronních zpráv ˇ Shrnutí a záver
Aktivity BPEL související s orchestrací Asynchronní volání orchestrovaných služeb Pˇríklad BPEL procesu s asynchronním voláním
Pˇrehled strukturovaných aktivit v BPEL procesu (opakování z 6. pˇrednášky)
(diagram pˇrevzat z „Next Generation Web Services in Practice“)
Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
5 / 25
Orchestrace služeb s asyncrhonním voláním Techniky korelace asynchronních zpráv ˇ Shrnutí a záver
Aktivity BPEL související s orchestrací Asynchronní volání orchestrovaných služeb Pˇríklad BPEL procesu s asynchronním voláním
Pˇrehled základních aktivit v BPEL procesu (opakování z 6. pˇrednášky)
(diagram pˇrevzat z „Next Generation Web Services in Practice“)
Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
6 / 25
Orchestrace služeb s asyncrhonním voláním Techniky korelace asynchronních zpráv ˇ Shrnutí a záver
Aktivity BPEL související s orchestrací Asynchronní volání orchestrovaných služeb Pˇríklad BPEL procesu s asynchronním voláním
Synchronní a asynchronní volání služeb (opakování z 6. pˇrednášky)
Pˇri synchronním volání (typicky krátce pracující) služby pˇredány parametry operaci volané služby ˇ a obdržena návratová hodnota pˇrípadneˇ zpráva o chybe. ˇ (po vyvolání služby její klient cˇ eká/je blokovaný až do pˇrijetí odpovedi)
Pˇri asynchronním volání (typicky dlouze pracující) služby pˇredány parametry operaci volané služby ˇ pomocí „callback“. pokud návratová hodnota, tak obdržena pozdeji ˇ (po volání služby klient pokraˇcuje, cˇ eká až/pokud vubec ˚ potˇrebuje odpoved’)
Marek Rychlý
(diagram pˇrevzat z „Asynchronous vs. Synchronous BPEL process“) Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
7 / 25
Orchestrace služeb s asyncrhonním voláním Techniky korelace asynchronních zpráv ˇ Shrnutí a záver
Aktivity BPEL související s orchestrací Asynchronní volání orchestrovaných služeb Pˇríklad BPEL procesu s asynchronním voláním
Asynchronní volání služby v BPEL procesu
(diagram pˇrevzat z „Oracle BPEL Process Manager Developer’s Guide 10g“)
Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
8 / 25
Orchestrace služeb s asyncrhonním voláním Techniky korelace asynchronních zpráv ˇ Shrnutí a záver
Aktivity BPEL související s orchestrací Asynchronní volání orchestrovaných služeb Pˇríklad BPEL procesu s asynchronním voláním
Problémy pˇri asynchronním volání služeb ˇ samostatnými HTTP voláními. Požadavek na službu a odpoved’ ˇ (volání požadavku i callback pomocí HTTP metody „POST“ s prázdnou odpovedí)
Protokol HTTP bezestavový, nelze sdružit volání do „session“. (nelze poznat, který „callback“ souvisí se kterým puvodním ˚ požadavkem)
ˇ BPEL engine pˇrijímající volání, musí umet ˇ Kontejner, kde beží pˇriˇradit do procesu pˇrijatou zprávu na správnou aktivitu „receive“, (zejména odlišit zprávu zaˇcínající novou instanci BPEL procesu, tj. pˇrijímanou prvním „receive“ procesu, a zprávu konˇcící to správné asynchronní volání orchestrované služby, tj. pˇrijímanou jako „callback“ tím správným „receive“ následujícím po pˇríslušném „invoke“)
pˇriˇradit pˇrijatou zprávu té správné instanci BPEL procesu. (proces je typicky v jednom okamžiku používán mnoha klienty, tj. existuje ˇ ˇ mnoho soubežných instancí BPEL procesu v ruzných ˚ stavech jeho prub ˚ ehu)
Instance cˇ ekající na „callback“ mohou být doˇcasneˇ pozastaveny. (tzv. „Dehydration Point“ na obrázku na pˇredchozí stránce) Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
9 / 25
Orchestrace služeb s asyncrhonním voláním Techniky korelace asynchronních zpráv ˇ Shrnutí a záver
Aktivity BPEL související s orchestrací Asynchronní volání orchestrovaných služeb Pˇríklad BPEL procesu s asynchronním voláním
Pˇríklad BPEL procesu s asynchronním voláním WSDL dokument volané služby <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://mybank.com/UnitedLoan" ...> ... <portType name="LoanService"> <portType name="LoanServiceCallback"> ... Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
10 / 25
Orchestrace služeb s asyncrhonním voláním Techniky korelace asynchronních zpráv ˇ Shrnutí a záver
Aktivity BPEL související s orchestrací Asynchronní volání orchestrovaných služeb Pˇríklad BPEL procesu s asynchronním voláním
Pˇríklad BPEL procesu s asynchronním voláním BPEL proces volající službu <properties id="LoanService"> <property name="wsdlLocation">http://mybank.com/UnitedLoan?wsdl <partnerLink name="LoanService" partnerLinkType="services:LoanService" myRole="LoanServiceRequester" partnerRole="LoanServiceProvider"/> <sequence> ... ... ... Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
11 / 25
Orchestrace služeb s asyncrhonním voláním Techniky korelace asynchronních zpráv ˇ Shrnutí a záver
WS-Addressing Correlation Sets Problémy pˇri korelaci zpráv
Korelace asynchronních volání služeb Korelace = vzájemná souvislost/souvztažnost/interakce. (pˇríchozích a odchozích zpráv v rámci jednoho BPEL procesu)
ˇ Nutno pˇriˇradit zprávy k instancím/vláknum ˚ bežících procesu. ˚ ˇ instance/vlákna) (pˇríchozí zpráva musí nést informaci, která se použije pro výber 1
WS-Addressing (v hlaviˇcce volání je adresa callback operace a identifikátor zprávy)
2
Correlation Sets (zprávy ˇrazeny do množinna základeˇ obsahu a ty pak k instancím procesu)
(diagram pˇrevzat z „Patterns and Strategies for Building Document-Based Web Services“) Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
13 / 25
Orchestrace služeb s asyncrhonním voláním Techniky korelace asynchronních zpráv ˇ Shrnutí a záver
WS-Addressing Correlation Sets Problémy pˇri korelaci zpráv
Web Services Addressing (WS-Addressing) W3C specifikace pro adresování SOAP zpráv. (zpusob ˚ identifikace „endpoints“ webových služeb a jejich adresace ve zprávách)
Adresát zprávy v SOAP hlaviˇcce, ne v transportním protokolu. (nemusí být shodný s HTTP serverem, ten muže ˚ být napˇr. proxy cˇ i ESB službou) <S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"> <S:Header> <wsa:MessageID>uuid:aaaabbbb-cccc-dddd-eeee-ffffffffffff <wsa:ReplyTo> <wsa:Address> http://mybank.com/LoanBroker/LoanServiceCallback <wsa:To>http://mybank.com/UnitedLoan/LoanService <wsa:Action>http://mybank.com/UnitedLoan/LoanService/request <S:Body> ...
Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
14 / 25
Orchestrace služeb s asyncrhonním voláním Techniky korelace asynchronních zpráv ˇ Shrnutí a záver
WS-Addressing Correlation Sets Problémy pˇri korelaci zpráv
Adresace v rámci WS-Addressing Adresát SOAP zprávy urˇcen elementy a jako URI operace daného poskytovatele služby (dle „operation“/ „soapAction“ v popisu „binding“ WSDL dokumentu služby)
a URI akce definující sémantiku volání operace. (identifikující vstupní/výstupní zprávy operace v „portType“ WSDL služby)
Operace a akce tedy dle WSDL popisu služby adresáta zprávy. (URI akce implicitneˇ „[targetNamespace]/[portType name]/[input|output name]“)) <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" targetNamespace="http://mybank.com/UnitedLoan" ...> ... <portType name="LoanService"> <portType name="LoanServiceCallback"> ... Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
15 / 25
Orchestrace služeb s asyncrhonním voláním Techniky korelace asynchronních zpráv ˇ Shrnutí a záver
WS-Addressing Correlation Sets Problémy pˇri korelaci zpráv
Volání „callback“ operace s použitím WS-Adressing Kromeˇ adresáta zprávy obsahuje každá SOAP hlaviˇcka ID zprávy. (v elementu <MessageID/>, napˇr. jako „universally unique identifier“ (UUID))
Pˇri „callback“ obsahuje hlaviˇcka také ID zprávy puvodní ˚ zprávy. ˇ (tj. ID puvodní ˚ zprávy dˇrívejšího asynchronního volání, na kterou odpovídá zpráva volání „callback“ operace; v elementu ) <S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"> <S:Header> <wsa:MessageID>uuid:aaaabbbb-cccc-dddd-ffff-eeeeeeeeeeee <wsa:RelatesTo>uuid:aaaabbbb-cccc-dddd-eeee-ffffffffffff <wsa:To S:mustUnderstand="1"> http://mybank.com/LoanBroker/LoanServiceCallback <wsa:Action>http://mybank.com/UnitedLoan/LoanService/result <S:Body> ...
ˇ jinak vrátit chybu) ( „mustUnderstand“ ˇríká, že pˇríjemce musí elementu porozumet, Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
16 / 25
Orchestrace služeb s asyncrhonním voláním Techniky korelace asynchronních zpráv ˇ Shrnutí a záver
WS-Addressing Correlation Sets Problémy pˇri korelaci zpráv
WS-Addressing pˇri ansynchroním volání s „callback“
(diagram pˇrevzat z „Oracle BPEL Process Manager Developer’s Guide 10g“)
Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
17 / 25
Orchestrace služeb s asyncrhonním voláním Techniky korelace asynchronních zpráv ˇ Shrnutí a záver
WS-Addressing Correlation Sets Problémy pˇri korelaci zpráv
Množiny korelací (Correlation Sets) WS-Addressing se nehodí v pˇrípadech, kdy na jedno volání služby odpoví tato více „callback“ voláními, (a chceme jednotlivé „callback“ volání odlišit, napˇr. daným poˇradím)
ˇ BPEL proces cˇ eká na dodateˇcné/doplnující informace od klienta. (napˇr. sekvence operací „NewUserSignUp“ a „EnterVerifCodeSentByEmail“)
„Correlation Sets“ (CSs) seskupují volitelneˇ volání a pˇríjem zpráv. ˇ pˇriˇradit aktivity „invoke“ a „receive“ do daných korelaˇcních množin) (tzn. umožnují
Seskupení zpráv probíhá na základeˇ jejich obsahu, ne hlaviˇcek. Odchozí zprávou je pˇriˇrazena instance procesu do dané CS. (odchozí zpráva je prozkoumána a vyhoující data urˇcí pˇríslušnou CS)
Pˇríchozí zpráva je namapována na CS a pˇredána ˇ cˇ ekající/pˇrijímající instanci procesu v této množine. (pˇríchozí zpráva je prozkoumána a vyhoující data urˇcí pˇríslušnou CS)
Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
18 / 25
Orchestrace služeb s asyncrhonním voláním Techniky korelace asynchronních zpráv ˇ Shrnutí a záver
WS-Addressing Correlation Sets Problémy pˇri korelaci zpráv
Correlation Set Property & Property Aliases Hodnoty „Correlation Set Property“ (CSP) urˇcují CS. (tzn. stejné hodnoty CSP znamenají stejnou CS a tedy i stejnou instanci procesu)
Každá CSP je dána názvem a datovým typem. Každá CS má pˇriˇrazenu/je urˇcna hodnotami skupiny CSP. (napˇr. CS „UserRegistration“ má pˇriˇrazenu CSP „RegisteringUserLogin“)
Každý „invoke“1 / „receive“/ „reply“ muže ˚ být pˇriˇrazen k CSs. (toto sdružuje aktivity „invoke“/ „receive“/ „reply“ do korelaˇcních množin)
Aktivity „invoke“/ „receive“/ „reply“ mohou inicializovat CS. (pak je daná aktivita první v dané CS, definuje vlastnosti CS pro ostatní aktivity)
Pro každou CSP nutný „Property Alias“, mapování na data zpráv. v inicializujících aktivitách ˇríká jak z dat naplnit danou CSP v CS, ˇ CS. v ostatních ˇríká s jakými daty zpráv porovnávat CSP pro výber 1u
„invoke“ lze navíc urˇcit, které zprávy se CS týká; tj. request/response
Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
19 / 25
Orchestrace služeb s asyncrhonním voláním Techniky korelace asynchronních zpráv ˇ Shrnutí a záver
WS-Addressing Correlation Sets Problémy pˇri korelaci zpráv
Correlation Set, Property, Property Aliases CS, CSP a PA jsou vlastnosti instance komponenty „BPEL Process“ (v aplikaci jDeveloper se nastavují v nástrojovém panelu BPEL editoru)
CS urˇcuje seskupení pˇríchozích a odchozích volání v rámci procesu. (každou aktivitu týkající se volání lze pˇriˇradit do CSs)
CSP urˇcuje atributy, které definují dané CS. (inicializovaná CS pak má nastaveny hodnoty svých CSP)
PA urˇcuje mapování CSP na obsah XML zpráv volání. (jak ze zprávy inicializovat CS cˇ i jak poznat, ke kterým CS aktivita patˇrí)
(diagram pˇrevzat z „ActiveVOS Designer Online Help V7.0.1, Correlation“) Marek Rychlý
(diagram pˇrevzat z „SOA for the Business Developer: Concepts, BPEL, and SCA“)
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
20 / 25
Orchestrace služeb s asyncrhonním voláním Techniky korelace asynchronních zpráv ˇ Shrnutí a záver
WS-Addressing Correlation Sets Problémy pˇri korelaci zpráv
Korelace zpráv a revize SCA aplikací SCA aplikace se nasazuje/deploy na server s cˇ íslem revize. (nové verze implementace aplikace mají vyší cˇ íslo revize, než verze staré)
ˇ Staré, na serveru již bežící, revize se nemažou. (klienti si mohou pˇri volání webových služeb vynutit kompativilní revizi)
Nové revize se typicky stávají implicitními/default. (pokud neuvedou klienti cˇ íslo požadované revize, komunikují s default revizí služby)
ˇ Korelace muže ˚ mít problémy s bežícími revizemi služeb: 1 BPEL proces v SCA aplikaci revize A zavolá asynchronneˇ službu, (po dopoknˇcení zpracování požadavku cˇ eká BPEL proces na „callback“) 2
na server je nahrána/deployed nová revize BPEL procesu B > A, (nová revize se stane implicitní/default)
3 4
5
dˇríve volaná služba se pokusí provést „callback“ na BPEL proces, SCA kontejner pˇrijme „callback“ volání a protože je bez cˇ ísla revize, pˇredá ho instanci BPEL procesu revize B, ne puvodní ˚ A. ⇒ chyba, protože instance B takový „callback“ neˇceká.
Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
21 / 25
Orchestrace služeb s asyncrhonním voláním Techniky korelace asynchronních zpráv ˇ Shrnutí a záver
WS-Addressing Correlation Sets Problémy pˇri korelaci zpráv
Korelace zpráv a revize SCA aplikací ˇ vysvetlení a korekce
Každá inicializovaná „Correlation Set“ má tzv. „Conversation ID“. (vypoˇcítané na základeˇ zpravy zpracovávané aktivitou inicializující CS a názvu CS)
ˇ „Callback“ zpráva je smerována na instanci BPEL procesu podle „Conversation ID“, jména operace volané webové služby, jména volané BPEL komponenty.
Problémem je stejná zpráva a název inicializující CS a stejneˇ pojmenovaná operace nad BPEL komponentou stejného jména. (stejné u SCA aplikaci ruzných ˚ revizí; SCA kontejner neví kam zprávu doruˇcit)
V pˇrípadeˇ problému, nastavit „Conversation ID“ pro každou instanci ruˇcneˇ z dat zprávy použité pˇri inicializaci. (napˇr. na hodnotu „orderNo ∗ 1000 + revisionID “, atp.)
Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
22 / 25
Orchestrace služeb s asyncrhonním voláním Techniky korelace asynchronních zpráv ˇ Shrnutí a záver
ˇ Shrnutí a záver Korelace zpráv asynchronních volání duležitá ˚ pro pˇrijetí pˇríchozí zprávy správnou aktivitou „receive“ ve správné instanci BPEL procesu. Korelace v BPEL procesu pomocí WS-Addressing a „Correlation Sets“. ˇ („callbacks“) WS-Addressing mapuje zprávy požadavku˚ na odpovedi pomocí speciálních elementu˚ SOAP hlaviˇcky. ˇ seskupit „invoke“/„receive“/„reply“ aktivity na „Correlation Sets“ umožnují ˇ základeˇ SOAP tela/obsahu zpráv.
ˇ Pˇríšte? BPEL aktivity „Pick“ a „FlowN“, transakce v BPEL procesech. (proces zaˇcínající pˇríjmem jedné z více zpráv, dynamické spojení na partnery, . . . )
Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014
24 / 25
ˇ Podekování
ˇ byl podpoˇren projektem MŠMT Tento pˇredmet ˇ CZ.1.07/2.2.00/15.0163 „Vzdelávání v IT pro praxi“.
Marek Rychlý
Vzory interakce zpráv v komponenteˇ „BPEL Process“ — Pˇrednáška pro IOA, 5. listopadu 2014