Koodistoeditorin toteutuksen lähtökohtia: KaPA-koodistopalvelu ja REST-rajapinnat

Samankaltaiset tiedostot
Koodistoeditorin tavoitteet ja tilannekatsaus

Kansallinen koodistojen siirtoformaatti

Järjestelmäarkkitehtuuri (TK081702)

Yhteinen kansallinen koodistopalvelu ( Suomi.fi koodistopalvelu )

Yhteentoimivuusalusta: Miten saadaan ihmiset ja koneet ymmärtämään toisiaan paremmin?

KADA (Drupal 7) migraatio uuteen (versioon) webiin

Yhteentoimivuusalusta ja sen hyödyntäminen kuntien/maakuntien taloushallinnossa Petri Tenhunen, VRK

Tiedonsiirto- ja rajapintastandardit

Tietojärjestelmien integroiminen hyödyntämällä palvelupohjaista arkkitehtuuria. CASE: Metropolia. Jaakko Rannila & Tuomas Orama 1

REST rajapintana mobiilikehityksessä

Yhteentoimiva.suomi.fi - palvelukokonaisuuden ja työkalujen esittely

Suomi.fi-palvelutietovaranto

Koodistopalvelun REST-rajapinnat

Valtion uudet yhteentoimivuuspalvelut: dataportaali, palvelutietovaranto ja yhteentoimivuus.fi v.2

Semanttinen Finlex Arttu Oksanen ( )

Saavutettavuus tietojärjestelmien hankinnoissa

Arkkitehtuuri. Ylätason sovellusarkkitehtuuri

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

Yhteentoimivuusvälineistö

Avoin data palvelukehittämisen raaka-aineena Service Day,

Kuntien integraatioalusta. Hannes Rauhala

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

Taltioni teknisen alustan arviointi

UNA PoC-yhteenveto CGI Aino Virtanen

ehoks: tietomalli ja rajapinta

Tekninen alusta. Tavoitteet ja näkökulmia maankäyttöpäätöksiin Jani Kylmäaho, osahankepäällikkö Maanmittauslaitos

Kansallinen Palvelutietovaranto (PTV)

KODAK EIM & RIM VIParchive Ratkaisut

DataLake-hanke - AWS , tietohallinto, Matti Valli, Pasi Porkka

Suomi.fi Palvelutietovaranto (PTV) Mitä, miksi, miten ja milloin?

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

Viasys VDC Stream Mallipohjaista projektinhallintaa. Tapani Parmanen ja Mia Rantakari Vianova Systems Finland Oy

Rajapintakuvaus Liikenneluvat

Käytännön haasteita ja ratkaisuja integraation toteutuksessa. Jukka Jääheimo Teknologiajohtaja Solita Oy

Sähköisen asioinnin arkkitehtuuri

Infran omaisuudenhallinnan rajapintahanke (ja tietoportaali) Saara-Maija Pakarinen Espoon kaupunki SKTY syyspäivät 2017

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

Varda varhaiskasvatuksen tietovaranto

LAS- ja ilmakuva-aineistojen käsittely ArcGIS:ssä

Projektinhallintaa paikkatiedon avulla

Suvi Remes Miika Alonen Petri Mustajoki Totti Tuhkanen

Kansallinen ASPAtietojärjestelmä

Kansallinen PHR: projektin tilannekatsaus. Konstantin Hyppönen, Kanta-palvelut, Kela ATK-päivät, Lahti

Toimittaja Looginen väylärakenne + kirjastot. Kalle Launiala, ProtonIT Oy kalle.launiala@protonit.net

Kuntien Kansalliseen palveluarkkitehtuuriin liittyminen. Kunta-KaPA

Kanta PHR:n CapabilityStatement ja REST-API. Eeva Turkka

Trimble Feedback Mobile app ja rajapinnat Kuvaus

Suomi.fi-palvelutietovaranto Kaikki oleellinen julkishallinnon palveluista yhdessä paikassa

Copyright Observis Oy All rights reserved. Observis Oy Ville Kanerva, CTO Heikki Isotalus, COO Datasta tietoa

Joustotilat Tampereella

Projektin tilannekatsaus

Yhteentoimivuusalusta ja Sanastot-työkalu

Kansallinen palveluväylä

Julkisen rajapinnan testausohje Swaggerin kautta

Valppaan asennus- ja käyttöohje

Käyttäjähallintapalvelun REST-rajapinnat

Web Service torilla tavataan!

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

Toiminnalliset ja ei-toiminnalliset vaatimukset Tunnus (ID) Vaatimus Vaatimuksen

