Sisukord - IT Kolledž

blahboatsInternet και Εφαρμογές Web

13 Δεκ 2013 (πριν από 3 χρόνια και 10 μήνες)

654 εμφανίσεις

EESTI INFOTEHNOLOOGIA KOLLEDŽ












Madis Vellamäe


TÖÖGRAAFIKU KOOSTAMISE
VEEBIRAKENDUSE REALISEERIMINE SKYPE

TECHNOLOGIES OÜ

NÄITEL




Diplomitöö





INFOTEHNOLOOGIA SÜSTEEMIDE ARENDAMISE ÕPPEKAVA






Juhendaja: J. Pöial










Tallinn 2011

2






AUTORIDEKLARATSIOON



Deklareerin, et käesolev diplomitöö, mis on minu iseseisva töö tulemus, on esitatud Eesti
Infotehnoloogia Kolledžile lõpudiplomi taot
lemiseks Infosüsteemide arendamise erialal.
Diplomitöö alusel ei ole varem eriala lõpu
diplomit tao
tletud.















Autor M. Vellamäe……………………….





(allkiri ja kuupäev)





Töö vastab kehtivatele nõuetele




Juhendaja J. Pöial…………………………





(allkiri ja kuupäev)




3


Sisukord

Lühendite ja
mõistete loetelu

................................
................................
...............................

5

Sissejuhatus

................................
................................
................................
..........................

6

1.

Analüüs

................................
................................
................................
........................

7

1.1.

Organisatsioon

................................
................................
................................
.......

7

1.2.

Probleemi kirjeldus

................................
................................
...............................

8

1.3.

Töös kasutatavad meetodid

................................
................................
...................

8

1.4.

Olemasolevate lahenduste analüüs

................................
................................
........

9

1.4.1.

DRoster

................................
................................
................................
........

9

1.4.2.

WhenToWork

................................
................................
............................

10

1.4.3.

ClockIt

................................
................................
................................
........

11

1.4.4.

Rakenduste kokkuvõte

................................
................................
...............

11

1.5.

Realiseeritava infosüsteemi analüüs

................................
................................
....

12

1.5.1.

Nõuded

................................
................................
................................
.......

12

1.5.2.

Süsteemi tegijad

................................
................................
.........................

13

1.5.3.

Andmemudel

................................
................................
..............................

14

1.6.

Arend
usvahendid ja tehnoloogiad

................................
................................
.......

15

1.6.1.

PHP

................................
................................
................................
............

15

1.6.2.

Zend Framework

................................
................................
........................

15

1.6.3.

CodeIgniter

................................
................................
................................

16

1.6.4.

Jav
aScript

................................
................................
................................
...

17

1.6.5.

jQuery

................................
................................
................................
........

17

1.6.6.

MySQL

................................
................................
................................
......

18

2.

Realisatsioon

................................
................................
................................
..............

19

2.1.

CodeIgniter konfigureerimine

................................
................................
.............

19

2.1.1.

Automaatselt lähtestatavad ressursid

................................
.........................

19

2.1.2.

Põhikonfiguratsioon

................................
................................
...................

20

2.1.3.

Andmebaasi konfiguratsioonifail

................................
...............................

21

2.2.

Kasutajate autentimine ja autoriseerimine

................................
..........................

21

4


2.3.

Rakenduse vaatemallid

................................
................................
........................

23

2.4.

Rakenduse esileht

................................
................................
................................

24

2.5.

Töögraafikute haldamine

................................
................................
.....................

26

2.5.1.

Kalendrivaate loomine

................................
................................
...............

27

2.5.2.

Kommentaaride kuvamine

................................
................................
.........

28

2.5.3.

Töövahetuste määramine

................................
................................
...........

28

2.6.

Kasutajate haldamine

................................
................................
..........................

29

2.6.1.

Kasutaja lisamine

................................
................................
.......................

29

2.6.2.

Kasutaja kustutamine süsteemist

................................
...............................

31

2.6.3.

Kasutaja rolli muutmine

................................
................................
.............

31

3.

Hetkeolukord ja edasised tööd

................................
................................
...................

32

Kokkuvõte

................................
................................
................................
..........................

33

Summary

................................
................................
................................
............................

35

Kasutatud kirjandus

................................
................................
................................
...........

37

Lisad

................................
................................
................................
................................
...

40

Lisa 1


Olemasolevate rakenduste ekraanipildid

................................
.........................

40

Lisa 2


Infosüsteemi andmemudeli olemite ja atribuutide semantika

..........................

42




5


Lühendite ja mõistete loetelu

AJAX
-

A
synchronous

J
avaScript
A
nd

XML
,
kogum meetodeid

interaktiivsete
veebirakenduste loomiseks.

CSS


Cascading Style
Sheets
,
kaskaadlaadistik, keel märgistuskeeles kirj
eldatud

dokumentide kujundamiseks.

CSV


Comma
-
S
eparated
V
alues
, failiformaat
andmetabeli

esitamiseks teksti

kujul.

GPL


GNU General Public License
,
vaba tarkvara litsents.

HTML


HyperText Markup
Language
,
keel veebilehtede loomiseks.

LDAP


Lightweight Directory Access Protocol, kataloogiteenuse protokoll.

PDF



Portable Document Format
,

dokumentide universaalne lõppformaat, mis on
orienteeritud dokumendi väljastamisele ja säilitamisele.

SQL


Str
uctured Query Language
,
andmebaasi
päringukeel.

UML


Unified Modeling Languag
e
,

meetod arendatava objektorienteeritud
tarkvarasüsteemi spetsifitseerimiseks, visualisee
rimiseks ja dokumenteerimiseks.

URL


Uniform Resource Locator
, ressursilokaator

ehk internetiaadress
.

VPN


Virtual Private Network
,
virtuaalne privaatvõrk
.

XML


eXtensible Markup Language
,
märgistuskeel, mida kasutatakse andmete
kirjeldamiseks.

XSS


Cross Site Scripting
,

veebirakenduse turvaauk, mis võimaldab ründajal kliendi
poolsetest turvakontrollidest läbi murda.

6


Sissejuhatus

Käesoleva diplomitöö eesmärgiks on analüüsida ning töötada välja töögraafikute
koostamise veebirakendus Skype

Technologies OÜ (edaspidi Skype)

järelvalvemeeskonnale vastavalt meeskonna esitatud nõuetel
e ja soovidele. Töö teema on
aktuaalne, kuna loodav rakendus käsitleb reaalset probleemi


Skype
järelvalvemeeskonnal puudub kergesti kasutatav töögraafikute koostamise meetod ning
rakendus.

Loodava rakenduse eesmärgiks on lihtsustada töögraafikute koostam
ist,
lühendada selleks kuluvat aega ning muuta töötajate töövahetuste soovid paremini
jälgitavaks.

Veebirakenduse realiseerimisel kasutatakse kaasaegseid

arendusvahendeid ja
tehnoloogiaid.

Käesolev töö on jaotatud kaheks: analüüsi ja realisatsiooni osaks.

Esimeses osas

analüüsitakse olemasolevaid
töögraafikute koostamise lahendusi

ning
määratletakse rakenduse loomiseks vajalikud arendusvahendid kasutades võrdleva
analüüsi metoodikat ning võttes arvesse

autori kogemust.

Realisatsiooni peatükis realiseeritaks
e töögraafikute koostamise veebirakendus ning
kirjeldatakse arendusvahendite kasutamist
, seadistamist

ja

nende eripärasid
. Kirjeldatud
on ka
rakenduse põhifunktsionaalsuse realiseerimist



funktsioonide käitumisloogikat,
põhilisi kontrollereid, mudeleid ja

vaateid.

Diplomitöö lisades on toodud olemasolevate lahenduste ekraanipildid, realiseeritava
infosüsteemi andmemudeli olemite ja atribuutide semantika
.

7


1.

Analüüs

Käesolevas peatükis tuuakse väl
j
a töös käsitletava probleemi olemus, antakse ülevaade
organisatsioonist
, mille näitel sõnastatud probleemi lahendama hakatakse
,
analü
üsitakse
olemasolevaid lahendusi
, sõnastatakse nõuded realiseeritavale infosüsteemile

ning
selgitatakse välja rakenduse realiseerimisel kasutatavad arendusvahendid ja tehnoloogi
ad.

1.1.

Organisatsioon

Skype Technologies OÜ

on 2003
.

aastal

Niklas Zennströmi
ja

Janus Friisi

asutatud ning
Luksemburgis baseeruv ettevõte

[1]
.

Ettevõtte suurim kontor asub Tallinnas.
Asutuse
põhitegevuseks on Skype suhtlustarkvar
a arendamine
, mille algse
tehnilise lahenduse
töötasid välja Jaan Tallinn, Ahti Heinla ja Priit Kasesalu

[2]
.

Suhtlustarkvara kasutajaid
2010 aas
ta lõpu seisuga on 663 miljonit

[3]
.

Tipptundidel kas
utab tarkvara korraga ligi 30
miljonit kasutajat

[4]
.

Tagamaks tarkvara
tõrgeteta töö lõppkasutaja jao
ks ning kesksüsteemide toimimine
,
jälgitakse kogu infosüsteem
i ning selle komponente ööpäeva
-
ringselt. Nimetatud
ülesannet
täidab järelvalvemeeskond, milles on viis järelvalvespetsialisti
. Korraga on tööl
üks spetsialist ning vahetus
e kestus on 12 tundi: kella kaheksast

kaheksani.


Meeskonna põhi
lised
töö
ülesan
ded

on

järgmised:



kesksüsteemide jälgimine
;



järelvalvetarkvara
haldus;



sidusrühmadega suhtlemine;



osalemine järelvalvetarkvara arenduses
.

