370 likes | 484 Views
11. Szolgáltatás Integráció. Dr. Bilicki Vilmos Szegedi Tudományegyetem Informatikai Tanszékcsoport Szoftverfejlesztés Tanszék. Tartalom. ESB BPEL. Szolgáltatás-orientált architektúra. Szolgáltatás: lazán csatolt alapegység, üzleti funkciót reprezentál
E N D
11. Szolgáltatás Integráció Dr. Bilicki Vilmos Szegedi Tudományegyetem Informatikai Tanszékcsoport Szoftverfejlesztés Tanszék
Programrendszerek fejlesztése Tartalom • ESB • BPEL
Programrendszerek fejlesztése Szolgáltatás-orientált architektúra • Szolgáltatás: lazán csatolt alapegység, üzleti funkciót reprezentál • Szolgáltató: szolgáltatást biztosít, és a bróker felé továbbítja azok adatait • Használó: kikeresi a számára szükséges szolgáltatást és igénybe veszi azt • Bróker: szolgáltatásokról tárol és biztosít információt
Programrendszerek fejlesztése Java Business Integration • A szolgáltatás-orientált architektúra megvalósítása Javaban (specifikáció) • Webszolgáltatásokra épül • Kibővíthető architektúra • Szolgáltatásmodell: WSDL 2.0 • Üzenetcsere-minták: • In-Only: egyirányú, max.státusz a fogadótól • Robust In-Only: megbízhatóegyirányú • In-Out:kétirányú, fogadó isküld státuszt • In Optional-Out: a válaszopcionális
Programrendszerek fejlesztése Enterprise Service Bus • Szolgáltatások közötti üzenetcsere monitorozása és vezérlése • Szolgáltatások telepítése és verziózása • Gyakori középréteg szolgáltatások biztosítása: • Eseménykezelés • Adattranszformáció • Üzenetsorok kezelése • Biztonság- és kivételkezelés • Stb.
Programrendszerek fejlesztése JBoss ESB
Programrendszerek fejlesztése JBossESB: szolgáltatások, akciók, üzenetek Szolgáltatás: • Üzelti logika megvalósítása vagy integrációs pont • Akcióosztályok halmaza • Kategória és név alapján azonosítható (registry-ből) • Bejövő üzenetek fogadására Listenerek: • Gatewaylistener • ESB listener <service category="Retail" name="ShoeStore"description="AcmeShoeStoreService"> <providers> <jms-provider name="JBossMQ" connection-factory="ConnectionFactory"> <jms-busbusid="shoeStoreJMSGateway"> <jms-message-filterdest-type="QUEUE" dest-name="queue/shoeStoreJMSGateway"/> </jms-bus> </jms-provider> </providers> <listeners> <jms-listenername="shoeStoreJMSGateway" is-gateway="true" busidref="shoeStoreJMSGateway" /> </listeners> <actions> <actionname="println" class="org.jboss.soa.esb.actions.SystemPrintln" /> </actions> </service>
Programrendszerek fejlesztése JBossESB: szolgáltatások, akciók, üzenetek
Programrendszerek fejlesztése JBossESB: szolgáltatások, akciók, üzenetek Üzenet: • kommunikációs alapegység szolgáltatások között • Javasolt MEP: in-only • Részei: • Header: útválasztási és címzési adatok • Body: tartalom (többrészes) • Properties: saját metaadatok (nem ajánlott, helyette body) • Attachments: csatolmányok (nem ajánlott, helyette body) • Fault: hibainformáció közvetítésére (kód, ok)
Programrendszerek fejlesztése JBossESB szolgáltatásai: registry • Szolgáltatásokkal kapcsolatos információkat szolgáltatja (meta-adatok) • Szolgáltatások automatizált felderítése • Csak katalógus, nem tárolja a tényleges információt • Gyakorlatilag a SOA szolgáltatásbróker feladatait látja el
Programrendszerek fejlesztése JBossESB szolgáltatásai: szabálykezelés • Drools szabályok használata szolgáltatásokként • Akciólánc vagy vezérelt üzleti folyamat • Támogatott szabálytípusok: • Drools BRMS • DRL-fájlok • DSL • Döntési fa szabályok
Programrendszerek fejlesztése JBossESB szolgáltatásai: CBR • Üzenetek közvetítésére • Az üzenetek végpont referenciák felé közlekednek • Mi legyen, ha valamelyik végpont nem elérhető vagy megváltozott? • Tartalom-alapú útválasztás: nem adott célhoz tartanak az üzenetek, hanem a tartalmuk alapján választódik célpont • A küldőnek nem kell ismerni a fogadó felet • Tartalommegadás: Xpath, reguláris kifejezések, Drools, Smooks
Programrendszerek fejlesztése JBossESB szolgáltatások: CBR – példa • Adottak: • Szolgáltatások • Útválasztó • Összerendelés üzenettípusok és szolgáltatások között (útválasztási szabályok) • Példa: • A kliens küld egy üzenetet az ESB felé (A szolgáltatás fogadja az üzenetet) • A szolgáltatás az útválasztóhoz továbbítja az üzenetet • Az útválasztó a szabályok (és az üzenet tartalma) alapján továbbítja az üzenetet B vagy C szolgáltatás felé
Programrendszerek fejlesztése JBossESB szolgáltatások: CBR - XPath • <action class="org.jboss.soa.esb.actions.ContentBasedRouter„ • name="ContentBasedRouter"> • <property name="cbrAlias" value="XPath"/> • <property name="destinations"> • <route-to service-category="BlueTeam" service-name="GoBlue" • expression="/Order[@statusCode='0']" /> • <route-to service-category="RedTeam" service-name="GoRed" • expression="/Order[@statusCode='1']" /> • <route-to service-category="GreenTeam" service-name="GoGreen" • expression="/Order[@statusCode='2']" /> • </property> • </action>
Programrendszerek fejlesztése JBossESB szolgáltatások: CBR - Regex • <action class="org.jboss.soa.esb.actions.ContentBasedRouter„ • name="ContentBasedRouter"> • <property name="cbrAlias" value="Regex"/> • <property name="destinations"> • <route-to service-category="BlueTeam" service-name="GoBlue" • expression="#*111#*" /> • <route-to service-category="RedTeam" service-name="GoRed" • expression="#*222#*" /> • <route-to service-category="GreenTeam" servicename="GoGreen" • expression="#*333#*" /> • </property> • </action>
Programrendszerek fejlesztése JBossESB szolgáltatások: transzformációk • Üzenetek átalakítására • Támogatott módszerek: • Smooks (SmooksAction) • XSLT • Saját transzformációs kód (Java)
Programrendszerek fejlesztése JBossESB szolgáltatások: ServiceInvoker • Szolgáltatások számára történő üzenetküldésre Létrehozás: • public ServiceInvoker(String serviceCategory, String serviceName)throws MessageDeliverException; Szinkron küldés: • publicMessagedeliverSync(Messagemessage, longtimeoutMillis)throwsMessageDeliverException, RegistryException; Aszinkron küldés: • publicvoiddeliverAsync(Messagemessage)throwsMessageDeliverException;
Lazán csatolt alkalmazások Elemei: SOAP WSDL UDDI A szolgáltatás integráció többet igényel mint egyszerű web szolgáltatás hívásokat A konkrét protokollt, üzleti folyamatot kellene definiálni Igények: Adatfüggő folyamatok Hiba/kivételkezelés (mi van akkor ha valami nincs rendben?) Hosszúidejű egymásba ágyazott üzleti folyamatok kezelése Programrendszerek fejlesztése Web Szolgáltatások 18
Vezérlés vs. Koregrafálás XML alapú Szinkron – Aszinkron Programrendszerek fejlesztése BPEL 19
Modell és nyelv Web szolgáltatás alapú interakciók A viszonyokat a partnerLink segítségével írja le Állapotok és logika kezelése Kompenzáció kezelése Hiba kezelése Két koncepció Absztrakt folyamat (WS-BPEL AbstractProcess) A kívülről megfigyelhető működést írja le Egy sablont ad a folyamatra Futtatható folyamat (WS-BPEL ExecutableProcess) Programrendszerek fejlesztése WS-BPEL 20
Technológiák WSDL SOAP XML Xpath Szkópok használata Változók Aktivitások Vezérlő elemek Zárolások Kompenzáció Hosszú folyamatok -> állapot perzisztálás Programrendszerek fejlesztése BPEL 21
Hogyan kapcsoljunk össze WS alapú rendszereket? Hibakezelés? Tranzakciókezelés? Web Szolgáltatásokat komponál össze (orchestration) MS:XLANG + IBM:WSFL Absztrakt üzleti folyamat Futtatható üzleti folyamat Programrendszerek fejlesztése BPEL4WS 22
Folyamat leíró nyelv (XML alapú) Aktivitásokból áll pl.: <invoke> <wait> <receive> <reply> <assign> <throw> <terminate> Ezeket lehet kombinálni komplex aktivitásokba <switch> <while> <sequence> <flow> Programrendszerek fejlesztése BPEL4WS 23
A folyamat Web szolgáltatásokat hív és web szolgáltatás interfészeket ad Kliens folyamat társak azok a kliensek akik a web szolgáltatás interfészeket használják (ezeket esetleg szeretné megkülönböztetni…) Meghívott folyamat társak azok az alkalmazások akik a web szolgáltatásokat a folyamat rendelkezésére bocsájtják Ezek kombinációja: Szolgáltatások amelyeket csak hív Szolgáltatások amelyek csak hívják Szolgáltatások amelyek hív és hívják (pl.: aszinkron hívás) Programrendszerek fejlesztése Folyamat társak 24
Port Type Service Link Types Megadja a kommunikáló partnerek szerepköreit (portType) Role (myRole/partnerRole) Szolgáltatás referencia (Service Reference) Konkrét web szolgáltatást ad meg Programrendszerek fejlesztése Szolgáltatás hivatkozás típusok
A munkafolyamathoz tartozó információ tárolásához használjuk Adattípusok: Üzenet típus (MessageType – WSDL által definiált üzenet) Elem (Element - XSD) Típus (Type – egyszerű XSD típus) Általában a ki és bejövő hívásokat ilyen változókban tároljuk Egy BPEL folyamatnak több példánya is lehet Minden példány saját változó példányokkal bír Programrendszerek fejlesztése Változók
A partner szolgáltatás valamilyen műveletét hívja meg (operation) Valamilyen változóhoz kötődik (in/out) Programrendszerek fejlesztése Invoke elem
Amikor a folyamat egy partner folyamattól vár valamit Aszinkron – callback Az egész BPEL folyamat kezdete Programrendszerek fejlesztése Receive elem
Programrendszerek fejlesztése If, elseif, else elemek
Változó értékadás Mindegyik értékadás egy copy művelet Minden copy művelet egy to és egy from elemet tartalmaz Programrendszerek fejlesztése Assign, copy, from elemek
Processz példányok Melyik üzenet melyik processz példányhoz tartozik Programrendszerek fejlesztése Korreláció
Thorw/Catch elemek A WSDL hibakezelésére (fault) épít Kompenzáció A folyamat tervező az egyes nem megfordítható folyamatok esetén kompenzálhat (pl.: jegyfoglalás lemondás esetén más folyamaton kell végigmenni) Kompenzációs akciók Rekurzívan támogatja Környezet (Scope) az elemi egysége Programrendszerek fejlesztése Kivételkezelés
Folyamat indítópont Üzenetek hatására jön létre Nem Process ID alapú az üzenet folyamat összerendelés (belső struktúra) Üzenet korreláció (message correlation) Programrendszerek fejlesztése A folyamat életciklusa
Programrendszerek fejlesztése Tételsor • Web Szolgáltatások • REST, JSON (10 pont) • SOAP (5 pont) • WSDL (20 pont) • UDDI (5 pont) • Köztesréteg • Motiváció, nem funkcionális követelmények, típusai, megvalósítása (5) • JGroups szerepe, képességei (5) • ApacheHadoop HDFS (5) • Map-Reduce (10) • ApacheHadoopHBase/Pig Latin (5) • Elosztott rendszerek • Motiváció (5 pont) • Architektúra típusok (5 pont) • Skálázhatóság (5 pont) • CAP tétel (5 pont) • Virtualizációs rétegek (5 pont) • Elosztott rendszer architektúrák (15 pont) • Átszövődő vonatkozások • Átszövődő vonatkozások (5 pont) • Kontextus (5 pont) • Biztonság (10 pont) • Konszenzus (5 pont) • Tranzakció (5 pont) • Paxos (5 pont) • Perziszetncia (5 pont)
Programrendszerek fejlesztése Tételsor • Nyelvi paradigmák – logika • RUP absztrakciós szintek (5) • Folyamat nyelvek (15) • Szabály nyelvek (10) • Tartomány specifikus nyelvek (5) • AOP (5) • Nyelvi paradigmák – adatábrázolás • Web 1.2, 2.0 korlátok(5) • Szemantikus web (5) • RDF (10) • OWL (10) • SPARQL (10) • Felhasználói interakció • AJAX + GWT(10) • JSP (10) • JSF (20) • Háttér logika • EJB rendszer, szolgáltatás réteg (5) • RMI, JNDI (5) • EJB (10) • Tranzakció (5) • CDI/Web babok (15)
Programrendszerek fejlesztése Tételsor • Adatkezelés • Perzisztencia (5) • JDBC (5) • ORM (5) • JPA (10) • Hibernate (15) • Szolgáltatás integráció • ESB (20) • BPEL (20)
Programrendszerek fejlesztése • Itt a nyár ! • Köszönöm a félévi figyelmet! • Sok sikert!