SHAMAN-projekti

Marko Andersson

Mika Rinkinen

Matti Törmä

Timo Valonen

Sovellusraportti

16.6.2005

Versio 1.0

Tietoja projektista ja dokumentista

Tekijät:	Marko Andersson (maenande@cc.jyu.fi)

Mika Rinkinen (mikarin@cc.jyu.fi)

Matti Törmä (matorma@cc.jyu.fi)

Timo Valonen (tijovalo@cc.jyu.fi)

Yhteystiedot:	Postilista shaman@korppi.jyu.fi.

Postilistan arkisto

https://korppi.it.jyu.fi/list-	archive/shaman/.

WWW-sivu	http://sovellusprojektit.it.jyu.fi/shaman.

Työn nimi:	SHAMAN-projekti, sovellusraportti

Työ:	Sovellusraportti tietotekniikan sovellusprojektiin

Sivumäärä:	70 + 41

Tilaaja:	Jyväskylän yliopisto, ATK-keskus

Tiivistelmä:	Shaman-projekti määritteli ja suunnitteli Jyväskylän Yliopiston	ATK-keskukselle käyttäjätunnusten ja käyttöoikeuksien

hallintajärjestelmän sekä toteutti sen tietokannan hallintaosan.

Sovellusraportti esittelee projektissa toteutetun järjestelmän osan	ja muiden osien suunnitelmat.

Avainsanat:	AMAN, tietokanta, käyttäjätunnus, salasana, käyttäjähallinta,	hallinta.

Versiohistoria

Versio	Päiväys	Tekijä	Kuvaus
0.405	5.4.2005	Marko Andersson	Dokumentti luotu.
0.406	6.4.2005	Marko Andersson	Moduulirakenteen kirjoitus.
0.412	12.4.2005	Marko Andersson	Nimeämiskäytänteet, tietokantataulut.
0.413	13.4.2005	Marko Andersson	Tietokantataulut.
0.414	14.4.2005	Timo Valonen	Tietokantatauluihin kuvaukset.
0.421	21.4.2005	Timo Valonen	Tietokantaosuuden täydennystä.
0.519	19.5.2005	Matti Törmä	Moduulien kuvauksen kirjoitus.
0.5191	19.5.2005	Timo Valonen	Käyttöliittymän kuvaus.
0.524	24.5.2005	Matti Törmä	Moduulien kuvauksen korjaus.
0.5241	24.5.2005	Timo Valonen	Käyttöliittymän kuvauksen korjaus.
0.5242	24.5.2005	Mika Rinkinen	Tietokannan kuvauksen korjaus.
0.525	25.5.2005	Matti Törmä	Jatkokehitys-luvun kirjoitus.
0.526	26.5.2005	Timo Valonen	Jatkokehitys-luvun täydennys.
0.530	30.5.2005	Mika Rinkinen	Toteutuneiden vaatimuksien selventäminen sekä asia- ja muotoiluvirheiden korjaus.
0.601	1.6.2005	Matti Törmä	Pieniä huomioita ja korjauksia.
0.606	6.6.2005	Timo Valonen	Pieniä huomioita ja korjauksia.
0.607	7.6.2005	Matti Törmä	Korjauksia lukuihin 2-10.
0.6071	7.6.2005	Timo Valonen	Korjauksia lukuihin 3-10.
0.608	8.6.2005	Matti Törmä	Luvun 2.5 kirjoitus.
0.609	9.6.2005	Mika Rinkinen	Metodien kuvauksien lisäys.
0.6091	9.6.2005	Timo Valonen	Korjauksia lukuihin 3-10.
0.610	10.6.2005	Mika Rinkinen	Metodien kuvausten viimeistely.
0.613	13.6.2005	Timo Valonen	Korjauksia metodien kuvauksiin.
0.6131	13.6.2005	Mika Rinkinen	Korjauksia metodien kuvauksiin.
0.615	15.6.2005	Mika Rinkinen	Korjauksia kieliasuun.
1.0	16.6.2005	Mika Rinkinen	Julkaistu versio.

Termiluettelo

Projektin aiheeseen ja toteutustekniikoihin liittyviä termejä ja käsitteitä ovat seuraavat:

Acta	on Jyväskylän avoimessa yliopistossa käytössä oleva	opintosuoritusrekisteri.

Alaryhmät	ovat ryhmiä, jotka ovat tietyn ryhmän jäseniä.

Apache	on ilmainen HTTP-palvelinohjelmisto.

SHELL-skripti	on UNIX- ja Linux-koneissa ajettava komentorivitiedosto.

CSS	(Cascade Style Sheets) on WWW-sivujen ulkoasun	määrittelyyn käytetty kieli, jolla voidaan erottaa sivujen sisältö ja	esitysasu toisistaan.

Fortime	on rekisteri, jossa säilytetään tietoja henkilökunnasta ja muista	Jyväskylän yliopistolta palkkioita saavista.

FunetEduPerson	on skeema, joka määrittelee henkilöön liitettävät tietotyypit

korkeakoulujen välisessä viestinnässä.

HAKA	on Suomen yliopistojen ja ammattikorkeakoulujen yhteinen	käyttäjätunnistusjärjestelmä. Siihen liittyneen korkeakoulun	käyttäjät pääsevät yhdellä kirjautumisella korkeakoulusektorin	palveluihin riippumatta siitä, kuka palvelun tuottaa.

Henkilö	kuvaa henkilöä ja hänen tietojaan.

HTML-template	on Perlin moduuli, joka mahdollistaa skriptien erottamisen	HTML-sivusta.

JORE	on Jyväskylän yliopistossa kehitetty ja käytössä oleva	opintosuoritusrekisteri.

Kohdejärjestelmät	ovat järjestelmiä, joihin käyttäjähallintajärjestelmä vie tietoa.	Kohdejärjestelmiä käytetään rajapintojen kautta, ja niitä ovat mm.	Kerberos, LDAP ja CGI.

Korppi	on Jyväskylän yliopiston opintotietojärjestelmä.

Lähdejärjestelmät	ovat järjestelmiä, joista käyttäjähallintajärjestelmä saa tietonsa	käyttäjistä. Järjestelmät ovat Fortime, Jore, Acta ja Korppi sekä	salasana.jyu.fi.

Perl	on vapaan lähdekoodin skriptikieli, jolla voidaan toteuttaa myös	ajettavia ohjelmia.

PostgreSQL	on vapaan lähdekoodin tietokannanhallintajärjestelmä.

Ryhmä	on osana ryhmähierarkiaa ja siihen voi liittyä muita ryhmiä.	Ryhmä voi myös kuvata erilaisia rooleja. Tunnuskohtaiseen	ryhmään voi liittyä vain yksi tunnus.

Shibboleth	on organisaatiorajat ylittävä käyttäjien hallintaprotokolla, joka	tarjoaa autentikointi-, auktorisointi- ja pääsynvalvontapalveluja.

Tunnukset	ovat henkilöiden käyttäjätunnuksia. Henkilöllä voi olla useampia	tunnuksia.

Yläryhmät	ovat tietyn ryhmän yläpuolella olevia ryhmiä, joiden jäsenenä	ryhmä on.

Sisältö

1 Johdanto	1

2 Järjestelmän ympäristö ja osat	2

2.1 Käyttäjänhallintaprosessin vaiheet	2

2.2 Järjestelmän toteutusratkaisuja	2

2.3 Järjestelmän rakenneosat	3

2.4 Tietokanta ja sen hallintamoduulit	5

2.5 Toteutusratkaisujen kehittyminen	5

3 Tietokannan taulut	7

3.1 Taulurakenne kaavioina	7

3.2 Person	10

3.3 Nationality	10

3.4 PersonParameter	11

3.5 PersonParameterType	11

3.6 Publicity	12

3.7 Account	12

3.8 Admin	13

3.9 AdminForGroup	13

3.10 AdminPermission	14

3.11 AdminForSystem	14

3.12 Membership	15

3.13 MembershipType	15

3.14 Groupp	16

3.15 GroupType	16

3.16 Pending	17

3.17 StateType	17

3.18 System	18

3.19 Resource	18

3.20 ResourceType	19

3.21 ResourceParameter	19

3.22 ResourceParameterType	20

3.23 Hierarchy	21

3.24 History	21

3.25 HistoryParameter	22

3.26 HistoryParameterType	22

4 Tietokannan hallintamoduulit	24

4.1 Luokkakaavio	24

4.2 Sql-moduuli	26

4.3 ShamanSql-moduuli	26

4.4 Log-moduuli	26

4.5 Person-olio	26

4.6 Account-olio	27

4.7 Group-olio	27

4.8 History-olio	27

4.9 Persons-olio	28

4.10 Accounts-olio	28

4.11 Groups-olio	28

4.12 Resource-olio	28

4.13 Resources-olio	28

4.14 Historys-olio	29

4.15 Types-moduuli	29

4.16 Admin-moduuli	29

5 Rajapintamoduulit ja tilasiirtymämoduuli	30

5.1 Korppi-moduuli	30

5.2 Salasana.jyu.fi-moduuli	30

5.3 Lähdejärjestelmien rajapinta	30

5.4 Kohdejärjestelmien rajapinta	31

5.5 Tilasiirtymämoduuli	31

5.6 Pääkäyttäjän käyttöliittymä	31

6 Käyttöliittymän kuvaus	32

6.1 Käyttöliittymän näyttökartta	32

6.2 Käyttöliittymän navigointi	33

6.3 Henkilöiden ja käyttäjätunnusten hakusivu	33

6.4 Hakutulossivu	34

6.5 Henkilön ja käyttäjätunnusten tietojen katselusivu	36

6.6 Henkilön ja käyttäjätunnusten tietojen muokkaussivu	39

6.7 Henkilön lisätiedon lisäyssivu	40

6.8 Henkilön lisäyssivu	41

6.9 Käyttäjätunnuksen lisäyssivu	42

7 Testaus	43

7.1 Käyttöliittymän testaus	43

7.2 Moduuleissa havaitut virheet	43

7.3 Käyttöliittymässä havaitut virheet	44

8 Toteutuneet vaatimukset	45

8.1 Rajapintojen asettamat vaatimukset	46

8.2 Tilat ja tilasiirtymät	47

8.3 Resurssit	48

8.4 Ryhmäjäsenyydet	49

8.5 Historia- ja lokitiedot	50

8.6 Käyttöliittymät	51

8.7 Laitosten ja tiedekuntien käyttöliittymä	52

8.8 Järjestelmän pääkäyttäjän käyttöliittymä	53

8.9 Käyttäjän käyttöliittymä	54

8.10 Tietoturva	55

8.11 Tekniset vaatimukset	56

9 Jatkokehitystavoitteet ja -ideat	57

9.1 Tietokanta	57

9.2 Tietokannan hallintamoduulit	58

9.3 Rajapintamoduulit ja tilasiirtymämoduuli	60

9.4 Käyttöliittymä	61

10 Nimeämiskäytännöt	63

10.1 Tiedostojen nimeäminen	63

10.2 Tiedostojen kommentointi	63

10.3 Muuttujien nimeäminen	66

11 Yhteenveto	68

Lähteet	69

Liitteet. Moduulien metodit ja attribuutit	71

Liite 1 Account-olio	72

Liite 2 Accounts-olio	77

Liite 3 Group-olio	80

Liite 4 History-olio	86

Liite 5 Log-moduuli	90

Liite 6 Person-olio	91

Liite 7 Persons-olio	95

Liite 8 Resource-olio	97

Liite 9 Resources-olio	100

Liite 10 ShamanSQL-moduuli	102

Liite 11 Sql-moduuli	105

Liite 12 Types-moduuli	109

Johdanto

SHAMAN-projekti määritteli ja suunnitteli käyttäjätunnusten ja käyttöoikeuksien hallintajärjestelmän sekä toteutti järjestelmän tietokannan ja tietokannanhallintamoduulit Jyväskylän yliopiston ATK-keskuksen tarpeisiin. ATK-keskus hallinnoi yliopiston noin 4000-5000 mikrotietokonetta sekä mm. sähköpostijärjestelmiä, WWW-palvelimia, UNIX-järjestelmiä ja Korppi-kurssikirjanpitojärjestelmää.

ATK-keskuksen käytössä oleva nykyinen AMAN-järjestelmä on toteutukseltaan vanhentunut ja ominaisuuksiltaan puutteellinen. AMAN-järjestelmällä hallitaan Jyväskylän yliopiston opiskelijoiden, henkilökunnan ja muiden käyttäjien käyttäjätunnuksia ja salasanoja eri kohdejärjestelmissä. AMAN välittää käyttäjätunnukset ja salasanat eri autentikointipalvelimille, joista eri järjestelmät voivat autentikoida käyttäjän. AMAN saa tietonsa automaattisesti lähdejärjestelmistä, joita ovat mm. JORE, Fortime, Acta ja Korppi.

Vanhan järjestelmän puutteita ja kehitystarpeita sekä uudelle järjestelmälle asetettuja vaatimuksia kuvataan tarkemmin vaatimusmäärittelyssä. SHAMAN-projektin projektiraportissa tarkastellaan tavoitteiden ja aikataulujen toteutumista projektisuunnitelmaan nähden. Asennusohje kuvaa projektissa toteutetun SHAMAN-järjestelmän asettamat vaatimukset ja asennusohjeet.

Sovellusraportti esittelee projektissa toteutetun järjestelmän osan ja muiden osien suunnitelmat. Luku 2 kuvaa järjestelmän ympäristöä ja osia, joista järjestelmä muodostuu. Luku 3 esittelee järjestelmän tietokannan. Luku 4 kuvaa tietokannan hallintamoduuleja, jotka muodostavat rajapinnan tietokannan ja muun järjestelmän välille. Luku 5 esittelee suunnitellut rajapinnat järjestelmästä Korppi-järjestelmään, Salasana.jyu.fi-palveluun, lähdejärjestelmiin ja kohdejärjestelmiin sekä tilasiirtymien hallintamoduulin. Luku 6 kuvaa projektissa toteutetun käyttöliittymän prototyypin. Luku 7 käsittelee järjestelmän testausta. Luku 8 esittää järjestelmälle asetetut vaatimukset ja niiden toteutumisen SHAMAN-projektissa. Luvussa 9 kuvataan järjestelmän jatkokehitystavoitteet ja -ideat. Luku 10 kuvaa SHAMAN-järjestelmän lähdekooditiedostojen nimeämiskäytännöt.

Järjestelmän ympäristö ja osat

Luku kuvaa käyttäjähallintaprosessin vaiheet, järjestelmän pääpiirteet ja toteutusratkaisut sekä järjestelmän määrittelyssä, suunnittelussa ja toteutuksessa käytetyt olennaisimmat käsitteet.

Käyttäjänhallintaprosessin vaiheet

Järjestelmä suunniteltiin ATK-keskuksen käyttäjähallintaprosessin tarpeisiin. ATK-keskuksen käyttäjähallinnan pääasialliset osat ovat käyttäjätunnusten lisääminen uusille opiskelijoille ja henkilökunnan jäsenille, opiskelunsa tai työsuhteensa päättävien tunnusten vanhentaminen sekä käyttöoikeuksien määrittäminen käyttäjille oppiaineen ja virka-aseman mukaan. Pääasiallisesti henkilöiden tiedot saadaan lähdejärjestelmistä (katso termiluettelo). Henkilöihin liitettävien käyttäjätunnusten oikeustiedot välitetään kohdejärjestelmille (katso termiluettelo).

Kullakin käyttäjätunnuksen haltijalla on mahdollisuus tarkastella ja muokata käyttäjätunnuksiin liittyviä tietoja WWW-pohjaisessa palvelussa salasana.jyu.fi. Yliopiston ATK-keskuksen palvelupiste toimii käyttöoikeuksien hallinnoijana. Vastaisuudessa rajoitettuja järjestelmän pääkäyttäjäoikeuksia annetaan myös yliopiston laitosten henkilökuntaan kuuluville. Tällöin he pystyvät myöntämään käyttöoikeuksia rajoitetusti. Tulevaisuudessa myös kansainvälisten opiskelijoiden asioita käsittelevät yksiköt tulevat saamaan rajatut katseluoikeudet henkilöistä ja käyttäjätunnuksista tallennettuihin tietoihin.

Järjestelmän toteutusratkaisuja

Uusi järjestelmä tulee kokonaisuudessaan valmistuttuaan mahdollistamaan ATK-keskuksen tietokonejärjestelmien käyttäjätunnusten ja käyttöoikeuksien joustavan hallinnan. Vaatimusmäärittelyn mukainen joustavuus saavutettiin parhaiten käyttäjäryhmän (myöh. ryhmän) käsitteen avulla. Järjestelmien käyttöoikeudet, oikeudet järjestelmien resursseihin ja niihin liittyvät tiedot (myöh. resurssit) kuuluvat aina joko suoraan käyttäjätunnukselle tai ryhmälle. Lisättäessä uusi henkilö järjestelmään liitetään henkilö kuulumaan tiettyihin ryhmiin käyttäjätunnuksensa kautta. Lähdejärjestelmät määrittävät osittain käyttäjätunnuksiin liitettävät ryhmät. Omien resurssiensa lisäksi käyttäjätunnukset perivät resurssit ryhmiltä, joissa ne ovat jäseninä.

Järjestelmän tulee välittää tiedot kullekin käyttäjätunnukselle kuuluvista käyttöoikeuksista kohdejärjestelmille. Lisäksi vaatimusten määrittelyssä ilmeni tarve sekä käyttäjän että tunnuksen erilaisille tiloille (esim. aktiivinen, vanhentunut, poistettu, lukittu ja varattu) sekä automaattisille siirtymille näiden tilojen välillä (esim. tunnuksen oltua tietyn aikaa vanhentunut-tilassa siirretään se poistettu-tilaan).

Uusi käyttöönotettava järjestelmä tukee myös korkeakoulujen välistä käyttäjähallintoa mahdollistamalla käyttäjätunnistuksen yli korkeakoulurajojen. Tämä toteutetaan käyttäen funetEduPerson-skeemaa, jossa määritellään henkilölle tietotyypit. SHAMAN-projektin toteuttama tietokanta mahdollistaa lähes täydellisesti tietotyyppien välittämisen.

Järjestelmän rakenneosat

Kuva 1. Järjestelmän rakennekuva. Järjestelmä tulee sisältämään neljä rajapintamoduulia tietokannan hallintamoduulien sekä kohdejärjestelmien, lähdejärjestelmien, salasana.jyu.fi- ja Korppi-järjestelmän välillä (katso kuva 1). Lisäksi järjestelmään kuuluu tilasiirtymien käsittelymoduuli ja CGI-pohjainen käyttöliittymä. Vain käyttöliittymän prototyyppi, tietokanta ja osa tietokannan hallintamoduuleista toteutettiin projektissa. Käyttöliittymän kuvaus esitetään luvussa 6 ja rajapintamoduulien kuvaukset luvussa 5.

Tietokanta ja sen hallintamoduulit

Järjestelmää suunniteltaessa esiintulleet käsitteet henkilö, tunnus, ryhmä ja resurssi muodostavat luontevasti tietokannan taulut Person, Account, Groupp ja Resource. Lisäksi tunnuksen sekä ryhmien välisiä sidoksia varten tarvittiin taulut Membership ja Hierarchy. Mahdolliset tilat määritettiin StateType-taulussa, josta on suhteet em. tauluihin. Tietojen muutosten seurantatarpeita varten lisättiin History-taulu. Lisäksi tarvittiin tauluja parametrisoituja tietotyyppejä ja Shaman-järjestelmän pääkäyttäjien oikeudenhallintaa varten. Tarkempi kuvaus tietokannasta esitetään luvussa 3.

Tietokannan hallintamoduuleissa em. tauluja vastaavat oliot Person, Account, Group, Resource ja History. Kutakin näitä vastaava monikko-olio Persons, Accounts, Groups, Resources ja Historys käsittelee useampaan yksikköolion instanssiin kohdistuvia operaatioita. Nämä sekä Types- ja Admin-moduuli muodostavat rajapinnan järjestelmän tietokannan hallintaosasta muuhun järjestelmään. Rajapinnan tietokantaan ja tietokannan hallintaosan ytimen muodostavat ShamanSql-, Log- ja Sql-moduulit. Nämä moduulit Adminia sekä monikko-olioita Groups ja Historys lukuunottamatta toteutettiin projektissa. Tarkempi kuvaus tietokannan hallintamoduuleista esitetään luvussa 4 ja liitteissä 1-12.

