FM3: CRUD andmehaldus

Mustri tüüp: funktsionaalne muster
Peamine kasusaaja:
inimene, automatiseeritud süsteem
Eesmärk
: andmete haldus
Allikas
: teadaolev praktika
Teenuste arv:
4

Abstract

FM3: CRUD operations is an example of how the basic functions of persistent storage can be performed over X-Road services. Its main purpose is to allow the service consumer to modify the dataset of the service producer.

The pattern proposes developing four services, each of which corresponds to one of the CRUD operations:

In the context of this pattern:

  • The service producer is the information system allows its data to be modified;
  • The service consumer is the information system that performs the data modifications.

Sissejuhatus

Muster kirjeldab üle X-tee andmete haldamist, kasutades tavapäraseid andmetöötluse operatsioone (kirje lisamine, lugemine, uuendamine ja kustutamine). Loodavad teenused tuginevad primitiividele "PM1: andmete päringu teenus" ja "PM2: andmete saatmise teenus"

Iga andmetöötluse operatsiooni kohta (kirje lisamine, lugemine, uuendamine ja kustutamine) luuakse üks X-tee teenus, mille korral eristame kahte poolt:

  • andmeid omav infosüsteem:
    • teenuse osutaja;
    • infosüsteem, mille andmeid hallatakse;
  • andmeid haldav infosüsteem:
    • teenuse tarbija;
    • infosüsteem, mis kasutab andmeid omava infosüsteemi teenuseid selle infosüsteemi andmete haldamiseks.

Probleem

Käesolev muster sobib kasutamiseks olukorras, kus on vajalik lahendada andmete vahetus sissejuhatuses nimetatud poolte vahel ning:

  • andmeid haldav süsteem peab saama kirjeid lisada, lugeda, muuta ja kustutada;
  • andmeid haldavaid infosüsteeme võib olla mitu;
  • andmeid haldav süsteem ei vaja andmetest lokaalset koopiat;
  • andmeid haldava infosüsteemi käideldavus on tagatud ainult andmete pärimise hetkel;
  • andmeid omava infosüsteemi käideldavus on tagatud alati, kui keegi soovib andmeid pärida;
  • andmeid haldaval infosüsteemil peab olema kontroll selle üle, millal andmevahetus toimub;
  • andmete ajakohasena hoidmise eest vastutab andmeid haldav infosüsteem.

Lahendus

Andmeid omavas infosüsteemis:

  • kirjeldatakse neli X-tee teenust:
    • teenus kirje lisamiseks;
    • teenus kirje pärimiseks;
    • teenus kirje uuendamiseks;
    • teenus kirje kustutamiseks;
  • iga teenuse kohta:
    • arendatakse teenuse sisendi valideerimine;
    • arendatakse teenuse sisendi põhjal vajalike andmete leidmine;
    • arendatakse teenuse väljundi koostamine;
    • määratakse infosüsteemid, mis võivad teenust kasutada.

Andmeid haldavas infosüsteemis:

  • iga teenuse kohta:
    • arendatakse teenuse sisendiks olevate parameetrite määramine;
    • arendatakse teenuse sisendi koostamine;
    • arendatakse andmeid omava infosüsteemi poolt osutatava X-tee teenuse tarbimine;
    • arendatakse teenuse väljundi töötlemine ja salvestamine;
  • andmete haldamise kasutusliides.

Teenuste kirjeldus

Andmete lisamise teenus jälgib mustrit "PM2: andmete saatmise teenus".

  • Teenuse sisendiks on lisatava kirje andmed.
  • Teenuse väljundiks on kviteering ja keskse süsteemi poolt määratud identifikaator, mida kasutatakse järgnevate teenuste sisendis.

Andmete lugemise teenus jälgib mustrit "PM1: andmete päringu teenus".

  • Teenuse sisendiks on keskse süsteemi poolt määratud identifikaator või päringu parameetrid (parameetrite kasutamise korral võib teenus tagastada mitu kirjet).
  • Teenuse väljundiks on loetava kirje andmed.