Avoimen rajapinnan hallinta (Tilaajan hallitsema rajapinta)

Katsaus tietoarkkitehtuurityöhön

ONKI-projekti tuo ontologiat käyttöön sisällönkuvailussa

Anu Kantola (Luke) Minna Kallio (SYKE) Luonnonvarakeskus.

Kansallinen palveluarkkitehtuuri TUNNISTUSPALVELU INFO

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Tutkimuksen pitkäaikaissaatavuuden palvelukokonaisuus

W3C-teknologiat ja yhteensopivuus

SmartShip Connect Lite lisäosa WooCommerce alustalle (c) Webbisivut.org

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

Sivuston tiedotmysiteworthcheck.com

Varsinais-Suomen palveluverkkotyöryhmä. Kokous VII Varsinais-Suomen liitto

Tilastokeskuksen avoin data. Automaattisen talousraportoinnin koulutus Kim Huuhko, Tilastokeskus

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

REST an idealistic model or a realistic solution?

IoT-järjestelmän ja ulkovalaistuksen ohjauksen hankinta -markkinavuoropuhelutilaisuus

Sivuston tiedotprintersupportnu mbercare.com

Miten Linked Data aineistoja tuotetaan ja. Semanttisen laskennan tutkimusryhmä SeCo Aalto-yliopisto

Yhteentoimivuusvälineistö: Sanastoeditorin esittelytilaisuus klo Väestörekisterikeskus, Lintulahdenkuja 4, Helsinki

Käytännön todistusvoimaa suostumushallintapalvelu koulutustiedoille. YTI-hankkeen päätösseminaari

Kuntien yhteentoimivuusseminaari. Tietomallien laatiminen Taina Nurmela projektipäällikkö, Helsingin kaupunki

SNOMED CT KANSALLINEN JAKELUKESKUS (NRC) JA KANSALLISET KÄYTTÖKOHTEET

Oskarin avulla kaupungin karttapalvelut kuntoon

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Paikkatietojen yhteiskäyttö - mitkä mahdollisuudet!

Federoitu keskitetty sovellus

Yhteentoimivuutta edistävien työkalujen kehittäminen - JulkICTLab pilottiehdotus


Yhteistyössä Kansalliseen Maastotietokantaan Risto Ilves

SOA & Ajax Sanahelinää vai toimivaa käytäntöä sähköisessä asioinnissa? Fenix hankejohtaja Harri Juuti Projektipäällikkö Teemu Karvonen

Tietovarannot. Anna Eteläaho. Analyysi ja yhteenveto avoimen datan innovaatiokilpailun kilpailutöistä. Intressiryhmän 2. kokous 27.2.

Sosiaalihuollon asiakastiedon arkiston validointipalvelu. Käyttöohje

Uusi työkalu toimitusketjun hallintaan ja työn ohjaukseen

Järjestelmäarkkitehtuuri (TK081702) Lähtökohta. Integroinnin tavoitteet

10 Nykyaikainen WWW-arkkitehtuuri

A TIETORAKENTEET JA ALGORITMIT

ASTE Avoin sosiaali- ja terveydenhuollon kehitysalusta

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko

Kuntasektorin yhteineset viitearkkitehtuurit Tiedon- ja asianhallinta Johtamisjärjestelmä

Kanta PHR:n CapabilityStatement ja REST-API. Eeva Turkka

Rajapintapalvelujen INSPIRE-yhteensopivuus

Transkriptio:

Koodistoeditorin toteutuksen lähtökohtia: KaPA-koodistopalvelu ja REST-rajapinnat Yhteinen tiedon hallinta (YTI) -hanke Antti Tohmo antti.tohmo@gofore.com Kansallinen koodistoeditori -työpaja 6.9.2017 Väestörekisterikeskus, Lintulahdenkuja 4, Helsinki

KaPA-koodistopalvelu

KaPA-koodistopalvelu Tarjoaa modernit ja ajantasaiset koodistorajapinnat Suomi.fipalveluiden käyttöön. Osa kansallisen palveluarkkitehtuurin toteutusta, KaPA. Aggregoi muiden tuottamaa avointa koodistodataa. Selkeät rajapinnat, yhtenevä formaatti. Muodostaa linkityksiä eri koodistoissa olevien koodien välille.

