X-Road ja WFS-rajapinnat, uudet APIt Pekka Latvala 20.11.2015, KaPA ja paikkatietoinfrastruktuurin kärkiteeman työpaja
Agenda Palveluväylä Oman palvelun liittäminen palveluväylään Sovitinpalvelu -sanomat WFS-kyselyt palveluväylässä Uudet APIt
Palveluväylä XML, JSON yms. Sovitinpalvelin #1 Sovitinpalvelin #2 Palveluväylä XML, JSON yms. Palvelin Sovitinpalvelu Tietojärjestelmä Liityntäpalvelin
Oman palvelun liittäminen palveluväylään Kun tietojärjestelmä liitetään osaksi palveluväylää, tulee tätä varten luoda sovitinpalvelu, joka muuntaa palvelun käyttämät viestit palveluväylässä käytettyyn -muotoon ja takaisin Omat esimerkkipalvelut tehty xrd4j-kirjaston pohjalta Java-pohjainen, avoimen lähdekoodin kirjasto https://github.com/petkivim/xrd4j https://github.com/petkivim/x-road-adapter-example Kehitteillä on myös avoimen lähdekoodin REST Gateway - komponentti REST-tuen toteuttamiseksi https://github.com/educloudalliance/xroad-rest-gateway
Sovitinpalvelun vaatimukset Sovitinpalvelun tulee kyetä lähettämään ja vastaanottamaan -sanomia, jotka ovat X-Roadin tiedonsiirtoprotokollan mukaisia Tietojärjestelmien viestit pitää muuntaa kahteen suuntaan, palveluiden käyttämästä muodosta :iin ja takaisin X-Roadin kautta julkaistavilla palveluilla tulee olla luotuina WSDL-rajapintakuvaukset WSDL (Web Services Description Language) on XMLpohjainen kieli, jolla kuvataan verkkopalveluiden rajapinnat.
-viestit (Simple Object Access Protocol) XML-pohjainen tiedonvälitysprotokolla
-viestit - Header
-viestit - Body
WSDL-kuvauksen osia <wsdl:types> - Viestien kuvaus XML Schema muodossa <wsdl:message> - (wsdl 1.1) Viestin nimi <wsdl:porttype> - Operaatioiden input/output määrittelyt <wsdl:binding> - Operaatiot, -binding tyyli, siirtoprotokolla <wsdl:service> - Palvelun endpointin osoite
Sovitinpalvelun toteutusvaihtoehdot Palvelin Tietojärjestelmä Sovitinpalvelu Liityntäpalvelin Vaihtoehto 1 Sovitinpalvelu toteutetaan suoraan osaksi liitettävää järjestelmää Vaihtoehto 2 Sovitinpalvelu on erillinen komponentti samalla palvelimella Vaihtoehto 3 Sovitinpalvelu on erillinen komponentti omalla palvelimellaan
Palvelun lisääminen liityntäpalvelimelle Palvelun lisääminen liityntäpalvelimelle tapahtuu X-Roadin ylläpitoliittymän kautta Palvelut lisätään alijärjestelmiin WSDL-kuvaksen osoitteen määrittäminen Käyttöoikeuksien määrittäminen Käyttöoikeudet palveluihin annetaan alijärjestelmille
WFS-kyselyt palveluväylässä Sovitinpalvelin #1 Sovitinpalvelin #2 Palveluväylä FMI WFS WFS Get / Post GTK WFS Server-palvelu XML Client-palvelut WFS Get / Post 1. Käyttäjä lähettää WFS Get / Post kyselyjä client-palveluihin, joissa ne paketoidaan -viesteiksi 2. -kyselyt lähetetään palveluväylään liityntäpalvelimelle mmltest01 NLS WFS Käyttäjä Palvelin Tietojärjestelmä Sovitinpalvelu Liityntäpalvelin 3. Palveluväylä lähettää viestit eteenpäin mmltest02-liityntäpalvelimelle 4. Palveluväylä välittää -viestit sovitinpalveluun, jossa ne muunnetaan takaisin WFS Get / Post muotoon 5. WFS-muotoiset viestit lähetetään taustapalveluihin, ja niiden palauttamat vastaukset paketoidaan -viesteiksi. Kyselyjen vastausviestit kulkeutuvat takaisin client-palveluihin 6. Clienteissa -paketoinnit puretaan ja taustapalveluiden palauttamat XML-viestit lähetetään käyttäjälle
Uudet APIt Tarkoituksena WFS- ja WMS-kyselyjen yksinkertaistaminen ja geokoodauksen tuominen osaksi kyselyitä Käyttäjä tekee HTTP-kyselyt polkuparametrimuodossa WFS (esimerkki) http://86.50.169.141/kohde/kiinteisto/kirkkonummi/geodeetinrinne/2/50/epsg:3067 /kohde/[kohdetyyppi]/[kunta]/[katunimi]/[katunumero]/[hakusäde]/[koordinaattijärjestelmä] WMS (esimerkki) http://86.50.169.141/kartta/maastokartta/helsinki/mannerheimintie/2/1000/1024/epsg:3067 /kartta/[tasonnimi]/[kunta]/[katunimi]/[katunumero]/[leveys_m]/[resoluutio]/[koordinaattijärjestelmä] Client-palveluiden eteen on luotu Apache-rewrite pohjaiset proxyt, joihin kyselyt tehdään polkuparametrimuodossa Proxyt uudelleenkirjoittavat kyselyt kyselyparametrimuotoon ja lähettävät ne clientpalveluun, joka geokoodaa osoitteen ja muodostaa -kyselyn, joka lähetetään palveluväylään
Uudet APIt http://x.x.x.x/kohde/kiinteisto/kirkkonummi/geodeetinrinne/2/50/epsg:3067 Apache rewrite WFS vastausviesti Client WFS Post (osoite) Geokoodauspalvelu WFS vastausviesti (koordinaatit) Palveluväylä Sovitinpalvelin WFS XML
Kiitos