Toteutusratkaisujen kehittyminen

Järjestelmän määrittely ja suunnittelu eteni melko suoraviivaisesti sovellusraportissa kuvatun järjestelmän rakenteen mukaisesti. Tietokannan taulut Person, Account ja Group esiintyivät kuvatun kaltaisina jo järjestelmän alustavissa suunnitelmissa.

Suurimmat muutokset toteutusratkaisuihin tehtiin tietokannan taulujen Hierarchy ja Group käytössä. Alustavissa suunnitelmissa sekä tiedot käyttäjätunnusten jäsenyyksistä ryhmissä että tieto ryhmähierarkian rakenteesta olisi tallennettu Hierarchy-tauluun ja kutakin tunnusta kohti olisi luotu vastaava tunnuskohtainen ryhmä. Tästä kuitenkin luovuttiin, koska ratkaisu ei ollut ryhmähierarkiaa ja tunnuksen ryhmäjäsenyyksiä käsittelevien algoritmien tehokkuuden kannalta kestävä. Tunnuskohtaisen ryhmän poistuessa suunnitelmista lisättiin tietokantaan yhteys taulujen Resource ja Account välille mahdollistamaan suoraan tunnukselle kuuluvat resurssit.

Lisäksi alustavissa suunnitelmissa oli erilliset taulut käyttöoikeuksien ja resurssikiintiöiden tallentamiseksi. Tästä luovuttiin, koska yksi yleiskäyttöinen Resource-taulu tarjoaa saman toiminnallisuuden ja on helpompi käsitellä. Resource-taulu ja sen yhteys Account-tauluun tekivät tarpeettomiksi alustavissa suunnitelmissa esiintyneen salasanojen tallennukseen suunnitellun Password-taulun.

Tietokannan taulut

Shaman-järjestelmässä keskeisessä asemassa oleva tietokanta täyttää kaikki vaatimusmäärittelyssä asetetut vaatimukset. Se siis mahdollistaa joustavan henkilöiden, käyttäjätunnusten ja ryhmien tietojen sekä käyttäjätunnusten ja ryhmien oikeustietojen ja resurssien hallinnan. Parametrisoitujen taulurakenteiden ansiosta uusien henkilöön, käyttäjätunnukseen ja ryhmään liittyvien tietotyyppien lisäys on vaivatonta. Luvussa kuvataan tietokannan taulut, kentät ja kenttien tyypit.

Taulurakenne kaavioina

Toteutetun tietokannan ER-kaavio esitetään kuvassa 2. Relaatiokaavio esitetään kuvassa 3.

Kuva 2. Tietokannan ER-kaavio.

Kuva 3. Tietokannan relaatiokuva.

Person

Person-tauluun tallennetaan järjestelmässä käsiteltävien henkilöiden sekä järjestelmän pääkäyttäjien henkilötiedot. Tietoa tallentavia kenttiä on vähän, koska henkilöön liittyvät parametrit on tallennettu taulujen PersonParameter ja PersonParameterType avulla. Tämä mahdollistaa dynaamisen uusien tietojen liittämisen. Henkilötietojen lisäksi yhteen Person-taulun riviin liittyy Nationality-taulussa määritelty tieto kansallisuudesta, tieto seuraavasta henkilön tietoihin kohdistuvasta tilasiirtymän ajankohdasta ja StateType-taulussa määritetty tila.

Nimi	Tyyppi	Kuvaus
PersonID	Serial	Henkilön ID-numero tietokannassa.
FirstName	Text	Henkilön etunimet.
Surname	Text	Henkilön sukunimi.
CallName	Text	Henkilön kutsumanimi.
IdentityCode	Text	Henkilön henkilötunnus.
TimeOfNextStateChange	Timestamp	Aikaleima ilmoittaa seuraavan tilasiirtymän ajankohdan.
NationalityID	Integer	ID-numero Nationality-tauluun ilmoittaa henkilön kansalaisuuden.
StateTypeID	Integer	ID-numero StateType-tauluun ilmoittaa henkilön tilan.

Taulukko 1. Person-taulun kentät.

Nationality

Nationality-tauluun tallennetaan kansallisuudet, jotka Person-taulussa määritetty henkilö voi saada.

Nimi	Tyyppi	Kuvaus
NationalityID	Integer	ID-numero, erottelee kansallisuudet toisistaan tietokannassa.
NationalityName	Text	Kansallisuuden nimi.

Taulukko 2. Nationality-taulun kentät.

PersonParameter

PersonParameter-taulu sisältää Person-taulussa olevaan henkilöön liittyviä tietoja. Näitä tietoja ovat esimerkiksi henkilön opiskelu- tai työsuhdetta koskevat tiedot. Kuhunkin PersonParameter-taulun riviin liittyy PersonParameterType-taulussa määritelty tietotyyppi. Lisäksi kuhunkin taulun riviin liittyy Publicity-taulun määritelty arvo osoittamaan kyseisen tiedon julkisuusasteen.

PersonParameter-taulun rivin yksilöi henkilön ID-numero sekä PersonParameterType-taulun ID-arvo. Henkilöllä voi taulun nykymuodossa olla ainoastaan yksi tietyn tyyppisen parametrin arvo. Tämä vaatii korjaamista jatkokehityksessä.

Nimi	Tyyppi	Kuvaus
PersonParameterValue	Text	Tallennettava henkilön lisätiedon arvo
PersonID	Integer	ID-numero määrittää henkilön, jolle parametri liittyy.
PersonParameterTypeID	Integer	PersonParameterType-taulun ID-numero kuvaa parametrin tyypin.
PublicityID	Integer	Publicity-taulun ID-numero kuvaa tiedolle määritetyn julkisuusasteen.

Taulukko 3. PersonParameter-taulun kentät.

PersonParameterType

PersonParameterType-taulu kuvaa henkilöparametrien tyypit, jotka PersonParameter-taulun rivit voivat saada. Kuhunkin tyyppiin liitetään lisäksi Importance-kenttä, joka kuvaa tiedon tärkeysastetta. Sen ensisijainen käyttökohde on mahdollistaa tuki funetEduPerson-skeeman pakollisille arvoille, ns. MUST-arvoille.

Nimi	Tyyppi	Kuvaus
PersonParameterTypeID	Serial	ID-numero erottelee parametrityypit tietokannassa.
Description	Text	Vapaa kuvaus parametrista.
Importance	Integer	Määrittelee funetEduPerson-skeeman attribuuttien tärkeyden.

Taulukko 4. PersonParameterType-taulun kentät.

Publicity

Publicity-taulu määrittää henkilöön liittyvien PersonParameter-taulussa määriteltyjen attribuuttien julkisuusasteen.

Nimi	Tyyppi	Kuvaus
PublicityID	Serial	ID-numero erottelee tietojen julkisuusasteet tietokannassa.
Description	Text	Vapaa kuvaus julkisuusasteesta.

Taulukko 5. Publicity-taulun kentät.

Account

Account-tauluun tallennetaan tiedot henkilöiden käyttäjätunnuksista. Käyttäjätunnukseen liitetään tieto, kenelle Person-taulussa määritetylle henkilölle tunnus kuuluu, tunnuksen järjestysnumero (käytännössä, onko ko. tunnus tietyn henkilön ensisijainen käyttäjätunnus), kuvaus tunnuksesta, tieto seuraavasta käyttäjätunnukseen kohdistuvasta tilasiirtymän ajankohdasta ja StateType-taulussa määritetty tila.

Nimi	Tyyppi	Kuvaus
AccountID	Serial	ID-numero erottelee tunnukset tietokannassa.
AccountName	Text	Henkilön käyttäjätunnus.
AccountOrder	Integer	Käyttäjätunnusten järjestysnumero, jos henkilöllä on useampia käyttäjätunnuksia.
Description	Text	Vapaa kuvaus käyttäjätunnukselle.
TimeOfNextStateChange	Timestamp	Aikaleima ilmoittaa seuraavan tilasiirtymän ajanhetken.
StateTypeID	Integer	ID-numero viittaa tunnuksen tilaan.
PersonID	Integer	ID-numero ilmoittaa tunnuksen omistavan henkilön tietokannassa.

Taulukko 6. Account-taulun kentät.

Admin

Admin-taulussa kuvataan järjestelmän pääkäyttäjiin liittyvät tiedot. Tauluun tallennetaan pääkäyttäjän käyttäjätunnus sekä salasana. Lisäksi riviin liitetään tieto, kenelle Person-taulussa määritetylle henkilölle pääkäyttäjätunnus kuuluu.

Nimi	Tyyppi	Kuvaus
AdminID	Serial	ID-numero erottelee pääkäyttäjätunnukset.
Username	Text	Pääkäyttäjän käyttäjätunnus järjestelmään.
Password	Text	Pääkäyttäjän salasana järjestelmään.
PersonID	Integer	ID-numero yhdistää admin-tunnuksen henkilöön.

Taulukko 7. Admin-taulun kentät.

AdminForGroup

AdminForGroup-taulu kuvaa pääkäyttäjien hallitsemat ryhmät. Tauluun liittyy tieto Admin-taulussa määritetystä pääkäyttäjästä sekä Groupp-taulussa määritetystä ryhmästä sekä lisäksi tieto pääkäyttäjän oikeustasosta ryhmään. Oikeustasot määritellään AdminPermission-taulussa.

Nimi	Tyyppi	Kuvaus
GroupID	Integer	ID-numero ilmoittaa Groupp-taulun ryhmän, jota pääkäyttäjä saa käsitellä.
AdminID	Integer	ID-numero viittaa Admin-taulussa määriteltyyn henkilöön.
AdminPermissionID	Integer	ID-numero viittaa AdminPermission-tauluun ja ilmoittaa oikeuden, jonka pääkäyttäjä saa määriteltyyn ryhmään.

Taulukko 8. AdminForGroup-taulun kentät.

AdminPermission

AdminPermission-taulu kuvaa ryhmien oikeustasokoodit, jotka pääkäyttäjät voivat saada.

Nimi	Tyyppi	Kuvaus
AdminPermissionID	Serial	ID-numero erottelee pääkäyttäjän oikeudet tietokannassa.
Description	Text	Vapaa kuvaus pääkäyttäjän oikeudesta.

Taulukko 9. AdminPermission-taulun kentät.

AdminForSystem

AdminForSystem-taulussa kuvataan pääkäyttäjien hallitsemat kohdejärjestelmät. Tiedoksi tallennetaan Admin-taulussa määritetyn pääkäyttäjän ID-numero, System-taulussa määritetyn kohdejärjestelmän ID-numero ja ResourceType-taulussa määritetyn resurssityypin ID-numero.

Nimi	Tyyppi	Kuvaus
AdminID	Integer	ID-numero viittaa tiettyyn Admin-tunnukseen.
SystemID	Integer	ID-numero viittaa tiettyyn järjestelmään.
ResourceTypeID	Integer	ID-numero viittaa resurssin tyyppiin.

Taulukko 10. AdminForSystem-taulun kentät.

Membership

Membership-tauluun tallennetaan tieto käyttäjätunnusten (Account) ja ryhmien (Groupp) välisistä suhteista. Käyttäjätunnuksen ja ryhmän lisäksi tallennetaan tieto suhteen tyypistä eli MembershipType-taulussa määritetty tyyppiarvo sekä StateType-taulussa määritetty tilakoodi ja seuraavan tilasiirtymän ajanhetki.

Nimi	Tyyppi	Kuvaus
AccountID	Integer	ID-numero viittaa tiettyyn tunnukseen tietokannassa.
GroupID	Integer	ID-numero viittaa tiettyyn ryhmään tietokannassa.
MembershipTypeID	Integer	ID-numero ilmoittaa suhteen tyypin MembershipType-taulussa.
StateTypeID	Integer	ID-numero ilmoittaa tilan, jossa Membership-liitos on.
TimeOfNextStateChange	Timestamp	Aikaleima ilmoittaa seuraavan tilasiirtymän ajanhetken.

Taulukko 11. Membership-taulun kentät.

MembershipType

MembershipType-taulussa kuvataan käyttäjätunnusten ja ryhmien suhteiden tyyppikoodit, jotka Membership-taulun rivi voi saada. Lisäksi tallennetaan kunkin tyyppikoodin kuvaus. Eri tyyppejä voivat olla esimerkiksi

omistajuus (tietty käyttäjätunnus on tietyn ryhmän ”omistaja”),

suora suhde (käyttäjätunnus on jäsenenä ryhmässä) sekä

välillinen suhde (käyttäjätunnus on jäsenenä ryhmässä jonkun muun ryhmän kautta).

Nimi	Tyyppi	Kuvaus
MembershipTypeID	Serial	ID-numero erottelee Membership-liitoksen tyypit toisistaan.
Description	Text	Vapaa kuvaus liitoksen tyypistä.

Taulukko 12. MembershipType-taulun kentät.

Groupp

Groupp-tauluun tallennetaan tiedot ryhmistä. Kustakin ryhmästä tallennetaan ryhmän nimi, ryhmän kuvaus, ryhmän tyyppi, seuraavan tilasiirtymän ajankohta sekä StateType-taulussa määritetty tila.

Nimi	Tyyppi	Kuvaus
GroupID	Serial	ID-numero, erottelee ryhmät tietokannassa.
GroupName	Text	Ryhmän nimi.
Description	Text	Vapaa kuvaus ryhmästä.
TimeOfNextStateChange	Timestamp	Aikaleima ilmoittaa seuraavan tilasiirtymän ajankohdan.
GroupTypeID	Integer	ID-numero ilmoittaa ryhmän tyypin GroupType-taulussa.
StateTypeID	Integer	ID-numero ilmoittaa StateType-taulun tilan, jossa ryhmä on.

Taulukko 13. Groupp-taulun kentät.

GroupType

GroupType-taulu kuvaa ryhmien tyypit, jotka Groupp-taulun rivi voi saada. Tyyppikoodin lisäksi tallennetaan kuvaus tyypistä. Ryhmätyyppejä voivat olla esimerkiksi

Korpin luoma ryhmä ja

kurssin ryhmä.

Nimi	Tyyppi	Kuvaus
GroupTypeID	Serial	ID-numero erottelee ryhmän tyypit tietokannassa.
Description	Text	Vapaa kuvaus ryhmän tyypistä.

Taulukko 14. GroupType-taulun kentät.

Pending

Pending-taulun avulla kuvataan ne Account-taulussa olevat käyttäjätunnukset, joiden tiedot ovat muuttuneet, mutta joiden muuttuneita tietoja ei ole päivitetty kohdejärjestelmiin. Muuttuneet tiedot saadaan kerättyä Account- ja History-taulun avulla. SystemID-arvo kuvaa System-taulussa määriteltyä kohdejärjestelmää, johon muuttuneita tietoja ei ole päivitetty.

Nimi	Tyyppi	Kuvaus
AccountID	Integer	ID-numero viittaa Account-taulussa määriteltyyn käyttäjätunnukseen.
HistoryID	Integer	ID-numero viittaa History-taulussa määriteltyyn historiatietoon.
SystemID	Integer	ID-numero viittaa System-taulussa määriteltyyn kohdejärjestelmään.

Taulukko 15. Pending-taulun kentät.

StateType

StateType-taulussa kuvataan tilat, joita taulujen Person, Account, Groupp, Membership ja Hierarchy tietueet voivat saada. Lisäksi kuvataan sisäinen ja ulkoinen toimenpide, omistajatyyppi eli tilan kohteena oleva taulu sekä tilan kuvaus. Omistajatyyppi on tekstimuotoinen kenttä, jonka arvoina voi olla Person, Account, Groupp, Membership tai Hierarchy.

Nimi	Tyyppi	Kuvaus
StateTypeID	Serial	ID-numero, joka erottelee tilat toisistaan tietokannassa.
StateName	Text	Tilan nimi.
InternalAction	Text	Tilasiirtymässä suoritettava sisäinen toimenpide.
ExternalAction	Text	Tilasiirtymässä suoritettava ulkoinen toimenpide.
OwnerType	Text	Ilmoittaa taulun, jolle kyseinen tila kuuluu.
Description	Text	Vapaa kuvaus tilasta.

Taulukko 16. StateType-taulun kentät.

System

System-taulussa kuvataan kohdejärjestelmät. Kustakin järjestelmästä tallennetaan järjestelmän nimen lisäksi kuvaus järjestelmästä.

Nimi	Tyyppi	Kuvaus
SystemID	Serial	ID-numero erottelee järjestelmät tietokannassa.
SystemName	Text	Järjestelmän nimi.
Description	Text	Vapaa kuvaus järjestelmästä.

Taulukko 17. System-taulun kentät.

Resource

Resource-tauluun tallennetaan tiedot käyttäjätunnusten ja ryhmien kohdejärjestelmiin liittyvistä resursseista. Resurssi voi kuvata esimerkiksi käyttäjätunnuksen ja tietyn kohdejärjestelmän ominaisuudet. Resurssin nimen ja kuvauksen lisäksi resurssista tallennetaan tiedoiksi viite käyttäjätunnukseen tai ryhmään, viite System-taulussa määritettyyn kohdejärjestelmään sekä viite ResourceType-taulussa määritettyyn tyyppiin. Varsinaiset resurssiin liittyvät arvot määritetään ResourceParameter-taulussa.

Nimi	Tyyppi	Kuvaus
ResourceID	Serial	ID-numero erottelee resurssit toisistaan tietokannassa.
ResourceName	Text	Resurssin nimi.
Description	Text	Vapaa kuvaus resurssista.
AccountID	Integer	ID-numero ilmoittaa Account-taulun tunnuksen, jolle resurssi kuuluu.
GroupID	Integer	ID-numero ilmoittaa Groupp-taulun ryhmän, jolle resurssi kuuluu.
SystemID	Integer	ID-numero ilmoittaa System-taulun järjestelmän, jolle resurssi kuuluu.
ResourceTypeID	Integer	ID-numero ilmoittaa ResourceType-taulun resurssin tyypin.

Taulukko 18. Resource-taulun kentät.

ResourceType

ResourceType-taulu määrittää resurssityypit, jotka Resource-taulun rivi voi saada. Lisäksi tallennetaan tyyppikoodin kuvaus.

Nimi	Tyyppi	Kuvaus
ResourceTypeID	Serial	ID-numero erottelee resurssien tyypin tietokannassa.
Description	Text	Vapaa kuvaus resurssin tyypistä.

Taulukko 19. ResourceType-taulun kentät.

ResourceParameter

ResourseParameter-taulu sisältää Resource-taulussa olevaan resurssiin liittyviä arvoja. Resource-taulun ID-arvon lisäksi tallennetaan ResouceParameterType-taulussa määritetty tyyppikoodi sekä varsinainen resurssiin liittyvä arvo.

Nimi	Tyyppi	Kuvaus
ResourceID	Integer	ID-numero ilmoittaa Resource-taulun resurssin, johon parametri liittyy.
ResourceParameterTypeID	Integer	ID-numero ilmoittaa ResourceParameterType-taulun parametrin arvon tyypin.
ResourceParameterValue	Text	Varsinainen parametrin arvo.

Taulukko 20. ResourceParameter-taulun kentät.

ResourceParameterType

ResourceParameterType-taulussa määritetään tyyppikoodit, jotka ResourceParameter-taulun rivi voi saada. Lisäksi tallennetaan kunkin tyyppikoodin kuvaus. Eri tyyppejä voivat olla esimerkiksi

sähköpostin osoite,

sähköpostin aliasosoite,

postilaatikon sijainti,

tieto koneesta, jolta sähköpostit noudetaan,

kiintiön määrä sekä

kiintiön sijainti.

Nimi	Tyyppi	Kuvaus
ResourceParameterTypeID	Serial	ID-numero erottelee resurssin parametrien tyypit tietokannassa.
Description	Text	Vapaa kuvaus resurssin parametrin tyypistä.
ResourceTypeID	Integer	ID-numero ilmoittaa ResourceType-taulun resurssin tyypin, jolle parametri kuuluu.