Tähtsaimateks töövahenditeks on infrastruktuuri jälgimistarkvara Nagios

[5]

ning
graafikute
süsteem Cacti

[6]
.

8


1.2.

Probleemi ki
rjeldus

S
k
ype
järelvalve
meeskonnal puudub kergesti kasutatav töö
vahetuste soovide avaldamise
ja
töö
graafiku

koostamise meetod ning rakendus.
Osakonna juht koostab
t
öövahetuste
g
raafikut
Microsoft

Excel
abiga

ning töö
tajad

esitavad graafikusoove
meeskonna juhile

vahetult.

Selline meetod on

väga ajamahukas

ja

pärsib

meeskonna juhi

põhitööülesannete
täitmist
. Teatud olukordades võib juhi jaoks alluva soovide mõistmine osutuda
keeruliseks, kuna puudub ühtne kokkulepitud sõnastusviis ja seetõttu võib
ette tulla
arusaamatusi.

Samuti on kõikide soovide üle järjepidamine raske.

Meeskond tahab
võtta kasutusele soovidele ja nõuetele vastav
at
, kergesti kasutatav
at

ning
ees
märki võimalikult täpselt täitvat
,

ilma liigse funktsionaalsuseta

infosüsteem
i
, mille
abil
töövahetuste soove edastada ning töögraafikuid koostada.

1.3.

Töös kasutatavad meetodid

Käesolevas töös keskendub autor kõigepealt eesmärkide ja nõuete täpsele
väljaselgitamisele, mis on käsitletava probleemi mõistmiseks ja lahendamiseks
esmavajalikud. Eel
nimetatud osa teostamiseks kaasatakse Skype järelvalveosakon
d,
ennekõike selle meeskonna juht
.

Olles välja selgitanud peamised puudused, eesmärgid ja nõuded, analüüsib autor juba
olemasoleva
te lahenduste ja rakenduste sobivust. Nimetatud analüüsi puhul tul
eb arvesse
võtta ka osakonna eripärasid.

Juhindudes määratletud eesmärkidest ja nõuetest, koostab autor unifitseeritud
modelleerimiskeele (UML

-

Unified Modeling Language

[7]
) vahendite abiga
realiseeritava rakenduse andmemudel
i
.

Infosüsteemi realiseerimiseks kasutatavad arendusvahendid on valdavalt määratud juba
ettevõtte
s olemasolevate süsteemide

poolt
,

kuid
mõningate nõuete täitmiseks tuleb
kasutusele võtta täiendavad tehnikad. Ka nendele tehakse võrdlev analüüs ning
selgitat
akse välja sobivad.

Kokkuvõtvalt on käesolevas töös kasutatavad me
etodid

järgmised:



eesmärkide ja nõuete analüüs
;



olemasolevate rakenduste võrdlev analüüs
;



täiendavate arendustehnoloogiate
väljaselgitamine
;

9


1.4.

Olemasolevate lahenduste analüüs

Antud

alampeatükis analüüsitakse ja võrreldakse olemasolevaid lahendusi käesolevas
töös käsitletava probleemi lahendamiseks. Autor peab arvestama ka
Skype ning selle
ettevõtte järelvalvemeeskonna eripäradega.

Analüüsitavate l
ahenduste valikul

on
tuginetud

TopTe
nREVIEWS poolt 2011 aastal koostatud võrdlustabelile

[8]
.

1.4.1.

DR
oster

DRoster on
Kappix
-
i
poolt väljatöötatud
töö
vahetuste

ja
-
ülesannete planeerimise

rakendus
, mis on loodud töötama vaid Microsoft

Windows operatsioonisüsteemides
.

Nimetatud rakendus

on saadaval
nii

tasuta
kui ka

tasuli
sena
. Tasuta versioonis on lubatud
määrata

kuni 100
töövahetust
, kuid kustutades vanad
vahetused

saab

uusi juurde
luua
.
Tasulisel versioonil seda piirangut ei ole.

[9]

DRos
ter
-
i
eeliseks

on võimalus kopeerida teatud perioodile koostatud töögraafikut ka
teiseks perioodiks. Kasulikuks osutub see juhul, kui mõnel töötajal on mitme kuu lõikes
soov kindlatel vahetustel (samad päevad) tööl olla.

Ka on olemas funktsionaalsus HTML
j
a

CSV formaati failide genereerimiseks loodud töögraafiku alusel.

Eeliseks võib pidada
ka Microsoft Office toodetele sarnanevat kasutajaliidest
, juhul, kui kasutaja on nimetatud
tootepaketi rakendustega tuttav.

Küll aga ei ole võimalik failide
koostamist

kohaldada

ja
lisada reegleid asutuse sise
kommunikatsiooniportaalina

kasutatava Confluence
-
i süntaksi
väljastamiseks, mis on ka üheks

tähtsaks

käesoleva töö nõudeks.

DRoster ei ole veebirakendus ja seetõttu pea
b

iga töötaja selle oma personaalarvutisse
pai
galdama. Rakendust saab kasutada ka klient


server
versioonis
.

[9]

Kuna toetatud on
ainult Microsoft Windows operatsioonisüsteemid, seda ka serveri tarkvara puhul,
siis
osutub DRoster
-
i kasutamine keeruliseks: asutuses kasutat
avad serverid on enamasti
Unix
-
tüüpi operatsioonisüsteemiga. Ka mõned järelvalvemeeskonna liikmed kasutavad
personaalarvutis vaid Unix
-
tüüpi operatsioonisüsteemi. Takistuseks

on ka
asutuse
infoturbe

määrused
:

välisvõrgust tohivad otseselt kättesaadaval o
ll
a vaid hädavajalikud
teenused ning

VPN ühenduse loomine asutuse sisevõrku on lubatud vaid
süsteemiadministraa
toritel ning arendusmeeskondade liikmetel
.

Autori arvamuseks on, et DRoster omab väikese meeskonna töögraafikute haldamiseks
liiga palju ebavajalik
ku funktsionaalsust, mis raskendab rakenduse kasutamist
, kuid osa
rakenduse funktsionaalsusest on heaks eeskujuks arendatavale infosüsteemile.

10


1.4.2.

WhenToWork

WhenToWork on samanimelise kompanii poolt arendatud veebipõhine töögraafikute
koostamise tarkvara.
Rak
endust majutab ettevõte ise ning teenuse kasutamine on tasuline

(kuupõhine arvestus)
, 30 päevase prooviajaga.

[10]

Tarkvara põhiomadused on järgmised:

[11]



teadete saatmine kasutajatele;



eraldi
kasutusliides mobiiltelefonidele;



töövahetuste soovide esitamise võimalus;



12 erinevat töögraafiku kuvamisformaati;



muudetavad

töövahetuste ajad;



mitme osakonna haldus;



töötajate kasutusvõimaluste haldamine;



automaatne vahetuste määramine;

Suurimaks eelise
ks on, et tegemist on veebirakendusega, seega on

rakendus lihtsasti
kättesaadav

ning ei esita kasutaja jaoks platvorminõudeid. E
eliseks on muuhulgas
ka
mobiiltelefonide jaoks eraldi kohandatud kasutajaliides, mis tänapäeval on inimeste kiire
elutempo ja li
ikuvuse juures küllaltki suure tähtsusega.

Samuti võimaldab süsteem igal
töötajal määrata elektronposti aadresse, kuhu
teatud aeg enne töövahetuse algust
saadetakse sellekohane teatis.

Teatisi on võimalik saada ka muude sündmuste kohta ning
kasutaja saab t
eavituste saatmist vastavalt soovile muuta.

Nimetatud võimalust saab
kasutada ka teavituse saamiseks lühisõnumina, kui kasutajal on mobiilioperaatoriga
sõlmitud E
-
post GSM
-
ile teenuse kasutamise leping.

Kasulikuks funktsionaalsuseks

võib

pidada, et töötaja
tel on võimalus meeskonna juhi poolt koostatud graafik kinnitada või
tagasi lükata.

Kahjuks omab WhenToWork väikese meeskonna töögraafikute haldamiseks liiga palju
funktsioone
,

muuhulgas

näiteks palgaarvestus
, mistõttu on

ka

kasutajaliides valikutega
liialt koormatud

kuid siiski loogilise ülesehitusega.

Rakendus nõuab meeskonna ja
töötajate kohta liialt infot, mida ainult ühe meeskonna töövahetuste planeerimiseks vaja ei
lähe.

WhenToWork ei toeta riigipühade lisamist, mis on
järelvalvemeeskonna jaoks tähtis
funktsionaalsus. Kuigi tarkvara pakub võimalust töögraafikuid mitmesse formaati, näiteks
XML ja CSV eksportida, ei ole võimalik failiformaate juurde lisada.

11


1.4.3.

ClockIt

ClockIt

on
Es
-
software.net poolt arendatud rakendus, mis
on saadaval nii veebi
-

kui ka
töölauaversioonina
, mis on omavahel integreeritavad.

Veebirakenduse tootenimetuseks
on ClockIt
-
Online

[12]
.

Kuna lahenduse kättesaadavuse tõttu on eelistatum
veebirakendus, siis nimetatud toote puh
ul autor töölauaversiooni ei analüüsi.

ClockIt
-
Online on tasuline, 30 päevase tasuta prooviperioodiga veebilahendus, mille
maksustamine on

kuupõhine

litsentside

ehk kasutajate

arvu alusel. Alla kümne

litsentsi
osta ei ole võimalik

[13]
.

Rakenduse kasutajaliides on väga hästi realiseeritud


peamenüü asub vasakus servas ning valikuid ei ole liiga palju. Kasutaja kalendrivaade,
kus on märgitud temale määratud töövahetused, rahuldab Skype järelvalvemeeskonna

