Ydinpalveluiden (käyttäjä, käyttöoikeus, potilas).NET-palvelutoteutus: CoreServiceDemo PlugIT-loppuseminaari Koulutustyöpaja 1: Avoimet ohjelmistorajapinnat Heli Mäki, HIS-tutkimusyksikkö / Kuopion yliopisto
Toteutuksesta Sovelluskehitin:MS Visual Studio.NET 2003 Sovellustyyppi:ASP.NET Web Application Ohjelmointikieli:C# Tietokanta:MS Access ODBC-tietokantarajapinta Rajapinta luokka Operaatio metodi
Luokat CoreServiceDemo.aspx Global.asax AuthenticateUser AuthorizationAccess UserIdentifyProfile UserProfileAccess PatientIdentifyProfile PatientProfileAccess Checker DatabaseConnector apuluokat rajapinnat toteuttavat luokat sovelluskehittimen automaattisesti generoimat luokat
CoreServiceDemo.aspx-luokka Sovelluskehittimen automaattisesti generoima Nimen alkuosa sama kuin projektille annettu nimi Toteuttaa sovelluksen käyttöliittymän (Web Forms page) Ydinpalvelu ei tarvitse graafista käyttöliittymää, joten luokkaan ei tarvitse lisätä mitään toiminnallisuutta.
Global.asax-luokka Sovelluskehittimen automaattisesti generoima Reagoi sovellustason tapahtumiin Sisältää valmiiksi metodit: –Application_Start –Session_Start –Application_BeginRequest (CoreServiseDemo:ssa toteutusta vain tähän) –Application_EndRequest –Application_AuthenticateRequest –Application_Error –Session_End –Application_End Lisäksi erilliseen metodiin on toteutettu if-else-rakenne, jossa luodaan ilmentymä kutsutun rajapinnan toteuttavasta luokasta sekä kutsutaan operaation toteuttavaa metodia
Tietokanta CoreDemoKanta-tietokannan tietokantataulut:
Esimerkki: CoreServiceDemo PatientProfileAccess GetProfile (1/5) palvelupyyntö: PatientProfileAccess GetProfile
Esimerkki: CoreServiceDemo PatientProfileAccess GetProfile (2/5) Global.asax –Application_BeginRequest lukee palvelupyynnön (XmlDocument-tyyppiseksi) XML-dokumentiksi kutsumalla metodia streamToXmlDocument luo tietokantayhteyden (OdbcConnection) tarkistaa (Checker-luokka) XML-dokumentista, että se sisältää –request-elementin, jolla on lapsielementtejä –interface-elementin, joka sisältää tekstiä –method-elementin, joka sisältää tekstiä lukee interface- ja method-arvot kutsuu getResponseXmlDoc-metodia –getResponseXmlDoc kutsuu interface- ja method-arvojen perusteella PatientProfileAccess- luokan getProfile-metodia
Esimerkki: CoreServiceDemo PatientProfileAccess GetProfile (3/5) PatientProfileAccess –getProfile tarkistaa (Checker-luokka) ja lukee XML-dokumentista coupon- elementin sisällön tarkistaa, että kuponki on varmennettu tarkistaa (Checker-luokka) XML-dokumentista accessProfile-elementit muodostaa vastauksen alkuosan käy läpi XML-dokumentista jokaisen accessProfile-elementin: –lukee profiilin tunnisteen (id-attribuutin arvon) –lukee haettavat ominaisuudet (trait-elementtien id-attribuuttien arvot) –hakee tietokannasta potilaan tiedot profiilin tunnisteella –lisää vastaukseen profile-elementin, jonka id-attribuutin arvoksi luettu profiilin tunniste –lisää profile-elementtiin jokaista luettua ominaisuutta kohti trait-elementin, jonka id-attribuutin arvoksi ominaisuus ja sisällöksi tietokannasta haettu arvo lisää vastaukseen loppuosan muuntaa vastauksen XML-dokumentiksi ja palauttaa sen
Esimerkki: CoreServiceDemo PatientProfileAccess GetProfile (4/5) Global.asax –getResponseXmlDoc palauttaa getProfile-metodilta saadun vastauksen (XML-dokumentti) –Application_BeginRequest muuntaa getResponseXmlDoc-metodilta saadun vastauksen merkkijonoksi ja lähettää sen vastauksena palvelupyyntöön
Esimerkki: CoreServiceDemo PatientProfileAccess GetProfile (5/5) vastaus: Meikäläinen Matti Kuopio Oulu
Mistä löytyy? Rajapinnat Toteutukset Referenssitoteutukset Käyttäjä-, käyttöoikeus- ja potilas-ydinpalvelut: NETCommonService –sovellus + dokumentaatio + lähdekoodi (zip)