STUDIUL TEHNOLOGIILOR INFORMATICE DE INTEGRARE A APLICAŢIILOR
4.3. Standarde utilizate la integrarea aplicaţiilor
4.3.1. Business Process Execution Language - BPEL
BPEL este un standard bazat pe XML şi servicii Web care permite modelarea fluxurilor de afaceri şi automatizarea acestora. Folosind acest limbaj, fluxurile şi regulile de afaceri pot fi definite într-un mod intuitiv, fiind asigurat un nivel ridicat de transparenţă în realizarea acestor operaţiuni. Tehnologia BPEL simplifică modul de integrare a diverselor aplicaţii şi procese de afaceri [NET07].
Figura 4.9. Integrarea cu partenerii de afaceri
După cum reiese din figura 4.9, integrarea aplicaţiilor prin BPEL se realizează prin intermediul soluţiei Business Process Management (BPM), care se bazează pe standarde şi tehnologii fundamentale ce stau la baza Internetului şi care pot fi folosite atât pentru automatizarea proceselor interne din cadrul firmei, cât şi pentru derularea fluxurilor cu partenerii de afaceri. În acest sens, soluţiile de acest tip oferă o flexibilitate deosebită în integrarea şi automatizarea unor procese de afaceri care prezintă un nivel ridicat de complexitate şi la care participă mai multe companii
Evoluţia BPEL
Evoluţia BPEL este sugestiv reprezentată în figura 4.10, evidenţiindu-se trecerea prin următoarele faze de dezvoltare:
Figura 4.10. Evoluţia BPEL
eXtensible Language (XLang): este un limbaj bazat pe XML pentru definirea proceselor şi permite modelarea complexă a proceselor de afaceri foarte dinamice, realizând legătura dintre fişiere obiect din Fortran şi C++;
Business Process Markup Language (BPML): este un metalimbaj pentru descrierea proceselor afacerii. BPML a fost proiectat iniţial pentru a suporta procesele de afaceri care ar putea fi executate de un sistem BPM. Atât BPML, cât şi Web Service Choreography Interface (WSCI), apărut mai târziu, partajează acelaşi model de execuţie a proceselor de afaceri şi prezintă similarităţi de sintaxă. BPML suportă planificarea activităţilor la momente de timp specifice;
Web Services Flow Language (WSFL): este proiectat pentru a descrie modul în care vor conlucra o serie de funcţii pentru a oferi servicii Web;
Electronic Business Extensible Markup Language (ebXML): a fost creat pentru a permite utilizarea globală a informaţiei electronice într-un mod sigur, interoperabil şi consistent de către toate părţile implicate;
Web Services Conversation Language (WSCL);
Web Service Choreography Interface (WSCI): este interfaţa ce asigură suportul pentru intercomunicarea serviciilor web. Problema schimbului de mesaje între servicii aparţine WSCI (Web Service Choreography Interface), interfaţă ce funcţionează pentru limbajele de definire a serviciilor Web. Acesta se referă mai ales la comportamentul extern al unui serviciu Web prin asigurarea unei interfeţe comune de schimb al mesajelor. WSCI asigură deci intercomunicarea serviciilor Web şi, mai ales, conlucrarea acestora pentru crearea aplicaţiilor mari;
Business Process Execution Language for Web Services (BPEL4WS): prin intermediul XML şi BPEL4WS se asigură un nou nivel de conectivitate şi interoperabilitate, conform cerinţelor arhitecturii orientate pe servicii (Service-Oriented Arhitecture - SOA), stabilite de standardele internaţionale ale organizaţiei Web Services Interoperability. Sunt disponibile mai multe instrumente vizuale care încorporează interfeţe intuitive şi funcţionalităţi de drag-and-drop, fiind posibilă astfel modelarea simplă a fluxurilor informaţionale şi a proceselor de afaceri. Fiind foarte flexibil în construcţia regulilor care conduc procesele de afaceri, se realizează o simplificare modului de integrare a diverselor aplicaţii şi procese de afaceri.
BPEL4WS este practic un limbaj standard pentru integrarea proceselor care, în vederea identificării datelor relevante din mesaje, utilizează proprietăţile acestora. Folosind acest mecanism, proprietăţile pot fi vizualizate în două modalităţi: transparent şi opac. Datele transparente afectează protocoalele de afaceri publice, în timp ce datele opace sunt în primul rând asociate cu sistemele back-end (afectează protocoalele de afaceri prin nedeterminare).
BPEL4WS defineşte un model şi o sintaxă pentru descrierea comportamentului unui proces folosind interacţiunile dintre proces şi parteneri. Aceste interacţiuni cu partenerii apar prin interfeţele serviciilor Web, iar structura relaţiilor la nivel de interfaţă există într-o entitate cunoscută ca serviciu link. Misiunea unui proces BPEL4WS este să descrie cum interacţionează cu aceşti parteneri, definind un proces de afaceri şi incluzând o logică de coordonare. Cu ajutorul acestui standard, se pot procesa excepţiile şi, în cazul în care acestea apar, se pot defini modurile în care sunt compensate activităţile individuale sau compozite dintr-un proces.
Există două concepte majore care trebuie evidenţiate în ceea ce priveşte standardul BPEL4WS în contextul integrării aplicaţiilor. Mai întâi, un proces BPEL4WS poate defini un protocol de afaceri utilizând conceptul de proces abstract şi oferind un mecanism pentru identificarea datelor relevante pentru protocol ca proprietăţi ale mesajelor care prin folosirea valorilor non-deterministice ascund proprietăţile private. În al doilea rând, este posibil ca BPEL4WS să definească un proces de afaceri executabil care include logica şi starea procesului. Acest mecanism gestionează conceptele de integrare a proceselor fundamentale.
BPEL4WS există ca o extensie a mai multor specificaţii XML, cum sunt:
WSDL 1.1;
XML Schema 1.0;
Xpath 1.0.
BPEL4WS oferă un set de facilităţi pentru refacerea sistemului după apariţia unei erori în timpul execuţiei unui proces sau în timpul tratării unei excepţii. Acest standard se foloseşte de capacităţile de tratare a excepţiilor încorporate în WSDL. Mai mult decât atât, există noţiunea de compensare, în sensul că permite proiectantului procesului să implementeze acţiuni de compensare pentru anumite acţiuni ireversibile. Acest aspect este tratat în BPEL4WS folosind noţiunea de scop. Scopul este o unitate de lucru pentru compensare.
BPEL4WS are potenţialul de a deveni un standard bazat pe limbaj pentru integrarea proceselor şi permite crearea modelelor pe o singură tehnologie de integrare a aplicaţiilor, fără a face transformări asupra codului.
Cadrul BPEL
Procesele de afaceri reprezintă colecţii de servicii Web care cooperează pentru a oferi o soluţie comună unei anumite probleme. Cooperarea serviciilor impune coordonarea acestora. Coordonarea serviciilor Web este realizată pe baza unui set partajat de informaţii care formează contextul de coordonare. Contextul de coordonare se defineşte ca fiind totalitatea informaţiilor partajate de către serviciile Web în vederea conectării activităţilor individuale din cadrul proceselor generale de afaceri [MÎND05].
BPEL este un limbaj destinat definirii de fluxuri de activităţi. Limbajul utilizează sintaxa XML şi permite descrierea de procese care pot fi atât producători cât şi consumatori de servicii Web.
BPEL oferă suport atât pentru procesele de afaceri executabile, cât şi pentru cele abstracte. Procesele executabile modelează comportamentul participanţilor într-o interacţiune de afaceri specifică, modelând în esenţă un flux de activităţi privat. Procesele abstracte, modelate ca protocoale de afaceri în BPEL, specifică schimburile de mesaje publice între participanţi. Protocoalele de acest tip nu sunt executabile şi nu transportă detalii interne ale fluxului proceselor.
În construirea proceselor de afaceri sunt parcurşi următorii paşi [MÎND05]:
Definirea interfeţelor publice;
Crearea dicţionarului partener;
Crearea mesajului şi stabilirea tipul dicţionarului;
Implementarea transformărilor logice;
Testarea mediului;
Repetarea, dacă este cazul, a paşilor 1-5;
Realizarea unui proiect pilot funcţional;
Reglarea sarcinilor privind operaţiunile.
IBM oferă specificaţiile unui cadru pentru aplicaţii dezvoltate prin integrarea de servicii Web. Acest cadru permite utilizarea forţei şi avantajelor arhitecturii Web orientată pe servicii în crearea şi automatizarea tranzacţiilor între partenerii unei afaceri, prin automatizarea şi integrarea solicitărilor serviciilor Web oferite de aceştia.
Cadrul este format din specificaţiile BPEL, WS-Transaction (Web Service Transaction) şi WS-Coordination (Web Services Coordination). El stă la baza conectării aplicaţiilor distribuite şi a cooperării activităţilor acestora în mod dinamic.
WS-Transaction şi WS-Coordination sunt specificaţii complementare limbajului, utilizate pentru a asigura coordonarea şi corectitudinea rezultatelor produse de procesele definite peste serviciile Web, în contextul problematicii sistemelor distribuite.
Procesele BPEL implementează scenarii în care, pentru soluţionarea problemelor unui client, sunt implicaţi mai mulţi parteneri, fiecare furnizând un serviciu Web. Fiecare partener implementează o parte din întregul proces necesar pentru a răspunde solicitării. Tehnologiile de realizare a tranzacţiilor dintre parteneri sunt potenţial incompatibile şi au cerinţe specifice, integrarea lor fiind soluţionată de cadrul pentru aplicaţii.
Cadrul oferă mijloace pentru definirea integrării partenerilor eterogeni în procesele globale, pentru stabilirea modului în care activităţi ale acestor procese pot fi externalizate public sub formă de servicii Web, pentru coordonarea activităţilor serviciilor Web multiple într-o tranzacţie globală şi, de asemenea, pentru legarea dinamică, la execuţie, a unui serviciu selectat, dintr-un set de servicii, pe baza datelor derivate din fluxul proceselor.
Dezvoltarea unei aplicaţii bazată pe servicii Web începe cu definirea proceselor, urmată de stabilirea partenerilor, a conexiunilor dintre aceştia, a mecanismelor de coordonare şi a operaţiilor indivizibile utilizând tranzacţii.
În limbajul BPEL se creează o descriere abstractă a proceselor de afaceri. BPEL produce scripturi executabile care implementează descrierea abstractă a proceselor şi care pot fi interpretate de motoare speciale.
Un script al unui proces este o succesiune de paşi, fiecare pas corespunzând unei singure activităţi. Implementarea unei activităţi înseamnă definirea unei interacţiuni cu un serviciu Web.
Clienţii şi serviciile Web sunt consideraţi parteneri şi sunt conectaţi prin legături care se caracterizează prin tip şi prin rolurile partenerilor.
Un proces este compus din mai multe activităţi diferite, unele dintre acestea fiind executate simultan. Toate activităţile implicate în proces sunt supuse mecanismului de coordonare, care asigură generarea de rezultate corecte şi consistente.
Activităţile implicate într-un proces trebuie finalizate cu succes fiecare în parte şi în ansamblul lor. Pentru aceasta trebuie soluţionată atât problematica clasică a tranzacţiilor, cât şi cea specifică sistemelor distribuite. În cazul sistemelor distribuite, aceasta derivă din durata mare a unei tranzacţii, ca şi din latenţa semnificativă a procesului de comunicare în reţea. Controlul tranzacţiilor la nivelul procesului se face de către o infrastructură care monitorizează rezultatele fiecărei activităţi individuale în raport cu modul în care aceasta este relaţională cu ansamblul procesului. Pentru gestionarea tranzacţiilor la nivelul fiecărei activităţi se utilizează aplicaţii tradiţionale pentru tranzacţii şi coordonare.
WS-Transaction este un cadru de aplicaţii pentru monitorizarea succesului sau eşecului fiecărei activităţi indivizibile în raport cu realizarea ansamblului activităţilor care formează procesul. Acest cadru se bazează pe servicii Web, în sensul că suportul pentru tranzacţii oferă interoperabilitate între aplicaţiile proprietar de gestionare a tranzacţiilor în vederea realizării modelului tranzacţional la nivelul proceselor de afaceri.
Modelul proceselor de afaceri cu funcţii de coordonare şi tranzacţii distribuite oferă o serie de avantaje. Deoarece este construit peste o arhitectură orientată pe servicii Web, el permite integrarea flexibilă şi dinamică a aplicaţiilor ce se execută pe platforme diferite şi potenţial incompatibile. Modelul este extensibil, oferind un cadru general pentru crearea de procese de afaceri, care poate fi extins pentru a include noi cerinţe. Acest lucru permite, de asemenea, evoluţia instrumentelor de dezvoltare şi testare a aplicaţiilor pe măsura evoluţiei cerinţelor. Modelul este flexibil, oferind suport pentru o procesare durabilă, sigură şi corectă a unui spectru larg de procese de afaceri tranzacţionale şi non-tranzacţionale.
WS-Transaction este folosit în monitorizarea corectitudinii fiecărei activităţi individuale ce trebuie realizată într-un proces global. Iar BPEL este folosit pentru definirea modului de compensare a activităţilor eşuate.
BPEL – limbaj pentru programarea orientată pe servicii Web
BPEL este un limbaj cu ajutorul căruia se definesc operaţii de comunicare a serviciilor Web. O astfel de compoziţie descrie o serie de procese, numite procese de afaceri (business processes), deoarece sunt specifice aplicaţiilor unui anumit domeniu. Acestea se execută prin integrarea mai multor servicii disponibile în Web. Limbajul poate fi utilizat atât pentru implementarea proceselor de afaceri, cât şi pentru descrierea de procese abstracte non-executabile [MÎND05].
Procesele de afaceri se pot reprezenta într-o diagramă de flux a operaţiilor care exprimă un algoritm cu care se defineşte un nou serviciu Web rezultat prin compunerea mai multor servicii existente.
Partenerii sunt reprezentaţi printr-o referinţă tipizată la un serviciu. Această referinţă trebuie rezolvată în sensul stabilirii corespondenţei cu serviciul Web real. Există două tipuri de parteneri: partenerii invocaţi - sunt cei pentru care procesele sunt clienţi şi sunt parte integrată a algoritmului după care acestea se desfăşoară; partenerii clienţi - sunt cei care invocă procesele.
O activitate scrie şi accesează date aflate în containere de date. Un container conţine o instanţă a unui tip de mesaj definit de WSDL.
Limbajul oferă un set de activităţi primitive pentru invocarea de servicii Web, pentru manipularea datelor, pentru lansarea de execuţii, acestea reprezentând cea mai simplă formă de interacţiune a procesului cu lumea exterioară lui. Activitatea primitivă se defineşte ca fiind un pas individual în cadrul proceselor. Acestea interacţionează cu un serviciu, manipulează transferul datelor şi tratează excepţiile.
- invocă un serviciu sincron;
- aşteaptă mesaje despre pornirea sau repornirea proceselor;
- manipulează transferul de informaţii, copiază date de la un container la altul, inserează noi date ca rezultat al evaluării unor expresii;
- întoarce răspuns pentru procesele sincrone;
- indică apariţia unei erori;
- determină abandonarea imediată a execuţiei instanţei curente a proceselor de afaceri;
- pune procesele în aşteptare un interval de timp, până la atingerea unui termen.
Activităţile pentru structurare definesc ordinea de execuţie a unei colecţii de activităţi. Ele descriu structurile după care sunt compuse mai multe activităţi primitive pentru a forma procese. Aceste structuri exprimă şabloanele de control, fluxul de date, manipularea erorilor şi a evenimentelor externe. Activităţile de structurare descriu, de asemenea, coordonarea schimbului de mesaje între instanţele proceselor implicate.
- permite definirea unei structuri ce conţine o secvenţă ordonată de activităţi;
- permite definirea unei structuri de ramificare;
- oferă posibilitatea alegerii unei căi din mai multe alternative;
- defineşte un set de legături care are ca sursă şi ca destinaţie activităţi de structură;
- reprezintă o legătură dintre două obiecte;
- permite definirea structurilor repetitive;
- este utilizat pentru divizarea proceselor de afaceri în părţi organizate; este un context executant pentru activităţile conţinute, un proces fiind el însuşi un .
O problemă importantă este legată de manipularea erorilor şi recuperarea proceselor după producerea acestora. Pentru manipularea erorilor limbajul oferă construcţiile throw şi catch. Pentru a da posibilitatea terminării procesului erorile se tratează folosind. Execuţia proceselor BPEL
Un proces are mai multe puncte de intrare. Unul dintre acestea este punctul de pornire al procesului care este accesat la prima solicitare a serviciului implementat de el din partea fiecărui client. În acest punct se lansează operaţiile de creare a instanţei de proces şi de asociere a acestei instanţe cu valoarea câmpului cheie din mesaj. În momentul invocării unui proces, se execută o operaţie numită corelare-mesaj. Această operaţie verifică dacă există o instanţă corespunzătoare câmpului cheie din mesajul de invocare. Dacă nu există această instanţă, operaţia de corelare-mesaj lansează procesul prin punctul de pornire, iar dacă instanţa corespunzătoare există, atunci lansează operaţii ale procesului prin celelalte puncte de intrare.
În definirea unui proces se descrie modul de interacţiune cu partenerii, se specifică entităţile de tip container pentru mesajele pe care procesul le schimbă cu partenerii săi şi se definesc activităţile pentru interacţiunea procesului cu lumea exterioară lui.
Procesele de afaceri definite în limbajul BPEL pot fi repartizate şi executate utilizând o platformă ce implementează specificaţiile acestui limbaj. O astfel de platformă este motorul BPWS4J oferit de AlphaWorks [MÎND05].