esitatud soove peaaegu täielikult. Puuduseks on vaid, et nädal algab pühapäevaga ning
seda muuta ei ole võimalik. Samuti ei saa määrata vaates kuvatavat infohulka.

ClockIt
-
Online suurimaks puuduseks on, et

kasutajatel ei ole peale puhkuse ja täiesti
vaba
de tööpäevade võimalust muud soovi avaldada.

T
öövahetuste kellaaegade
määramisel n
õuab

rakendus

hilisemat

vahetuse lõpu kellaaeg
a
kui alguse aeg, mis
tähendab,
et
öövahetus
ed tuleb

sisestada kahes osas.

Ka loodud töögraa
f
iku
ekspordivõimalused
erine
vatesse

failiformaatidesse jätavad

soovida:

e
ksporti
da saab

vaid
puhkuste

ja vabade päevade

soov
e ning seda ainult

PDF

formaa
ti.

1.4.4.

Olemasolevate r
ake
nduste kokkuvõte

Järgnevalt on
Tabel
1

välja

toodud eelnevalt analüüsitud lahenduste võrdlus
.

Tabel
1

Töögraafikute koostamise tarkvarade võrdlus


DRoster

WhenToWork

ClockIt

Veebirakendus

Ei

Jah

Jah

Nõuded platvormile

Microsoft
Windows

Puudub

Puudub

Töövahetuste
soovide märkimine

Jah

Jah

Ei

Loogiline
kasutajaliides

Jah

Jah

Jah

12



DRoster

WhenToWork

ClockIt

Liigne
funktsionaalsus

Jah

Jah

Ei

Automaatne
vahetuste
määramine

Ei

Jah

Eelneva perioodi
põhjal

Väljundformaadi
redigeerimine

Ei

Ei

Ei

Riigipühade
määramine

Ei

Ei

Jah


Näitlikuse
tarbeks

on lisas 1 analüüsitud lahenduste kasutajaliideste ekraanipildid.

T
öö autor leiab, et analüüsitud rakendused

ei täida Skype järelvalvemeeskonna esitatud
nõudeid ja soove
.

Igal lahendusel on küll mitme
id

erineva
i
d eelise
i
d, kuid kokkuvõttes
jääb mõni tähtis
funktsioon puudu
, mis
pärast ei ole rakendust mõ
ttekas

kasutada
.

Lihtsa
kasutajaliidese ning liigse funktsionaalsuse puudumise poolest sobiks kõige paremini
ClockIt
, kuid

nimetatud rakendus ei võimalda kasutajatel töövahetuste soove esitada.
Kõigil lahendustel puudub töögraafikute
eksportimise väljundformaadi redigeerimise
võimalus
, mistõttu tule
b

valmis töögraafikud asutuse sisekommunikatsiooniportaali
Confluence käsitsi
sisestada.

1.5.

Realiseeritava infosüsteemi analüüs

Käesoleva alampeatüki eesmärk on
koosta
da arendatava rakenduse analüüs

kaardistamaks
nõuded

ning
luua

andmemudel.

Eriti tähtsal kohal on nõuded funktsionaalsusele, mis on
esitatud

Skype

järelvalvemeeskonna poolt.

1.5.1.

Nõuded

Järgnevalt tuuakse välja järelvalvemeeskonna esitatud nõuded loodavale rakendusele.
Nõuded on unikaalselt märgistatud, et töö edaspidistes osades oleks nendele viitamine
lihtsam.

N1:

Arendataval rakendusel peab olema kale
ndrivaade ning iga kalendripäeva kohta
töövahetus
t
e välja
d
.

13


N2:

Töötaja peab saama arusaadavalt ja lihtsalt kalendrisse märkida, milliseid vahetusi ta
soovib ja milliseid mitte.

N3:
Graafiku koostaja peab saama selge ülevaate antud vahetuse soovide kohta
(
valikuaknas on töötaja nime taust erinevat värvi).

N4:
Rakendus peab näitama töögraafiku haldajale, mitu töötundi antud kuus on mingile
töötajale juba määratud.

N5:
Rakendus peab väljastama
Confluence

süntaksiga koodi valitud kuu töövahetuste
kohta.

N6:
Ra
kendus
võiks

väljasta
d
a iCalendar formaati
.

N7:
Riigipühad peavad olema esiletõstetud.

N8:
Sooviks on, et kõik valikud kinnitatakse automaatselt
:
puudub kinnitamise nupp.

N9:
Kasutaja peab süsteemi mittetoimimise ja vea tekkimise kohta saama teate.

N10:
Pe
ab olema võimalik lisada süsteemi uusi kasutajaid ning neid eemaldada.

N11:
Süsteem peab kasutaja LDAP kasutajanime järgi tuvastama.

N12:
Rakendus peab olema kõigile lihtsal viisil kättesaadav.

N13:
Kasutajatel peab olema võimalus

töövahetuste soovide kohta

lisada kommentaare.

N14:
Kasutajad peavad saama märkida puhkusi, graafiku haldajale peab töötaja puhkus
olema näidatud (erinevat värvi nimetaust).

N15:
Peab olema võimalik määrata mitu isikut, kellel on õigus luua töögraafikuid.

1.5.2.

Süsteemi tegijad

Tegijaks nimetatakse kasutuslugudes osalejat, kes mõjutab süsteemi ja saab sealt infot.
Tegijateks ei ole ainult inimesed vaid ka teised infosüsteemid ja seadmed.

[14]

Mõistmaks paremini käesolevas töös kasuta
tud nimetusi realiseeritava
rakenduse

kasutaja
rollide

kohta on alljärgnevalt
nimetatud ning lahti seletatud

infosüsteemi

tegijad.


14


I
nfosüsteemi tegijad on järgmised:



LDAP
;



Töötaja
;



Meeskonna juht
;

LDAP

Teenus, mille abil toimub kasutajate
autentimine
.

Töötaja

Süsteemi kasutaja, kes esitab töövahetuste soove.

Meeskonna juht

Süsteemi kasutaja, kes koostab töögraafikuid ja lisab süsteemi uusi töötajaid.

1.5.3.

Andmemudel

Järgnevalt on
Joonis
1

esitatud infosüsteemi andmemudel ning

lisas
2

k
irjeldatud
käsitletava
te olemite
ja

nende atribuutide semantika.


Joonis
1

Infosüsteemi andmemudel

Esitatud andmemudel on koostatud tuginedes
realiseeritavale
rakendusele esitatud
nõuetele.

15


1.6.

Arendusvahendid ja tehnoloogiad

Käesolevas peatükis selgitab autor välja arendusvahendid ja tehnoloogiad, mille abil
realiseeritakse veebirakendus, lahendamaks töös käsitletavat probleemi.

Valiku tegemisel
lähtus autor oma ko
gemus
ele

nimetatud arendusvahendite ja tehnoloogiatega.

Kuna

Skype

järelvalvemeeskonnal on sooviks võimalikult lihtne rakenduse
kättesaadavus, otsustas autor reali
seerida infosüsteemi veebirakendusena: seetõttu ei pea
kasutaja personaalarvutisse lisatarkva
ra paigaldama. Veebiserveris, millesse valmis
rakendus paigaldatakse, asuvad ka mõningad teised järelvalvemeeskonna poolt
kasutatavad
veebirakendused

ja sellepärast on sinna paigaldatud ning seadistatud ka
PHP.

Samuti on paigaldatud ka MySQL andmebaasisüst
eem.
Eelnevatele faktidele

ning
kogemusele

tuginedes otsustas autor kasutada veebirakenduse realiseerimiseks PHP
skriptimiskeelt
, JavaScript
-
i vahendeid

ning MySQL andmebaasi.

1.6.1.

PHP

PHP: Hypertext Preprocessor

on
laialt levinud üldotstarbeline

vaba

tarkvaraline
skriptimiskeel

[15]
, mis on eriti sobilik just

dünaamiliste

veebilehtede loomiseks, kuna
PHP programmikoodi saab HTML sisse põimida. PHP süntaks põhineb C
-
tüüpi keeltel
(
C, C++, Java)

kuid erinevuseks on nõrk tüüb
ikindlus ja dünaamilised andmetüübid
.

PHP
ei ole objekt
-
orienteeritud keel, kuid siiski toetab seda lähenemist

[16]
.

PHP programmikood
i interpreteeritakse

veebiserveris

ning kliendile saadetakse vaid
programmi tulemusena genere
eritud HTML kood
[17]
.

Kuna PHP on väga laialt levinud, siis
on sellele loodud ka hulgaliselt
arendus
raamistik
k
e
,
mis lihtustavad veebirakenduste loomist
.

Järgneva
tes alampeatükkides

on välja toodud
mõned enimkasutatavad PHP veebiraamistikud.

1.6.2.

Zend Framework

Zend Framework
-
i näol on tegemist

vaba tarkvaralise objektorienteeritud

PHP

veebiraamistikuga
,
mille üheks põhiomaduseks on

Model
-
View
-
Controller
(MVC)
arhitektuur.

Zend Framework pakub suurel hulgal valmis komponente
, näiteks vormi
loomise abi, väljade valideerimine
, mida kõige enam veebiarendusel vajatakse ning neid
kõiki saab kasutada

ka

iseseisvalt. Andmebaasi abstraktsioon lihtsustab oluliselt
andmebaasiga suhtl
emist, mis on infosüsteemide lahutamatuks osaks

[18]
.

16


Kuna nimetatud veebiraamistik on loodud olema võimalikult universaalne, et selle abil
saaks realiseerida kõiksuguseid projekte
, siis nõuab projekti konfigureerimine küllaltk
i
palju aega. Zend Framework
-
i moodulid tuleb laadida käsurealt
, mille tulemusena
lisatakse konfiguratsioonifailidesse vastavad kirjed ning tekitatakse lähtekoodimallid
lisatud mooduli kasutamiseks
.