Taulukko 21. ResourceParameterType-taulun kentät.

Hierarchy

Hierarchy-taulu kuvaa ryhmien muodostaman ryhmähierarkian. Kukin taulun rivi määrittää kahden ryhmän välisen yhteyden toisiinsa, eli suhteen ylä- ja alaryhmän. Lisäksi tallennetaan StateType-taulussa määritetty tila ja tieto seuraavan tilasiirtymän ajanhetkestä.

Nimi	Tyyppi	Kuvaus
ParentID	Integer	ID-numero ilmoittaa Groupp-taulun yläryhmän ryhmähierarkiassa.
ChildID	Integer	ID-numero ilmoittaa Groupp-taulun alaryhmän ryhmähierarkiassa.
StateTypeID	Integer	ID-numero ilmoittaa ryhmien välisen suhteen tilan StateType-taulussa.
TimeOfNextStateChange	Timestamp	Aikaleima ilmoittaa seuraavan tilasiirtymän ajanhetken.

Taulukko 22. Hierarchy-taulun kentät.

History

History-taulu sisältää historiatiedot tietokannan sisällöstä, eli tiedot tauluissa Person, PersonParameter, Account, Groupp, Hierarchy, Resource, ResourceParameter ja StateType tapahtuneista muutoksista. Kustakin muutoksesta liitetään tieto muutoksen ajankohdasta, muutoksen syy ja lähde sekä tieto, mille henkilölle, henkilöparametrille, käyttäjälle, ryhmälle, resurssille tai tilalle tieto kuuluu.

Nimi	Tyyppi	Kuvaus
HistoryID	Serial	ID-numero erittelee historiatiedot tietokannassa.
TimeOfChange	Timestamp	Aikaleima ilmoittaa muutoksen ajankohdan.
TimeOfPendingCleared	Timestamp	Aikaleima ilmoittaa ajanhetken, jolloin tieto on välitetty kohdejärjestelmään.
ReasonOfChange	Text	Kuvaus muutoksen syystä.
SourceOfChange	Text	Muutoksen tekijänä voi olla käyttäjätunnus tai jokin järjestelmän moduuli.
PersonID	Integer	ID-numero viittaa Person-tauluun.
AccountID	Integer	ID-numero viittaa Account-tauluun.
GroupID	Integer	ID-numero viittaa Groupp-tauluun.
ResourceID	Integer	ID-numero viittaa Resource-tauluun.
StateTypeID	Integer	ID-numero viittaa StateType-tauluun.

Taulukko 23. History-taulun kentät.

HistoryParameter

HistoryParameter-taulu sisältää History-taulussa määriteltyyn historiaviittaukseen liittyvät vanhat arvot. Kunkin arvon yhteyteen tallennetaan HistoryParameterType-taulussa määritetty tyyppikoodi ja lisäksi tieto, mille History-taulun riville tieto kuuluu.

Nimi	Tyyppi	Kuvaus
HistoryParameterValue	Text	Parametrin arvo.
HistoryID	Integer	ID-numero viittaa History-tauluun.
HistoryParameterTypeID	Integer	ID-numero ilmoittaa parametrin tyypin HistoryParameterType-taulussa.

Taulukko 24. HistoryParameter-taulun kentät.

HistoryParameterType

HistoryParameterType-taulussa kuvataan tyypit, jotka HistoryParameter-taulun rivi voi saada. Lisäksi tallennetaan tyyppikoodin kuvaus. Kukin taulun Person, Account, Groupp ja Hierarchy kentän arvo tallennetaan omaksi tyypikseen. PersonParameter- ja ResourceParameter-tauluissa määriteltyjen arvojen tyypit tallennetaan ID-numeroina.

Nimi	Tyyppi	Kuvaus
HistoryParameterTypeID	Serial	ID-numero erottelee historia parametrien tyypit tietokannassa.
Description	Text	Vapaa kuvaus parametrin tyypistä.
PersonParameterTypeID	Integer	ID-numero viittaa PersonParameterType-tauluun.
ResourceParameterTypeID	Integer	ID-numero viittaa ResourceParameterTypeID-tauluun.

Taulukko 25. HistoryParameterType-taulun kentät.

Tietokannan hallintamoduulit

Tietokannan hallintamoduulit ovat Sql, ShamanSql, Log, Person, Account, Group, Resource, History, Persons, Accounts, Groups, Resources, Historys, Types ja Admin. Näistä Sql ja ShamanSql muodostavat yhteyden tietokantaan ja loput tietokantarajapinnan muulle järjestelmälle.

Yksikkömoduulit Person, Account, Group, Resource ja History käsittelevät kukin vastaavan tietokantataulun yhtä tietuetta hoitaen tietojen muutokset ja tallennukset. Monikkomoduulit Accounts, Groups, Resources ja Historys käsittelevät kukin useamman vastaavan tietokantataulun tietueen joukkoa sekä hoitavat tietojen haun tietokantatauluista ja muut joukko-operaatiot. Tarkempi kuvaus kunkin moduulin ja olion attribuuteista ja metodeista löytyy liitteistä 1-12.

Luokkakaavio

Kuvassa 4 esitetään järjestelmän luokkakaavio. Metodeista ja attribuuteista vain olennaisimmat on esitetty kuvassa. Olioissa Person, Account, Group, Resource ja History on kuvassa esitettyjen lisäksi vastaavien tietokantataulujen kenttiä vastaavat attribuutit. Luokkakaaviosta puuttuu Admin-moduuli.

Kuva 4. Järjestelmän luokkakaavio.

Sql-moduuli

Sql-moduuli hoitaa yhteyden tietokannanhallintaohjelmistoon. Sql-moduuli muodostaa ja katkaisee yhteyden tietokantaan, lähettää SQL-lauseet tietokannalle sekä käsittelee tietokannan virheet.

ShamanSql-moduuli

Kaikki tietokantaoperaatiot kulkevat ShamanSql-moduulin kautta. ShamanSql pitää olioihin ladatut ja tietokantaan tallennetut tiedot yhdenmukaisina ja olioiden väliset tietorakenteet eheinä.

ShamanSql pitää kirjaa tietokannasta ladatuista tietueista. Se muodostaa Person-, Account- ja Group-olioilta tulevista lataus- ja tallennuspyynnöistä sekä vastaavilta monikko-olioilta tulevista hakupyynnöistä SQL-lauseita. Se myös vie tietokannalta haku- ja latauspyyntöihin vastauksina saatavat tiedot olioihin. ShamanSql lähettää muodostamansa SQL-lauseet Sql-moduulille ja vastaanottaa tältä tietokantaohjelman lähettämät vastaukset.

Log-moduuli

Lokimoduulin tehtävänä on kirjoittaa ASCII-muotoista lokia järjestelmän toiminnasta. Lokitietoja voi olla eri prioriteettiasteilla. Lokiin kirjataan kaikki tietokantaan tehdyt muutokset ja käyttäjien tekemät toimenpiteet. Lokitiedostosta pitää saada selvä kuva siitä, mitä jokin käyttäjä on tehnyt ennen virhetilannetta. Lokitiedostoon kirjataan automaattisesti päivämäärä, kellonaika, toiminnon suorittanut käyttäjä, lokitiedon tyyppi (esim. Debug, Info tai Warning) sekä järjestelmän lähettämä kuvaus tapahtumasta.

Person-olio

Person-olion avulla käsitellään yhden henkilön tietoja vastaavaa Person-taulun tietuetta. Lisäksi Person-olioon ladataan tietueeseen liittyvät tiedot PersonParameter-taulusta ja tietueeseen liittyvien Account-taulun tietueiden AccountID-numerot.

Person-olio toimii yhteistyössä Account-olion kanssa ja käyttää ShamanSql-moduulin tarjoamia tietokantapalveluita. Henkilön tiedot ja niiden muutokset kulkevat ShamanSql-moduulille ja -moduulilta Person-olion kautta.

Account-olio

Account-olion avulla käsitellään yhtä käyttäjätunnusta vastaavaa Account-taulun tietuetta. Lisäksi Account-olioon ladataan tietueeseen liittyvät tiedot Membership-taulusta ja Account-olioon liitettävään Resources-olion tietueeseen liittyvät tiedot Resource-taulusta.

Account-olio toimii yhteistyössä olioiden Person, Group, Resource ja Resources kanssa sekä käyttää ShamanSql-olion tarjoamia tietokantapalveluita. Tunnuksen tiedot ja niiden muutokset sekä tunnuksen jäsenyydet ryhmissä ja niiden muutokset kulkevat ShamanSql-moduulille ja -moduulilta Account-olion kautta. Lisäksi Account-olio yhdessä Resource-olion kanssa välittää tiedot tunnukseen liittyvistä resursseista ja näiden muutoksista ShamanSql-moduulille ja -moduulilta.

Group-olio

Group-olion avulla käsitellään yhtä ryhmää vastaavaa Groupp-taulun tietuetta. Lisäksi Group-olioon ladataan tietueeseen liittyvät tiedot Membership- ja Hierarchy-tauluista ja Group-olioon liitettävään Resources-olioon tietueeseen liittyvät tiedot Resource-taulusta. Group-olio toimii yhteistyössä olioiden Account, Resource ja Resources kanssa ja käyttää ShamanSql-moduulin tarjoamia tietokantapalveluita.

History-olio

History-olion avulla käsitellään History-taulun tietuetta vastaavaa merkintää muuttuvan tiedon osalta ja siihen liittyviä muutostietoja HistoryParameter-taulussa sekä Pending-taulun tietoja tunnuksista, joihin muutos vaikuttaa. ShamanSql-moduuli käyttää History-oliota historiatietomerkintöjen luomiseen ja kohdejärjestelmien rajapintamoduuli tunnuksiin vaikuttavien muutostietojen lukemiseen.

Persons-olio

Persons-olion avulla käsitellään useita Person-taulun tietueita vastaavaa henkilöiden joukkoa. Henkilöiden etsiminen tietokannasta hakuehtojen perusteella tehdään Persons-olion avulla. Persons-oliolla voi lisäksi etsiä henkilöitä Personsin edustamasta henkilöjoukosta. Persons on vain lukuolio, joten sillä ei voi kirjoittaa tietokantaan.

Accounts-olio

Accounts-olion avulla käsitellään useita Account-taulun tietueita vastaavaa tunnusten joukkoa. Tunnusten etsiminen tietokannasta hakuehtojen perusteella tehdään Accounts-olion avulla. Accounts-oliolla voi lisäksi etsiä tunnuksia Accountsin edustamasta tunnusjoukosta. Accounts on vain lukuolio, joten sillä ei voi kirjoittaa tietokantaan.

Groups-olio

Groups-olion avulla käsitellään useita Group-taulun tietueita vastaavaa ryhmien joukkoa. Ryhmien etsiminen tietokannasta hakuehtojen perusteella tehdään Groups-olion avulla. Groups-oliolla voi lisäksi etsiä ryhmiä Groupsin edustamasta ryhmäjoukosta. Groups-oliolla ei voi kirjoittaa tietokantaan. Groups-oliota ei ehditty toteuttamaan projektissa.

Resource-olio

Resource-olion avulla käsitellään yhtä resurssia vastaavaa Resource-taulun tietuetta. Lisäksi Resource-olioon ladataan resurssin parametrit ResourceParameter-taulusta. Kaikki resurssin tietojen ja parametrien muutokset kulkevat Resource-olion kautta.

Resources-olio

Resources-olion avulla käsitellään useita Resource-taulun tietueita vastaavaa resurssien joukkoa. Resurssien etsiminen tietokannasta hakuehtojen perusteella tehdään Resources-olion avulla. Resources-oliolla voi lisäksi etsiä ryhmiä Resourcesin edustamasta resurssijoukosta. Resources tarjoaa palveluita Account- ja Group-olioille. Resources-oliolla ei voi kirjoittaa tietokantaan.

Historys-olio

Historys-olion avulla käsitellään useita History-taulun tietueita vastaavaa muuttuneiden tietojen merkintöjen joukkoa. Historiamerkintöjen etsiminen tietokannasta hakuehtojen perusteella tehdään Historys-olion avulla. Historys-oliota käytetään lisäksi hakemaan yhteen tunnukseen liittyvien historiamerkinnät, joille on asetettu merkintä Pending-tauluun. Historys-oliota käyttävät Account, käyttöliittymä ja kohdejärjestelmien rajapinta. Historys-oliota ei ehditty toteuttamaan projektissa.

Types-moduuli

Types-moduulin avulla käsitellään parametrisoitujen tietojen tietotyyppitaulujen PersonParameterType, HistoryParameterType, ResourceParameterType, ResourceType, StateType, MembershipType, GroupType, Nationality ja Publicity tietoja. Types välittää tietoja näistä tauluista mm. käyttöliittymälle ja muutoksia näiden taulujen tietoihin ShamanSql-moduulille.

Admin-moduuli

Admin-moduuli huolehtii Shaman-järjestelmän pääkäyttäjien oikeuksien hallinnasta. Käyttöliittymä käyttää Admin-moduulia tarkastaakseen, mitkä käyttöliittymän toiminnoista ovat saatavilla kirjautuneelle pääkäyttäjälle. Moduuli vastaanottaa käyttöliittymältä tiedon kirjautuneesta pääkäyttäjästä, lukee tähän liittyviä tietoja tauluista Admin, AdminForGroup, AdminPermission ja AdminForSystem sekä välittää näitä tietoja käyttöliittymälle. Admin-oliota ei ehditty toteuttamaan projektissa.

Rajapintamoduulit ja tilasiirtymämoduuli

Rajapintamoduulit huolehtivat tiedon tuomisesta Shaman-järjestelmään ja viemisestä järjestelmästä sekä mahdollistavat kommunikoinnin muiden järjestelmien kanssa. Tilasiirtymämoduuli huolehtii eri olioiden tiloista ja tilasiirtymistä. Muut osat käyttöliittymää lukuunottamatta jäivät projektin toteutuksen ulkopuolelle.

Korppi-moduuli

Korppimoduuli muodostaa reaaliaikaisen rajapinnan Korppi-järjestelmään. Rajapinnan kautta Korppi voi pyytää mm. henkilön ja käyttäjätunnuksen luontia järjestelmään, käyttäjätunnuksen lisäämistä jäseneksi ryhmään ja resurssin lisäämistä ryhmälle sekä mahdollisesti ryhmän luontia.

Salasana.jyu.fi-moduuli

Salasana.jyu.fi-moduuli tarjoaa reaaliaikaisen rajapinnan opiskelijan käyttöliittymälle, jonka kautta opiskelija voi muuttaa salasanojaan ja henkilötietojaan. Opiskelija voi myös määritellä, mitä tietoja hänestä näytetään yliopiston verkkosivuilla. Moduuli tarjoaa vain rajapinnan käyttöliittymälle, sillä itse käyttöliittymä toteutetaan salasana.jyu.fi-palveluun tai osaksi Korppi-järjestelmää.

Lähdejärjestelmien rajapinta

Lähdejärjestelmien rajapinta vastaanottaa eräajoina saapuvat lähdejärjestelmien siirtotiedostot. Niiden sisältämien tietojen perusteella se luo uusia henkilöitä ja käyttäjätunnuksia järjestelmään, jatkaa järjestelmässä jo olevien käyttäjätunnusten voimassaoloaikoja sekä muokkaa käyttäjätunnusten ryhmäjäsenyyksiä ja henkilöiden lisätietoja siirtotiedostojen mukaisesti. Lähdejärjestelmien rajapinta ei ole yhteydessä Korppi-järjestelmään, vaan yhteydet Korppiin hoidetaan erillisen Korppi-moduulin (katso luku 5.1) kautta.

Kohdejärjestelmien rajapinta

Kohdejärjestelmien rajapintamoduuli käyttää History- ja Historys-olioita hakeakseen tiedot käyttäjätunnuksista, joihin liittyvät resurssit ovat muuttuneet tietokantaan tehdyn History-oliota vastaavan muutoksen seurauksena. Tämän jälkeen rajapintamoduuli lukee muutoksen tiedot History-oliosta ja tunnuksen tiedot Account-oliosta sekä lähettää tiedot muutoksista edelleen kohdejärjestelmille. History- ja Historys-olioilla tehtävä päivitetyt tiedot osoittava Pending-taulun luku tehdään eräajona. Lisäksi moduuli vastaanottaa ilmoituksia järjestelmän tallentamiin tietoihin tehdyistä muutoksista suoraan käyttöliittymältä ja vie nämä muutokset välittömästi edelleen kohdejärjestelmille.

Tilasiirtymämoduuli

Tilasiirtymämoduuli huolehtii henkilöiden, tunnusten ja ryhmien sekä ryhmien ja tunnusten välisten sidosten tilojen ja tilasiirtymien hallinnasta. Tilasiirtymäkäsittelijä käynnistetään eräajolla. Se hakee kannasta olioiden Persons, Accounts ja Groups avulla henkilöt, tunnukset ja ryhmät, joiden tilasiirtymähetki on ylitetty. Se hakee myös tunnukset ja ryhmät, joiden ryhmäjäsenyyksien ja ryhmähierarkiasidosten tilasiirtymähetki on ylitetty. Lopuksi käsittelijä hakee Types-oliolla näiden henkilöiden, tunnusten ja ryhmien tilatiedot StateType-taulusta ja suorittaa näille tiloja vastaavat toimenpiteet.

Pääkäyttäjän käyttöliittymä

Pääkäyttäjän käyttöliittymästä voidaan hallita kaikkia tietokannassa olevia tietoja. Koko järjestelmän pääkäyttäjän käyttöliittymästä on mahdollisuus muuttaa kaikkia tietoja. Alemmantasoisten laitosten ja tiedekuntien pääkäyttäjien käyttöliittymissä osaa käyttöliittymän toiminnoista on rajoitettu siten, ettei kaikkia tietoja pääse muuttamaan tai lukemaan. Käyttöliittymä ei ole Perl-moduuli, vaan Perlillä kirjoitettu CGI-skripti. Tarkempi kuvaus projektin toteuttamasta käyttöliittymän prototyypistä löytyy luvusta 6.

Käyttöliittymän kuvaus

Projektissa toteutettu alustava versio pääkäyttäjän käyttöliittymästä mahdollistaa järjestelmän henkilöiden ja käyttäjätunnusten tietojen katselun, sekä myös osin niiden muokkauksen ja lisäyksen. Käyttöliittymä on toteutettu Perl-kielisenä CGI-skriptinä, käyttäen ulkoasun esittämiseen HTML::Template -moduulia ja CSS-tyylitiedostoa.

Käyttöliittymä on suomenkielinen. Erillisten template-tiedostojen ansiosta tuki muille kielille on vaivaton toteuttaa, koska mitään käyttöliittymässä näkyvää tulostusta ei tehdä CGI-skriptistä.

Käyttöliittymän näyttökartta

Käyttöliittymässä eteneminen tapahtuu kuvan 5 näyttökartan mukaisesti.

Kuva 5. Käyttöliittymän näyttökartta.

Käyttöliittymän navigointi

Jokaisella käyttöliittymän sivulla näytetään sivun yläreunassa ja vasemmassa reunassa navigointialueet (katso kuva 6). Sivun vasemmasta yläkulmasta Jyväskylän yliopiston logoa ja myös ylänavigointialueen Käyttäjät-tekstiä klikkaamalla avautuu käyttöliittymän henkilöiden ja käyttäjätunnusten hakusivu (katso kuva 6). Käyttöliittymän vasemmassa reunassa olevasta navigointialueesta voidaan siirtyä hakusivulle (katso kuva 6) ja henkilön lisäyssivulle (katso kuva 13). Käyttöliittymän navigointiosiot eivät toteutetussa prototyypissä ota käyttäjän sijaintia sivustolla huomioon, eli navigointilinkit ovat joka sivulla yhtenevät.

Henkilöiden ja käyttäjätunnusten hakusivu

Käyttöliittymän aloitussivuna toimii kuvan 6 henkilöiden ja käyttäjätunnusten hakusivu, jolla voidaan hakea tietokannassa olevien henkilöiden ja käyttäjätunnusten tietoja. Henkilön ja käyttäjätunnuksen tietojen hakuosiot näytetään allekkain.