Miksi tehtiin KaPA-koodistopalvelu? Eri palvelut toteuttaneet omat koodistopalvelunsa. Tiedot eivät välttämättä yhtenäisessä muodossa. Ratkaisut eivät ole yleiskäyttöisiä, rajapinnat harvoin julkisia. Hankala ylläpidettävyys ongelmana kaikilla. Tieto ei välttämättä ajantasaista, yleinen ongelma jopa lähteissä. Kertyy paljon turhaa duplikaattityötä, etenkin uusissa projekteissa. Ongelma on kuitenkin ratkaistavissa yleisellä tasolla, sillä data avointa. KaPA-koodistopalvelua toteuttaessa kansallisen koodistopalvelun tarpeellisuus tuli selväksi.

KaPA-koodistot

KaPA-koodistot Palvelu ei itsessään tuota tai hallinnoi dataa, lähteinä eri organisaatiot. Tarjoaa vain voimassaolevat koodistot, ei historioitua dataa. Lähteissä saatavilla usein vain tämänhetkinen voimassaoleva data. Lukuisia tiedonlähteitä eri koodisto-aineistoille. Posti, Avoindata, Kuntaliitto, YritysSuomi, Tilastokeskus, YTJ, muut koodistopalvelut, jne. Integraatioita eri jakelumenetelmiin ja formaatteihin. Excel, CSV, JSON, tekstitiedostot, verkkosivustot, rajapinnat. Kukin tapaus vaatii spesifin ja yksilöidyn käsittelyn. Koodisto-tiedoille ei ole siis tällä hetkellä olemassa kansallista yhtenäistä rajapintaa tai formaattia. YTI ratkaisee tämän.

Toteutetuttuja koodistorajapintoja /api/v1/postalcodes/ - Postikoodit lähde: Posti /api/v1/postmanagementdistricts/ - Postin hallintoalueet lähde: Posti /api/v1/municipalities/ - Kunnat lähde: AvoinData /api/v1/regions/ - Maakunnat lähde: AvoinData /api/v1/healthcaredistricts/ - Sairaanhoitopiirit lähde: Kuntaliitto / Tilastokeskus /api/v1/electoraldistricts/ - Vaalipiirit lähde: AvoinData /api/v1/streetaddresses/ - Katuosoitteet lähde: Posti /api/v1/businesservicesubregions/ -Yrityspalvelujen seutualueet lähde: YritysSuomi /api/v1/businessids/ -Y-tunnukset lähde: YTJ / PRH

KaPA-koodistopalvelun arkkitehtuuri

Mikropalveluarkkitehtuuri Palvelu hajautettu pienemmiksi kokonaisuuksiksi, mikropalveluiksi. Vastakohta monoliitti-mallille, jossa yksi sovellus toteuttaa kaiken logiikan, eikä välttämättä tarjoa rajapintoja lainkaan. Tavoitteena ollut kestävä malli, joka tarjoaa skaalautuvan ja ylläpidettävän ratkaisun. Mikropalvelut keskustelevat toistensa kanssa HTTP-rajapintojen kautta. Kokonaisuus muodostuu mikropalveluiden vuorovaikutuksesta.

Arkkitehtuuri-kuvaus

Teknologia-stack Java Ohjelmointikieli, jolla KaPA-koodistopalvelu on toteutettu Spring Boot Framework nopeaan Web-sovelluskehitykseen Jersey Framework RESTful-palveluiden rakentamiseen Jackson JSON-serialisointikirjasto Maven Sovellusten build-hallinnointi PostgreSQL Relaatiotietokanta ElasticSearch Hakutietokanta Docker Virtualisointimekanismi, jolla voidaan ajaa kontitettuja -palveluita Swagger Työkalu ja spesifikaatio RESTful-rajapintojen dokumentaatioon

REST-rajapinnat

REST-rajapinnat 1/2 REST Best Practices Resurssien ja parametrien nimeämiskäytännöt. HTTP-protokollan noudattaminen. Resursseja käytetään HTTP verbein: GET, POST, PUT, PATCH, DELETE. https://tinyurl.com/rest-periaatteet Selkeys ja helppokäyttöisyys Hyödynnetään standardeja. Rajapinnat sekä paluuarvot ihmisen luettavassa muodossa. JSON JavaScript Object Notation http://json.org/ Yksikäsitteisyys Resursseihin viitataan URI-osoitteella. Suositaan loogisia ja ymmärrettäviä nimiä hankalaselkoisten generoitujen nimien sijaan.

REST-rajapinnat 2/2 Listarajapintojen geneeriset toiminnot Hakutoiminnot nimen, koodin tai muun merkitsevän arvon perusteella. Sivutus pagesize ja from parametreillä. Metatiedot koodeille ja koodistoille KaPA-palvelut ovat määritelleet tarpeet KaPA-koodistopalvelussa. Ei kattavaa metatieto-luokittelua, tarjolla vain lähteistä poimitut avainarvot. Rajapintojen hierarkian pelkistäminen Linkitetyt resurssit kuvataan URI-viittein, tiedot laajennettavissa expand - parametrilla.