Eelnevalt kirjeldatu loob aga oskuslikul kasutusel eeldus
e
suure hulga
lähtekoodi automaatseks genereer
imiseks, mille abil on võimalik

kiirendada
arendusprotsessi.

Mitmed moodulid nõuavad aga enne lisamist ka teatud klasside
realiseerimist.

Nimetatud veebiraamistiku eelisteks on universaalsus
, põhjalik dokumenta
tsioon

ning

suur kommuun ja seetõttu ka palju juhendeid ning õppematerjale.

Oskuslikul kasutamisel
on võimalik arendusprotsessi märgatavalt kiirendada ning põhjalikult testitud

(pikalt ja
laialt kasutusel olnud)

komponendid loovad eelduse edukaks projektik
s.

Kuna autori kokkupuuted Zend

Framework veebiraamistikuga on vaid põgusad ning
käesolevas töös realiseeritava
infosüsteemi

loomine

nimetatud veebiraamistiku abiga
tundub olevat liiga keerukas

ja mahukas
, otsustas autor Zend

Framework
-
i mitte
kasutada.

1.6.3.

CodeIgniter

CodeIgniter on EllisLab poolt arendatav PHP veebiraamistik
, mille põhiomadusteks on

MVC arhitektuur,

kompaktsus ning mitte väga ranged nõuded arendatava rakenduse
arhitektuurile.
Vaatamata veebiraamistiku kompaktsusele, pakub CodeIgniter palju
enamasti vajaminevaid komponente

[19]
.

Mooduleid ja komponente saab kasutusele võtta lisades nende nimetuse
konfiguratsioonifaili ning luues programmikoodis teatud meetodite abil vastava
d

objektid

[20]
.

Kuna veebiraamistiku konfigureerimiseks ei kasutata käsurea vahendeid, sisaldab
tavapailgaldus juba kõiki olemasolevaid faile. Küll aga tohib kasutusel mitte olevate
lisateekide

lähtekoodifailid kustutada.

CodeIgniter ei ole arendajate poolt kõige
paremini dokumenteeritud kuid tänu suurele
kasutajaskonnale

leidub palju õpetusi ja
näiteid.

Lähtudes autori eelnevast kogemusest ning nimetatud veebiraamistiku kasutusmugavusest
ja lihtsusest, võetakse käesolevas töös realiseeritava veebirakenduse
loomiseks kasutusele
CodeIgniter.

17


1.6.4.

JavaScript

Lähtudes järelvalvemeeskonna esitatud ning käesoleva töö nõuete peatükis märgitud
soovist, et kasutaja ei peaks pärast valikute tegemist neid veel eraldi kinnitama, kasutab
autor rakenduse teostamisel ka JavaScr
ipt
-
i

ehk ECMAScript
-
i

vahendeid,

mida toeta
vad

peaaegu kõik veebilehitsejad ning

mis ei esita nõudeid kasutatavatele platvormidele
.
JavaScript on

nõrga tüübikindluse ja dünaamiliste andmetüüpidega
objekt
-
orienteeritud
skriptimiskeel
, mida veebirakenduste

puhul
interpreteeritakse
kliendi pool
el

ehk
veebilehitsejas
.

Enamasti kasutatakse
JavaScript
-
i

dokumendiobjektide mudeli (DOM

-
Document Object Model
)

manipuleerimiseks

[21]
.

Kasutajate valikud kinnitatakse andmebaasi Ajax
-
i
tehnoloogiat kasutades.


Lahenduse
lihtsuse mõttes ei ole küll kõigi võimalike valikute kinnitamiseks kasutatud nimetatud
tehnoloogiat


täpsemalt kirjeldatakse neid juhte töö realisatsiooni peatükis.

Ajax
-
i näol on tegemist tehnoloogiate kogumikuga, mis o
n omavahel JavaScript
-
i abiga
kokku seotud. Nimetatud tehnoloogi
a eesmärgiks on asünkroonsete veebirakenduste
loomine, see tähendab, et kasutajaliidesega suhtlemine toimub serveriga suhtlemisest
sõltumatult



pärast iga kasutaja tehtud valikut ei

laeta ter
vet veebilehte uuesti;

vajadusel
vaid osa sellest

[22]
.

1.6.5.

jQuery

jQuery on üks populaarsematest JavaScript
-
i teekidest (nimetatakse ka raamistikuks).
Arendajaks on The

jQuery

Project, mis asutati 2009.
a
astal

[23]
.

Arendajad
iseloomustavad raamistiku kui kiiret, lakoonilist ja funktsiooniderohket teeki, mis
lihtsustab HTML dokumentide manipuleerimist, sündmusetöötl
u
st, animeerimist

ning

Ajax
-
i tehnoloogia kasutamist veebiarendusel. Tuumlahendust nimeta
takse jQuery

Core
-
ks, millele toetuvad kõrvalprojektid jQuery

UI
,
QUnit ning Sizzle


[24]
.

jQue
r
y
omab

arendajate poolt

väga põhjaliku dokumentatsiooni

ning tänu suurele
kasutajaskonnale leiab küsimustele ja probleemidele kiiresti vastused.

Välja on antud ka
mitmeid raamatuid.

Raamistik ühildub kõigi populaarsemate veebilehitsejatega ning seda

s
aab kasutada üheaegselt

ka

koos teiste

JavaScript
-
i

teekideg
a.

Kasutamine on väga lihtne
ning funktsioonide nimed on ennast selgitavad


üldjuhul piisab vaid jQuery
-
ga
kaasatulevatest funktsioonidest, et rahuldada suurem osa soovidest.

18


Käesolevas töös realiseeritava rakenduse arendamisel otsustas autor kasutada jQu
ery
teeki.

1.6.6.

MySQL

MySQL näol on tegemist

populaarse avatud lähtekoodiga andmebaasiga
, mille

GPL
litsentsiga

Community Edition

versioon on saadaval tasuta
[25]
.

MySQL on väga
põhjalikult dokumenteeritud ning tänu suurele kasutaja
skonnale leidub internetis MySQL
kohta palju materjali.

MySQL
-
iga tulevad vaikimisi kaasa mitmed andmebaasimootorid, mis käsitlevad
andmeid

üksteisest

erinevalt ning igale andmebaasi tabelile saab määrata erineva
andmebaasimootori. Vaikimisi on kasutusel
MyISAM

mootor

[26]
.

Käesoleva diplomitöö
raames loodava infosüsteemi andmebaasi tabelid kasutavad eelnimetatud MyISAM
andmebaasimootorit.

Võimalik on kasutada järgmisi andmebaasimootoreid

[27]
:



In
noDB



MyISAM



NDB (MySQL Cluster)



Memory



Merge



Archive



CSV

19


2.

Realisatsioon

Antud peatükis kirjeldatakse loodava töögraafikute koostamise veebirakenduse
realiseerimist: tuuakse välja CodeIgniter veebiraamistiku konfigureerimine vastavalt
loodava rakenduse vajad
ustele; kirjeldatakse kasutajate autentimise ja autoriseerimise
toimimist; seletatakse kontrollerite ja mudelite käitumisloogikat ning
peamisi
funktsioone.

2.1.

CodeIgniter konfigureerimine

CodeIgniteri konfiguratsioonifailid asuvad kaustas
application/config
.

Tähtsaimad failid on:



autoload.php



määratakse, millised ressursid
lähtestatakse

automaatselt
globaalselt kättesaadavateks
;



config.php



peamine konfiguratsioonifail
;



database.php



andmebaasi konfiguratsioonifail
;

Järgnevates alampeatükkides on
kirjeldatud CodeIgniter konfigureerimist eelnimetatud
failide abil.

2.1.1.

Automaatselt
lähtestatavad

ressursid

Failis
autoload.php

saab automaatselt l
ähtestada

järgmisi ressursse:
[28]



tuumklasse (teeke) kaustast
libraries
;



abifaile ja

funktsioone kaustast
helpers
;



kohandatud konfiguratsioonifaile kaustast
config
;



keelefaile kaustast
system/language
;



mudeleid kaustast
models
;

Realiseeritava rakenduse raames on tuumklassidest enamasti vaja HTML tabelite
genereerimise funktsio
naalsust ning suhtlemist andmebaasiga.

Abif
ailidest läheb vaja
20


URL
ning kuupäeva abifunktsioone.

Sellepärast seatakse konfiguratsioonifaili vastav
ad

kirje
d

nimetatud ressursside automaatseks lähtestamiseks
.

Ressursse saab edaspidi

koodifailides

kasutada stiilis:
$this
-
>ressursinimi
-
>funktsioon();
.

autoload.php:

$autoload['libraries'] = array('database', 'table');

$autoload['helper'] = array('url', 'date');

HTML tabelite genereerimise klass hõlbustab HTML tabelite loomist

pakkudes võimalust
tabel
i automaatseks koostamiseks andmemassiivi või andmebaasi vaste kollektsiooni
põhjal; lahtritesse paikutatavatele andmetele mingi funktsiooni rakendamist
; tabeli
kujunduse muutmist

[29]
.

Andmebaasi abstraktsiooniklass
Database

toetab nii traditsioonilisi struktuure kui ka
Active Record

arendusmalli
, mille toel saab lihtsal viisil andmebaasist andmeid pärida
ning sisestada ja uuendada

[30]
.

URL abifunktsioonide fail sisaldab muuhulgas meetodeid ressu
rsside
internetiaadresside
loomiseks
, URI segmentide küsimiseks, hüperlingi koostamiseks ning ümbe
rsuunamiseks
teisele aadressile

[31]
.

Kuupäeva abifunktsioonid