Kuva 6. Henkilöiden ja käyttäjätunnusten hakusivu. Henkilöiden tietojen haku tapahtuu antamalla haluttuihin tekstikenttiin hakuehdot ja painamalla Hae henkilöiden tiedot -painiketta. Henkilön hakuosion alaosassa on linkki, josta voi valita hakuehdoissa näytettäväksi osan hakuehdoista tai vaihtoehtoisesti kaikki hakukentät. Tekstikentissä voidaan käyttää hakuehtojen yhteydessä jokerimerkkeinä asteriskia *, prosenttimerkkiä % ja kysymysmerkkiä ?. Asteriski ja prosenttimerkki vastaavat nollasta äärettömään määrään merkkejä ja kysymysmerkki vastaa täsmälleen yhtä merkkiä. Isot ja pienet kirjaimet samaistetaan siten, ettei niitä oteta hakuehdoissa huomioon. Käyttäjätunnusten haku toimii henkilöhakua vastaavasti siten, että hakuehtoina voidaan antaa käyttäjätunnuksen osa ja käyttäjätunnuksen tila. Hakusivu käyttää templatetiedostoa searchuser.tmpl.

Hakutulossivu

Henkilön tai käyttäjätunnuksen hakutulokset näytetään kuvan 7 hakutulossivulla. Henkilöstä näytetään olennaisimpien henkilötietojen lisäksi ensisijainen käyttäjätunnus, ts. se käyttäjätunnus, jonka AccountOrder-arvo (katso luku 3.7) on 1. Henkilötunnusta klikkaamalla aukeaa henkilötietojen katselusivu (katso kuva 9).

Kuva 7. Henkilöhaun tulossivu.

Käyttäjätunnuksella haettaessa (katso kuva 6) näytetään kuvan 8 hakutulosivulla olennaisimmat käyttäjätunnuksen tiedot sekä sen henkilön nimi, jolle käyttäjätunnus kuuluu. Käyttäjätunnusta klikkaamalla aukeaa henkilön tietojen tarkastelusivu (katso kuva 10), jonka alaosassa näytetään tiedot kyseisen henkilön käyttäjätunnuksista. Hakutulossivu käyttää hakusivun tavoin searchuser.tmpl-templatea.

Kuva 8. Käyttäjätunnushaun hakutulossivu.

Henkilön ja käyttäjätunnusten tietojen katselusivu

Hakusivuilta (katso kuvat 7 ja 8) henkilön henkilötunnusta tai käyttäjätunnusta klikkaamalla aukeaa kuvan 9 henkilön ja käyttäjätunnusten tietojen katselusivu. Sivun yläosassa näytetään henkilön tiedot sekä Muuta tietoja -painike, josta avautuu henkilön tietojen muokkaussivu.

Henkilön tietojen alapuolella näytetään henkilön lisätiedot PersonParameter-taulusta (katso luku 3.4) ja lisätietojen alla näytetään Lisää uusi arvo -painike. Painikkeesta avautuu henkilön lisätiedon lisäyssivu (katso kuva 12). Mikäli henkilöllä on vähintään yksi lisätieto, näytetään lisäksi Muuta tietoja -painike, jota painamalla avautuu tietojen muokkausnäkymä (katso kuva 11).

Henkilötietojen alaosassa on Henkilön historiatiedot -osio, jossa esitetään viimeisimmät henkilön tietoihin kohdistuneet muutokset sekä tiedot muutosten syistä ja tallentajista. Projektin aikana toteutetussa käyttöliittymässä ei historiatietojen tallennus ole käytössä.

Kuva 9. Henkilön tietojen katselusivu. Henkilön tietojen alapuolella näytetään tiedot henkilön käyttäjätunnuksista. Osion yläreunassa näytetään henkilön käyttäjätunnukset ja niiden yleisimmät tiedot listana. Jos henkilöllä ei ole käyttäjätunnuksia, ilmoitetaan asiasta ko. kohdassa. Käyttäjätunnusta klikkaamalla aukeaa sivulle tarkemmat tiedot käyttäjätunnuksesta (katso kuva 10). Kunkin käyttäjätunnusrivin reunassa on painike Vaihda salasana, josta käyttöliittymän jatkokehityksen jälkeen pääsee vaihtamaan käyttäjätunnuksen salasanan.

Käyttäjätunnuslistan alapuolella olevaa Luo uusi käyttäjätunnus -painiketta klikkaamalla avautuu käyttäjätunnuksen lisäyssivu (katso kuva 14). Käyttäjätunnuksen yleistietojen alapuolella (katso kuva 10) näytetään ne ryhmät, joihin käyttäjätunnus liittyy suoraan, eikä toisen ryhmän kautta. Käyttäjätunnuksien ryhmien alapuolella näytetään käyttäjätunnuksen resurssit, eli kohdejärjestelmiin liittyvät tiedot. Lopuksi käyttäjätunnuksen ryhmien jälkeen on tarkoitus esittää käyttäjätunnuksen historiatiedot, mutta projektin aikana toteutetussa käyttöliittymässä historiatietoja ei tallenneta. Tietojen katselusivu käyttää viewuserdata.tmpl-templatetiedostoa.

Kuva 10. Käyttäjätunnuksen tietojen katselusivu.

Henkilön ja käyttäjätunnusten tietojen muokkaussivu

Henkilön- ja käyttäjätunnusten tietojen muokkaussivulla (katso kuva 11) näytetään vastaavat tiedot kuin tietojen katselusivulla (katso kuva 9), mutta useimmat tietoja sisältävät kentät ovat muokkaustilassa. Henkilön tietoja voi muokata, jonka jälkeen Tallenna tiedot -painikkeella tallennetaan tiedot ja näytetään käyttöliittymässä tieto tallennuksen onnistumisesta.

Henkilön lisätietoja muokatessa voidaan kullekin lisätiedolle antaa tekstikenttään vapaa merkkijonomuotoinen arvo ja valita tiedon julkisuusaste. Tallenna tiedot -painikkeen painamisen myötä tallennetaan tiedot ja tulostetaan ruudulle tieto tallennuksen onnistumisesta. Käyttöliittymän jatkokehityksen yhteydessä toteutetaan toiminto, jolla yhden tai useamman lisätiedon poistaminen onnistuu valitsemalla lisätiedon perässä oleva valintaruutu ja klikkaamalla Poista valitut -painiketta. Lisätietojen poistamisen jälkeen näytöllä näytetään tieto poistamisen onnistumisesta.

Projektin tuloksena syntyneessä käyttöliittymän prototyypissä käyttäjätunnuksen tietoja ei pysty tallentamaan. Tietojen muokkaussivu käyttää edituserdata.tmpl-tiedostoa.

Kuva 11. Henkilön tietojen muokkaussivu. Henkilön lisätiedon lisäyssivu

Henkilön lisätiedot -osion (katso kuva 11) Lisää uusi arvo -painikkeesta avautuu kuvan 12 henkilön lisätiedon lisäyssivu. Sivulta voidaan lisätä henkilötietojen tarkastelusivulla määritetylle henkilölle tietokannan PersonParameterType-taulussa (katso luku 3.5) määriteltyjä tietotyyppejä. Kunkin tietotyypin nimen edessä näytetään kyseisen tietotyypin tärkeysarvo (Importance-kenttä PersonParameterType-taulussa). Jokaiselle tiedolle voidaan määrittää Publicity-taulussa (katso luku 3.6) määritelty tiedon julkisuusaste. Lisätiedon lisäyssivu käyttää personparameter.tmpl-tiedostoa.

Kuva 12. Henkilön lisätiedon lisäyssivu. Henkilön lisäyssivu

Henkilön lisäyssivulta (katso kuva 13) voidaan lisätä tietokantaan henkilöitä. Henkilön tietojen syöttämisen ja Lisää henkilö -painikkeen painamisen jälkeen tallennetaan henkilön tiedot tietokantaan. Mikäli tarvittavia kenttiä ei täytetä (etunimet, sukunimi, henkilötunnus ja tilanmuutoksen ajankohta), pyytää käyttöliittymä täydentämään puuttuvat tiedot.

Seuraavan tilanmuutoksen ajankohdaksi asetetaan oletuksena nykyinen ajanhetki. Ajanhetki tallennetaan Timestamp-muodossa, josta PostgreSQL-tietokannanhallintajärjestelmä ymmärtää ainakin seuraavat muodot:

vvvv-kk-pp hh:mmaa, jossa aa on aikavyöhyke. Esimerkki Suomen

aikavyöhykkeen ajasta on 2005-05-31 11:05+2.

pp/kk/vvvv hh:mm:ss.mss, jossa mss on millisekunnit. Esimerkiksi 31/05/2005 11:05:32.114.

kk/pp/vvvv hh:mm.

pp.kk.vvvv hh:mm:ss PM.

Onnistuneen henkilön lisäyksen jälkeen siirrytään henkilön tietojen katselusivulle. Henkilön lisäyssivu käyttää tiedostoa adduser.tmpl.

Kuva 13. Uuden henkilön lisäyssivu. Käyttäjätunnuksen lisäyssivu

Henkilön tietojen tarkastelusivun (katso kuva 9) Käyttäjätunnukset-osasta Luo uusi käyttäjätunnus -painiketta klikkaamalla päästään kuvan 14 käyttäjätunnuksen lisäyssivulle. Käyttäjätunnuksen tietojen syöttämisen jälkeen tallennetaan käyttäjätunnuksen tiedot tietokantaan painamalla painiketta Lisää käyttäjätunnus. Mikäli pakollisia kenttiä Tunnus ja Seuraava tilanmuutos ei ole annettu, näytetään jo annetut tiedot ja pyydetään käyttäjää antamaan tarvittavat tiedot. Onnistuneen tallennusyrityksen jälkeen siirrytään henkilön ja käyttäjätunnusten tietojen katselusivulle (katso kuva 9).

Kuva 14. Käyttäjätunnuksen lisäyssivu.

Testaus

Projektin aikana ei ehditty toteuttaa järjestelmällistä ja laajaa testausta, koska projekti keskittyi määrittelyyn ja suunnitteluun. Lisäksi koettiin tärkeämmäksi toteuttaa osittain toimiva prototyyppi muutaman järjestelmällisesti testatun moduulin sijasta. Jokaiselle toteutetulle moduulille kirjoitettiin yksinkertainen testiohjelma, jolla testattiin moduulin toiminnallisuutta.

Käyttöliittymän testaus

Käyttöliittymää toteutettaessa ryhmän jäsenet suorittivat reaalimaailman tilannetta vastaavaa testausta, jolloin eri moduulien yhteistoimintaa päästiin testaamaan. Käyttöliittymän toteutuksen aikana moduuleissa havaittiin muutamia virheitä, jotka yksikkötestauksessa jäivät havaitsematta. Testausten tuloksia ei kirjattu dokumentteihin.

Projektin jäsenten lisäksi käyttöliittymän toimintoja kokeilivat vastaava ohjaaja ja tilaajan edustajat. Jukka-Pekka Santanen kommentoi käyttöliittymää projektin sähköpostilistalle 13.5. lähettämässään sähköpostissa. Palaute on luettavissa Shaman-projektin projektikansiolle tulostetusta sähköpostiarkistosta. Tilaajan edustajat mainitsivat projektin viikkopalaverien yhteydessä käyttöliittymän olevan rakenteeltaan vanhaa AMAN-järjestelmän käyttöliittymää toimivampi.

Moduuleissa havaitut virheet

Projektissa toteutettu käyttöliittymä ei käytä kaikkia toteutettuja moduuleita, joten kaikkien moduulien osalta moduulien yhteistoimintaa ei ole kokeiltu.

Toteutetuista moduuleista Account, Accounts, Person, Persons, Resource, Resources ja Types (katso luvut 4.5, 4.6, 4.9, 4.10, 4.12, 4.13 ja 4.15) havaittiin käyttöliittymän kutsumien metodien osalta toimivan virheettömästi, lukuunottamatta tallennusmetodia save. Se palauttaa tallennuksen paluuarvona aina tiedon onnistuneesta tallennuksesta riippumatta, onnistuiko tietojen lisäys tai olemassaolevien tietojen päivitys tietokantaan. Tallennusmetodin virhe on paikallistettu tietokannan hallintamoduuleihin ShamanSql ja Sql.

Käyttöliittymässä havaitut virheet

Käyttöliittymässä henkilön ja käyttäjätunnusten tietojen katselu- ja muokkaussivulla (katso kuva 9 luvussa 6.5) Käyttäjätunnukset-osiossa käyttäjätunnuksen perässä olevaan painikkeeseen Vaihda salasana ei ole toteutettu toiminnallisuutta.

Käyttöliittymä ei tue historiatietojen lukemista tai tallentamista. Henkilön ja käyttäjätunnuksen historiatietojen kohdalla näytetään esimerkinomaisesti, miten historiatiedot lopullisessa käyttöliittymässä voitaisiin näyttää.

Käyttöliittymässä varsinaiset havaitut virheet ovat henkilön lisätietojen poistamisen toimimattomuus ja käyttäjätunnuksen tietojen tallennuksen toimimattomuus. Mitään käyttäjän syöttämien tekstikenttien arvojen oikeellisuutta ei tarkisteta lukuunottamatta tarkistusta, onko pakollisiksi määrättyihin kenttiin annettu jokin arvo.

Käyttöliittymän toimintaa on testattu yleisimmistä WWW-selaimista Internet Explorerilla (versio 6.0), Operalla (7.54) ja Mozilla Firefoxilla (1.0.3) Windows-käyttöjärjestelmässä.

Toteutuneet vaatimukset

Luvussa kuvataan asetettujen vaatimusten toteutumista projektissa. Taulukoiden sarakkeessa TK esitetään, toteuttaako tietokanta kyseisen vaatimuksen. Sarake Mod tarkoittaa vaatimuksen toteutusta tietokannan hallintamoduuleissa. Sarake KL tarkoittaa vaatimuksen toteutuvan käyttöliittymän osalta. Lyhenteet taulukoiden soluissa tarkoittavat kyllä (K), ei (E) ja osittain (O). Viiva taulukossa tarkoittaa, ettei vaatimus koske tarkasteltavaa asiaa. Rajapintojen moduulit sovittiin siirrettäväksi jatkokehitykseen. Tarkemmin vaatimukset kuvataan vaatimusmäärittelystä.

Rajapintojen asettamat vaatimukset

Vaatimus	Prioriteetti	TK	Mod	KL
Lähdejärjestelmiltä tulevat siirtotiedostot käsitellään määräajoin ja muuttunut tieto päivitetään tietokantaan.	Ajan salliessa	K	E	―
Lisättäessä uutta henkilöä järjestelmään voidaan valita, luodaanko samalla henkilölle myös käyttäjätunnus, kotihakemisto ja sähköpostilaatikko.	Ajan salliessa	K	E	E
Lisättäessä uutta henkilöä järjestelmään voidaan henkilön käyttäjätunnus liittää organisaation ja roolin mukaisten ryhmien jäseneksi. Tällöin tietyn käyttäjätunnuksen omaava henkilö saa oikeuksia tiettyihin järjestelmiin (kuten Korppi, mikroverkot ja UNIX).	Ajan salliessa	K	E	O
Henkilöllä voi olla useita käyttäjätunnuksia, joista yksi voidaan valita ensisijaiseksi.	Tärkeä	K	E	O
Järjestelmän on mahdollistettava tiettyjen oikeuksien siirtäminen toiselle henkilölle. Esimerkiksi lomien yhteydessä tai laitoksen amanuenssin vaihtuessa uudelle amanuenssille on pystyttävä antamaan helposti ko. roolille kuuluvat oikeudet.	Tärkeä	K	E	E
Tietyn lähdejärjestelmän kautta luotu henkilö ja käyttäjätunnus täytyy pystyä merkitsemään kyseisen järjestelmän luomaksi.	Ajan salliessa	K	E	E

Taulukko 26. Rajapinnoille asetettujen vaatimusten toteutuminen.

Vaatimuksessa 1.3 voidaan käyttöliittymässä valita, luodaanko samalla käyttäjätunnus. Muita valintoja ei ole toteutettu. Vaatimuksessa 1.4 voidaan käyttäjätunnus valita ensisijaiseksi, mutta toteutus on kehno ja parannettava jatkokehityksessä.

Tilat ja tilasiirtymät

Vaatimus	Prioriteetti	TK	Mod	KL
Tilasiirtymä voidaan määritellä henkilölle, käyttäjätunnukselle, käyttäjätunnuksen ryhmäjäsenyyksille, ryhmille ja ryhmien ryhmäjäsenyyksille.	Tärkeä	K	E	O
Järjestelmä suorittaa automaattisesti määritetyt tilasiirtymät niille määritettyinä ajanhetkinä.	Tärkeä	K	E	E
Tilasiirtymässä voidaan suorittaa ennaltamääriteltyjä järjestelmän sisäisiä tai ulkoisia toimintoja.	Tärkeä	K	E	E

Taulukko 27. Tiloille ja tilasiirtymille asetettujen vaatimusten toteutuminen.

Vaatimuksessa 2.1 tilasiirtymän ajanhetkiä voidaan asettaa vain henkilölle ja käyttäjätunnukselle.

Resurssit

Vaatimus	Prioriteetti	TK	Mod	KL
Järjestelmän täytyy pystyä tallentamaan erityyppistä resurssitietoa käyttäjätunnuksista, ryhmistä ja rajapinnan järjestelmistä (esim. sähköpostialiaksia, sekä levy- ja tulostuskiintiöitä).	Tärkeä	K	E	E
Tiedon tallennukseen tarkoitettuja tietotyyppejä täytyy pystyä muokkaamaan, lisäämään ja poistamaan.	Ajan salliessa	K	E	E
Järjestelmän tulee toimia henkilötietorekisterinä, josta voidaan helposti hakea ja ylläpitää henkilöiden tietoja.	Välttämätön	K	O	O
Järjestelmän tulee toteuttaa funetEduPerson-yhteensopivuus.	Välttämätön	O	O	O
Tietojen muuttuessa täytyy kohdejärjestelmille viedä muuttunut tieto.	Tärkeä	K	E	E
Vietäessä tietoa kohdejärjestelmille täytyy paluutieto käsitellä, virheet havaita ja yrittää tietojen viemistä myöhemmin uudelleen.	Tärkeä	K	E	E

Taulukko 28. Resursseille asetettujen vaatimusten toteutuminen.

Vaatimus 3.3 on vain osittain toteutettu, koska tietokantamoduulit ovat keskeneräiset. Vaatimuksen 3.4 mukainen yhteensopivuus ei ole täysin toteutettu moniarvoisten kenttien osalta. funetEduPerson-skeeman tietyt tietotyypit ovat moniarvoisia, mitä nykyinen järjestelmä ei toteuta.

Ryhmäjäsenyydet

Vaatimus	Prioriteetti	TK	Mod	KL
Henkilön käyttäjätunnus voi liittyä moneen ryhmään.	Välttämätön	K	K	E
Ryhmä voi liittyä moneen ryhmään.	Välttämätön	K	K	E
Ryhmät muodostavat ryhmähierarkian, jossa oikeudet periytyvät yläryhmiltä alaryhmille.	Välttämätön	K	E	E
Henkilö saa oikeudet ryhmistä, joihin hänen käyttäjätunnuksensa kuuluu. Henkilön käyttäjätunnus voi kuulua moneen ryhmään (esim. opiskelijoihin ja työntekijöihin) saaden kaikki niille kuuluvat oikeudet.	Välttämätön	K	E	E

Taulukko 29. Ryhmäjäsenyyksille asetettujen vaatimusten toteutuminen.

Historia- ja lokitiedot

Vaatimus	Prioriteetti	TK	Mod	KL
Järjestelmä kirjoittaa historiatietoja tietojen muutoksien yhteydessä.	Tärkeä	K	O	O
Historiatiedoista voidaan hakea entisiä arvoja ainakin henkilöiden, käyttäjätunnuksien ja ryhmien tiedoille.	Ajan salliessa	K	E	E
Lokitietoihin kirjoitetaan tietoja järjestelmän toiminnasta sisältäen mm. käyttäjien ja pääkäyttäjien suorittamat toimenpiteet, eräajossa tapahtuvat tiedon päivitykset ja tilasiirtymien aiheuttamat muutokset.	Ajan salliessa	K	O	E
Lokitietoihin kirjoitetaan tietoja virhetilanteista. Tiedoissa tulisi olla tarkka kuvaus siitä, mikä toiminto virheen aiheutti ja mikä oli virheen edeltävä tilanne.	Ajan salliessa	K	O	E

