Service Component Architecture a komponenty Oracle SOA Suite Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů Přednáška pro IOA 15. října 2014 Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 1 / 23
Obsah 1 Service Component Architecture (SCA) Komponenty v architektuře SCA SCA components, composites, bindings/wires Adaptéry/JCA a Service Data Objects 2 Přehled komponent a jejich použití v jdeveloperu BPEL Process, Mediator, Business Rule Human Task, Spring Service, Adapter Services 3 Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 2 / 23
Komponenty v architektuře SCA SCA components, composites, bindings/wires Adaptéry/JCA a Service Data Objects Service Component Architecture (SCA) (opakování z 1. přednášky) Komponentová aplikace je služba poskládaná z jedné či více komponent. (komponenty jsou opět komp. aplikace, komponenty běhových prostředí, atp.) je výsledkem uplatnění SOA při návrhu software. (SOA je architektonický styl, zatímco SCA je model sestavení) je nasazována jako celek, díky dekompozici lépe udržovatelná. (SCA zaručuje kompatibilitu komponent, ty běží v SCA kontejnerech) (diagram převzat z Service Component Architecture, developerworks, IBM ) Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 4 / 23
Komponenty v architektuře SCA Komponenty v architektuře SCA SCA components, composites, bindings/wires Adaptéry/JCA a Service Data Objects Služba je implementována jako komponentový systém jako orchestrace dalších služeb, jako kompozice implementačních komponent, či přímo implementována jako objekt. Způsob implementace může záviset na granularitě, tj. počtu nabízených operací, ( fine-grained jednoúčelové služby vs. coarse-grained super-služby) poskytované funkcionalitě, jejím zaměření a úplnosti, (musí nabízet funkčně podobné a všechny nyní i později potřebné operace) zapouzdření, pro volnou vazbu a znovupoužitelnost, (snažit se mít co nejméně závislostí, zachovat beze-stavovost, atp.) způsobu volání, tj. přístupu a protokolu volání operací. (a/synchronní volání, SOAP přes HTTP/JMS, lokální objekt/rpc, atd.) Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 5 / 23
Rozhodování při návrhu SOA/SCA Komponenty v architektuře SCA SCA components, composites, bindings/wires Adaptéry/JCA a Service Data Objects Fine-grained nebo Coarse-grained služby? Doporučeno používat coarse-grained (business) služby. (implement. komponentami menší granuality implement. fine-grained objekty) Jedna na venek publikovaná služba = jeden business proces. (může být realizována orchestrací dalších podpůrných a technických služeb) S dotazem předávat a s odpovědí vracet co nejvíce informací. (menší počet volání, tj. zátěž sítě, jednodušší správa služeb; větší felxibilita budoucího vývoje, tj. větší možnosti modifikace služeb bez změny jejich interakcí) Jak definovat/rozdělit funkcionalitu do služeb? Operace jedné služby = jedna poskytovaná funkcionalita. (neseskupovat podle (dočasné) souslednosti v BP, ale podle (trvalé) funkční souvislosti; např. naskladnit/vyskladnit zboží, nikoliv navíc tisk skladového listu ) Operace poskytující kompletní funkčnost. (např. všechny create/read/update/delete operace se záznamem, nejen create/read/delete vyžadované systémem, kde je nyní služba používána) Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 6 / 23
SCA komponenta (component) Komponenty v architektuře SCA SCA components, composites, bindings/wires Adaptéry/JCA a Service Data Objects Komponenta nastavuje instanci nějaké implementace a integruji ji do komponentového systému. (implementace použita komponentami s různými parametry a kontextem; např. business rule komponentu lze zapojit různě do různých BPEL procesů) Definice komponenty zahrnuje popis component service interface poskytovaného rozhraní, (popisuje contract, tj. způsob volání komponenty, např. pom. WSDL) references požadovaných rozhraní, (popisuje požadované komponenty/služby pro funkčnost dané komponenty) properties vlastností/parametrů instance, (popisuje konkrétní hodnoty nastavení dané instance v roli dané komponenty) vlastní implementace. (např. typem komponenty Oracle SOA Suite, kódem, externím odkazem, atp.) Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 7 / 23
Komponenty v architektuře SCA SCA components, composites, bindings/wires Adaptéry/JCA a Service Data Objects SCA komponentový systém (composite) Komponenty propojeny do složitějších komponentových systémů. (při hierarchické kompozici jsou systémy také komponenty; Oracle nepodporuje) Komponentový systém v Oracle SOA Suite běží v jednom SCA kontejneru, (pokud má běžet distribuovaně, tak nutno rozdělit na několik systémů) je spouštěn ( deployed ) jako celek. (pokud mají komponenty různý životní cyklus, tak nutno opět rozdělit) je popsán v souboru composite.xml (editovatelný pomocí SOA Composite Editoru v Oracle JDeveloper) (diagram převzat z Design and develop a more effective SOA, Part 5 ) Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 8 / 23
SCA spojení (bindings, wires) Komponenty v architektuře SCA SCA components, composites, bindings/wires Adaptéry/JCA a Service Data Objects Způsob propojení komponent nebo komponentových systémů podle strany spojení, (service binding & reference binding publikace služeb a integrace komp.) podle pozice vzhledem ke kompozici, (default binding/wire, explicit binding between SCA composites, adapters) podle technologie/protokolu propojení. (SOAP over HTTP, SOAP over JCA, RMI, file, etc.) (diagram převzat z Oracle Fusion Middleware Developer s Guide for Oracle SOA Suite 11gR1 ) Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 9 / 23
Adaptéry, architektura JCA Komponenty v architektuře SCA SCA components, composites, bindings/wires Adaptéry/JCA a Service Data Objects Umožňují SCA spojení na existující systémy různých rozhraní. (file, dbs., etc.; ale také packaged /SOAP a legacy rozhraní pro SAP a další) Adaptéry jsou JCA komponenty použitelné v SCA composite. (JCA = Java EE Connector Architecture, což je také interní/ne-soap rozhraní běžných komponent; zapozdřením do composite lze zpřístupnit pomocí SOAP) (diagram převzat z Oracle Fusion Middleware User s Guide for Technology Adapters 11gR1 ) Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 10 / 23
Service Data Objects (SDOs) Komponenty v architektuře SCA SCA components, composites, bindings/wires Adaptéry/JCA a Service Data Objects Java API pro manipulaci s daty různého původu (JSR 235). (XML zdroje, Web Services, RDBMs, EJBs, podnikové IS přístupné přes JCA, atp.) Data v SDO zpřístupněny jako kolekce stromových struktur. (poskytnuty metody pro procházení stromů, čtení (meta)informací, a pro zápis) SDO zpřístupněny pomocí Data Access Service (DAS). (DAS umožňuje získat SDO ze zdroje a uložit modifikované SDO zpět do zdroje) DAS vyžaduje on-line přístup pouze při získání a uložení SDO. (manipulace s SDO může být off-line, jsou to tzv. disconnected data graphs ) SDO doplňuje SCA o standardizovaný přístup k datům. (SCA definuje model sestavení, SDO model přístupu k datům v SOA systémech) (diagram převzat z An introduction to Service Data Objects for PHP ) Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 11 / 23
Přehled komponent a jejich použití v jdeveloperu BPEL Process, Mediator, Business Rule Human Task, Spring Service, Adapter Services 12c BPEL Process orchestruje ostatní komponenty/služby do BP Mediator směruje komunikaci/zprávy mezi komponentami/službami Human Task zprostředkovává komunikaci s lidmi, účastníky procesů Business Rule implementuje rozhodovací pravidla řídící tok procesu Spring Service umožňuje integraci Java (POJO) komponent Adapter zpřístupňuje externí systémy a zdroje BPMN Process provádí BPEL procesy realizující dané BPMN modely (diagram převzat z Oracle SOA Suite 11g: Essential Concepts ) Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 13 / 23
Přehled komponent a jejich použití v jdeveloperu BPEL Process, Mediator, Business Rule Human Task, Spring Service, Adapter Services Tvorba SCA aplikace v nástroji Oracle JDeveloper (diagram převzat z Oracle SCA Composites Visualized By MS Visio ) Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 14 / 23
Přehled komponent a jejich použití v jdeveloperu BPEL Process, Mediator, Business Rule Human Task, Spring Service, Adapter Services Orchestrace služeb a BPEL Process komponenta Orchestruje napojené komponenty/služby pomocí vlastní logiky. (komponenta je vhodná pro implementaci business procesů/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řevoditelné do BPEL, ikdyž to je pak velmi špatně čitelné) (diagram převzat z Oracle SOA Suite 11g: Essential Concepts ) Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 15 / 23
Přehled komponent a jejich použití v jdeveloperu BPEL Process, Mediator, Business Rule Human Task, Spring Service, Adapter Services Integrace služeb a komponenta Mediator Směruje tok XML zprávy mezi komponentami/službami. (směrování může být na základě hlaviček i na základě těla zpráv) Navíc umožňuje provádět XSLT transformace a XML validace. (tj. převádět různé formáty XML dokumentů a ověřovat jejich platnost) Komponenta podporuje také asynchronní volání. ( publish/subscribe, kdy pošle zachycené události příslušným odběratelům) Lze použít např. k virtualizaci služeb, či zachytávání událostí. (při virtualizaci Mediator vystupuje v roli virtualizované služby, které je implementována neznámou nebo např. původně nekompatibilní službou) Rozhodování možno také pomocí Business Rule komponent. (tzn. Mediator může rozhodovat o směrování/transformaci zpráv na základě posouzení hlaviček či těla zpráv pomocí Business Rule komponenty) Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 16 / 23
Přehled komponent a jejich použití v jdeveloperu BPEL Process, Mediator, Business Rule Human Task, Spring Service, Adapter Services Business pravidla a Business Rule komponenta Umožňuje popsat proces rozhodování na základě run-time stavu. (vhodné pro vyjmutí/abstrakci rozhodování z/v BPEL procesu či Mediatoru) Pravidla jako if-them podmínky v rozhodovacích tabulkách. (srozumitelné i pro neprogramátory) Vhodné pro business a často měněné podmínky. (mohou upravovat přímo business analytici, bez nutnosti rekompilace aplikace) (diagram převzat z Oracle SOA Suite 11g: Essential Concepts ) Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 17 / 23
Přehled komponent a jejich použití v jdeveloperu BPEL Process, Mediator, Business Rule Human Task, Spring Service, Adapter Services Zapojení uživatelů a Human Task komponenta Umožňuje interakci SCA aplikace s uživateli. (zapojení daných uživatelů či daných skupin uživatelů do business procesu) Používána samostaně nebo napojena na BPEL proces. (poskytnutí UI klientských službám nebo uživatelské rozhodování v BPEL) Interakce přes BPM Worklist v Oracle SOA Suite, nebo zprávami. (tj. přes předdefinované webové rozhraní nebo např. email, SMS, jabber, atp.) (diagram převzat z Oracle SOA Suite 11g: Essential Concepts ) Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 18 / 23
Přehled komponent a jejich použití v jdeveloperu BPEL Process, Mediator, Business Rule Human Task, Spring Service, Adapter Services Integrace Java aplikací a Spring Service Umožňuje začlenit Plain Old Java Objects (POJOs). (Spring SCA kontext mapuje třídy na SCA poskytovaná/požadovaná rozhraní) Alternativa k integraci tříd jako Web Services přes JAX-WS API. (takto můžeme začlenit POJO přímo v rámci JCA, bez nutnosti HTTP, atd.) Komponentu možno použít v SCA či publikovat jako EJB/WS. (navíc JavaBeans v Spring kontextu mohou používat ostatní komponenty SCA) (diagram převzat z Oracle Fusion Middleware Developer s Guide for Oracle SOA Suite 11gR1 ) Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 19 / 23
Přehled komponent a jejich použití v jdeveloperu BPEL Process, Mediator, Business Rule Human Task, Spring Service, Adapter Services Adapter Services pro externí přístup Umožňují definovat externí rozhraní SCA aplikace. (poskytovaná/požadovaná rozhraní, tj. exposed services / external references ) Převádějí požadavky/odpovědi z/do formátu cízích systémů. (např. CSV soubor na vstupní XML nebo výstupní XML na záznam v log souboru) (diagram převzat z Oracle SOA File Adapter Services ) Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 20 / 23
Služby coarse-grained, seznam operací funkčně zaměřený a úplný. SCA poskytuje mode sestavení, SDO model práce s daty v SCA. Oracle SOA Suite nabízí pro SCA komponenty různých typů. SCA aplikace může komunikovat přes adaptéry nebo jako Web Service. Příště? Integrace služeb a komponenta Mediator (integrace služeb, EDA a EDN, použití a konfigurace komponenty, tvorba směrovacích pravidel,... ) Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 22 / 23
Poděkování Tento předmět byl podpořen projektem MŠMT CZ.1.07/2.2.00/15.0163 Vzdělávání v IT pro praxi. Marek Rychlý Service Component Architecture a komponenty Oracle SOA Suite Přednáška pro IOA, 15. října 2014 23 / 23