120 likes | 208 Views
Ydinpalveluiden (käyttäjä, käyttöoikeus, potilas) .NET-palvelutoteutus: CoreServiceDemo. PlugIT-loppuseminaari 31.8.2004 Koulutustyöpaja 1: Avoimet ohjelmistorajapinnat Heli Mäki, HIS-tutkimusyksikkö / Kuopion yliopisto. Toteutuksesta. Sovelluskehitin: MS Visual Studio .NET 2003
E N D
Ydinpalveluiden (käyttäjä, käyttöoikeus, potilas) .NET-palvelutoteutus:CoreServiceDemo PlugIT-loppuseminaari 31.8.2004 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 sovelluskehittimen automaattisesti generoimat luokat rajapinnat toteuttavat luokat apuluokat
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: CoreServiceDemoPatientProfileAccess GetProfile (1/5) • palvelupyyntö: <?xml version="1.0" encoding="UTF-8"?> <request xmlns="urn:plugit:CommonServices"> <interface>PatientProfileAccess</interface> <method>GetProfile</method> <param> <coupon>81935272</coupon> <accessProfile id=”111111-111A"> <trait id="sukunimi" /> <trait id="etunimet" /> <trait id=”kotikunta" /> <trait id="N.postitoimipaikka" /> </accessProfile> </param> </request>
Esimerkki: CoreServiceDemoPatientProfileAccess 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: CoreServiceDemoPatientProfileAccess 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: CoreServiceDemoPatientProfileAccess 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: CoreServiceDemoPatientProfileAccess GetProfile (5/5) • vastaus: <?xml version="1.0" encoding="UTF-8"?> <response xmlns="urn:plugit:CommonServices"> <profile id=”111111-111A"> <trait id="sukunimi">Meikäläinen</trait> <trait id="etunimet">Matti</trait> <trait id=”kotikunta">Kuopio</trait> <trait id="N.postitoimipaikka">Oulu</trait> </profile> </response>
Mistä löytyy? http://www.plugit.fi Rajapinnat Toteutukset Referenssitoteutukset Käyttäjä-, käyttöoikeus- ja potilas-ydinpalvelut: • NETCommonService • sovellus + dokumentaatio + lähdekoodi (zip)