Taulukko 30. Historia- ja lokitiedoille asetettujen vaatimusten toteutuminen.

Vaatimus 5.3 on toteutettu osittain moduuleihin. Lokikirjoituskohdat tulisi kuitenkin määritellä tarkemmin. Lokikirjoitus itsessään on myös virheellinen, koska jossain tapauksissa lokitiedoston rivit katkeavat kesken ja toinen virheilmoitus jatkuu heti perään. Vaatimuksen 5.4 virhekuvaukset täytyy määritellä jatkokehityksessä yhtenäisemmiksi.

Käyttöliittymät

Vaatimus	Prioriteetti	TK	Mod	KL
Käyttöliittymän tulee olla helppokäyttöinen ja helposti muutettavissa ilman Perl-ohjelmointikielen tuntemusta.	Tärkeä	―	―	K
Ensisijainen käyttökieli on suomi, mutta myös muiden kielivaihtoehtojen lisäykseen on varauduttava.	Tärkeä	―	E	K
Käyttöliittymästä tehdyt muutokset tulee viedä kohdejärjestelmille reaaliajassa.	Välttämätön	K	E	E
Usein käytettävät toiminnot on oltava selkeästi esillä.	Tärkeä	―	E	K
Tietokannasta voidaan hakea tietoja henkilöistä ja käyttäjätunnuksista monen eri hakuehdon mukaan. Hakuehtoina ovat mm. nimi, henkilötunnus, käyttäjätunnus, oikeustiedot ja ryhmiin kuuluminen.	Välttämätön	K	O	O

Taulukko 31. Käyttöliittymälle asetettujen vaatimusten toteutuminen.

Vaatimus 6.5 on toteutettu osittain, koska tietokannasta voidaan hakea vain henkilöitä ja käyttäjätunnuksia.

Laitosten ja tiedekuntien käyttöliittymä

Vaatimus	Prioriteetti	TK	Mod	KL
Ryhmien tietoja ja oikeuksia voidaan hakea ja muuttaa.	Ajan salliessa	K	E	E
Henkilöitä ja heidän tietoja voidaan lisätä ja poistaa.	Ajan salliessa	K	K	O
Henkilöitä ja heidän tietoja voidaan hakea ja muuttaa.	Ajan salliessa	K	K	K
Käyttäjätunnuksia ja niiden tietoja voidaan lisätä, hakea ja muuttaa sekä salasanaa voidaan vaihtaa.	Ajan salliessa	K	O	O
Käyttäjätunnuksien ja henkilöiden tilaa voidaan muuttaa.	Ajan salliessa	K	K	K
Käyttäjätunnuksia voidaan sijoittaa ryhmään ja poistaa ryhmästä oman organisaation ryhmiin liittyen.	Ajan salliessa	K	O	E
Pääkäyttäjien oikeudet määritellään erikseen omassa taulussaan erotettuna järjestelmän muista oikeuksista parantaen tietoturvaa.	Ajan salliessa	K	―	―
Pääkäyttäjän oikeus tiettyyn ryhmään tarkoittaa oikeutta kyseiseen ryhmään sekä kaikkiin sen alaryhmiin.	Välttämätön	K	E	―

Taulukko 32. Laitosten ja tiedekuntien käyttöliittymän vaatimusten toteutuminen.

Vaatimus 7.2 on toteutettu osittain, koska henkilöitä voidaan lisätä, mutta ei poistaa. Vaatimuksesta 7.4 on toteutettu vain käyttäjätunnuksen tietojen lisääminen, hakeminen ja muuttaminen. Salasanaa ei voida vaihtaa. Vaatimus 7.6 on toteutettu moduuleihin, mutta ei testattu, joten sen toimivuus on epävarmaa.

Järjestelmän pääkäyttäjän käyttöliittymä

Vaatimus	Prioriteetti	TK	Mod	KL
Pääkäyttäjällä on oikeus käyttää kaikkia järjestelmään liittyviä toimintoja.	Välttämätön	―	E	K
Siirtotiedostoa läpikäydessä järjestelmä ilmoittaa virheellisistä, puutteellisista tai ristiriitaisista tiedoista antaen pääkäyttäjälle mahdollisuuden korjata tiedot.	Ajan salliessa	K	E	E
Ryhmiä voidaan luoda ja poistaa.	Välttämätön	K	K	E
Ryhmien tietoja voidaan hakea ja muuttaa.	Välttämätön	K	E	E
Ryhmä voidaan liittää toisen ryhmän jäseneksi ja poistaa toisen ryhmän jäsenyydestä.	Välttämätön	K	O	E
Ryhmä voidaan kopioida uudeksi ryhmäksi.	Ajan salliessa	K	E	E
Useampia ryhmiä voidaan yhdistää yhdeksi ryhmäksi.	Ajan salliessa	K	E	E
Ennaltamääriteltyjä valikkovaihtoehtoja voidaan muuttaa. Tällaisia ovat esim. laitosten ja tiedekuntien nimet.	Ajan salliessa	K	E	E
Pääkäyttäjä voi vaihtaa ryhmien, käyttäjätunnuksen ryhmäjäsenyyksien ja ryhmien ryhmäjäsenyyksien tilaa.	Tärkeä	K	E	E

Taulukko 33. Järjestelmän pääkäyttäjän käyttöliittymän vaatimusten toteutuminen.

Vaatimus 8.5 on toteutettu moduuleihin, mutta ei testattu, joten sen toimiminen on epävarmaa.

Käyttäjän käyttöliittymä

Vaatimus	Prioriteetti	TK	Mod	KL
Henkilö voi katsella itsestään järjestelmään tallennettuja tietoja.	Ajan salliessa	K	E	E
Henkilö voi muuttaa omia yhteystietoja.	Ajan salliessa	K	E	E
Henkilö voi vaihtaa käyttäjätunnuksen salasanaa.	Ajan salliessa	K	E	E
Henkilö voi asettaa sähköpostin uudelleenohjauksen haluamaansa osoitteeseen.	Ajan salliessa	K	E	E
Henkilö voi kieltää itseään koskevien tietojen esittämisen esimerkiksi sähköposti- ja kotisivulistauksissa.	Ajan salliessa	K	E	E

Taulukko 34. Käyttäjän käyttöliittymän vaatimusten toteutuminen.

Tietoturva

Vaatimus	Prioriteetti	TK	Mod	KL
Muutoksia järjestelmän tietoihin saa tehdä vain autentikoituneet käyttäjät, joilla on tarvittavat oikeudet.	Välttämätön	K	E	E
Järjestelmään sekä tietokantapalvelimeen saa ottaa yhteyden vain tietyistä ip-osoitteista.	Välttämätön	―	E	E
Salasanoja säilytetään tietokannassa kryptatussa muodossa, eikä niitä voi palauttaa selväkieliseksi.	Välttämätön	K	E	―
Pääkäyttäjille voidaan määritellä eritasoisia oikeuksia järjestelmän tietojen muokkaamiseksi.	Ajan salliessa	K	E	E
Pääkäyttäjien oikeudet määritellään omassa tietokannan taulussa.	Välttämätön	K	―	―
Käyttöliittymän tulee käyttää HTTPS-protokollaa.	Välttämätön	―	K	K

Taulukko 35. Tietoturvavaatimusten toteutuminen.

Tekniset vaatimukset

Vaatimus	Prioriteetti	TK	Mod	KL
Järjestelmä toimii Internetiin kytketyllä Linux-palvelimella, jolloin sitä voidaan käyttää verkkoon kytketystä tietokoneesta.	Välttämätön	―	K	―
Järjestelmän asennus ja käyttöönotto on oltava helppoa.	Tärkeä	K	K	E
Järjestelmä on oltava helposti monistettavissa toiseen hakemistoon tai toiselle koneelle.	Tärkeä	K	K	K
Järjestelmä tulee toteuttaa mahdollisimman versioriippumattomaksi, jotta toimiminen muilla versioilla on mahdollista.	Tärkeä	K	K	K
Palvelimelle tulee olla asennettuna Apache-palvelinohjelmiston versio 2.0.51 sekä Perl-tulkin versio 5.8.3. Uudemmat ja osa vanhemmista versioista saattavat olla yhteensopivia.	Välttämätön	―	K	―
Järjestelmä tarvitsee PostgreSQL-tietokannanhallintajärjestelmästä version 7.4.7. Se voi olla asennettuna samalle tai ulkoiselle palvelimelle kuin itse järjestelmä. Uudemmat ja osa vanhemmista versioista saattavat olla yhteensopivia.	Välttämätön	K	―	―
Järjestelmän palvelimelle tulee olla asennettuna Perl-ohjelmointikielen tuki tietokantayhteyksille.	Välttämätön	―	K	―

Taulukko 36. Teknisten vaatimuksien toteutuminen.

Jatkokehitystavoitteet ja -ideat

Projekti oli vaatimusmäärittely- ja suunnittelupainotteinen, joten suuri osa Shaman-järjestelmän toiminnoista sovittiin siirrettäväksi jatkokehitykseen. Jatkokehitystavoitteet on jaettu neljään osaan sisältäen tietokannan, tietokannan hallintamoduulit, muut moduulit ja käyttöliittymän.

Yleisenä jatkokehitystavoitteena on muuttaa kaikki moduuleissa käytetyt muuttujanimet unkarilaisen notaation mukaisiksi.

Tietokanta

	Jatkokehitystavoite	Prioriteetti
1.1	ID-kenttä on lisättävä PersonParameter-tauluun. Lisäys mahdollistaa tuen moniarvoisille tietotyypeille.	Välttämätön
1.2	ID-kenttä on lisättävä Membership-tauluun. ID-kentän lisäys mahdollistaa tehokkaamman taulun tietojen käsittelyn.	Tärkeä
1.3	Active-kenttä on lisättävä StateType-tauluun. Lisäys mahdollistaa taulussa olevien tilojen luokittelun aktiivisiin ja passiivisiin tiloihin.	Tärkeä

Taulukko 37. Tietokannan jatkokehitystavoitteet.

Tietokannan hallintamoduulit

	Jatkokehitystavoite	Prioriteetti
2.1	Useiden samantyyppisten PersonParameter-arvojen lisäys ja muokkaus on tehtävä mahdolliseksi. Mahdollistaa tuen moniarvoisille tietotyypeille.	Välttämätön
2.2	PersonParameter-arvojen muutokset on pystyttävä kirjoittaa History-tauluun.	Välttämätön
2.3	Monivalintatyyppisille PersonParameter-arvoille ja muille erikoisille PersonParameter-arvojen tietotyypeille on oltava tuki.	Keskinkertainen
2.4	Hallintamoduuleihin tarvitaan metodi kahden henkilön yhtäläisyyden vertailuun. Tällä estetään sellaisten henkilöiden lisäys, joiden tiedot löytyvät jo järjestelmästä.	Välttämätön
2.5	PersonParameter-arvojen käsittely tallennettaessa on muutettava tehokkaammaksi.	Tärkeä

Taulukko 38. Person-moduulin jatkokehitystavoitteet.

	Jatkokehitystavoite	Prioriteetti
3.1	Paluuarvot on muutettava SystemConfig-vakioiksi. Tällöin jokaisesta ennaltamääritetystä virhetyypistä saadaan selkokielinen seliteteksti.	Tärkeä
3.2	FindResources-metodi on muutettava käyttämään CollectResources-metodia. Tällä tehostetaan käyttäjätunnusten kaikkien resurssien hakua.	Tärkeä
3.3	ShamanSql::RemoveAccount-metodi on kirjoitettava. Metodi mahdollistaa käyttäjätunnuksen poistamisen.	Välttämätön

Taulukko 39. Account-moduulin jatkokehitystavoitteet.

	Jatkokehitystavoite	Prioriteetti
4.1	ShamanSql::AddRecMembership-metodi on optimoitava käyttämään MembershipID-arvoa.	Tärkeä
4.2	ShamanSql::DelRecMembership-metodi on optimoitava käyttämään MembershipID-arvoa.	Tärkeä
4.3	Metodit ryhmän jakamiseksi on kirjoitettava.	Tärkeä.

Taulukko 40. Group-moduulin jatkokehitystavoitteet.

History-olioon saattaa tulla muutoksia ShamanSql-moduulin jatkokehittämisen yhteydessä.

Group-olion toteuttaminen sovittiin jätettävän projektin jälkeiseen jatkokehitykseen. Jatkokehityksessä tulee toteuttaa muiden monikko-olioiden rakennetta vastaava monikko Group-olioiden joukkojen käsittelyyn.

	Jatkokehitystavoite	Prioriteetti
5.1	Find-metodin toimintaa on optimoitava.	Keskinkertainen.
5.2	GetOwners-metodi on toteutettava. Metodi mahdollistaa niiden käyttäjätunnusten hakemisen, joille tietty resurssi kuuluu.	Keskinkertainen.

Taulukko 41. Resource-moduulin jatkokehitystavoitteet.

History-olion toteuttaminen sovittiin jätettäväksi projektin jälkeiseen jatkokehitykseen. Jatkokehityksessä tulee toteuttaa muiden monikko-olioiden rakennetta vastaava monikko History-olioiden joukkojen käsittelyyn.

	Jatkokehitystavoite	Prioriteetti
6.1	Save-metodin virhe on korjattava siten, että virhetilanteessa palautetaan tieto epäonnistumisesta.	Tärkeä.
6.2	StateType-taulun hallintaa on parannettava.	Keskinkertainen.
6.3	Save-metodien toimintaa on parannettava.	Välttämätön.
6.4	Tiedon kirjoittaminen History- ja Pending-tauluihin Save-metodeissa History-oliota käyttäen on tehtävä mahdolliseksi.	Välttämätön.

Taulukko 42. ShamanSql-moduulin jatkokehitystavoitteet.

.

	Jatkokehitystavoite	Prioriteetti
7.1	Lokitiedon kirjoituksen ongelmat on korjattava, nyt lokimoduuli kirjoittaa useampaa riviä samaan aikaan.	Välttämätön

Taulukko 43. Log-moduulin jatkokehitystavoitteet.

Rajapintamoduulit ja tilasiirtymämoduuli

Rajapintamoduulit ja tilasiirtymämoduuli jäivät projektin toteutuksen ulkopuolelle. Jatkokehityksessä on suunniteltava rajapinnat ja toteutettava niitä vastaavat moduulit. Suunniteltuja moduuleita kuvataan luvussa 5.

Käyttöliittymä

Projektissa toteutettu pääkäyttäjän käyttöliittymän prototyyppi jäi projektin tiukan aikataulun vuoksi pahasti puutteelliseksi vaatimusmäärittelyssä asetettuihin vaatimuksiin nähden. Käyttöliittymälle asetettuja jatkokehitystavoitteita ovat seuraavat:

Projektin aikana toteutettu käyttöliittymä mahdollistaa henkilöön ja käyttäjätunnuksiin liittyvien tietojen käsittelyn, kun lopullisessa käyttöliittymässä on oltava mahdollisuus muokata kaikkien tietokantataulujen (ks. luku 3) sisältöä. Merkittävimmät vaadittavat toiminnot ovat ryhmien ja niiden oikeuksien hallinta, tilasiirtymien käsittely ja kohdejärjestelmiin vietävien tietojen hallinta.

Käyttöliittymään on toteutettava tuki eritasoisille pääkäyttäjille, jolloin käyttöliittymän ulkoasu ja toiminnallisuus muokkautuu oikeuksien perusteella.

Tietoturvaan ja toimintojen toimivuuden ja oikeellisuuden tarkistukseen on kiinnitettävä erityistä huomiota.

Käyttäjän kaikkien syöttämien merkkijonojen oikeellisuus on tarkistettava.

Käyttöliittymän tulee käyttää mahdollisuuksien mukaan pelkästään POST-metodia lomakkeiden tietoja käsiteltäessä.

Käyttöliittymässä on oltava tuki eri kielille. Kukin käyttäjä voi valita käyttämänsä kielen.

Projektissa toteutetut pääkäyttäjän käyttöliittymän henkilö- ja käyttäjätunnusten tietojen muokkaus ja tallennus on korjattava toimimaan virheettömästi.

Kullekin henkilölle on pystyttävä selkeästi määrittelemään ensisijainen käyttäjätunnus. Vain yksi käyttäjätunnus voi olla ensisijainen.

Sivulta toiselle siirtymisessä on käytettävä linkkejä, jos siirtymiseen ei liity tietojen tallentamista. Tietoja tallennettaessa käytetään painikkeita.

Käyttöliittymän ulkoasua on muokattava käytettävyyttä ajatellen.

Jokaisella sivulla voisi olla maininta sivuston osasta, jossa käyttäjä tällä hetkellä on.

Henkilötunnuksen ja käyttäjätunnuksen tietoja käsiteltäessä voisi sivulla olla maininta, kenen henkilön ja käyttäjätunnuksen tietoja tarkastellaan.

Henkilön ja käyttäjätunnuksen hakusivulla käyttäjällä on oltava ohjesivu tai -osio, jossa kuvataan hakuehtojen toimintaa.

Hakutuloksissa on oltava mahdollisuus rajata näytettäviä hakutuloksia. Henkilöiden ja käyttäjätunnusten haku ilman hakuehtojen antamista tulee olla estetty.

Tilasiirtymien ajankohta on pystyttävä antamaan yksiselitteisessä muodossa, jolloin tietoja syötettäessä käyttäjä varmistuu antamansa päivämäärän oikeellisuudesta.

Tilasiirtymän yhteydessä on näytettävä seuraavan tilansiirtymän ajanhetken lisäksi seuraavan tilan nimi.

Nimeämiskäytännöt

Luvussa käsitellään lähdekooditiedostoissa käytettyjä nimeämis- ja kommentointikäytänteitä.

Tiedostojen nimeäminen

Lähdekoodimoduulit on nimetty englanniksi ja samaa nimeä on käytetty tiedoston nimessä. Nimissä ei käytetä muita tarkenteita, kuten päivämääriä tai versioita, vaan tarkenteet ilmoitetaan hakemistojen nimissä.

Lähdekooditiedostot on jaoteltu toiminnallisuuden mukaan seuraaviin alihakemistoihin:

data	sisältää Log- ja Sql-moduulit.

interface	sisältää käyttöliittymän tiedostot, kuten users.cgi ja	template-tiedostot.

system	sisältää tietokannanhallintaan käytetyt moduulit, kuten	Person-, Persons- ja ShamanSql-moduulit.

Muut moduulit Lang.pm ja SystemConfig.pm on sijoitettu suoraan sovelluksen juurihakemistoon.

Tiedostojen kommentointi

Lähdekooditiedostot on kommentoitu englanniksi helpottamaan järjestelmän jatkokehitystä. Jatkokehittäjän ei tällöin tarvitse osata suomea. Jokaisen tiedoston alkuun on kirjoitettu tiedoston nimi, kuvaus tiedoston sisällöstä, sen tekijöistä ja versiosta. Tiedostoon tehdyt muutokset on kirjattu tiedoston alkuun, mikä helpottaa virheiden korjausta ja antaa tiedoston muutoksista historialistan.

Jokainen lähdekoodissa oleva tärkeäksi havaitun muuttujan käyttötarkoitus on kommentoitu muuttujan esittelyssä. Väliaikaisesti luotuja tilapäismuuttujia ei ole kommentoitu. Lähdekoodissa olevien aliohjelmien yhteyteen on kirjoitettu kuvaus aliohjelman toiminnasta sekä aliohjelmalle annettavista parametreista ja palautusarvosta.

Lähdekooditiedoston alussa olevat kommentit ovat seuraavan kaltaisia.

# ****************************************

# FILE DESCRIPTION

# ****************************************

# FILE: config.pl

# LANGUAGE: Perl

# CREATED: 12.4.2005

# DESCRIPTION: Includes global settings and variables for the

# system.

# AUTHOR: Mika Rinkinen

# VERSION: 0.2005.0412

#

# Copyright © 2005 Marko Andersson, Mika Rinkinen, Matti

