7 Viestipohjaisten yritysjärjestelmien suunnittelumallit Hohpe G., Woolf B.: Enterprise Integration Patterns. Addison-Wesley 2004. Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1
Viestinvälitykseen perustuvat yritysjärjestelmät (Hohpe & Woolf: Enterprise Integration Patterns) Viesti Kanava Reititys Muunnos Sovellus Sovellus Sovitin Sovitin Hallinta ja monitorointi Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 2
Esimerkki: Tilausten käsittely Asiakkaat Varasto Jälleenmyyjä TKS Valmistajat Kuljetusliike Vaatimuksia: - Asiakkaat voivat lähettää tilauksia webin kautta tai faxilla - Tilaus käsitellään monessa vaiheessa: varastotarkistus, toimitus, laskutus - Integrointi olemassaoleviin sovelluksiin: web-client, faxijärjestelmä, laskutus-, toimitus-, ja varastojärjestelmät Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 3
Tilausten vastaanotto Viesti Kanava Reititys Muunnos Sovellus Sovellus Sovitin Sovitin Hallinta ja monitorointi Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 4
Tilausten vastaanotto: useita lähteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen Fax vastaanottaja Kanavasovitin Viestimuuntaja Fax -> Kanoninen Julkaisija-tilaaja kanava Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 5
Viestiportti (Messaging Gateway) Synkroninen, blokkaava: Sovellus Viestiportti Viestijärjestelmä - erottaa sovelluslogiikan viestinvälityksestä - tarjoaa sovellusaluekohtaisen API:n sovelluksen käyttöön - helposti vaihdettavissa palvelupyyntö viestin lähetys tuloksen vastaanotto prosessointi Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 6
Tilausten vastaanotto: useita lähteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen Fax vastaanottaja Kanavasovitin Viestimuuntaja Fax -> Kanoninen Julkaisija-tilaaja kanava Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 7
Kanavasovitin (Channel Adapter) Löyhä sovitinliitos: Sovitin ei integroidu suoraan sovellukseen vaan välillisesti esim. - sovelluksen yleisen API:n kautta - tarkkailemalla sovelluksen aiheuttamia tapahtumia - tarkkailemalla sovelluksen tuottamia tiedostoja tai tietokantoja (esim. tietokantatriggeri) Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 8
Tilausten vastaanotto: useita lähteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen Fax vastaanottaja Kanavasovitin Viestimuuntaja Fax -> Kanoninen Julkaisija-tilaaja kanava Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 9
Kahdenvälinen kanava (Point-to-Point Channel) Voi olla useita potentiaalisia vastaanottajia, mutta kanava itse takaa, että vain yksi vastaanottaja saa kunkin viestin Mahdollisesta vastaanottajan valinnasta huolehtii kanava, vastaanottajien ei tarvitse koordinoida keskenään Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 10
Tilausten vastaanotto: useita lähteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen Fax vastaanottaja Kanavasovitin Viestimuuntaja Fax -> Kanoninen Julkaisija-tilaaja kanava Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 11
Kanoninen tietomalli (Canonical data model) tiedon esitys, joka on riippumaton sovelluksista sovellusriippuvat esitykset muunnetaan kanoniseen jos sovelluksen esitysmuoto muuttuu, riittää muuttaa muuntaja X -> kanoninen tai kanoninen -> X Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 12
Viestimuuntaja (Message Translator) Muuttaa formaatin tai rakenteen muuttamatta informaatiota Erillinen komponentti Viestimaailman Sovitin (Adapter): muuttaa viestiformaatin XML-pohjaisten viestien muuntaminen keskenään: XSLT XML <-> jokin muu formaatti: XML jäsentäjät ym. Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 13
Tilausten vastaanotto: useita lähteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen Fax vastaanottaja Kanavasovitin Viestimuuntaja Fax -> Kanoninen Julkaisija-tilaaja kanava Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 14
Julkaisija-tilaaja kanava (Publisher- Subscriber Channel) Viesti Tilaaja Julkaisija Julkaisijalta tuleva viesti kopioidaan kaikille tilaajille Kukin tilaaja saa jokaisen viestin kerran Tilaajat eivät tunne toisiaan eivätkä julkaisijaa Julkaisija ei tunne tilaajia Tarkkailija-suunnittelumallin idea viestimaailmassa (tapahtumaviestejä) Voi olla myös monta julkaisíjaa Tilaaja Tilaaja Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 15
Reititys Viesti Kanava Reititys Muunnos Sovellus Sovellus Sovitin Sovitin Hallinta ja monitorointi Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 16
Tilausten käsittely tarkista varasto tarkista asiakas [OK] Poikkeusten käsittely toimita tavara lähetä lasku Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 17
Tilausten käsittely Asiakashallinta Sisältöperustainen reititin kelvollinen tilaus Laskutus Toimitus Varastohallinta Yhdistäjä epäkelpo tilaus Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 18
Yhdistäjä (Aggregator) Tilallinen komponentti Kerää koosteita sisääntulevista viesteistä Pitää yllä vaillinaisia koosteita Jos uusi viesti tekee jostakin vaillinaisesta koosteesta täydellisen, koosteviesti lähetetään eteenpäin Kooste ei ole välttämättä unioni (esim. valitaan paras tai ensimmäinen sopiva, muut unohdetaan) Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 19
Tilausten käsittely Asiakashallinta Sisältöperustainen reititin kelvollinen tilaus Laskutus Toimitus Varastohallinta Yhdistäjä epäkelpo tilaus Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 20
Sisältöperustainen reititin (Content-based Router) Vastaanottaja/kanava määrätään viestin sisällön perusteella (esim. jonkin kentän arvo tai esiintyminen) Ongelma: reititin tuntee vastaanottajat ja riippuu niistä Mahdollinen ratkaisu: vastaanottajat informoivat (dynaamisesti) reititintä millaisia viestejä haluavat (Dynamic Router) Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 21
Hallinta ja monitorointi Viesti Kanava Reititys Muunnos Sovellus Sovellus Sovitin Sovitin Hallinta ja monitorointi Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 22
Älykäs Edustaja (Smart Proxy) Sovellus1 Pyyntö Vastaus1 Älykäs Edustaja Pyyntö Palvelun tarjoaja Sovellus2 Vastaus2 Vastaus Sovellukset lähettävät palvelupyyntöjä Smart Proxy toimii palvelun pyytäjien ja tarjoajan välissä SP pitää kirjaa pyytäjistä ja ohjaa vastauksen oikealle sovellukselle SP voi kerätä metatietoa viesteistä (esim. aika) ja lähettää sen valvontayksikölle Kontrolli Metatieto Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 23