lihtsustavad kuupäevadega töötamist

[32]
.

Küll aga puuduvad
funktsioonid ajatempli muutmiseks MySQL
-
i kuupäevaformaati ja vastupidi. Seepärast
on laiendatud abifunktsionaalsust, luues kataloogi
helpers

fail
MY_date_helper.php
,
milles on realiseeritud funktsionaalsus

MySQL
-
i kuupäevaformaat
idega töötamiseks.

2.1.2.

Põhikonfiguratsioon

Konfiguratsioonifaili
config.php

sisestatakse

kirjed rakenduse

baas URL, indeks lehe
nime, kooditabeli ning XSS filtreerimise kohta
.

Samuti lubatakse
hooks
-
ide kasutamine.

Parameetri
$config['base_url']

väärtustamine
on võetud CodeIgniter wiki
-
st

[33]
.

config.php:

$config['base_url'] = 'http' . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] ==
'on') ? 's' : '')
.'://'.$_SERVER['HTTP_HOST'].str_replace('//','/',dirname($_SERVER['SCRIPT_NAME'
]).'/');

$config['charset'] = 'UTF
-
8';

21


$config['enable_hooks'] = FALSE;

$config['global_xss_filtering'] = TRUE;

$config['enable_hooks'] =
TRUE
;

2.1.3.

Andmebaasi konfiguratsioonifail

Andmebaasi konfiguratsioonifaili tuleb lisada kirjed hostinimega, kus andmebaas asub,
andmebaasi
draiver ja nimi;

kasutajanimi ja parool andmebaasi kasutamiseks.

database.php:

$db['default']['hostname'] = '127.0.0.1';

$db['default']['username'] = 'mcalendar
';

$db['default']['password'] = 'mcalendar';

$db['default']['database'] = 'mcalendar';

$db['default']['dbdriver'] = 'mysql';

$db['default']['char_set'] = 'utf8';

$db['default']['dbcollat'] = 'utf8_general_ci';

2.2.

Kasutajate autentimine

ja autoriseerimine

Kasutajate autentimine toimub

Apache

LDAP

mooduli

(
mod_auth_ldap
)

toel

ning
rakendus tuvastab kasutajad
ainult

LDAP
-
i

kasutajanime põhjal.

Kasutajanime
küsimiseks on realiseeritud CodeIgniter
-
i
hook

faili
nimega
get_user.php
.

Kuna
hook
-
ide
käivitamiseks on

ette määratud teatud rakenduse seisud ning enne kontrolleri
väljakutsumist

(
pre_controller
)

ei ole
CI
ülemobjekt lähtestatud
, pärast kontrolleri
konstruktori väljakutsumist

(
post_controller_constructor
)

on aga kasutajanime
küsimiseks ning kasutaja autoris
eerimiseks liiga hilja, on realiseeritud
põhikontrolleriklassi
CI_Controller

laiendav
klass
MY_Controller
, kus defineeritakse
hook
-
i käivitamiseks

uus

punkt
pre_controller_constructor
, mis viitab hetkele enne
kontrolleri konstruktori täitmist
.

Kõik
r
akendu
ses realiseeritud kontrollerid pärinevad
loodud
MY_Controller

klassist.

Vaikimisi on
h
ook
-
ide väljakuts
epunktid
eks
:
[34]



pre_system



väga varajane staadium programmi täitmisel, lähtestatud on ainult
hooks
-

ja reeperklass
;



pre_controller



hetk enne kontrolleri poole pöördumist, laetud on kõik
baasklassid ning teostatud on

marsruutimine ja

turvakontrollid
;

22


post_controller_constructor



hetk kohe pärast kontrolleri lähtestamist ja enne
meetodite väljakutsumist
;



post_controlle
r



punkt pärast kontrolleri täitmist;



display_override



_display()

funktsiooni ülekirjutamiseks;



cache_override



saab kasutada enda realiseeritud kuvamise vahemälu

süsteemi
;



post_system



programmi töö lõp
p, andmed on kliendile saadetud.

Klassi
MY_Controller konstrukto
r:

parent::__construct();

$GLOBALS['EXT']
-
>_call_hook('pre_controller_constructor');

Hook
-
i konfigureerimine kasutajanime küsimiseks:

$hook['post_controller_constructor'][] = array(


'class' => '',


'function' => 'getUserName',


'filename' => 'get_user.php',


'filepath' => 'hooks',


'params' => array()



);

LDAP kasutajanime küsimine:

$username = $
CI
-
>input
-
>server('PHP_AUTH_USER');

define('USERNAME', $username);

Autoriseerimise
ks kasutatakse mudeli
Employee_model

funktsiooni
get_employee_by_username($username)
, milles

otsitakse infosüsteemi andmeb
aasi
Employee

tabelist vastava kasutajanimega kirje ning

tagastatakse see.

L
ehe
külje

sisu

kuvatakse vastavalt kasutajale
:

iga kasutaja
saab muuta isiklikke töövahetuste soove ning
näha

rakenduse pealehte
, kus kuvatakse kinnitatud töögraafikuid
.

Kui tabelis kasutaja
kohta kirje puudub, siis näidatakse vaid rakenduse pealehte.

Lehekülgedel, mis nõuavad
kasutajalt ligipääsuks meeskonna juhi rolli

(uute kasutajate lisamine, töögraafikute
koostamine)
,
kutsutakse kontrolleri konstruktoris välja

autori
seerimi
se
ks realiseeritud

klassi

Authorization

meetod

authorize
_manager
(
$username
, $redirect = FALSE
)
.
Ligipääsuõiguse kontrollimiseks loetakse kirje välja
IsManager

tõeväärtust ja ku
i
kasutaja ei ole nõutud rollis ning argumendi
$redirect

väärtus on tõene
,

suunatakse ta
23


pealehele.

Kui argumendi
$redirect

väärtus on väär, siis kasutajat ümber ei suunata ja
funktsioon tagastab väära tõeväärtuse.

Autoriseerimi
s
e

väljakutsumine

kontrolleri konstruktoris:

$this
-
>load
-
>library('Authorization');

$this
-
>
authorization
-
>authorize_manager(USERNAME
, TRUE
);

Autoriseerimine
meetod
is authorize_manager($username
, $redirect = FALSE
)
:

if(
$redirect

&&

! $user[0]
-
>IsManager) {


redirect('');

}

Vaikimisi autoriseerimine
meetod
is authorize_default($username
, $redirect

= FALSE
):

if(
$redirect &&
! key_exists(0, $user)
) {


redirect('');

}

2.3.

Rakenduse vaatemallid

Rakenduse kõik vaated koosnevad päise, sisu ja jaluse mallist
, mis asuvad kaustas
views/includes
.

Vaatemallide failid
eks

on:



header.php



vaadete päisemall
;

o

seatakse

CSS stiilifailid ning lehe tiitel
;

o

avatakse HTML keha ning konteiner jaotis
;

o

väljastatakse kasutaja tervitus ning hüperlingid vastavalt kasutaja
le ning
tema

rollile
;



footer.php



vaadete jalusemall
,
suletakse konteiner jaotis ning HTML keha
;



template.php



vaadete sidumismall
;

o

seotakse omavahel päis, lehe sisuvaade ning jalus.

Päisemallis on võimalik seada vaatele ka eraldi CSS stiilifail
, mille nimi antakse edasi
argumendiga
$dedicated_css
. Kõik rakenduse vaated on üles ehitatud seda
nüanssi silmas
pidades

ning igale vaatele

seatakse spetsiifiline stiilifail. Seeläbi on stiilifaile lihtsam
hallata.

Põhi stiilifail
style.css

sisaldab vaid kõigile vaadetele omas
eid kujunduse
elemente.

Hüperlinkide
loomiseks on realiseeritud tuumklass
Links

ning selles
funktsioon
24


get_links($username)
. Funktsioonis kontrollitakse,

kas kasutaja on süsteemis olemas ning

küsitakse andmebaasist

tema roll
.

Hüperlinke kuvatakse põhimõttel
:



kasutajat ei eksisteeri


ei kuvata ühtegi linki;



kasutaja on olemas


kuvatakse hüperlin
k kasutaja töövahetuste ja soovide
leheküljele;



kasutaja on meeskonna juhi rollis


kuvatakse lisaks veel lingid kasutajate
haldamise ning

töögraafikute koostamise

lehekülgedele
.

Joonis
2

on esitatud vaadete päis juhul, kui kasutaja on meeskonna juhi rollis. Kui kasutaja
nimetatud rolli ei kuulu, siis kahte viimast hüperlinki ei kuvata.


Joonis
2

Vaadete päis

Kõik rakenduse controllerid kutsuvad välja vaate
template.php

andes kaasa argumendiga
$main_content

sisuvaate nime.

Sisuvaate laadimine failis template.php:

$this
-
>load
-
>view($main_content);

Hüperlinkide massiivi väärtustamine:

$data[‘links’] = $this
-
>link
s
-
>get_links(USERNAME);

Vaate laadimine kontrolleris:

$data = array(


'title' => '
Main view
',


'dedicated_css' => 'main_view',


'main_content' => 'main_view',

);

$this
-
>load
-
>view('includes/template', $data);

2.4.

Rakenduse esileht

Rakenduse esilehel kuvatakse

kalendri

stiilis
vaatena

kuu töövahetusi, mis on meeskonna
juhi poolt paika määratud.

Kasutajatel on võimalus navigeerida ka eelmiste ja järgmiste
25


kuude töögraafikutele
.

Heledal taustal on kuvatud päevane ning tumedamal öine
töövahetus
.

Joonis
3

on toodud pealehel kuvatav töövahetuste kalender.


Joonis
3

Määratud töövahetuste kuvamine pealehel