# Törmä, Timo Valonen

#

# This library is free software; you can redistribute it

# and/or modify it under the terms of the GNU Lesser General

# Public License as published by the Free Software

# Foundation; either version 2.1 of the License, or (at your

# option) any later version.

#

# This library is distributed in the hope that it will be

# useful, but WITHOUT ANY WARRANTY; without even the implied

# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR

# PURPOSE. See the GNU Lesser General Public License for

# more details.

#

# You should have received a copy of the GNU Lesser General

# Public License along with this library; if not, write to

# the Free Software Foundation, Inc., 59 Temple Place, Suite

# 330, Boston, MA 02111-1307 USA

#

#

# ChangeLog:

# (* = Changed, + = Added, - = Removed)

#

# 12.4.2005 Mika Rinkinen

# + Created

# ****************************************

Aliohjelman kommentointi on hoidettu seuraavasti:

sub TestSub

# TestSub is used for testing.

# $sStr string to test

# Returns:

# 0 test succeeded

# 1 some error

# 2 some other error

{

my ($sStr) = @_;

DoSomething;

return Result;

}

Muuttujien nimeäminen

Useammasta eri sanasta koostuvat muuttujan nimet on kirjoitettu yhteen siten, että jokaisen sanan ensimmäinen kirjain on kirjoitettu isolla. Vakiomuuttujat on kirjoitettu aina isoilla kirjaimilla, eikä niiden edessä ole käytetty unkarilaisen nimeämistavan tyyppiä kuvaavaa kirjainta.

Moduulien osalta muuttujien nimeämisessä käytettiin unkarilaista nimeämistapaa, jossa muuttujan tyyppi ilmoitetaan muuttujan tyyppiä kuvaavalla kirjaimella muuttujan edessä. Tämä helpottaa koodin lukemista, kun muuttujan nimellä voidaan ilmaista, mihin tarkoitukseen muuttujaa on suunniteltu käytettäväksi. Perl-kieli on tyypitön kieli, joten muuttujan tyyppi saattoi vaihtua koodissa riippuen muuttujan käyttökohteesta.

Unkarilaisten nimeämissääntöjen kirjaimet ovat seuraavat:

p	on osoitin (pointer).

d	kuvaa kahden numeron välisen erotuksen (difference).

c	kuvaa olioiden lukumäärää (count).

cb	on olion koko tavuina (count in bytes).

cw	on olion koko sanoina (count in words).

f	on boolean-arvo (flag).

w	on sana (word).

ch	on merkki (character).

i	on kokonaisluku (integer).

f	on liukuluku (float).

b	on tavu (byte).

Ryhmän nimeämissääntöihin lisäämä tyyppi on seuraava:

s	on merkkijono (string).

Muuttujan nimet ovat esimerkiksi seuraavia:

sFirstName	on merkkijonotyyppinen muuttuja.

iCount	on kokonaislukutyyppinen muuttuja.

Yhteenveto

Shaman-projektissa suunniteltu käyttäjätunnusten hallintajärjestelmä koostuu rajapinnoista kohdejärjestelmiin, lähdejärjestelmiin, salasana.jyu.fi-palveluun ja Korppi-järjestelmään, tilasiirtymien hallintamoduulista, käyttöliittymästä sekä tietokannan hallintaosasta ja itse tietokannasta. Järjestelmän ytimenä ovat tietokanta ja tietokannan hallintamoduulit, jotka toimivat rajapintana tietokannan ja järjestelmän muiden osien välillä.

Projektissa toteutettiin Shaman-järjestelmän keskeisimmät osat, joita ovat tietokanta ja tietokannan hallintamoduulit. Lisäksi projektissa toteutettiin alustava prototyyppi pääkäyttäjän käyttöliittymästä. Toteutusvälineinä käytettiin Perl-ohjelmointikieltä ja PostgreSQL-tietokannanhallintajärjestelmää. Shaman-projektin jälkeen järjestelmän jatkokehitys suuntautuu lähde- ja kohdejärjestelmien rajapintojen toteutukseen, tilasiirtymien hallintamoduulin toteutukseen ja käyttöliittymän jatkokehitykseen.

Lähteet

Andersson Marko, Rinkinen Mika, Törmä Matti ja Valonen Timo, ”SHAMAN-projekti, vaatimusmäärittely”, saatavilla PDF-muodossa osoitteesta <URL: http://sovellusprojektit.it.jyu.fi/shaman/dokumentit/vaatimusmaar/16.05.2005_Vaatimusmaarittely.pdf>, Jyväskylän yliopisto, tietotekniikan laitos, 16.5.2005.

Andersson Marko, Rinkinen Mika, Törmä Matti ja Valonen Timo, ”SHAMAN-projekti, projektisuunnitelma”, saatavilla PDF-muodossa osoitteesta <URL: http://sovellusprojektit.it.jyu.fi/shaman/dokumentit/projektiraportti/Projektiraportti.pdf>, Jyväskylän yliopisto, tietotekniikan laitos, 1.6.2006.

Andersson Marko, Rinkinen Mika, Törmä Matti ja Valonen Timo, ”SHAMAN-projekti, asennusohje”, saatavilla tekstimuodossa osoitteesta <URL: http://sovellusprojektit.it.jyu.fi/shaman/dokumentit/asennusohje/asennusohje.txt>, Jyväskylän yliopisto, tietotekniikan laitos, 31.5.2005.

Christiansen Tom and Torkington Nathan, ”Perl Cookbook”, O' Reilly & Associates, Inc., Sebastopol, California 2003.

Christiansen Tom, Wall Larry and Schwartz Randal L, ”Programming Perl”, O' Reilly & Associates, Inc., Sebastopol, California 1996.

HAKA-projekti, ”funetEduPerson-skeema”, saatavilla PDF-muodossa osoitteesta <URL: http://www.csc.fi/suomi/funet/middleware/valinen/funetEduPerson_1_0.pdf>, CSC – Tieteellinen laskenta Oy, Espoo, 2004.

Hietaniemi Jarkko, ”Comprehensive Perl Archive Network”, luettavissa HTML-muodossa osoitteessa <URL: http://www.cpan.org/>, CPAN, 23.5.2005.

Lahtonen Tommi, ”SQL”, Docendo Finland Oy, Jyväskylä, 2002.

Santanen Jukka-Pekka, ”Opinnäytteiden kirjoittaminen, lyhyt oppimäärä”, saatavilla HTML-muodossa osoitteesta <URL: http://www.mit.jyu.fi/santanen/info/kirjoittamisesta.html>, Jyväskylän yliopisto, tietotekniikan laitos, 23.8.2000.

Santanen Jukka-Pekka, ”Tietotekniikan Sovellusprojektien ohje”, saatavilla HTML-muodossa osoitteesta <URL: http://www.mit.jyu.fi/palvelut/sovellusprojektit/projohje.html>, Jyväskylän yliopisto, tietotekniikan laitos, 27.1.2005.

Toivonen Tero, ”AMAN-järjestelmän kaaviot”, saatavilla PNG-muodossa osoitteesta <URL: http://www.cc.jyu.fi/~tptoivon/aman/>, Jyväskylän yliopisto, ATK-keskus, 2.3.2005.

Liitteet. Moduulien metodit ja attribuutit

Liitteissä on olennaisimmista moduuleista on kuvattu attribuutit ja metodit. Puutteellisten ja keskeneräisten moduulien attribuutteja ja metodeja ei ole kuvattu. Näitä ovat moduulit Admin, Groups, Historys ja Pending. Attribuuttien osalta on käytetty unkarilaista notaatiota, joka on esitetty luvussa 10.3. Osa attribuuteista on jaettu yhteiseksi kaikkien moduulista luotujen instanssien kanssa. Jaetut attribuutit on ilmoitettu niiden kuvauksessa globaaleina muuttujina.

Account-olio

Account-olion toiminta on kuvattu sovellusraportin luvussa 4.6.

Attribuutti	Kuvaus
iAccountID	Käyttäjätunnuksen ID-numero tietokannassa.
sAccountName	Käyttäjätunnuksen nimi.
iAccountOrder	Järjestysnumeroa käytetään priorisoimaan käyttäjätunnuksia.
Description	Vapaa kuvaus.
sTimeOfNextStateChange	Seuraavan tilasiirtymän ajankohdan aikaleima.
iPersonID	Viite henkilöön. Käyttäjätunnuksen omistaja.
iStateTypeID	Tilakoodi.
aMemberships	Taulukko jäsenyyksistä ryhmiin. Sisältää viitteitä taulukkoihin. Taulukon alkiot ovat seuraavat: 0 on ryhmän ID-numero, 1 on jäsenyyden tyyppinumero, 2 on tilakoodi ja 3 on seuraavan tilasiirtymän ajankohdan aikaleima.
Resources	Resources-olion viite.
hLoadedAccounts	Hajautustaulukko muistiinladatuista Account-olioista. Avaimena on käyttäjätunnuksen ID-numero ja arvona Account-olio. Globaali muuttuja kaikkien Account-olioiden kesken.

Taulukko 44 Account-olion attribuutit.

new

Kuvaus: Account-luokan konstruktori luo Account-olion ja palauttaa siitä viitteen. Metodille voidaan antaa parametrina käyttäjätunnuksen ID-numero. Ilman parametria metodi luo tyhjän olion. Parametrin kanssa metodi lataa ID-numeroa vastaavan käyttäjätunnuksen tietokannasta, jos sellainen löytyy, sekä alustaa käyttäjätunnuksen tiedot käyttämällä ShamanSql-moduulin load-metodia. Ladattu käyttäjätunnus tallennetaan muistiin hLoadedAccount-muuttujaan. Jos käyttäjätunnus on jo ladattu muistiin, palautetaan viite suoraan ilman tietokantakyselyä.

Parametrit: Käyttäjätunnuksen ID-numero. Vapaaehtoinen parametri.

Paluuarvo:

Viite Account-olioon, jos virheitä ei esiinny.

Undef, jos parametrinmukaista käyttäjätunnusta ei voida ladata.

addMembership

Kuvaus: Lisää käyttäjätunnuksen jäseneksi ryhmään.

Parametrit:

Group-olio, johon käyttäjätunnus liitetään.

Jäsenyyden tyyppi.

Jäsenyyden tila.

Seuraavan tilasiirtymän ajanhetken aikaleima.

Paluuarvo:

0, jos virheitä ei esiinny.

1, jos jäsenyys on jo olemassa ryhmän ja käyttäjätunnuksen välillä.

2, jos jäsenyyden ryhmää ei ole tietokannassa.

delMembership

Kuvaus: Poistaa käyttäjätunnuksen jäsenyyden ryhmästä.

Parametrit:

Group-olio, josta käyttäjätunnuksen jäsenyys poistetaan.

Jäsenyyden tyyppi.

Paluuarvo:

0, jos virheitä ei esiinny.

1, jos jäsenyys on jo olemassa.

2, jos jäsenyyden ryhmää ei ole tietokannassa.

getMemberships

Kuvaus: Palauttaa käyttäjätunnuksen pyydetyn tyyppiset ryhmäjäsenyydet.

Parametrit:

Jäsenyyden tyyppi, vapaaehtoinen parametri.

Jäsenyyden tila, vapaaehtoinen parametri.

Paluuarvo: Taulukko sisältää alkioina viitteitä taulukoihin. Sisätaulukoiden alkioina ovat ryhmän ID-numero, tyyppikoodi, tilakoodi ja seuraavan tilasiirtymän ajankohdan aikaleima.

getAttributes

Kuvaus: Palauttaa käyttäjätunnuksen attribuutit.

Parametrit: -

Paluuarvo: Palauttaa viitteen hajautustaulukkoon, jonka avaimina ovat AccountID, PersonID, AccountOrder, AccountName, Description, StateTypeID ja TimeOfNextStateChange.

setAttributes

Kuvaus: Asettaa käyttäjätunnukselle annetut parametrit.

Parametrit: Hajautustaulukko, jossa avaimina ovat AccountOrder, AccountName, Description, StateTypeID ja TimeOfNextStateChange.

Paluuarvo: Palauttaa aina 0.

collectResources

Kuvaus: Palauttaa annetun tyyppisten jäsenyyksien kautta periytyvät resurssit. Jos parametreja ei anneta, palautetaan kaikki resurssit.

Parametrit: Taulukko sisältää jäsenyyksien tyyppikoodit, jotka kertovat minkätyyppisten jäsenyyksien resurssit palautetaan.

Paluuarvo: Resource-olio.

findResources

Kuvaus: Hakee käyttäjätunnuksen resursseista parametrina pyydetyt resurssit.

Parametrit: Viite hakuehdot avaimina sisältävään hajautustaulukkoon. Hakuehtoina voi olla SystemID, ResourceTypeID, Description, AccountID ja GroupID.

Paluuarvo: Resource-olio.

getResources

Kuvaus: Palauttaa resurssit, jotka kuuluvat käyttäjätunnukselle suoraan. Ei palauta niitä resursseja, jotka käyttäjätunnus perii epäsuorasti.

Parametrit: -

Paluuarvo: Viite Resource-olioita sisältävään taulukkoon.

getOwner

Kuvaus: Palauttaa käyttäjätunnukselle omistajan.

Parametrit: -

Paluuarvo: Person-olio.

setOwner

Kuvaus: Asettaa käyttäjätunnukselle omistajan.

Parametrit: Person-olio.

Paluuarvo: -

save

Kuvaus: Tallentaa käyttäjätunnuksen tietokantaan.

Parametrit: Muutoksen lähde.

Paluuarvo:

Taulukko sisältää SUCCESS-arvon ja tallennetun käyttäjätunnuksen ID-numero, jos virheitä ei esiinny.

SQL_UPDATE_FAILED, SQL_INSERT_FAILED, SQL_INSERT_FAILED tai SQL_DELETE_FAILED, jos joku tallentamiseen liittyvistä toimenpiteistä epäonnistuu.

Muut vähemmän tärkeät metodit luokalla ovat getAccountRef, getAccountID, getAccountName, getOwnerID, notifyAddMembership, notifyAddResource, notifyDelMembership, notifyDelResource, setAccountID, setOwnerID ja setResources.

Accounts-olio

Accounts-olion toiminta on kuvattu sovellusraportin luvussa 4.10.

Attribuutit	Kuvaus
hAccounts	Hajautustaulukko sisältää muistiin ladatut Account-oliot. Avaimena on käyttäjätunnuksen nimi ja arvona Account-olio

Taulukko 45. Accounts-olion attribuutit.

new

Kuvaus: Accounts-luokan konstruktori luo Accounts-olion ja parametrina saatujen ID-numeroiden mukaan Account-oliot ja sijoittaa oliot hAccounts-hajautustaulukkoon.

Parametrit: Taulukko ladattavien Account-olioiden ID-numeroista.

Paluuarvo: Viite Accounts-olioon.

addAccount

Kuvaus: Metodi lisää Account-olion hAccounts-hajautustaulukkoon.

Parametrit: Lisättävän Account-olion viite. Metodia tulee jatkokehittää palautusarvojen ja kommentoinnin yhtenäistämiseksi.

Paluuarvo:

0, jos lisäys onnistui tai Account-olio on jo lisätty.

1, jos samanniminen Account-olio on jo lisätty, mutta olioiden viitteet ovat erilaiset.

delAccount

Kuvaus: Metodi poistaa Account-olion hAccounts-hajautustaulukosta. Metodia tulee jatkokehittää palautusarvojen ja kommentoinnin yhtenäistämiseksi.

Parametrit: Poistettavan Account-olion viite.

Paluuarvo:

0, jos Account-oliota ei löydy.

Metodi ei palauta mitään onnistuessaan.

getAccountIDs

Kuvaus: Saantimetodi käyttäjätunnuksien ID-numeroille.

Parametrit: -

Paluuarvo: Taulukko Account-olioiden ID-numeroista.

getAccountNames

Kuvaus: Saantimetodi käyttäjätunnuksien nimille.

Parametrit: -

Paluuarvo: Taulukko Account-olioiden nimistä.

getAccounts

Kuvaus: Saantimetodi Accounts-olion sisältämiin Account-olioihin.

Parametrit: -

Paluuarvo:

Viite hajautustaulukkoon, jossa on avaimena käyttäjätunnuksen nimi ja arvona Account-olio.

Undef-arvo, jos Accounts-olio ei sisällä yhtään Account-oliota.

getCount

Kuvaus: Saantimetodi ladattujen Account-olioiden lukumäärälle.

Parametrit: -

Paluuarvo: Accounts-olioon ladattujen Account-olioiden lukumäärä.

getOwners

Kuvaus: Saantimetodi ladattujen Account-olioiden omistajiin.

Parametrit: -

Paluuarvo: Persons-olio sisältää Account-olioiden omistajat eli Person-oliot.

search

Kuvaus: Metodi hakee tietokannasta hakuehtoja vastaavat käyttäjätunnukset ja lisää ne Accounts-olioon.

Parametrit: Viite hakuehtojen hajautustauluun. Avaimena voi olla AccountID, AccountName, AccountOrder, TimeOfNextStateChange, StateTypeID ja PersonID.

Paluuarvo:

SUCCESS, jos virheitä ei esiinny.

SQL_SELECT_FAILED, jos tietokannan kysely epäonnistuu.

NO_RECORDS_FOUND, jos haku ei tuota yhtään tulosta.

Group-olio

Group-olion toiminta on kuvattu sovellusraportin luvussa 4.7.

Attribuutti	Kuvaus
iGroupID	Ryhmän ID-numero tietokannassa.
sGroupName	Ryhmän nimi.
Description	Vapaa kuvaus.
sTimeOfNextStateChange	Seuraavan tilasiirtymän ajanhetken aikaleima.
iGroupTypeID	Tyyppikoodi.
iStateTypeID	Tilakoodi.
Resources	Resources-olio, katso Resources-moduulin toiminta.
aMembers	Taulukko ryhmään liitetyistä käyttäjätunnuksista. Taulukossa on viitteitä taulukoihin. Sisätaulukoiden alkioina on käyttäjätunnuksen ID-numero, jäsenyyden tyyppikoodi, tilakoodi ja seuraavan tilasiirtymän ajanhetken aikaleima.
hLoadedGroups	Hajautustaulukko muistiinladatuista Group-olioista. Avaimena on ryhmän ID-numero ja arvona Group-olio. Globaali muuttuja kaikkien Group-olioiden kesken.

Taulukko 46. Group-olion attribuutit.

new

Kuvaus: Group-luokan konstruktori luo Group-olion ja palauttaa siitä viitteen. Metodille voidaan antaa parametrina ryhmän ID-numero. Ilman parametria metodi luo tyhjän olion. Parametrin kanssa metodi lataa ID-numeroa vastaavan ryhmän tietokannasta, jos sellainen löytyy, sekä alustaa ryhmän tiedot käyttämällä ShamanSql-moduulin load-metodia. Ladattu ryhmä tallennetaan muistiin hLoadedAccount-muuttujaan. Jos ryhmä on jo ladattu muistiin, palautetaan viite suoraan ilman tietokantakyselyä.

Parametrit: ID-numero.

Paluuarvo:

Group-olio, jos virheitä ei esiinny.

Undef, jos parametrina annetun ID-numeron mukaan ei voida ladata ryhmää.

addChild

Kuvaus: Lisää ryhmään alaryhmän.

Parametrit:

Lapsiryhmän ID-numero.

Jäsenyyden tilatyyppi.

Seuraavan tilasiirtymän ajankohdan aikaleima.

Paluuarvo:

0, jos ei virheitä.

1, jos virheitä esiintyy.

delChild

Kuvaus: Poistaa alaryhmän ryhmästä

Parametrit: Lapsiryhmän ID-numero.

Paluuarvo:

0, jos ei virheitä.

1, jos virheitä esiintyy.

getChildren

Kuvaus: Palauttaa ryhmän alapuolella olevat jäsenyydet toisiin ryhmiin.

Parametrit:

Taso (vapaaehtoinen parametri) kertoo, montako tasoa alaspäin tietokannan verkkorakenteessa alaryhmiä haetaan. Toisin sanoen, kuinka syvä haku tehdään. 0 tarkoittaa kaikkien tasojen hakua.