Andmete uuendamise teenus jälgib mustrit "PM2: andmete saatmise teenus". Teenus on üldjuhul sarnane andmete lisamise teenusele.

  • Teenuse sisendiks on keskse süsteemi poolt määratud identifikaator ja kirje muudetud andmed.
  • Teenuse väljundiks on andmete muutmise kviteering.

Andmete lisamise teenus jälgib mustrit "PM2: andmete saatmise teenus".

  • Teenuse sisendiks on keskse süsteemi poolt määratud identifikaator.
  • Teenuse väljundiks on andmete kustutamise kviteering.

Loodavate teenuste WSDL näiteid ei ole toodud, sest teenused on analoogsed vastavatele primitiividele.

Lisakaalutlused

Käesoleva mustri kasutamisel tuleks silmas pidada järgnevat:

  • teenused peaksid olema alati seotud konkreetse äriprotsessiga (näiteks kasutajate haldamine);
  • vältida tuleks andmetele orienteeritust (vt https://msdn.microsoft.com/en-us/library/ms978509.aspx);
  • mustri osaks olevad teenused võivad leida kasutust ka muude äriülesannete osana;
  • mustri toimimiseks peab teenuse osutaja avama mõlemad teenused teenuse tarbijale.

Näide

Näitena on toodud kasutajate haldus Tervise Infosüsteemis. Antud näite korral puudub kustutamise operatsioon. Selle asemel muudetakse kasutajad kehtetuks kasutaja andmete uuendamise operatsiooniga.

Andmete lisamise teenus digilugu.lisa_kasutaja.

Sisend:

keha (type: lisa_kasutajaRequest)
|-> isikukood (type: String, description: “isikukood”)
|-> registrikood (type: String, description: “registrikood”)
|-> rakendus (type: String, description: “rakenduse tähis”)
|-> algus_kp (type: Date, description: “kasutaja kehtivuse alguskuupäev”)
|-> lopp_kp (type: Date, description: “kasutaja kehtivuse lõppkuupäev”)
|-> epost (type: String, description: “kasutaja e-post”)
|-> telefon (type: String, description: “kasutaja telefon”)

Väljund:

keha (type: lisa_kasutajaResponse)
|-> onnestus (type: bool, description: “tõeväärtus kasutaja lisamise õnnestumise kohta”)


Andmete lugemise teenus digilugu.kasutaja_andmed.

Sisend:

keha (type: kasutaja_andmedRequest)
|-> isikukood (type: String, description: “isikukood”)
|-> rakendus (type: String, description: “rakenduse tähis”)

Väljund:

keha (type: kasutaja_andmedResponse)
|-> isikukood (type: String, description: “isikukood”)
|-> eesnimi (type: String, description: “eesnimi”)
|-> perenimi (type: String, description: “perenimi”)
|-> kutsed (type: eterv_isiku_kutse, description: “kutse”)
| |-> kutse (type: String, description: “Isiku kutse (kood)”)
| |-> kutseNimetus (type: String, description: “Isiku kutse nimetus”)
| |-> kood (type: String, description: “Arsti kood”)
|-> erialad (type: eterv_isiku_eriala, description: “eriala”)
| |-> kood (type: String, description: “Eriala kood”)
| |-> nimetus (type: String, description: “Eriala nimetus”)
|-> telefon (type: String, description: “kontaktandmed”)
|-> epost (type: String, description: “epost”)


Andmete muutmise teenus digilugu.muuda_kasutaja

Sisend:

keha (type: muuda_kasutajaRequest)
|-> isikukood (type: String, description: “isikukood”)
|-> registrikood (type: String, description: “registrikood”)
|-> rakendus (type: String, description: “rakenduse tähis”)
|-> algus_kp (type: Date, description: “kasutaja kehtivuse alguskuupäev”)
|-> lopp_kp (type: Date, description: “kasutaja kehtivuse lõppkuupäev”)
|-> kommentaar (type: String, description: “muudatuse kommentaar”)

Väljund:

keha (type: muuda_kasutajaResponse)
|-> onnestus (type: bool, description: “tõeväärtus kasutaja muutmise õnnestumise kohta”)



Last modified: Sunday, 16 October 2016, 8:55 PM