Pealehe tarbeks on realiseeritud kontroller
Main
, mille põhifunktsiooniks on
index($year,
$month)
, kus laetakse vaade
main_view
.

Funktsiooni argumentideks on aasta ja kuu
number, millele vastavalt kuvatakse ka kalender. Vaikimisi kuvatakse käesolev kuu.


K
alendrivaadet genereeritakse
Calendar

baasklassi abil.

Klassi lähtestamisel saab
argumendi
massiivis

võtmega
template

muuhulgas

kaasa anda

ka

kalendri

loomiseks
kasutatava malli, kus iga HTML komponent on ümbritsetud pseudo
-
muutujate paariga.


Kuna CodeIgni
teri
Calendar

baasklass ei oma rakenduses realiseeritava kalendrivaate
loomiseks vajalikku funktsionaalsust, on nimetatud klass üle kirjutatud. Selleks on lisatud
kausta
application/libraries

fail nimega
Calendar.php
, milles on realiseeritud klass
CI_Calen
dar
. Tegemist on originaalklassi koopiaga, kuid funktsioonile
generate()

on
lisatud uut, vaja minevat funktsionaalsust.

Lisatud on järgmine funktsionaalsus:



ISO 8601 standardi järgi nädala numbrite näitamine

[35]
;

o

lisatud pseud
o
-
muutuja
{cal_cell_weekno}

tundmine ja väärtustamine
;



käesoleva päeva
lahtri
eristamine teistest
;

26


o

lisatud pseudo
-
muutuja
{
cal_cell_start
_today
}

tundmine
.

Klassi

Calendar

funktsioonile

generate()

saab argumendina anda kaasa

massiivi
andmetega, mida iga päeva kohta kuvada. Massiivi võtmeteks
peavad olema päeva
numbrid

[36]
.

Massiiv väärtustatakse kontrolleri
Main

privaatfunktsioonis
_get_calendar_data()
, kus küsitakse andmebaasist mudeli
Shift_mo
del

funktsiooni
get_month_shifts($month)

kaudu käesoleva kuu töövahetused.

Calendar klassi lähtestamine
malli kaasamisega:

$this
-
>load
-
>library('calendar', $prefs);

Kalendriandmete massiivi väärtustamine:

$data
[
'calendar_data'] = $this
-
>
_get_calendar_data()
;

Kalendri loomine vaatefailis:

echo $this
-
>calendar
-
>generate(
$year, $month
, $calendar_data);

2.5.

Töögraafikute haldamine

Töögraafikute haldamiseks on realiseeritud kontroller
Manage_shifts
, mis kasutab
mudeleid
Shift_model

ning
Notes_model
.

Vaateks on
Manage_shifts
.

Töögraafikuid
saavad hallata vaid meeksonna juhi rollis olevad kasutajad.

Sarnaselt rakenduse esilehele,
kuvatakse ka töögraafikute haldamise vaade kalendri stiilis ning seda
Calendar

baasklassi
abil
.

Vastavalt Skype
järelvalvemeeskonna töövahetuste eripäradele on iga päeva kohta
kuvatud kaks rippmenüüd töötajate nimede valikuga.

Heledal taustal vastavalt päevane
ning tumedamal öövahetus.

Kui teatud vahetusele on juba töötaja määratud, on
ripp
menüüs selle töötaja nimi
vaikimisi valitud.

Ripp
menüüs olevate nimede taust
peegeldab töötaja soovi vastava töövahetuse kohta.

Töögraafikute kalendrivaate all
asuvad töötajate sisestatud kommentaarid antud kuu töövahetuste soovide kohta.

Nime tausta v
ärvilegend on järgmine:



punane



töötaja ei soovi antud töövahetust;



roheline


töötaja soovib antud töövahetust;



kollane


töötaja on antud vahetuse ajal puhkusel;



vaikimisi taust


töötaja ei ole töövahetuse kohta soovi avaldanud.

27


Järgnevalt on
Joonis
4

näidatud töögraafikute haldamise vaade, kus on mõningad
töövahetused juba määratud ning rippmenüü taust näitab vastava töötaja soovi antud
töövahetuse kohta.


Joonis
4

Töö
graafikute haldamine

2.5.1.

Kalendrivaate loomine

Calendar

baasklassi funktsioonile
generate()

kaasatav argument andmete massiiviga
väärtustatakse kontrolleri privaatfunktsioonis
_get_calendar_data()
.

Iga
kalendri
päeva
kohta lisatakse vaade
day_content
, milles kuvatakse
eelnevalt kirjeldatud
ripp
menüüd
.

Vaatele antakse argumendiks antud päeva kohta määratud töövahetuste ning töötajate
soovide andmemassiiv.


Antud päeva kohta m
ääratud töövahetuste saamiseks kutsutakse välja mudeli
Shift_model

funktsioon
get_
day
_shifts($
date
)
, mille parameetriks
$date

on kuupäev

ning mis pärib
andmebaasist vastava
le

kuupäeva
le

määratud töövahetused.

Töötajate töövahetuste
soovide saamiseks on realiseeritud mudeli
Wish_model

funktsioon
get_day_wishes($date)
, mis pärib andme
baasi tabelist
Wish

kõik antud kuupäeva
töövahetuste soovid, kus välisvõti ei viita kasutajale, kes on süsteemist kustutatud.

28


Andmemassiivi väärtustamine kuupäeva kohta:

$shifts = $this
-
>shift_model
-
>get_day_shifts($date);

$wishes = $this
-
>wish_model
-
>get_
day_wishes($date);

$day_data = array (


'wishes' => $wishes,


'shifts' => $shifts

);

$data[$day] = $this
-
>load
-
>view('day_content', $day_data, TRUE);

Vaate laadimisel kasutatav kolmas argument määrab, kas vaade saadetakse kohe kliendile
või tagastatakse
sõne vaates genereeritud HTML koodiga
. Antud näites kasutatud
väärtuse
TRUE

puhul tagastatkse sõne. Vaikimisi on argumendi väärtuseks
FALSE

[37]
.


2.5.2.

Kommentaaride kuvamine

Kommentaaride pärimiseks andmebaasist on realiseeritud m
udeli
Notes_model

funktsioon
get_month_notes($date)
, mis pärib tabelist
Notes

kõik kommentaarid, mis ei
ole seotud kustutatud kasutajaga.

Argumendiks
$date

on kuu, mille kohta kommentaare
soovitakse

saada
.

Vastuseks saadud kommentaaride massiiv lisatakse

võtmega
note
s

andmemassiivile, mis antakse parameetriks vaate
le
Manage_shifts
.

Kommentaaride pärimine, massiivi
võtme notes väärtustamine:

$data['notes'] = $this
-
>notes_model
-
>get_month_notes($date);

2.5.3.

Töövahetuste määramine

Töövahetuste määramiseks
kasutatakse jQuery abiga Ajax
-
i tehnoloogiat, mille toel
salvestatakse määratud töövahetu
s

koheselt andmebaasi ning lehekülje uuestilaadimist ei
toimu.

Vastav JavaScripti funktsionaalsus on realiseeritud failis
shiftHandler.js
, milles
jQuery vahenditega pü
ütakse rippmenüü valiku tegemise sündmusi
. Meetodi
ajax()

vahendusel

saadetakse
valitud elemendi atribuudi
value

väärtus

kontrolleri
Manage_shifts

funktsioonile

make_shift($data)
, kus parameetrina
$data

saadud väärtus sõelutakse

massiiviks

ning
andmed sise
statakse mudeli
Shift_model

samanimelises funktsioonis
andmebaasi.

Funktsioonile suunav aadress on kirjas peidetud HTML elemendis
identifikaatoriga
functionUrl
.

Rippmenüü valikute atribuudi
value

väärtuseks on kasutajale vastava unikaalse
identifikaatori n
ing töövahetuse kuupäeva ja alguskellaaja ühend.

29


Töövahetuse valiku saatmine funktsioonile

make_shift($data)
:

$("option").click(function() {



var

url = $('functionUrl').val();


$.ajax({



type: 'POST',



url: url,



data: $(this).val()


});

});

2.6.

Kasutajate haldamine

Infosüsteemi kasutajate haldamiseks on loodud kontroller
Manage_employees
, mudel
Employee_model

ning vaade
manage_employees.php
.

Kasutajaid saavad hallata vaid
meeksonna juhi rollis olevad kasutajad.

Joonis
5

on esitatud kasutajate haldamise vaade.


Joonis
5

Kasutajate haldamise vaade

Kasutajate haldamise vaates on võimalik sooritada järgmisi tegevusi:



kasutaja lisamine;



kasutaja eemaldamine süsteemist;



kasutaja rolli muutmine.

2.6.1.

Kasutaja lisamine

Vaates on realiseeritud vorm kasutaja lisamiseks, mis

kasutades POST

meetodit

suunab
kontrolleri funktsioonile
add_employee()
, milles saadakse vormilt saadetud andmed
Input

30


baaskla
ssi funktsioonidega ning kutsutakse välja mudeli meetod
add_employee($name,
$username, $isManager)
. Vorm on loodud vastava abifunk
tsiooni
toel

ning enne andmete
lisamist andmebaasi teostatakse nende valideerimine teegi
form_validation

abil.

Kuna
vaikimisi
ei pakuta unikaalse kirje kontrollimist
, siis on

kasutusele võetud Scott Nelle
poolt

loodud

vormi valideerimise baasklassi

CI_Form_validation

laiendav kohandatud
klass
MY_Form_validation
, kus on realiseeritud

unikaalsust kontrolliv

funktsioon
unique($str,
$field)
. A
rgumendiks
$str

võetakse sõne, mille unikaalsust tuleb
andmebaasist kontrollida

ning