Rajapintojen dokumentaatio Swagger-spesifikaatio, http://swagger.io/. Rajapintojen listaus ja kuvaus. API-arvojoukkojen kuvaukset. Dokumentaatio toteutetaan Java-koodissa, rajapintojen ja niihin liittyvien luokkien toteutuksen yhteydessä. Käytetty mekanismi: Java-annotaatiot. Helposti ylläpidettävä, pysyy ajantasalla rajapinta-kehityksen rinnalla. Jakelu automatisoitu. Swagger UI visualisointi. Saatavilla kustakin ajavasta ympäristöstä kohdistetusti. Tarjoaa rajapintojen selauksen, helpon testikäytön ja kokeilun, Try it out!

Swagger-demo

{ "swagger" : "2.0", "info" : { "description" : "Code List Service - Public API Service - Spring Boot microservice.", "version" : "v1", "title" : "Code List Service - Public API Service", "termsofservice" : "http://opensource.org/licenses/mit", "contact" : { "name" : "Code List Service by the Population Register Center of Finland", "url" : "http://palveluvayla.fi/", "email" : kapa@vrk.fi }, "license" : { "name" : "MIT", "url" : http://opensource.org/licenses/mit } }, "host" : "localhost", "basepath" : "/cls-api/api", "tags" : [ { "name" : "api", "description" : "Code List Service - Public API Service }, { "name" : "businessids", "description" : "Operations about businessids. }, { "name" : "businessservicesubregions", "description" : "Operations about businessservicesubregions. }, { "name" : "electoraldistricts", "description" : "Operations about electoraldistricts. }, { "name" : "healthcaredistricts", "description" : "Operations about healthcaredistricts. }, { "name" : "hello", "description" : "Example public hello operation. }... } swagger.json

Swagger UI

Rajapinta esimerkkejä

Rajapinta-esimerkkejä https://<koodistopalvelu>/api/v1/postalcodes/ https://<koodistopalvelu>/api/v1/postalcodes/48720/ https://<koodistopalvelu>/api/v1/postalcodes/48720/municipality/ https://<koodistopalvelu>/api/v1/streetaddresses/municipality/085/saks alanraitti/42/

Rajapinnat: hakutoiminnot Lista-rajapinnat tukevat spesifejä hakutoimintoja. Haut toteutettu prefix-tyyppisesti. Esimerkki: https://<koodistopalvelu>/api/v1/postalcodes/?code=4872 Palauttaa kaikki 4872 -alkuiset postikoodit.

Rajapinnat: sivutus Lista-rajapinnat tukevat sivutusta. pagesize -parametri määrää sivun koon. from -parametri määrää sivutuksen aloitusindeksin. Esimerkki: https://<koodistopalvelu>/api/v1/municipalities/?pagesize=50&from=10

Rajapintojen pelkistys https://<koodistopalvelu>/api/v1/postalcodes/48720/ Hierarkiset arvot palautetaan pelkistetyssä URI-muodossa. https://<koodistopalvelu>/api/v1/postalcodes/48720/?expand=municipali ty,postmanagementdistrict expand -parametrilla saadaan avattua spesifit hierarkiset arvot paluuarvoihin. https://<koodistopalvelu>/api/v1/postalcodes/48720/municipality/ Postinumeroa vastaava kunta linkitettynä resurssina.

YTI-toteutus

KaPA YTI KaPA-koodistopalvelun koodipohja forkattu soveltuvin osinyti-hankkeen Koodistoeditorin lähtökohdaksi. Julkaistu avoimena: https://github.com/vrk-yti 7 repositorion kokonaisuus (mikropalvelut, konfiguraatiot, middleware). KaPA-koodistopalvelun puutteet YTI-näkökulmasta Tarvitaan yhtenäinen ja laajennettava tietomalli nykyisen arkkitehtuurin päälle. Tulee toteuttaa käyttöliittymät ja rajapinnat myös koodistodatan ja käyttäjäryhmien hallinnointiin. Datan historiointi ja versiointi. Hyvien rajapintojen kautta mahdollistetaan datan monipuolinen hallinnointi ja jakelu, sekä siihen kytkeytyvien sovellusten mutkaton kehitys.

Kiitos! yhteentoimivuus@vrk.fi yhteentoimivuus.slack.com