Tilatyyppi (vapaaehtoinen parametri). Metodi palauttaa vain ne ryhmät, joilla on kyseinen tilatyyppi.

Paluuarvo: Palauttaa taulukon, jossa on alkioina viitteitä sisätaulukoihin. Niissä on alkioina jäsenyyden yläryhmän ID-numero, alaryhmän ID-numero, tilakoodi ja seuraavan tilasiirtymän ajankohdan aikaleima.

addParent

Kuvaus: Lisää ryhmään yläryhmän.

Parametrit:

Lisättävän yläryhmän ID-numero.

Jäsenyyden tilatyyppi.

Seuraavan tilasiirtymän ajanhetken aikaleima.

Paluuarvo:

0, jos virheitä ei esiinny.

1, jos virheitä esiintyy.

delParent

Kuvaus: Poistaa ryhmältä yläryhmän.

Parametrit: Poistettavan yläryhmän ID-numero.

Paluuarvo:

0, jos virheitä ei esiinny.

1, jos virheitä esiintyy.

getParents

Kuvaus: Palauttaa tiedon ryhmän vanhemmista taulukossa.

Parametrit:

Taso kertoo, montako tasoa ylöspäin haku tehdään.

Tilatyyppi kertoo, minkä tyyppiset jäsenyydet palautetaan.

Paluuarvo: Taulukossa on alkioina viitteitä toisiin taulukoihin. Yksi sisätaulukko vastaa yhtä ryhmien välistä suhdetta ja sen alkioina on yläryhmän ID-numero, alaryhmän ID-numero, tilakoodi sekä seuraavan tilasiirtymän ajankohdan aikaleima.

addMember

Kuvaus: Lisää käyttäjätunnuksen ryhmään.

Parametrit:

Ryhmään lisättävä käyttäjätunnus.

Jäsenyyden tyyppi.

Jäsenyyden tila.

Seuraavan tilasiirtymän ajankohdan aikaleima.

Paluuarvo:

0, jos virheitä ei esiinny.

1, jos lisättävä jäsenyys on jo olemassa.

2, kyseistä käyttäjätunnusta ei ole kannassa

delMember

Kuvaus: Poistaa käyttäjätunnuksen ryhmästä.

Parametrit:

Ryhmästä poistettava käyttäjätunnus.

Jäsenyyden tyyppi.

Paluuarvo:

0, jos virheitä ei esiinny.

1, jos poistettavaa jäsenyyttä ei ole olemassa.

2, jos käyttäjätunnusta ei ole olemassa tietokannassa.

findResources

Kuvaus: Hakee ryhmän tiedoista resursseja eri hakuehdoilla.

Parametrit: Viite hajautustaulukkoon, jossa on hakuehdot. Hakuehtoina voi olla SystemID, ResourceTypeID, Description, AccountID ja GroupID.

Paluuarvo: Resources-olio.

getResources

Kuvaus: Saantimetodi ryhmän resursseille.

Parametrit: -

Paluuarvo:

Undef, jos ryhmällä ei ole resursseja.

Muussa tapauksessa palautetaan viite taulukkoon, jossa on resurssit.

getAttributes

Kuvaus: Saantimetodi ryhmän attribuuteille.

Parametrit: -

Paluuarvo: Viite hajautustaulukkoon, jossa avaimina ovat iGroupID, sGroupName, Description, iGroupTypeID, iStateTypeID ja sTimeOfNextStateChange.

setAttributes

Kuvaus: Asettaa ryhmän attribuuteille arvot.

Parametrit: Hajautustaulukko, jossa avaimina ovat sGroupName, Description, iGroupTypeID, iStateTypeID ja sTimeOfNextStateChange sekä arvoina avaimille annetut arvot.

Paluuarvo: -

remove

Kuvaus: Poistaa Account-oliota vastaavan tietueen tietokannasta. Metodia ei ole toteutettu ShamanSql-moduulissa.

Parametrit: Poiston lähde.

Paluuarvo: -

save

Kuvaus: Tallentaa ryhmän tiedot tietokantaan.

Parametrit:

Paluuarvo:

SUCCESS, jos virheitä ei esiinny.

Jos virheitä esiintyy, palautetaan virheen mukaisesti virheilmoitus SQL_UPDATE_FAILED, SQL_INSERT_FAILED, SQL_SELECT_FAILED tai SQL_DELETE_FAILED.

Muut vähemmän tärkeät metodit luokalla ovat getGroupID, setGroupID, getGroupRef, notifyAddChild, notifyDelChild, notifyAddParent, notifyDelParent, notifyAddMember, notifyDelMember, notifyAddResource ja notifyDelResource.

History-olio

History-olion toiminta on kuvattu sovellusraportin luvussa 4.8.

Attribuutti	Kuvaus
iHistoryID	Historiatiedon ID-numero tietokannassa.
aPendingRows	Taulukko muutoksista, joita ei ole viety kohdejärjestelmälle.
sTimeOfChange	Tietojen muutoksien aikaleima.
sTimeOfPendingCleared	Aikaleima, jolloin muuttuneet tiedot on viety kohdejärjestelmälle.
sReasonOfChange	Tietojen muutosten syy.
sSourceOfChange	Tietojen muutosten lähde.
iChangedItemID	Historiamerkinnän kohteen ID-numero.
eChangedItemType	Historiamerkinnän kohteen tyyppi. Mahdollisia vaihtoehtoja ovat Person, Account, Group, Resource ja StateType.
hHistoryParams	Historiatietoon liitetyt parametrit.
hLoadedHistorys	Hajautustaulukossa avaimina ovat ladattujen historiatietojen ID-numerot ja arvoina referenssit ladattuihin historiatietoihin.

Taulukko 47. History-olion attribuutit.

new

Kuvaus: History-luokan konstruktori luo History-olion ja palauttaa siitä viitteen. Metodille voidaan antaa parametrina historiamerkinnän ID-numero. Ilman parametria metodi luo tyhjän olion. Parametrin kanssa metodi lataa ID-numeroa vastaavan historiatiedon tietokannasta, jos sellaisia löytyy. Ladatut historiatiedot tallennetaan muistiin hLoadedHistorys-muuttujaan.

Parametrit: -

Paluuarvo: Palauttaa referenssin History-olioon.

save

Kuvaus: Tallentaa historiamerkinnän tiedot tietokantaan.

Parametrit: Muutoksen tekijän nimi.

Palautusarvo:

Palauttaa SUCCESS, jos virheitä ei tapahdu.

Muuten palautetaan virhekoodina SQL_UPDATE_FAILED, SQL_INSERT_FAILED tai SQL_DELETE_FAILED.

remove

Kuvaus: Poistaa fyysisesti historiamerkinnän tiedot tietokannasta.

Parametrit: Muutoksen tekijän nimi.

Palautusarvo: Palauttaa SUCCESS.

setParameters

Kuvaus: Asettaa parametrit historiamerkinnälle. Parametreina ovat historiamerkintää vastaavaa muutosta edeltävät historiamerkinnän kohteen attribuutit.

Parametrit: Hajautustaulukossa avaimina ovat muuttuneita kohteen attribuutteja vastaavat HistoryParameterTypeID-arvot ja arvoina muuttuneiden attribuuttien vanhat arvot.

Paluuarvo: -

getParameters

Kuvaus: Saantimetodi historiamerkinnän parametreille.

Parametrit: -

Paluuarvo:

Palauttaa viitteen hajautustaulukkoon, jossa on historiamerkinnän parametrit. Hajautustaulukossa avaimina on muuttuneita kohteen attribuutteja vastaavat HistoryParameterTypeID-arvot ja arvoina muuttuneiden attribuuttien vanhat arvot.

Jos parametreja ei ole, palautetaan undef-arvo.

getAttributes

Kuvaus: Saantimetodi historiamerkinnän attribuuteille.

Parametrit: -

Paluuarvo: Palauttaa viitteen hajautustaulukkoon, jossa on historiamerkinnän attribuutit. Hajautustaulukon avaimina on HistoryID, TimeOfChange, TimeOfPendingCleared, ReasonOfChange, SourceOfChange, ChangedItemID ja ChangedItemType sekä arvoina näitä vastaavien olion attribuuttien arvot.

setAttributes

Kuvaus: Asettaa attribuutit historiamerkinnälle.

Parametrit: Hajautustaulukossa avaimina ovat TimeOfChange, TimeOfPendingCleared, ReasonOfChange, SourceOfChange, ChangedItemID tai ChangedItemType sekä arvoina näitä vastaavat olion attribuuttien uudet arvot.

Paluuarvo: -

getPendingRows

Kuvaus: Palauttaa tiedon käyttäjätunnuksista ja niistä kohdejärjestelmistä, joille käyttäjätunnusten muuttuneet tiedot täytyy päivittää.

Parametrit: -

Paluuarvo:

Palauttaa viitteen taulukkoon, jossa on Pending-merkinnät. Kukin taulukon alkio on referenssi taulukkoon, jossa alkio 0 on käyttäjätunnuksen ID-numero ja alkio 1 kohdejärjestelmän ID-numero, jolle muuttuneet tiedot täytyy päivittää.

Jos Pending-merkintöjä ei ole, palautetaan undef-arvo.

getPendingAccounts

Kuvaus: Palauttaa tiedon käyttäjätunnuksista, joiden muuttuneita tietoja ei ole päivitetty kohdejärjestelmille.

Parametrit: Kohdejärjestelmän ID-numero (vapaaehtoinen parametri).

Paluuarvo: Palauttaa Accounts-olion, jossa Pending-merkintöihin liittyvät käyttäjätunnukset. Jos kohdejärjestelmän ID-numero on annettu parametrina, palautetaan vain siihen liittyvät käyttäjätunnukset.

setPendingRows

Kuvaus: Asettaa historiamerkintään liittyvät tiedot käyttäjätunnuksista ja niistä kohdejärjestelmistä, joille käyttäjätunnuksen muuttuneet tiedot tulee päivittää.

Parametrit: Pending-merkinnät sisältävä taulukko. Kukin taulukon alkio on referenssi taulukkoon, jossa alkio 0 on käyttäjätunnuksen ID-numero ja alkio 1 ID-numero kohdejärjestelmästä, jolle muuttuneet tiedot tulee päivittää.

Paluuarvo: -

getItemAfterChange

Kuvaus: Saantimetodi historiamerkinnän kohteelle merkintään liittyvän muutoksen jälkeen

Parametrit: -

Paluuarvo: Historiamerkinnän kohdetta vastaava olio.

Muut vähemmän tärkeät metodit luokalla ovat getHistoryRef ja setHistoryID.

Log-moduuli

Log-moduulin toiminta on kuvattu sovellusraportin luvussa 4.4. Log-moduulilla ei ole attribuutteja.

logError

Kuvaus: Kirjoittaa lokitietoa tiedostoon. Tiedoston nimi määritellään SystemConfig-moduulissa. Virheilmoitukselle voidaan antaa eri tyyppejä, jotka määritellään SystemConfig-moduulin hajautustaulukossa _ERROR_TYPE.

Parametrit:

Virheviesti merkkijonona.

Virheen lähde.

Virheen tyyppi.

Paluuarvo: -

Person-olio

Person-olion toiminta on kuvattu sovellusraportin luvussa 4.5.

Attribuutti	Kuvaus
iPersonID	Henkilön ID-numero tietokannassa.
sFirstname	Etunimi.
sSurname	Sukunimi.
sCallname	Kutsumanimi.
sIdentityCode	Henkilötunnus.
sTimeOfNextStateChange	Seuraavan tilasiirtymän ajankohdan aikaleima.
iNationalityID	Kansallisuuden ID-numero.
iStateTypeID	Tilakoodin ID-numero.
aPersonParameters	Henkilöön liitetyt henkilöparametrit.
aAccountIDs	Henkilön käyttäjätunnusten ID-numerot.
hLoadedPersons	Hajautustaulukko muistiinladatuista Person-olioista. Avaimena on henkilön ID-numero ja arvona Person-olio. Globaali muuttuja kaikkien Person-olioiden kesken.

Taulukko 48. Person-olion attribuutit.

new

Kuvaus: Person-luokan konstruktori luo Person-olion ja palauttaa siitä viitteen. Metodille voidaan antaa parametrina henkilön ID-numero. Ilman parametria metodi luo tyhjän olion. Parametrin kanssa metodi lataa ID-numeroa vastaavan henkilön tietokannasta, jos sellainen löytyy, sekä alustaa henkilön tiedot käyttämällä ShamanSql-moduulin load-metodia. Ladattu henkilö tallennetaan muistiin hLoadedPersons-muuttujaan. Jos henkilö on jo ladattu muistiin, palautetaan viite suoraan ilman tietokantakyselyä.

Parametrit: Henkilön ID-numero.

Paluuarvo: Palauttaa referenssin Person-olioon.

Palautetaan viite tyhjään Person-olioon, jos kutsutaan ilman parametreja.

Jos kutsutaan parametrin kanssa, palautetaan viite ladattuun Person-olioon, mikäli parametria vastaavat tiedot löytyvät tietokannasta.

Jos henkilöä ei löydy, palautetaan undef-arvo.

getAccountIDs

Kuvaus: Saantimetodi henkilön käyttäjätunnuksille.

Parametrit: -

Paluuarvo: Palauttaa henkilön käyttäjätunnuksien ID-numerot taulukossa.

getAttributes

Kuvaus: Saantimetodi henkilön attribuuteille.

Parametrit: -

Paluuarvo: Palauttaa viitteen hajautustaulukkoon, joka sisältää henkilön attribuutit. Hajautustaulukon avaimina on PersonID, FirstName, Surname, CallName, IdentityCode, TimeOfNextStateChange, NationalityID ja StateTypeID sekä arvoina on avaimille tarkoitetut arvot.

getParameters

Kuvaus: Saantimetodi henkilön parametreille PersonParameter-taulussa.

Parametrit: -

Paluuarvo:

Palauttaa viitteen hajautustaulukkoon, joka sisältää henkilön parametrit PersonParameter-taulussa. Hajautustaulukossa on avaimena parametrin tyypin ID-numero ja arvona taulukko, jossa ensimmäinen alkio on parametrin arvo ja toinen alkio parametrin julkisuusarvo.

Jos parametreja ei ole, palautetaan undef-arvo.

setAttributes

Kuvaus: Metodi asettaa henkilölle arvot parametrina saatavan hajautustaulukon perusteella.

Parametrit: Hajautustaulukossa on avaimina FirstName, Surname, CallName, IdentityCode, TimeOfNextStateChange, NationalityID ja StateTypeID sekä arvoina on avaimille tarkoitetut arvot.

Paluuarvo: -

setParameters

Kuvaus: Asettaa parametrit henkilölle PersonParameter-tauluun. Parametrina saadut arvot kopioidaan henkilön tietoihin.

Parametrit: Hajautustaulukossa avaimena on parametrin tyypin ID-numero ja arvona taulukko, jossa ensimmäinen alkio on parametrin arvo ja toinen alkio parametrin julkisuusarvo.

Paluuarvo: -

save

Kuvaus: Tallentaa henkilön tiedot tietokantaan.

Parametrit: Muutoksen tekijän nimi.

Paluuarvo:

Palauttaa SUCCESS, jos virheitä ei tapahdu.

Muuten palautetaan virhekoodeina SQL_UPDATE_FAILED, SQL_INSERT_FAILED tai SQL_DELETE_FAILED.

remove

Kuvaus: Poistaa fyysisesti henkilön tiedot tietokannasta.

Parametrit: Muutoksen tekijän nimi.

Paluuarvo: Palauttaa SUCCESS.

Muut vähemmän tärkeät metodit luokalla ovat getID, getIdentityCode, getName, getPersonRef, notifyAddAccount, notifyDelAccount ja setPersonID.

Persons-olio

Persons-olion toiminta on kuvattu sovellusraportin luvussa 4.9. Persons-olio ei käytä attribuuttien osalta unkarilaista notaatiota.

Attribuutit	Kuvaus
persons	Hajautustaulukko sisältää olioon ladatut Person-oliot. Avaimena on henkilötunnus ja arvona Person-olio.
persons_by_id	Hajautustaulukko sisältää olioon ladatut Person-oliot. Avaimena on henkilön PersonID ja arvona Person-olio.

Taulukko 49. Persons-olion attribuutit.

new

Kuvaus: Persons-luokan konstruktori luo Persons-olion ja lataa kannasta parametrina saatujen ID-numeroiden mukaan Person-oliot sekä sijoittaa ladatut oliot persons- ja persons_by_id -hajautustaulukkoihin.

Parametrit: Taulukko ladattavien Person-olioiden ID-numeroista.

Paluuarvo: Viite Persons-olioon.

addPerson

Kuvaus: Metodi lisää Person-olion hajautustaulukoihin persons ja persons_by_id.

Parametrit: Lisättävän Person-olion viite.

Paluuarvo:

0, jos lisäys onnistui tai Person-olio on jo lisätty.

1, jos Person-olio samalla henkilötunnuksella on jo lisätty, mutta olioiden viitteet ovat erilaiset.

getCount

Kuvaus: Saantimetodi olioon ladattujen henkilöiden määrälle.

Parametrit: -

Paluuarvo: Olioon ladattujen henkilöiden lukumäärä.

getPersonByID

Kuvaus: Saantimetodi yksittäiselle olioon ladatulle Person-oliolle.

Parametrit: Halutun henkilön PersonID.

Paluuarvo: Person-olio tai undef, jos annettua ID:tä vastaava Person ei ole ladattuna olioon.

getPersons

Kuvaus: Saantimetodi Persons-olion sisältämiin Person-olioihin.

Parametrit: -

Paluuarvo:

Viite hajautustaulukkoon, jossa on avaimena PersonID ja arvona Person-olio.

Undef-arvo, jos Persons-olio ei sisällä yhtään Person-oliota.

search

Kuvaus: Metodi hakee tietokannasta hakuehtoja vastaavat henkilöt ja lisää ne Persons-olioon.

Parametrit: Viite hajautustauluun hakuehdoista. Avaimena voi olla PersonID, FirstName, Surname, CallName, IdentityCode, TimeOfNextStateChange, NationalityID ja StateTypeID sekä näitä vastaavina arvoina halutut kyseisen attribuutin hakuehdot.

Paluuarvo:

SUCCESS, jos virheitä ei esiinny.

SQL_SELECT_FAILED, jos tietokannan kysely epäonnistuu.

NO_RECORDS_FOUND, jos haku ei tuota yhtään tulosta.

Resource-olio

Resource-olion toiminta on kuvattu sovellusraportin luvussa 4.12.

Attribuutti	Kuvaus
iResourceID	Resurssin ID-numero tietokannassa.
sDescription	Resurssin kuvaus.
iAccountID	Resurssin omistavan tunnuksen ID-numero.
iGroupID	Resurssin omistavan ryhmän ID-numero.
iSystemID	Resurssin kohdejärjestelmän ID-numero.
iResourceTypeID	Resurssin tyypin ID-numero
aResourceParams	Hajautustaulukko sisältää resurssin parametrit. Hajautustaulukon avaimena parametrin tyyppi ja arvona parametrin arvo.
hLoadedResources	Hajautustaulukko sisältää avaimina ladattujen resurssien ID-numerot ja arvoina referenssit ladattuihin resursseihin.

Taulukko 50. Resource-olion attribuutit.

new

Kuvaus: Resource-luokan konstruktori luo Resource-olion ja palauttaa viitteen. Metodille voidaan antaa parametrina resurssin ID-numero. Tällöin metodi lataa ID-numeroa vastaavan resurssin tietokannasta, jos sellainen löytyy, ja alustaa henkilön tiedot käyttämällä ShamanSql-moduulin load-metodia. Jos ID:tä vastaava resurssi on jo ladattu muistiin, palautetaan viite tähän resurssiin.

Parametrit: Henkilön ID-numero.

Palautusarvo:

Palautetaan viite tyhjään Resource-olioon, jos kutsutaan ilman parametreja.

Jos kutsutaan parametrin kanssa, palautetaan viite ladattuun Resource-olioon, mikäli parametria vastaavat tiedot löytyvät tietokannasta.

Jos resurssia ei löydy, palautetaan undef-arvo.

getAttributes

Kuvaus: Saantimetodi resurssin attribuuteille.

Parametrit: -