t
abeli ja atribuudi kombinatsioon antakse edasi argumendis
$field
.

Kui esitatud andmed valideerimist ei läbi, tagastatakse kasutajale taastäidetud
vorm ning kuva
takse vigase lahtri alla vastav veateade.

Valideerimi
s
e reegli
d on:



LDAP kasutajanimi peab olema si
sestatud, unikaalne ning kuni 50

tähemärki;

o

veateade liiga pika sisendi korral:
The Username field can not exceed 5
0

characters in length
;

o

veateade mitte unikaalse sisendi korral:
The Username that you requested
is unavailable
;

o

kirje puudumise korral:
The Username field is required
;



kasutaja

nimi peab olema sisestatud ning kuni 50 tähemärki
.

o

veateade liiga pika sisendi korral:
The Employee na
me field can not exceed
50 characters in length;


o

veateade kirje puudumise korral:
The Employee name field is required;

N
ime valideerimise seadistamine failis config/

form_validation.php:

'field' => 'name',

'label' => 'Employee name',

'rules' =>
'required|trim|max_length[50]'

LDAP kasutajanime valideerimise seadistamine failis config/

form_validation.php:

'field' => 'username',

'label' => 'Username',

'rules' => 'required|trim|unique[Emp
loyee.userName]|max_length[5
0
]'

Väljade maksimaalsed pikkused
on määratud ka HTML koodiga, kuid mõned vähem
levinud veebilehitsejad võivad seda eirata.

31


Ku
na

nime maksimaalseks pikkuseks on määratud 50 tähemärki, otsustas

a
utor
LDAP
k
asutajanime pikkuseks määrata samuti 50

tähemärki,
sest

asutuses kasutatavad
kasutaja
nimed on harilikult eesnime ning perekonnanime punktiga ühendatud
kombinatsioon.

2.6.2.

Kasutaja kustutamine süsteemist

Kasutaja süsteemist eemaldamiseks kasutatakse kontrolleri funktsiooni
remove_employee
($id)
, mille argumendiks
$id

on andmebaasi

tabelis
Employee

kustutatavale kasutajale viitav unikaalne identifikaator.

Funktsioon kutsub välja mudeli
Employee_model

samanimelise funktsiooni, mis
seab

etteantud unikaalse
identifikaatoriga andmebaasitabeli
Employee

rea välja
Removed

väärtuseks hetke aja.

Kasu
taja suunatakse ümber uuesti samale lehele.

Kasutaja kustutamine:

$this
-
>db
-
>update($this
-
>tablename,
array('Removed' =>
timestamp_to_mysqldatetime(now()))
, array('idEmployee' => $id));

Funktsioon timestamp_to_mysqldatetime(now()) on realiseeritud failis
M
Y_date_helper.php
.

2.6.3.

Kasutaja rolli muutmine

Kontrolleri funktsiooni
change_role($id)

abil muudetakse kasutaja rolli.

Nimetatud
meetod

kutsub välja mudeli
Employee_model

samanimelise funktsiooni, mis uuendab

andmebaasi tabeli
Employee

vastava kirje

välja
IsManager
. Kui andmete uuendamine
õnnestub, suunatakse kasutaja
redirect()

meetodit kasutades uuesti samale lehele.

Kasutaja rolli muutmine

mudeli
funktsioonis change_role($id)
:

$this
-
>db
-
>update($this
-
>tablename, $data, "idEmployee =
{
$id
}
");


32


3.

Hetkeolukord

ja edasised tööd

Käesolevaks hetkeks on antud töös arendatud töögraafikute koostamise rakendusele
realiseeritud põhifunktsionaalsus ning lahendus täidab ka mõningaid vähemtähtsamaid
nõudeid. Töö raames realiseeritud infosüsteem on antud üle Sk
ype järelvalvemeeskonnale
ning võetakse esialgu kasutusse paralleelselt probleemi kirjelduse peatükis esitatud
meetodile. Töö autor saab järelvalvemeeskonnalt pidevat tagasisidet rakenduse kohta nii
kasutusmugavuse kui esitatud nõuetele vastavuse poolest.
Tagasiside põhjal on plaanis
infosüsteemi pidevalt täiustada
ning lisaks antud hetkeks mitte täidetud nõuete
realiseerimisele lisada ka uut soovitud funktsionaalsust.

Töö autoril on plaanis lisada võimalused rakenduse konfigureerimiseks vastavalt ettevõtte

eripäradele, et seda saaks mugavalt kasutada ka teistes ettevõtetes, kus esineb töös
kirjeldatud probleem.

Tähtsal kohal on ka töötajate töövahetuste iCal formaati
väljastami
se võimaluse lisamine
.

Muuhulgas plaanitakse lahendusele töögraafikute
eksportim
ise formaatide kohandamise võimaldamist, kuna nimetatud võimalus
t

ei
pakkunud ükski töö analüüsi osas analüüsitud rakendustest
; samuti koostatud
töövahetuste plaani taaskasutamist muuks perioodiks.

33


Kokkuvõte

Käesoleva diplomitöö eesmärgiks oli realiseerida

töögraafikute koostamise veebirakendus

Skype järelvalvemeeskonnale
, mis lihtsustaks ja kiirendaks graafikute koostamist ning
muudaks töötajate töövahetuste soovid paremini jälgitavaks.

Töö käigus selgitas autor
välja probleemi, võrdles olemasolevaid lahendusi, määratles rakenduse loomiseks
vajalikud arendusvahendid ning realiseeris veebirakenduse.

Töö analüüsi peatükis antakse kõigepealt ülevaade Skype

tegevusvaldkonnast

ning selle
järe
lvalvemeeskonna olemusest

ning põhilistest tööülesannetest
.

Järgmiseks kirjeldatakse
töö alustamise hetkel kasutatud meetodeid töögraafikute koostamiseks ning sõnastatakse
probleem
:

S
kype järelvalvemeeskonnal puudub kergesti kasutatav töövahetuste soovide
avaldamise ja töögraafiku koostamise meetod ning rakendus.

Samuti kirjeldatakse töös
kasutatavaid meetodeid.

Autor võrdleb olemasolevaid töögraafikute
koostamise rakendusi ning analüüsib nende
sobivust töös käsitletava probleemi lahendamiseks
.

Töö autor le
iab, et ükski analüüsitud
lahendustest ei rahulda järelvalvemeeskonna nõudeid piisaval määral.

Seejärel teostatakse realiseeritava infosüsteemi analüüs: sõnastatakse
järelvalvemeeskonna poolt esitatud nõuded ja soovid, kirjeldatakse süsteemi tegijad

ning
e
sitatakse andmemudel koos lisas 2 asuva olemite ja atribuutide semantikaga.

Analüüsi peatüki viimases osas
määratletakse rakenduse realiseerimisel kasutatavad
arendusvahendid ja tehnoloogiad

(PHP, MySQL, CodeIgniter, jQuery)
. Autor kirjeldab
vahendeid ning

selgitab nende valikut
.

Realisatsiooni osas
kirjeldatakse kõigepealt valitud veebiraamistiku CodeIgniter
seadistamist vastavalt realiseeritavale rakendusele. Määratakse ning kirjeldatakse
automaatselt lähtestatavad ressursid, tuuakse välja põhi
-

ning andm
ebaasikonfiguratsioon.

34


Järgnevalt kirjeldatakse kasutajate autentimise ja autoriseerimise toimimist, selleks
kasutatavaid
funktsioone

ning CodeIgniter kontrolleri baasklassi laiendamist

soovitud
funktsionaalsuse saavutamiseks.

Edaspidi kirjeldatakse
veebirakenduse põhifunktsionaalsuse realiseerimist: põhilisi
kontrollereid, mudeleid ning vaateid.

Loodud rakendus on taaskasutatav ning rakendatav ka teistes, sarnaste meeskondade ja
probleemidega ettevõtetes.

Käesoleva töö raames realiseeritud tööraafiku
te koostamise veebirakendus on antud üle
Skype järelvalvemeeskonnale ning autor plaanib meeskonnaga koostöö jätkamist
parandamaks kasutuse käigus ilmnenud vigu ning realiseerimaks lisafunktsionaalsust.

Sellele tuginedes võib öelda, et diplomitöös seatud ee
smärgid said täidetud.

35


Summary

Madis Vellamäe

Implementing a Web
-
Based Shift Scheduling Software for Skype

Technologies OÜ

Diploma thesi
s

The main purpose of this thesis was to implement a web
-
based
shift scheduling software
for Skype Technologies OÜ (Skyp
e)

monitoring team

that would ease and speed up the
process of creating monthly shift schedules and would make employees’ wishes easily
trac
e
able.

The author of
this

thesis identified the given problem, analyzed existing
software, specified
the
requirement
s

named

by

the monitoring team, chose development
tools and developed the web application.

First of all, i
n the
analysis
chapter

the author gives

an

brief overview of Skype, it’s
purview
, the essence
and the main tasks of monitoring team.

The

me
thods used
to create
shift schedules at the time when the author started to work on this thesis are being
described.

Also, the given problem
is specified
:

Skype monitoring team is missing easily
usable
tool and method to manage shift schedules and to
keep track of em
ployees’ wishes
regarding shifts.

After that,

m
ethods used in the given thesis

are named.

The author of this thesis compares existing shift scheduling software and analyzed
suitability of those to resolve
the given problem. The author finds that none of
the
analyzed applications meets the requirements

enough.

After that, the web
-
based software in development is being analyzed:
the requirements
and wishes named by the monitoring team are specified, actors of the system are
described and data

model is prese
nted.

36


In the last chapter of analysis part tools and techniques used to develop the web
-
based
shift scheduling software

are specified

(PHP, MySQL, CodeIgniter, jQuery).

The author
describes why such choise
has been

made.

In the implementation part, first
of all, the configuration of chosen web framework
CodeIgniter is being described. Automatically loaded resources are specified, main and
database configuration is presented.

After that
, the logic of authentication and authorization of users

and functions used to
implement that behaviour

are

described
. Also, the extending of CodeIgniter’s controller
base class to implement needed behaviour is described.

Also, the implementation of whole web application
, main controllers, models and views,

is
described.

The developed web
-
based shift scheduling software is reusable in other companies that
have similar problems and similar structure of teams that need such software.

The software implemented in the given thesis has been handed over to Skype
Technologies OÜ monitoring team and author is planning to continue cooperation with
the team in order to eliminate bugs found during the usage of the application and in order
to implement extra functionality needed by the monitoring team. Based on that it
can be
said that the goals specified

in the given thesis

have been ac
c
omplished.

37


Kasutatud kirjandus

1.
Skype Technologies OÜ.

(24.04.2011)

About Skype.
[
http://about.skype.com/]

2.
Thomann, Andreas.

(24.04.2011)
Skype
-

A Baltic Success Stor
y.

[
https://infocus.credit
-
suisse.com/app/article/index.cfm?fuseaction=OpenArticle&aoid=163167&coid=78
05&lang=EN.
]

3.
Telecompaper.

(
24
.0
4
.2011)

Skype grows FY revenues 20%, reaches 663 mln users.
[
http://www.telecompaper.com/news/skype
-
grows
-
fy
-
re
venues
-
20
-
reaches
-
663
-
mln
-
users]

4.
Parkes, Peter.

(24.04.2010)
30
million people online on Skype.
[
http://blogs.skype.com/en/2011/0
3/30_million_people_online.html]

5.
Nagios Enterprises.

(05.05.2011)
Nagios
-

The Industry Standard In IT Infrastructure
Mon
itoring.
Nagios.

[http://www.nagios.org/]

6.
The Cacti Group.

(05.05.2011)
Cacti: The Complete RRDTool
-
based Graphing
Solution.
[http://www.cacti.net/]

7.
Object Management Group, Inc.

(05.05.2011)
Object Management Group
-

UML.
[http://www.uml.org/]

8.
Te
chMediaNetwork.

(02.04.2011)
2011 Best Employee Scheduling Software
Comparisons and Reviews.
[
http://employee
-
scheduling
-
sof
tware
-
review.toptenreviews.com/]

9.
Kappix.

(02.04.2011)
Employee Scheduling Software Products by Kappix.
[
htt
p://www.kappix.com/pro
ducts.htm]

10.
WhenToWork, Inc.

(24.04.2011)
Employee Scheduling
-

Online.
WhenToWork.
[
http://whentowork.
com/index.htm]

11.
WhenToWork, Inc.

(24.04.2011)
WhenToWork Features List.
[
http://
whentowork.com/featureslist.htm]

12.
Es
-
software.net.

(25.04.2011)
Products.
[
http://www.es
-
software.n
et/employee
-
scheduling/products]

13.
Es
-
software.net.

(25.04.2011)
ClockIt
-
Online
-

Buy online.
[
http://www.es
-
software.net/employee
-
schedulin
g/products/clockit
-
online/order]

38


14.
Petuhhov, Inga.

(30.03.2011)
Kasutajate nõ
uded, kasutusmallid, stsenaariumid.
[
http://www.cs.tlu.ee/~ing
a/SE_materjal/UMLUseCase_08.pdf]

15.
The PHP Group.

(05.05.2011)
PHP Licensing.
[
http://ee.ph
p.net/license/]

16.
The PHP Group.

(04.04.2011)
PHP: Preface
-

Manual.
[
http://e
e.php.net/manual/en/p
reface.php]

17.
The PHP Group.

(05.04.2011)
PHP: What is PHP?
-

M
anual.

[
http://ee.php.net/manual/en/intro
-
w
hatis.php]

18.
Zend Technologies Ltd.

(06.04.2011)
Overview
-

Zend Framework Manual.
[
http://framework.zend.com/manua
l/en/introduction.overview.html
]

19.
EllisLab, Inc.

(06.04.2011)
CodeIgniter at a Glance.
[
http://codeigniter.com/user_
guide/overview/at_a_glance.html]

20.

EllisLab, Inc.

(23.04.2011)
Auto
-
loading Resources.

[
http://codeigniter.com/use
r_guide/general/autoloader.html]

21.
Ecma
International.

(05.04.2011)
ECMAScript Language Specification ECMA
-

262.
[
http://www.ecma
-
international.org/publicat
ions/files/ECMA
-
ST/ECMA
-
262.pdf]

22.
Garrett, Jesse James.

(23.04.2011)
Ajax: A New Approach to Web Applications.
[
http://www
.adaptivepath.
com/ideas/e000385]

23.
The jQuery Project.

(25.04.2011)
About.
[
http://jquery.org/about]

24.
The jQuery Project.

(25.04.2011)
Main Page.
[
http://jquery.org/]

25.
Oracle Corporation.

(08.05.2011)
MySQL Editions.
[
http://www.mysql.
com/products/]

26.
Oracle
Corporation.

(08.05.2011)
MySQL Storage Engine Architecture, Part 1: An
Overview.
[
http://dev.mysql.com/tech
-
resources/arti
cles/storage
-
engine/part_1.html]

27.
Oracle Corporation.

(08.05.2011)
MySQL Community Edition.
[
http://ww
w.mysql.com/products/community/
]

28.
EllisLab, Inc.

(30.04.2011)
Auto
-
loading Resources.
[
http://codeigniter.com/use
r_guide/general/autoloader.html]

29.

EllisLab, Inc.

(01.05.2011)
HTML Table Class.

[
http://codeigniter.com/
user_guide/libraries/table.html]

30.

EllisLab, Inc.

The Database Class.
[
http://codeigniter.com
/user_guide/database/index.html
]

31.
EllisLab, Inc.

(01.05.2011)
URL Helper.
[
http://codeigniter.com/use
r_guide/helpers/url_helper.html]

32.
EllisLab, Inc.

(01.05.2011)
Date Helper.
[
http://codeigniter.com/user
_guide/helpers/date_helper.html]

39


33.
EllisLab, Inc.
(01.05.2011)

Automatic configbase url .
[
http://codeigniter.com
/wiki/Automatic_configbase_url/]

34.
EllisLab, Inc.

(01.05.2011)
Hooks
-

Extending the Framework Core.
[
http://cod
eigniter.co
m/user_guide/general/hooks.html]

35.
International Organization for Standardization.

(07.05.2011)
INTERNATIONAL
STANDARD ISO 8601.
[
http://d
otat.at/tmp/ISO_8601
-
2004_E.pdf]

36.
EllisLab, Inc.

(15.04.2011)
Calendaring Class
[
http://codeigniter.co
m/use
r_guide/libraries/calendar.html]

37.
EllisLab, Inc.

(08.05.2011)
Loader Class.
[
http://codeigniter.com/u
ser_guide/libraries/loader.html]



40


Lisad

Lisa 1


Olemasolevate rakenduste ekraanipildid


Joonis
6

DRoster
-
i
kasutajaliides

41



Joonis
7

WhenToWork

kasutajaliides
-

töövahetused


Joonis
8

WhenToWork
kasutajaliides


töövahetuse lisamine



42


Lisa 2



Infosüsteemi andmemudel
i olemite ja atribuutide
semantika

Tabel
2

Olemi
Employee

semantika

Atribuut

Tüüp

Semantika

idEmployee (
PK
)

Int

Unikaalne identifikaator

Name

Varchar(50)

Töötaja ees
-

ja perekonnanimi

UserName

Varchar(50)

Töötaja LDAP kasutajanimi

IsManager

Bool

Tõeväärtus kasutaja
rolli kohta

Added

Datetime

Kuupäev, millal töötaja
süsteemi loodi

Removed

Datetime

Kuupäev, millal töötaja
süsteemist eemaldati


Tabel
3

Olemi
Wish

semantika

Atribuut

Tüüp

Semantika

idWish (
PK
)

Int

Unikaalne identifikaator

NotAvailable

Bool

Tõeväärtus ebasobiva
töövahetuse kohta

IsWish

Bool

Tõeväärtus soovitud
töövahetuse kohta

IsVacation

Bool

Tõeväärtus puhkuse kohta

Start

Datetime

Soovi algusaeg

End

Datetime

Soovi lõppaeg

Added

Datetime

Soovi lisamise aeg

Modified

Datetime

Soovi muutmise aeg

Removed

Datetime

Soovi eemaldamise aeg

Employee_idEmployee (
FK
)

Int

Viide Employee tabeli
primaarvõtmele




43


Tabel
4

Olemi
Notes

semantika

Atribuut

Tüüp

Semantika

idNotes

Int

Unikaalne identifikaator

Notes

Varchar(800)

Kommentaar

Added

Datetime

Lisamiskuupäev

Modified

Datetime

Muutmiskuupäev

ValidUntil

Datetime

Kehtiv kuni

Employee_idEmployee

Int

Viide Employee tabeli
primaarvõtmele


Tabel
5

Olemi
Shift

semantika

Atribuut

Tüüp

Semantika

idShift

Int

Unikaalne identifikaator

Start

Datetime

Vahetuse algus

End

Datetime

Vahetuse lõpp

Employee_idEmployee

Int

Viide Employee tabeli
primaarvõtmele

Holiday_idHoliday

Int

Viide Holiday tabeli
primaarvõtmele


Tabel
6

Olemi
Holiday

semantika

Atribuut

Tüüp

Semantika

idHoliday

Int

Unikaalne identifikaator

Date

Date

Riigipüha kuupäev

Name

Varchar(50)

Riigipüha nimetus