Palautusarvo: Palauttaa resurssin attribuutit hajautustaulukossa, jossa avaimina attribuuttien nimet ja arvoina niiden arvot.

getOwner

Kuvaus: Saantimetodi resurssin omistajalle.

Parametrit: -

Palautusarvo:

Palauttaa Account-olion, jos omistaja on tunnus.

Palauttaa Group-olion, jos omistaja on ryhmä.

Palauttaa undef, jos omistajaa ei ole määritelty.

getParameters

Kuvaus: Saantimetodi resurssin parametreille.

Parametrit: -

Palautusarvo:

Palauttaa viitteen hajautustaulukkoon, jossa on resurssin parametrit. Hajautustaulukossa avaimena parametrin tyyppi ja arvona sen arvo.

Jos parametreja ei ole, palautetaan undef-arvo.

remove

Kuvaus: Poistaa fyysisesti resurssin tiedot tietokannasta.

Parametrit: Muutoksen tekijän nimi.

Palautusarvo: Palauttaa SUCCESS.

save

Kuvaus: Tallentaa resurssin tiedot tietokantaan.

Parametrit: Muutoksen tekijän nimi.

Palautusarvo:

Palauttaa SUCCESS, jos virheitä ei tapahdu.

Muuten palautetaan virhekoodeina SQL_UPDATE_FAILED, SQL_INSERT_FAILED tai SQL_DELETE_FAILED.

setAttributes

Kuvaus: Asettaa resurssin attribuutit

Parametrit: Hajautustaulukossa ovat avaimina muutettavien attribuuttien nimet ja arvoina uudet arvot.

Palautusarvo: -

setParameters

Kuvaus: Asettaa resurssin parametrit

Parametrit: Hajautustaulukossa ovat avaimina muutettavien parametrien tyypit ja arvoina uudet arvot. Haluttaessa poistaa parametri asetetaan sen tyyppiä vastaavaksi arvoksi undef.

Palautusarvo: Palauttaa 0.

setOwner

Kuvaus: Asettaa resurssin omistajan. Parametrina saatava olio asetetaan uudeksi omistajaksi. Jos parametrina undef, asetetaan omistajatieto tyhjäksi.

Parametrit: Group-olio, Account-olio tai undef.

Palautusarvo: Palauttaa 0.

Muut vähemmän tärkeät metodit luokalla ovat getResourceID, getResourceRef, getResourceType, getSystemID, setAccountID, setGroupID ja setResourceID.

Resources-olio

Resources-olion toiminta on kuvattu sovellusraportin luvussa 4.13.

Attribuutti	Kuvaus
aResources	Taulukko ladatuista resource-olioista.

Taulukko 51. Resources-olion attribuutit.

New

Kuvaus: Resources-luokan konstruktori luo Resources-olion ja palauttaa siitä viitteen. Metodille voidaan antaa parametrina taulukko resurssien ID-numeroista. Ilman parametria metodi luo tyhjän olion. Parametrin kanssa metodi lataa ID-numeroita vastaavat resurssit tietokannasta, jos sellaisia löytyy. Ladatut resurssit tallennetaan muistiin aResources-muuttujaan.

Parametrit: Taulukko resurssien ID-numeroista.

Paluuarvo: Viite luotuun Resources-olioon.

addResource

Kuvaus: Lisää Resource-olion Resources-olioon, ellei sitä ole jo lisätty.

Parametrit: Viite lisättävään Resource-olioon.

Paluuarvo:

0, jos lisäys onnistui.

1, jos Resource-olio on jo lisätty.

delResource

Kuvaus: Poistaa Resource-olion Resources-oliosta.

Parametrit: Viite poistettavaan Resource-olioon.

Paluuarvo:

0, jos poisto onnistui.

1, jos Resource-oliota ei löydetty.

find

Kuvaus: Palauttaa Resources-olion sisältämät Resource-oliot hakuehtojen mukaan.

Parametrit: Viite hajautustaulukkoon, jossa hakuehdot ovat avaimina. Hakuehtoina voi olla SystemID, ResourceTypeID, Description, AccountID ja GroupID.

Paluuarvo: Resources-olio sisältää hakuehtojen mukaiset Resource-oliot.

search

Kuvaus: Hakee resurssitietoja tietokannasta hakuehtojen mukaan.

Parametrit: Viite hajautustaulukkoon, jossa hakuehdot ovat avaimina. Hakuehtoina voi olla SystemID, ResourceTypeID, Description, AccountID ja GroupID.

Paluuarvo:

SUCCESS, jos virheitä ei esiinny.

SQL_SELECT_FAILED, jos tietokannan hakulauseissa tapahtuu virhe.

NO_RECORDS_FOUND, jos hakuehdoilla ei löydetä resursseja.

getResources

Kuvaus: Saantimetodi Resources-olion sisältämiin Resource-olioihin.

Parametrit: -

Paluuarvo:

Viite Resources-oliot sisältävään taulukkoon, jos olioita on olemassa.

Undef-arvo, jos olioita ei ole olemassa.

getCount

Kuvaus: Saantimetodi Resources-olion sisältämien Resource-olioiden lukumäärälle.

Parametrit: -

Paluuarvo: Resource-olioiden lukumäärän ilmoittava kokonaisluku.

ShamanSQL-moduuli

ShamanSQL-moduulin toiminta on kuvattu sovellusraportin luvussa 4.3. ShamanSql-moduuli ei käytä attribuuttien osalta unkarilaista notaatiota.

Muuttuja	Kuvaus
database_connection	Sisältää Sql-luokan olion.
sql_initialized	Määrittelee, onko Sql-olio luotu.

Taulukko 52. ShamanSQL-moduulin attribuutit.

load

Kuvaus: Metodi lataa luokkien Person, Persons, Account, Accounts, Group, Groups, Resource, Resources ja History olioiden tiedot tietokannasta. Metodilla voidaan ladata monta oliota kerralla antamalla sille monikko-olio ensimmäiseksi parametriksi ja toiseksi taulukko niistä ID-numeroista, joiden mukaisten olioiden tiedot halutaan ladata.

Parametrit:

Olio, jonka tiedot halutaan ladata.

Taulukko ID-numeroista, joiden mukaisten olioiden tiedot halutaan ladata. Vapaaehtoinen parametri.

Paluuarvo:

SUCCESS, jos virheitä ei esiinny.

RECORD_NOT_FOUND, jos olion tietoja ei ole tietokannassa.

MORE_THAN_ONE_RECORD_FOUND, jos olion tiedoilla löytyy kannasta enemmän kuin yksi tietue.

SQL_SELECT_FAILED, jos SQL-kysely epäonnistuu.

UNKOWN_OBJECT, jos parametrina annettua oliota ei tunnisteta.

save

Kuvaus: Metodi tallentaa luokkien Person, Account, Group, Resource ja History tietoja tietokantaan.

Parametrit:

Olio, jonka tiedot tallennetaan tietokantaan.

Muutoksen lähde.

Muutoksen syy.

Paluuarvo:

Jos virheitä ei esiinny, palautetaan taulukko, jossa ensimmäisen alkion arvo on SUCCESS ja toisena alkiona on viimeisen tallennetun olion ID-numero.

Jos tiedon päivityksessä tapahtuu virhe, palautetaan SQL_UPDATE_FAILED.

Jos tiedon viemisessä tietokantaan tapahtuu virhe, palautetaan SQL_INSERT_FAILED.

Jos viimeisen ID-numeron haussa tapahtuu virhe, palautetaan SQL_SELECT_FAILED.

search

Kuvaus: Metodi etsii olioiden Person, Account, Resource ja Group tietoja tietokannasta ja palauttaa löydetyt oliot monikko-olion avulla.

Parametrit:

Viite olioon, jonka tyyppisiä olioita ollaan etsimässä.

Viite hakusanat sisältävään hajautustaulukkoon. Hakusanoina on yksi tai useampia tietokannassa olevien kenttien nimiä, jotka vastaavat olioiden attribuutteja.

Paluuarvo:

Haettavan olion monikko-olio sisältää haun tuottamat oliot.

UNKNOWN_OBJECT, jos oliota ei tunnisteta.

remove

Kuvaus: Poistaa parametrina annetun olion tiedot tietokannasta. Vain Person-olion poisto on toteutettu.

Parametrit: Person-olio.

Paluuarvo: SUCCESS.

Sql-moduuli

Sql-moduulin toiminta on kuvattu sovellusraportin luvussa 4.2. Sql-moduuli ei attribuuttien osalta ole unkarilaisen notaation mukainen.

Muuttuja	Kuvaus
username	SQL-yhteydessä käytettävä käyttäjätunnus. Arvo saadaan SystemConfig-moduulista.
password	SQL-yhteydessä käytettävä salasana. Arvo saadaan SystemConfig-moduulista.
hostname	SQL-yhteydessä käytettävä palvelimen nimi tai IP-numero. Arvo saadaan SystemConfig-moduulista.
database	SQL-yhteydessä käytetty tietokannan nimi. Arvo saadaan SystemConfig-moduulista.
port	SQL-yhteydessä käytettävä palvelimen portti. Arvo saadaan SystemConfig-moduulista.
data_source	SQL-yhteydessä tarvittava parametri Perlin DBI-rajapinnalle. Konstruktori asettaa arvon oikeaksi.
conn	Avatun tietokantayhteyden kahva tallennetaan attribuuttiin
result	Tietokantakyselyn vastaus tallennetaan attribuuttiin.

Taulukko 53. Sql-moduulin attribuutit.

new

Kuvaus: Sql-luokan konstruktori luo Sql-olion ja alustaa tietokantamuuttujat SystemConfig-moduulista saatavilla arvoilla.

Parametrit: -

Paluuarvo: Metodi palauttaa viitteen luotuun olioon.

DESTROY

Kuvaus: Sql-luokan destruktori katkaisee tietokantayhteyden ja tuhoaa olion.

Parametrit: -

Paluuarvo: -

conn

Kuvaus: Avaa PostgreSQL-tietokantayhteyden. Palvelin, käyttäjätunnus ja salasana yhteydelle määritellään SystemConfig-moduulissa.

Parametrit: -

Paluuarvo:

Jos virheitä ei esiinny, palautetaan SUCCESS.

Jos tietokantaan ei saada yhteyttä, palautetaan taulukko, jossa on ensimmäinen arvo SQL_CANNOT_CONNECT ja toinen arvo DBI-rajapinnalta saatu tietokantavirhe DBI::errstr.

disc

Kuvaus: Sulkee PostgreSQL-tietokantayhteyden. Jos Sql-olion result-muuttuja sisältää tietokannasta haettuja käsittelemättömiä paluuarvoja, metodi merkitsee tiedot luetuksi ja sulkee tämän jälkeen tietokantayhteyden.

Parametrit: -

Paluuarvo: -

prepare

Kuvaus: Metodi valmistelee SQL-kyselyn tietokantaan. Metodia on tarkoitus käyttää tilanteissa, jossa samaa kyselyä suoritetaan peräkkäin eri parametreilla.

Parametrit: SQL-lause merkkijonona.

Paluuarvo:

Jos virheitä ei esiinny, palautetaan SUCCESS.

Jos tietokantaan ei ole yhteyttä, palautetaan SQL_NOT_CONNECTED.

Jos metodia kutsutaan ilman parametria, palautetaan SQL_UNDEF_PARAM.

execute

Kuvaus: Metodi suorittaa prepare-metodilla valmistellun kyselyn. Metodia ei voida käyttää ennen prepare-metodia. Jos prepare-metodi on suoritettu avoimella SQL-lauseella, täytyy parametrit antaa execute-metodille. Avoin kysely tarkoittaa SQL-lausetta, jossa kyselyn arvot on korvattu kysymysmerkeillä.

Parametrit: Jos valmisteltu kysely on avoin, täytyy metodille antaa parametreina arvot valmisteltuun kyselyyn. Jos valmisteltu kysely ei ole avoin, ei parametreja pidä antaa. Kaikkien annettujen parametrien täytyy olla määriteltyjä, sillä undef-arvoja ei hyväksytä.

Paluuarvo:

Jos virheitä ei esiinny, palautetaan SUCCESS.

Jos tietokantaan ei ole yhteyttä, palautetaan SQL_NOT_CONNECTED.

Jos kyselyä ei ole valmisteltu, palautetaan SQL_FALSE_QUERY.

Jos jokin parametri on määrittelemätön, palautetaan SQL_UNDEF_PARAM.

Jos suoritettava SQL-lause on syntaksiltaan väärä, palautetaan SQL_FALSE_QUERY.

do

Kuvaus: Metodi valmistelee ja suorittaa yhden SQL-kyselyn. Metodia on tarkoitus käyttää tilanteissa, jossa ei voida ennalta valmistella kyselyä tai kyselyä ei tarvitse suorittaa useita kertoja. Metodia ei käytetä SQL-lauseen SELECT-määreen yhteydessä, koska metodi ei palauta kahvaa tuloksiin.

Parametrit: SQL-lause merkkijonona.

Paluuarvo:

Jos virheitä ei esiinny, palautetaan SUCCESS.

Jos tietokantaan ei ole yhteyttä, palautetaan SQL_NOT_CONNECTED.

Jos parametri on määrittelemätön, palautetaan SQL_UNDEF_PARAM.

Jos suoritettava SQL-lause on syntaksiltaan väärä, palautetaan SQL_FALSE_QUERY.

getResult

Kuvaus: Metodi palauttaa DBI-rajapinnan mukaisen kahvan viimeiseen suoritettuun SQL-kyselyn tulokseen. Siitä voidaan hakea arvoja DBI-rajapinnan tarjoamilla metodeilla, kuten fetchrow_arrayref tai fetchrow_hashref. Tarkemmat kuvaukset käytettävistä metodeista löytyy Perlin DBI-rajapinnasta.

Parametrit: -

Paluuarvo:

Metodi palauttaa kahvan viimeiseen suoritettuun SQL-kyselyn tulokseen, jos sellainen löytyy.

Jos tulosta ei löydy, palautetaan undef-arvo.

getRowCount

Kuvaus: Metodi palauttaa viimeisen suoritetun SQL-kyselyn tuloksen rivien määrän, jos viimeinen tulos löytyy.

Parametrit: -

Paluuarvo:

Metodi palauttaa rivimäärän numerona, jos tulos löytyy.

Jos tulosta ei löydy, palautetaan undef-arvo.

Types-moduuli

Types-moduulin toiminta on kuvattu sovellusraportin luvussa 4.15. Moduulilla ei ole attribuutteja.

getPersonParamTypes

Kuvaus: Saantimetodi henkilöiden parametrien tyypeille.

Parametrit: -

Paluuarvo:

Palautetaan viite hajautustaulukkoon, jossa on henkilöiden parametrityypit. Avaimena on PersonParameterType-taulun PersonParameterTypeID-kentän arvo ja arvona viite hajautustaulukkoon, joka sisältää kaikki PersonParameterType-taulun kenttien arvot. Sisäisen hajautustaulukon avaimena on taulun kenttien nimet.

Jos haku epäonnistuu, palautetaan SQL_SELECT_FAILED.

getNationalityTypes

Kuvaus: Saantimetodi kansallisuuksien tyypeille.

Parametrit: -

Paluuarvo:

Palautetaan viite hajautustaulukkoon, jossa on kansallisuudet. Avaimena on Nationality-taulun NationalityID-kentän arvo ja arvona viite hajautustaulukkoon, joka sisältää kaikki Nationality-taulun kentät. Sisäisen hajautustaulukon avaimena on taulun kenttien nimet.

Jos haku epäonnistuu, palautetaan SQL_SELECT_FAILED.

getResourceTypes

Kuvaus: Saantimetodi resurssien tyypeille.

Parametrit: -

Paluuarvo:

Palautetaan viite hajautustaulukkoon, jossa on resurssityypit. Avaimena on ResourceType-taulun ResourceTypeID-kentän arvo ja arvona viite hajautustaulukkoon, joka sisältää kaikki ResourceType-taulun kentät. Sisäisen hajautustaulukon avaimena on taulun kenttien nimet.

Jos haku epäonnistuu, palautetaan SQL_SELECT_FAILED.

getResourceParamTypes

Kuvaus: Saantimetodi resurssiparametrien tyypeille.

Parametrit: -

Paluuarvo:

Palautetaan viite hajautustaulukkoon, jossa on resurssiparametrien tyypit. Avaimena on ResourceParameterType-taulun ResourceParameterTypeID-kentän arvo ja arvona viite hajautustaulukkoon, joka sisältää kaikki ResourceParameterType-taulun kentät. Sisäisen hajautustaulukon avaimena on taulun kenttien nimet.

Jos haku epäonnistuu, palautetaan SQL_SELECT_FAILED.

getSystemTypes

Kuvaus: Saantimetodi järjestelmien tyypeille.

Parametrit: -

Paluuarvo:

Palautetaan viite hajautustaulukkoon, jossa on järjestelmien tyypit. Avaimena on System-taulun SystemID-kentän arvo ja arvona viite hajautustaulukkoon, joka sisältää kaikki System-taulun kentät. Sisäisen hajautustaulukon avaimena on taulun kenttien nimet.

Jos haku epäonnistuu, palautetaan SQL_SELECT_FAILED.

getGroupTypes

Kuvaus: Saantimetodi ryhmien tyypeille.

Parametrit: -

Paluuarvo:

Palautetaan viite hajautustaulukkoon, jossa on ryhmien tyypit. Avaimena on GroupType-taulun GroupTypeID-kentän arvo ja arvona viite hajautustaulukkoon, joka sisältää kaikki GroupType-taulun kentät. Sisäisen hajautustaulukon avaimena on taulun kenttien nimet.

Jos haku epäonnistuu, palautetaan SQL_SELECT_FAILED.

getPublicityTypes

Kuvaus: Saantimetodi julkisuustyypeille.

Parametrit: -

Paluuarvo:

Palautetaan viite hajautustaulukkoon, jossa on julkisuustyypit. Avaimena on Publicity-taulun PublicityID-kentän arvo ja arvona viite hajautustaulukkoon, joka sisältää kaikki Publicity-taulun kentät. Sisäisen hajautustaulukon avaimena on taulun kenttien nimet.

Jos haku epäonnistuu, palautetaan SQL_SELECT_FAILED.

getPersonsMaxAccountOrder

Kuvaus: Saantimetodi henkilön suurimman käyttäjätunnuksen järjestysnumerolle.

Parametrit: Henkilön ID-numero.

Paluuarvo:

Palautetaan henkilön suurin käyttäjätunnuksen järjestysnumero.

Jos haku epäonnistuu, palautetaan SQL_SELECT_FAILED.

getPersonsMinAccountOrder

Kuvaus: Saantimetodi henkilön pienimmän käyttäjätunnuksen järjestysnumerolle.

Parametrit: Henkilön ID-numero.

Paluuarvo:

Palautetaan henkilön pienin käyttäjätunnuksen järjestysnumero.

Jos haku epäonnistuu, palautetaan SQL_SELECT_FAILED.

personToHistoryParamType

Kuvaus: Metodi etsii historiaparametrityypin, joka vastaa annettua henkilöparametrin tyyppiä. Jos tyyppiä ei löydy, luodaan uusi ja palautetaan se, muuten palautetaan löydetty tyyppi.

Parametrit: Henkilöparametrin tyypin ID-numero.

Paluuarvo:

Historiaparametrityypin ID-numero.

SQL_SELECT_FAILED, jos SQL-kysely epäonnistuu.

SQL_INSERT_FAILED, jos uuden historiaparametrityypin sijoitus tietokantaan epäonnistuu.

searchStateTypes

Kuvaus: Metodi etsii tilatyypin tietoja annetuilla hakuehdoilla.

Parametrit: Viite hajautustaulukkoon, jossa on hakuehdot. Avaimina voi olla StateTypeID, StateName, InternalAction, ExternalAction, OwnerType ja Description.

Paluuarvo:

Hakutulokset sisältävään hajautustaulukkoon, jos virheitä ei esiinny.

SQL_SELECT_FAILED, jos SQL-kysely epäonnistuu.

Jyväskylän yliopisto

Tietotekniikan laitos

II

SHAMAN-projekti

Sovellussuunnitelma

Administrator

2005-02-08T10:47:00