ˇ ´ vysoke ´ uc ˇen´ı technicke ´ v Praze Cesk e ´ Fakulta elektrotechnicka
´ PRACE ´ DIPLOMOVA Syst´ em pro digit´ aln´ı pˇ red´ avku pr´ ace
Praha, 2014
Autor: Bc. Armen Hajrapetjan
ii
Podˇ ekov´ an´ı Dˇekuji pˇredevˇs´ım vedouc´ımu diplomov´e pr´ace za jeho podporu a rady, kter´e mi pomohly pˇri vypracov´an´ı t´eto pr´ace.
iv
Abstrakt ˇ sen´ı prezentovan´e v t´eto pr´aci popisuje n´ahradu souˇcasn´eho pap´ırov´ehoho syst´emu Reˇ ˇ a.s. elekpro zaznamen´avan´ı vykonan´e a pˇred´avan´e pr´ace v depu kolejov´ ych vozidel CD tronick´ ym informaˇcn´ım syst´emem. Vyvinut´ y syst´em umoˇzn ˇuje evidenci dat o vykonan´e pr´aci, doch´azce, vozidlech a zamˇestnanc´ıch. Mimo jin´e nab´ız´ı moˇznost vyhled´avat, filtroˇ sen´ı je uskuteˇcnˇeno formou distribuovan´eho syst´emu vat a vytv´aˇret tiskov´e sestavy. Reˇ typu klient-server. Serverovou ˇca´st tvoˇr´ı tˇri WCF sluˇzby a MS SQL datab´aze. Klientskou stranu pˇredstavuje WPF aplikace pro snadn´e ovl´ad´an´ı a spr´avu vˇsech evidenc´ı. Obsahem pr´ace jsou i testy, kter´e provˇeˇrily spr´avnou funkˇcnost cel´eho syst´emu. Diplomov´a pr´ace je rozdˇelen´a do tˇr´ı hlavn´ıch ˇca´st´ı. Prvn´ı ˇca´st obsahuje anal´ yzu ˇreˇsen´ı probl´emu, druh´a ˇc´ast se zab´ yv´a implementac´ı ˇreˇsen´ı a posledn´ı ˇca´st obsahuje v´ ysledky testov´an´ı.
v
Abstract This thesis deals with the design, implementation and testing of the digital handover system, which is considered as a replacement of the currently used paper-based system ˇ a.s. The system will be used for the logging of performed tasks, in the railway depot CD collecting the data about finished work, attendance of employees, and monitoring of vehicles. It will allow the user to search, filter and print the data. The solution has a distributed client-server architecture; the server consists of three WCF services and a MS SQL database and the client is designed as a Windows WPF application. The functionality of the system has been verified by a set of tests whose results are also part ot this thesis. The thesis is divided into three parts. In the first part, the problem is analysed and the conceptual model of the system is designed. The second part deals with the implementation of the system and finally, the last part describes the testing of the system.
vi
Obsah Seznam obr´ azk˚ u
xi
Seznam tabulek
xiii
´ 1 Uvod
1
2 Anal´ yza
3
2.1
Anal´ yza potˇreby
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.2
Pracovn´ı proces s pap´ırovou podobou pˇred´avky . . . . . . . . . . . . . .
4
2.3
Pracovn´ı proces s digit´aln´ı podobou pˇred´avky . . . . . . . . . . . . . . .
5
2.4
Popis poˇzadavku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.5
Uˇzivatelsk´e role (opr´avnˇen´ı) . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.5.1
Bez role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.5.2
Z´apis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.5.3
Mistr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.5.4
Administr´ator . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.6
Struktura syst´emu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.7
N´avrh ˇreˇsen´ı klienta . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.8
N´avrh ˇreˇsen´ı sluˇzeb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.9
UML diagramy aktivit . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.9.1
Diagram pˇrihl´aˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.9.2
Diagram smˇen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.9.3
Diagram tisku . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
2.9.4
Diagram pr´ace . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
2.9.5
Diagram vozidel, typu pr´ace, oddˇelen´ı a statusu . . . . . . . . . .
20
2.9.6
Diagram turnus˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
2.9.7
Diagram zamˇestnanc˚ u . . . . . . . . . . . . . . . . . . . . . . . .
24
vii
2.9.8
Diagram hled´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
2.9.9
Diagram doch´azky . . . . . . . . . . . . . . . . . . . . . . . . . .
28
2.9.10 Diagram zmˇeny hesla . . . . . . . . . . . . . . . . . . . . . . . . .
30
2.9.11 Diagram pr´ace s uˇzivatelsk´ ymi u ´ˇcty . . . . . . . . . . . . . . . . .
31
2.9.12 Diagram pˇred´avan´e pr´ace . . . . . . . . . . . . . . . . . . . . . .
33
3 Popis ˇ reˇ sen´ı
35
3.1
Pouˇzit´e n´astroje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
3.2
Bezpeˇcnost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
3.3
Sluˇzby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
3.3.1
Transakˇcn´ı zpracov´an´ı . . . . . . . . . . . . . . . . . . . . . . . .
37
3.3.2
Konfigurace sluˇzeb . . . . . . . . . . . . . . . . . . . . . . . . . .
37
3.3.3
Validace dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
3.3.4
Hostov´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
3.3.5
Bezpeˇcnostn´ı sluˇzba . . . . . . . . . . . . . . . . . . . . . . . . .
38
3.3.6
Vyhled´avac´ı sluˇzba . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.3.7
Datov´a sluˇzba . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
Klient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.4.1
Uˇzivatelsk´e rozhran´ı . . . . . . . . . . . . . . . . . . . . . . . . .
47
3.4.2
Konfigurace klienta . . . . . . . . . . . . . . . . . . . . . . . . . .
48
3.4.3
N´apovˇeda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
3.4.4
Validace vstupu . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
3.4.5
Instalace klienta . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
3.4.6
Odinstalace klienta . . . . . . . . . . . . . . . . . . . . . . . . . .
49
3.4.7
Verzov´an´ı klientsk´e aplikace . . . . . . . . . . . . . . . . . . . . .
49
Datov´ y model datab´aze . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
3.5.1
Atributy datov´eho modelu datab´aze . . . . . . . . . . . . . . . . .
51
3.5.2
Tabulka Attendances . . . . . . . . . . . . . . . . . . . . . . . . .
51
3.5.3
Tabulka Dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
3.5.4
Tabulka Detachments . . . . . . . . . . . . . . . . . . . . . . . . .
52
3.5.5
Tabulka Changeovers . . . . . . . . . . . . . . . . . . . . . . . . .
52
3.5.6
Tabulka Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
3.5.7
Tabulka Tours . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
3.5.8
Tabulka UserInRole . . . . . . . . . . . . . . . . . . . . . . . . . .
53
3.5.9
Tabulka Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
3.4
3.5
viii
3.6
3.5.10 Tabulka Vehicles . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
3.5.11 Tabulka WorkerInTour . . . . . . . . . . . . . . . . . . . . . . . .
55
3.5.12 Tabulka Workers . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
3.5.13 Tabulka WorkerStates . . . . . . . . . . . . . . . . . . . . . . . .
55
3.5.14 Tabulka Works . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
3.5.15 Tabulka WorkTypes . . . . . . . . . . . . . . . . . . . . . . . . . ˇ Skolen´ ı zamˇestnanc˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56 57
4 Testy
59
4.1
Testov´an´ı bˇehem v´ yvoje . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
4.2
Funkˇcn´ı test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
4.3
Testy sluˇzeb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
4.4
Testy uˇzivatelsk´eho rozhran´ı . . . . . . . . . . . . . . . . . . . . . . . . .
61
4.5
Pilotn´ı test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
5 Z´ avˇ er
63
Literatura
66
Sezn´ am pˇ r´ıloh
I
A Soupis poˇ zadavku
III
A.1 Uˇzivatelsk´e role (opr´avnˇen´ı) . . . . . . . . . . . . . . . . . . . . . . . . .
IV
A.1.1 Bez role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IV
A.1.2 Z´apis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
V
A.1.3 Mistr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VI
A.1.4 Administr´ator . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VII
B Origin´ al ankety a sezn´ am pˇ r´ıtomnost´ı na ˇ skolen´ı C Obsah pˇ riloˇ zen´ eho CD
IX XIII
ix
x
Seznam obr´ azk˚ u 2.1
V´ ysledek ankety . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.2
Pracovn´ı proces s pap´ırovou podobou pˇred´avky . . . . . . . . . . . . . .
4
2.3
Pracovn´ı proces s digit´aln´ı podobou pˇred´avky . . . . . . . . . . . . . . .
5
2.4
Struktura syst´emu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.5
Datov´ y model klientsk´e aplikace
. . . . . . . . . . . . . . . . . . . . . .
12
2.6
Datov´ y model sluˇzeb . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.7
Diagram pˇrihl´aˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.8
Diagram smˇen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.9
Diagram tisku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
2.10 Diagram pr´ace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.11 Diagram vozidel, typu pr´ace, oddˇelen´ı a statusu . . . . . . . . . . . . . .
21
2.12 Diagram turnus˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
2.13 Diagram zamˇestnanc˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
2.14 Diagram hled´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
2.15 Diagram doch´azky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
2.16 Diagram zmˇeny hesla . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
2.17 Diagram pr´ace s uˇzivatelsk´ ymi u ´ˇcty . . . . . . . . . . . . . . . . . . . . .
32
2.18 Diagram pˇred´avan´e pr´ace
. . . . . . . . . . . . . . . . . . . . . . . . . .
34
3.1
N´avrhov´ y vzor MVVM . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.2
Uˇzivatelsk´e rozhran´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
3.3
Datov´ y model datab´aze . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
4.1
V´ ysledky testu sluˇzeb s dobou jejich trv´an´ı . . . . . . . . . . . . . . . . .
60
4.2
V´ ysledky test˚ u uˇzivatelsk´eho rozhran´ı s dobou jejich trv´an´ı . . . . . . . .
61
xi
xii
Seznam tabulek 3.1
Attendances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
3.2
Dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
3.3
Detachments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
3.4
Changeovers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
3.5
Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
3.6
Tours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
3.7
UserInRole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
3.8
Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
3.9
Vehicles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
3.10 WorkerInTour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
3.11 Workers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
3.12 WorkerStates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
3.13 Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
3.14 WorkTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
xiii
xiv
Kapitola 1 ´ Uvod Ve spoleˇcnosti, kde jsem pracoval jako technik elektronick´ ych syst´em˚ u vlaku CityElefant 471, jsme psali veˇskerou vykonanou a pˇred´avanou pr´aci do seˇsitu. Tento syst´em veden´ı z´aznamu mˇel nˇekolik z´asadn´ıch omezen´ı. V prv´e ˇradˇe kaˇzd´ y zamˇestnanec mˇel sv˚ uj rukopis, kter´ y byl pro nˇekter´e kolegy tˇeˇzko ˇciteln´ y. Dalˇs´ım a velice v´ yrazn´ ym probl´emem bylo vyhled´av´an´ı z´aznamu. Pokud bylo poˇzadov´ano naj´ıt urˇcit´ y z´aznam a tento z´aznam byl starˇs´ıho data, pak to bylo skoro nemoˇzn´e. Cel´e depo kolejov´ ych vozidel a veˇsker´a oddˇelen´ı poˇz´ıvaly tento zp˚ usob pˇred´av´an´ı pr´ace, jelikoˇz v depu na konkr´etn´ı ˇradu vozidel existuje jeden mistr (nadˇr´ızen´ y), kter´ y koriguje a rozd´av´a pr´aci dle typu konkr´etn´ım oddˇelen´ım jako jsou z´ameˇcnic´ı, elektrik´aˇri, zkuˇsebna atd. Je pro nˇe nˇekdy obt´ıˇzn´e drˇzet si pˇrehled o tom, co se jiˇz vykonalo a co ne. Tento probl´em nast´av´a pˇrev´aˇznˇe pˇri stˇr´ıd´an´ı smˇen, kdy se mistˇri na pracoviˇsti mˇen´ı a kdy si vz´ajemnˇe nepˇredaj´ı potˇrebn´e informace o stavu jednotliv´ ych prac´ı. Po v´ ymˇenˇe mistra se vˇetˇsinou nov´ y mistr opakovanˇe dotazuje bud’ vedouc´ıch oddˇelen´ı nebo samotn´ ych zamˇestnanc˚ u na to, co je a co nen´ı hotov´e, coˇz nˇekteˇr´ı zamˇestnanci nesn´aˇs´ı dobˇre. Jeden vedouc´ı oddˇelen´ı m˚ uˇze m´ıt na starosti v´ıce oddˇelen´ı. Kaˇzd´e oddˇelen´ı m´a svoji d´ılnu a tyto d´ılny mohou b´ yt od sebe pomˇernˇe vzd´aleny. Z d˚ uvodu vzd´alenosti jednotliv´ ych d´ılen doch´az´ı pˇrev´aˇznˇe k telefonick´e komunikaci mezi d´ılnou, vedouc´ım oddˇelen´ı a mistrem. T´ematem m´e diplomov´e pr´ace se stala tvorba informaˇcn´ıho syst´emu, o kter´ y jsem byl poˇz´ad´an zamˇestnanci. Syst´em by mˇel nahradit nynˇejˇs´ı seˇsitovou verzi z´aznamu smˇen, pˇrin´est vˇetˇs´ı informovanost jak pro mistry tak i pro vedouc´ı oddˇelen´ı, jimˇz tento navrˇzen´ y syst´em umoˇzn´ı l´epe si udrˇzovat pˇrehled o tom, jak´e oddˇelen´ı co vykonalo, a odstranit zat´ıˇzen´ı zamˇestnanc˚ u nadbyteˇcn´ ymi telefonn´ımi hovory. Dalˇs´ı v´ yhodou syst´emu bude moˇznost vzd´alen´eho pˇr´ıstupu a rychl´eho vyhled´av´an´ı z´aznam˚ u, coˇz doposud nebylo moˇzn´e. 1
2
´ KAPITOLA 1. UVOD
Architektura syst´emu se bude skl´adat z tenk´eho klienta, kter´ y bude navrˇzen v technologii WPF. Tento klient bude implementov´an pomoc´ı n´avrhov´eho vzoru MVVM. Serverov´a ˇca´st se bude skl´adat ze sluˇzeb navrˇzen´ ych v technologii WCF, kter´e budou hostov´any na IIS 7. Data budou uloˇzena v datab´az´ı MSSQL. K dat˚ um se bude pˇristupovat pomoc´ı EF. Klienti se serverovou ˇca´st´ı budou komunikovat pˇres zabezpeˇcen´ y protokol https.
Kapitola 2 Anal´ yza 2.1
Anal´ yza potˇ reby
Pˇred zah´ajen´ım v´ yvoje tohoto syst´emu byla vytvoˇrena anketa, jej´ımˇz u ´ˇcelem bylo zjistit z´ajem zamˇestnanc˚ u o tento syst´em. Celkovˇe se z´ uˇcastnilo ankety 12 zamˇestnanc˚ u, kteˇr´ı tento syst´em budou uˇz´ıvat. Kaˇzd´ y zamˇestnanec se mohl svobodnˇe rozhodnout, zdali bude tento syst´em pro nˇeho pˇr´ınosem ˇci nikoliv. V anketˇe byly uvedeny veˇsker´e v´ yhody, kter´e tento syst´em pˇrinese. Anketa je pˇriloˇzena v pˇr´ılohov´e ˇca´sti t´eto diplomov´e pr´ace (viz pˇr´ıloha B). V´ ysledek proveden´e ankety je zobrazen na obr´azku 2.1. Vyhodnocen´ım ankety bylo zjiˇstˇeno, ˇze vˇsichni dotazovan´ı zamˇestnanci projevili z´ajem o tento syst´em. Mezi tˇemito zamˇestnanci byli tak´e starˇs´ı osoby, kteˇr´ı se obecnˇe h˚ uˇre pˇrizp˚ usobuj´ı technick´emu pokroku. Pˇrekvapiv´ ym zjiˇstˇen´ım z proveden´e ankety bylo, ˇze i starˇs´ı osoby souhlasily, aby tento syst´em byl nasazen do re´aln´eho provozu.
Obr´azek 2.1: V´ ysledek ankety
3
´ KAPITOLA 2. ANALYZA
4
2.2
Pracovn´ı proces s pap´ırovou podobou pˇ red´ avky
Pracovn´ı proces zaˇc´ın´a pˇr´ıchodem zamˇestnance do pr´ace. Zamˇestnanec zap´ıˇse do pˇred´avac´ı knihy svoj´ı pˇr´ıtomnost a turnus, do kter´eho je zaˇrazen. Turnusem se mysl´ı ˇcas poˇca´tku a konce pracovn´ı doby zamˇestnance. Zamˇestnanec zjiˇst’uje z pˇred´avac´ı knihy vykonanou a pˇred´avanou pr´aci pˇredeˇsl´e skupiny (smˇeny). Pr´aci zamˇestnanci pˇridˇeluje jeho nadˇr´ızen´ y (mistr) nebo je pr´ace urˇcen´a dle pˇred´avky v pˇred´avac´ı knize. Zamˇestnanec zap´ıˇse do pˇred´avac´ı knihy j´ım vykonanou pr´aci a ozn´am´ı dokonˇcen´ı pr´ace sv´emu nadˇr´ızen´emu. Bˇehem smˇeny se nadˇr´ızen´ y vˇetˇsinou opakovanˇe telefonicky informuje o stavu veˇsker´ ych prac´ı. Pr´ace, kter´e se nestihnou vykonat bˇehem smˇeny, jsou zapsan´a do pˇred´avac´ı knihy jako pˇred´avka pro dalˇs´ı smˇenu. Diagram pracovn´ıho procesu je vidˇet na obr´azku 2.2, kde ˇc´ısla urˇcuj´ı poˇrad´ı pr˚ ubˇehu.
Obr´ azek 2.2: Pracovn´ı proces s pap´ırovou podobou pˇred´avky
´ ´I PODOBOU PRED ˇ AVKY ´ 2.3. PRACOVN´I PROCES S DIGITALN
2.3
5
Pracovn´ı proces s digit´ aln´ı podobou pˇ red´ avky
Tento proces pˇrin´aˇs´ı zmˇenu v komunikaci s nadˇr´ızen´ ym. Zat´ım co ve star´e verzi bylo potˇreba vˇse hl´asit nadˇr´ızen´emu, nyn´ı j´ıˇz mistr muˇze s´am nahl´ıˇzet do pˇred´avky ze sv´e kancel´aˇre bez potˇreby opˇetovn´eho obvol´av´an´ı podˇr´ızen´ ych a zjiˇst’ov´an´ı proveden´ ych prac´ı. Tak´e muˇze s´am zjistit vykonanou nebo pˇredanou pr´aci pˇredeˇsl´e smˇeny. Tak´e muˇze zjist´ı mnoho dalˇs´ıch uˇziteˇcn´ ych informac´ı. Nasazen´ı digit´aln´ı pˇred´avky pˇrinese zefektivnˇen´ı pracovn´ıho procesu. Diagram pracovn´ıho procesu je vidˇet na obr´azku n´ıˇze 2.3, kde ˇc´ısla urˇcuj´ı poˇrad´ı pr˚ ubˇehu.
Obr´ azek 2.3: Pracovn´ı proces s digit´aln´ı podobou pˇred´avky
´ KAPITOLA 2. ANALYZA
6
2.4
Popis poˇ zadavku
Poˇzadavky jsem konzultoval se zamˇestnanci, kteˇr´ı by tento syst´em mˇeli pouˇz´ıvat. Kaˇzd´ y zamˇestnanec mˇel n´apady, jak by se aplikace mˇela ovl´adat, jak´e funkce by mˇela umoˇzn ˇovat a jak by se mˇela chovat. Jedn´ım z hlavn´ıch poˇzadavk˚ u byla tvorba tenk´eho klienta v podobˇe klasick´e aplikace do poˇc´ıtaˇce, kter´a pro zamˇestnance bude pohodlnˇejˇs´ı k pouˇz´ıv´an´ı. Do budoucna se pˇredpokl´ad´a rozˇs´ıˇren´ı t´eto pr´ace o webovou verzi klienta, kter´a nen´ı zahrnut´a v t´eto diplomov´e pr´aci. Poˇzadavky na syst´em jsou seps´any n´ıˇze. • Syst´em mus´ı b´ yt lehce ovladateln´ y, jelikoˇz tento software budou pouˇz´ıvat i starˇs´ı generace, pro kter´e je pr´ace s poˇc´ıtaˇcem mnohem obt´ıˇznˇejˇs´ı. Z tohoto d˚ uvodu by mˇel syst´em umoˇzn ˇovat v´ ybˇer z´aznam˚ u ze statisticky nejbˇeˇznˇejˇs´ıch z´avad a oprav, kter´e se budou generovat pˇri kaˇzd´em spuˇstˇen´ı klienta. • Syst´em mus´ı umoˇzn ˇovat vyhled´av´an´ı z´aznamu s moˇznost´ı zobrazen´ı detailu konkr´etn´ıho z´aznamu, ve kter´em budou zobrazeny pˇrehlednˇe informace o vozidlu, smˇenˇe, typu opravy, z´avadˇe, zp˚ usobu opravy a doch´azce zamˇestnanc˚ u v dan´e smˇenˇe dle d´ale uveden´ ych krit´eri´ı. – Typu z´avady. – Vozidla. – Textov´eho v´ yrazu obsaˇzen´eho v popisu z´avady. – Vymezen´em ˇcasov´em intervalu (od, do). – Pokud m´a uˇzivatel dostateˇcn´a opr´avnˇen´ı, pak m˚ uˇze vyhled´avat z´aznamy jin´ ych oddˇelen´ı. V opaˇcn´em pˇr´ıpadˇe se vyhled´avaj´ı z´aznamy jen v oddˇelen´ı, ve kter´em je veden jeho u ´ˇcet. • Syst´em mus´ı umoˇzn ˇovat tisk a n´ahled tisku smˇen pro z´alohu z´aznam˚ u v pap´ırov´e podobˇe. • Po spuˇstˇen´ı klienta se m´a vˇzdy vybrat posledn´ı zaloˇzen´a smˇena. • Navrhovan´ y syst´em mus´ı umoˇzn ˇovat ukl´adat informace o jednotliv´ ych vozidlech, zaznamen´avat doch´azku zamˇestnanc˚ u s moˇznost´ı pˇrid´an´ı doplˇ nuj´ıc´ıch informac´ı, pˇrehlednˇe zobrazovat z´aznamy o zamˇestnanc´ıch a jej´ıch turnusech, zakl´adat, editovat a mazat informace o oddˇelen´ıch, turnusech, typech oprav a statusech zamˇestnanc˚ u pro doch´azku.
ˇ ´ ROLE (OPRAVN ´ ˇ ´I) 2.5. UZIVATELSK E EN
7
• Tento syst´em mus´ı b´ yt zabezpeˇcen v˚ uˇci neopr´avnˇen´emu pˇr´ıstupu pomoc´ı uˇzivatelsk´ ych u ´ˇct˚ u a tak´e mus´ı b´ yt zabezpeˇcena komunikace se serverem. • Uˇzivatelsk´e u ´ˇcty by mˇely umoˇzn ˇovat tuto funkcionalitu: – Kaˇzd´ y uˇzivatelsk´ yu ´ˇcet by mˇelo b´ yt moˇzn´e nav´azat na konkr´etn´ıho zamˇestnance. – Kaˇzd´ yu ´ˇcet by mˇel b´ yt zaˇrazen do konkr´etn´ıho oddˇelen´ı. ´ cet zaˇrazen do konkr´etn´ıho oddˇelen´ı by mˇel umoˇzn – Uˇ ˇovat z´apis a ˇcten´ı z´aznamu jen z oddˇelen´ı, do kter´eho je zaˇrazen. – Kaˇzd´ y uˇzivatel by mˇel m´ıt moˇznost si zmˇenit svoje heslo a vidˇet sv´a opr´avnˇen´ı. – Kaˇzd´emu u ´ˇctu by mˇelo b´ yt moˇzn´e nastavit opr´avnˇen´ı pro z´apis do syst´emu, pro administrativu a pro zobrazen´ı z´aznam˚ u z jin´ ych oddˇelen´ı. – Administr´atorsk´e u ´ˇcty by mˇely m´ıt moˇznost zakl´adat, editovat a mazat uˇzivatelsk´e u ´ˇcty s moˇznost´ı resetovat hesla jednotliv´ ych uˇzivatelsk´ ych u ´ˇct˚ u. • Mˇelo by b´ yt moˇzn´e zaznamen´avat jak z´avadu tak i zp˚ usob jej´ı opravy a typ opravy s moˇznost´ı v´ ybˇeru ˇcast´ ych z´avad a oprav, kter´e se generuj´ı pˇri kaˇzd´em spuˇstˇen´ı klienta. • Mˇelo by b´ yt moˇzn´e zaznamen´avat pˇred´avanou pr´aci s moˇznost´ı rychl´eho pˇresunu do vykonan´ ych prac´ı vybran´e smˇeny.
2.5 2.5.1
Uˇ zivatelsk´ e role (opr´ avnˇ en´ı) Bez role
• Registrovan´ y uˇzivatel bez role bude m´ıt tyto moˇznosti: – Pˇrihl´asit se do syst´emu. – Prohl´ıˇzet si smˇeny oddˇelen´ı, do kter´eho s´am spad´a, s moˇznost´ı zobrazen´ı z´aznamu o proveden´ ych prac´ı, doch´azce i pˇredan´ ych prac´ı. – Tisknout sestavy smˇen. – Prohl´ıˇzet si seznam vozidel. – Prohl´ıˇzet si seznam typ˚ u prac´ı.
´ KAPITOLA 2. ANALYZA
8 – Prohl´ıˇzet si seznam zamˇestnanc˚ u. – Prohl´ıˇzet si seznam turnus˚ u. – Prohl´ıˇzet si seznam status˚ u. – Hledat z´aznamy pr´ace dle tˇechto parametr˚ u: ∗ Typu z´avady. ∗ Vozidla.
∗ Textov´eho v´ yrazu obsaˇzen´eho v popisu z´avady. ∗ Vymezen´em ˇcasov´em intervalu (od, do). – Zobrazen´ı detailu vyhledan´eho z´aznamu. – Zobrazen´ı informace o vlastn´ım u ´ˇctu. – Zmˇena hesla vlastn´ıho u ´ˇctu.
2.5.2
Z´ apis
• Registrovan´ y uˇzivatel s rol´ı Z´apis“ bude m´ıt tyto moˇznosti: ” – Pˇrihl´asit se do syst´emu. – Prohl´ıˇzet, editovat a mazat smˇeny v oddˇelen´ı, do kter´eho s´am spad´a, s moˇznost´ı zobrazen´ı, editace a maz´an´ı z´aznamu pr´ace, doch´azky i pˇred´avan´ ych prac´ı. – Pˇrevod pˇred´avan´eho z´aznamu do vykonan´e pr´ace. – Tisknout sestavy smˇen. – Prohl´ıˇzet, editovat a mazat z´aznamy vozidel. – Prohl´ıˇzet, editovat a mazat z´aznamy typu pr´ace. – Prohl´ıˇzet, editovat a mazat z´aznamy zamˇestnanc˚ u. – Prohl´ıˇzet, editovat a mazat z´aznamy turnus˚ u. – Prohl´ıˇzet, editovat a mazat z´aznamy status˚ u. – Hledat z´aznamy pr´ace dle tˇechto parametr˚ u: ∗ Typu z´avady. ∗ Vozidla. ∗ Textov´eho v´ yrazu obsaˇzen´eho v popisu z´avady.
ˇ ´ ROLE (OPRAVN ´ ˇ ´I) 2.5. UZIVATELSK E EN
9
∗ Vymezen´em ˇcasov´em intervalu (od, do). – Zobrazen´ı detailu vyhledan´eho z´aznamu. – Zobrazen´ı informace o vlastn´ım u ´ˇctu. – Zmˇena hesla vlastn´ıho u ´ˇctu.
2.5.3
Mistr
• Registrovan´ y uˇzivatel s rol´ı Mistr“ bude m´ıt tyto moˇznosti: ” – Pˇrihl´asit se do syst´emu. – Prohl´ıˇzet si smˇeny oddˇelen´ı, do kter´eho s´am spad´a, s moˇznost´ı zobrazen´ı z´aznamu pr´ace, doch´azky i pˇred´avan´e pr´ace. – Tisknout sestavy smˇen. – Prohl´ıˇzet si seznam vozidel. – Prohl´ıˇzet si seznam typu pr´ace. – Prohl´ıˇzet si seznam zamˇestnanc˚ u. – Prohl´ıˇzet si seznam turnus˚ u. – Prohl´ıˇzet si seznam status˚ u. – Hledat z´aznamy pr´ace dle tˇechto parametr˚ u: ∗ Typu z´avady. ∗ Vozidla. ∗ Oddˇelen´ı. ∗ Textov´eho v´ yrazu obsaˇzen´eho v popisu z´avady. ∗ Vymezen´em ˇcasov´em intervalu (od, do). – Zobrazen´ı detailu vyhledan´eho z´aznamu. – Zobrazen´ı informace o vlastn´ım u ´ˇctu. – Zmˇena hesla vlastn´ıho u ´ˇctu.
2.5.4
Administr´ ator
• Registrovan´ y uˇzivatel s rol´ı Administr´ator“ bude m´ıt tyto moˇznosti: ”
´ KAPITOLA 2. ANALYZA
10 – Pˇrihl´asit se do syst´emu.
– Prohl´ıˇzet si smˇeny oddˇelen´ı, do kter´eho s´am spad´a, s moˇznost´ı zobrazen´ı z´aznamu pr´ace, doch´azky i pˇred´avan´e pr´ace. – Tisknout sestavy smˇen. – Prohl´ıˇzet, editovat a mazat z´aznamy oddˇelen´ı. – Prohl´ıˇzet si seznam vozidel. – Prohl´ıˇzet si seznam typu pr´ace. – Prohl´ıˇzet si seznam zamˇestnanc˚ u. – Prohl´ıˇzet si seznam turnus˚ u. – Prohl´ıˇzet si seznam status˚ u. – Hledat z´aznamy pr´ace dle tˇechto parametr˚ u: ∗ Typu z´avady. ∗ Vozidla. ∗ Textov´eho v´ yrazu obsaˇzen´eho v popisu z´avady. ∗ Vymezen´em ˇcasov´em intervalu (od, do). – Zobrazen´ı detailu vyhledan´eho z´aznamu. – Zobrazen´ı informace o vlastn´ım u ´ˇctu. – Zmˇena hesla vlastn´ıho u ´ˇctu. – Prohl´ıˇzet, zakl´adat, editovat a mazat uˇzivatelsk´e u ´ˇcty s moˇznost´ı resetovat hesla jednotliv´ ych uˇzivatelsk´ ych u ´ˇct˚ u.
´ 2.6. STRUKTURA SYSTEMU
2.6
11
Struktura syst´ emu
Strukturu syst´emu jsem n´avrh tak, aby byla moˇznost pozdˇejˇs´ıho rozˇs´ıˇren´ı na jin´e druhy klient˚ u. Syst´em se skl´ad´a z datab´aze MSSQL
1
, kter´a je v express verzi zdarma
i pro komerˇcn´ı uˇzit´ı, do kter´e se ukl´adaj´ı veˇsker´e informace. K datab´azi pˇristupuj´ı tˇri WCF
2
sluˇzby, kter´e jsou hostovan´e na IIS 7
3
. Ke sluˇzb´am se pˇristupuje pˇres https
protokol pomoc´ı tenk´ ych klient˚ u. Strukturu syst´emu je moˇzn´e vidˇet na obr´azku 2.4.
Obr´ azek 2.4: Struktura syst´emu
1 2
MSSQL (Microsoft SQL Server) je relaˇcn´ı datab´azov´ y server vyvinut´ y spoleˇcnost´ı Microsoft. WCF (Windows Communication Foundation) je technologie vyvinuta spoleˇcnost´ı Microsoft pro
tvorbu servisnˇe orientovan´ ych aplikac´ı. 3 IIS 7 (informaˇcn´ı internetov´ a sluˇzba) je to softwarov´ y webov´ y server vyvinut´ y spoleˇcnost´ı Microsoft.
´ KAPITOLA 2. ANALYZA
12
2.7
N´ avrh ˇ reˇ sen´ı klienta
Klientsk´a aplikace bude ˇreˇsena pomoc´ı n´avrhov´eho vzoru MVVM“, jelikoˇz se jedna o ” n´avrhov´ y vzor, kter´ y zpˇrehledˇ nuje napsan´ y k´od, usnadˇ nuje jeho rozˇs´ıˇren´ı a tak´e umoˇzn ˇuje jednoduchou testovatelnost. Pro lepˇs´ı pˇrehlednost datov´eho modelu jsem se zamˇeˇril na obecnˇejˇs´ı popis, a proto zde nejsou zobrazeny jednotliv´e tˇr´ıdy ViewModely“, Views“ ” ” a Modely“. Vˇsechny tyto tˇr´ıdy jsou zn´azornˇen´ y jen jedn´ım ViewModelem“, View“ a ” ” ” Modelem“. Cely datov´ y model klientsk´e aplikace je moˇzn´e vidˇet na obr´azku 2.5. ”
Obr´ azek 2.5: Datov´ y model klientsk´e aplikace
Na obr´azku 2.5 je vidˇet, ˇze kaˇzd´ y ViewModel“ je nainjektov´an do View“ pˇri vy” ” tvoˇren´ı instance tˇr´ıdy View“. Pˇri tom je automaticky do ViewModelu“ nainjektov´ana ” ” tˇr´ıda Model“, kter´a reprezentuje data. Pro reagov´an´ı na uˇzivatelsk´ y vstup se ve View” ” Modelu“ pouˇz´ıv´a tˇr´ıda Command“, kter´a implementuje rozhran´ı ICommand“. Kaˇzd´ y ” ” ViewModel“ tak´e dˇed´ı ze tˇr´ıdy BaseViewModel“, kter´a implementuje rozhran´ı INo” ” ” tifyPropertyChanged“ a IDataErrorInfo“. Rozhran´ı INotifyPropertyChanged“ slouˇz´ı ” ” pro aktualizac´ı View“, pokud se zmˇen´ı nˇekter´a vlastnost ve ViewModelu“. Rozhran´ı ” ” IDataErrorInfo“ slouˇz´ı pro zobrazen´ı chybov´eho stavu ve View“, pokud uˇzivatel zad´a ” ” do vstupu nevalidn´ı data. Validnost dat se kontroluj´ı tˇr´ıdou ViewModelValidator“. Pro ” navigac´ı v aplikac´ı slouˇz´ı tˇr´ıda Navigator“, kter´a implementuje rozhran´ı INavigator“. ” ” Pro zobrazen´ı chybov´ ych stav˚ u aplikace slouˇz´ı tˇr´ıda ErrorProvider“. ”
´ ˇ SEN ˇ ´I SLUZEB ˇ 2.8. NAVRH RE
2.8
13
N´ avrh ˇ reˇ sen´ı sluˇ zeb
Sluˇzby budou navrˇzen´ y v technologii WCF“, kde kaˇzd´a sluˇzba bude reprezentov´ana ” tˇr´ıdou, kter´a implementuje sluˇzbu a rozhran´ı, kter´e se zpˇr´ıstupˇ nuje pˇres endpoint. Na obr´azku 2.6 je vidˇet datov´a struktura vˇsech sluˇzeb.
Obr´ azek 2.6: Datov´ y model sluˇzeb
Pro zpracov´an´ı v´ yjimek pouˇz´ıvaj´ı vˇsechny sluˇzby tˇr´ıdu ExceptionProvider“, kter´a ” vytv´aˇr´ı tˇr´ıdu WcfException“, kter´a bude odes´ıl´ana jako FultContrakt“ klientovi. Error” ” ” Status“ je v´ yˇcet chyb, kter´e mohou nastat na stranˇe sluˇzeb. Sluˇzby DataService“ a Secu” ” rityService“ pouˇz´ıvaj´ı tˇr´ıdy ObjectValidator“, Repository“, UnitOfWork“ a Session” ” ” ” Factory“. Kaˇzd´a z tˇechto tˇr´ıd je definov´ana sv´ ym rozhran´ım. Tˇr´ıda ObjectValidator“ ” slouˇz´ı pro validaci objektu, kter´ y se pˇred´av´a jako parametr metod´am sluˇzby. Tˇr´ıda Re” pository“ umoˇzn ˇuje prov´adˇet z´akladn´ı CRUD“ operace nad entitami za pomoc´ı tˇr´ıdy ” UnitOfWork“, kter´a se star´a o transakˇcn´ı zpracov´an´ı. Tˇr´ıda SessionFactory“ slouˇz´ı pro ” ”
14
´ KAPITOLA 2. ANALYZA
vytvoˇren´ı singletonu tˇr´ıdy UnitOfWork“. PasswordGenerator“ je tˇr´ıda umoˇznuj´ıc´ı ge” ” nerovat n´ahodn´a bezpeˇcn´a hesla a tuto tˇr´ıdu pouˇz´ıv´a jen SecurityService“, kter´a d´ıky ” n´ı generuje hesla nov´ ym uˇzivatel˚ um, pˇr´ıpadnˇe je pouˇzita pro resetov´an´ı hesel st´avaj´ıc´ım uˇzivatel˚ um. Sluˇzba FullTextService“ pouˇz´ıv´a tˇr´ıdu Parameters“, ve kter´e jsou defino” ” van´e veˇsker´e parametry, podle kter´ ych je moˇzn´e vyhled´avat z´aznamy.
2.9. UML DIAGRAMY AKTIVIT
2.9 2.9.1
15
UML diagramy aktivit Diagram pˇ rihl´ aˇ sen´ı
Proces pˇrihl´aˇsen´ı je zah´ajen t´ım, ˇze se spust´ı klientsk´a aplikace. Po spuˇstˇen´ı se zobraz´ı dialogov´e okno pro zad´an´ı uˇzivatelsk´eho Jm´ena“ a Hesla“. Po zad´an´ı tˇechto dvou ” ” povinn´ ych u ´daj˚ u a po stisknut´ı tlaˇc´ıtka Pˇrihl´asit“ se zaˇcne prov´adˇet autentizace. Pokud ” autentizace probˇehne u ´spˇeˇsnˇe, spust´ı se program s uˇzivatelsk´ ym prostˇred´ım, na kter´e m´a uˇzivatelsk´ y u ´ˇcet pr´ava. V opaˇcn´em pˇr´ıpadˇe se zobraz´ı zpr´ava o ne´ uspˇeˇsn´e autentizaci. Pro veˇsker´e dalˇs´ı procesy se pˇredpokl´ad´a, ˇze je uˇzivatel u ´spˇeˇsnˇe pˇrihl´aˇsen.
Obr´ azek 2.7: Diagram pˇrihl´aˇsen´ı
´ KAPITOLA 2. ANALYZA
16
2.9.2
Diagram smˇ en
Proces zakl´ad´an´ı smˇen se zahajuje stisknut´ım tlaˇc´ıtka
Zaloˇzit smˇenu“, na ” kterou se m˚ uˇze kliknout bud’ z liˇsty na ikonku
smˇeny
1
, a nebo pˇres nab´ıdku
N´astroje“ v hlavn´ım menu. Po kliknut´ı se ” otevˇre dialogov´e okno pro vytv´aˇren´ı smˇen, kde je tˇreba vyplnit Datum“ a vybrat ” Denn´ı“ nebo Noˇcn´ı“ smˇenu. Jako nepo” ” vinn´ y u ´daj je moˇzn´e zadat Dodateˇcnou ” informaci“. Po stisku na tlaˇc´ıtko Zaloˇzit“ ” se smˇena objev´ı v lev´em seznamu smˇen jako vybran´a poloˇzka. Proces pro maz´an´ı zaˇc´ın´a v´ ybˇerem smˇeny, kterou chceme smazat. Po vybr´an´ı a kliknut´ım na tlaˇc´ıtko Smazat smˇenu“, kterou lze naj´ıt na hlavn´ı ” liˇstˇe v podobˇe ikony smazat smˇenu 2 a nebo pˇres nab´ıdku N´astroje“ v hlavn´ım ” menu, se zobraz´ı dialogov´e okno, kter´e je potˇreba potvrdit pro dokonˇcen´ı smaz´an´ı smˇeny.
Obr´azek 2.8: Diagram smˇen
1
ikona zaloˇzen´ı smˇeny.
2
ikona odebran´ı smˇeny.
2.9. UML DIAGRAMY AKTIVIT
2.9.3
17
Diagram tisku
Proces tisku se zah´aj´ı v´ ybˇerem smˇeny. Pot´e je moˇzn´e stisknout bud’ tlaˇc´ıtko N´ahled“ ” nebo Tisk“, kter´a se nach´azej´ı v hlavn´ı liˇstˇe v podob´ach ikon tisku 1 , n´ahledu 2 a ” nebo pˇres nab´ıdku Soubor“ v hlavn´ım menu. Po stisknut´ı tlaˇc´ıtka N´ahled“ se otevˇre ” ” dialogov´e okno s n´ahledem dokumentu, ve kter´em se d´a stisknout tlaˇc´ıtko Tisk“. Stisk” nut´ım tlaˇc´ıtka Tisk“ se rovnou nab´ıdne tis vybran´e smˇeny, aniˇz bychom jej pˇred tiskem ” vidˇeli.
Obr´azek 2.9: Diagram tisku
1
ikona tisku.
2
ikona n´ ahledu.
´ KAPITOLA 2. ANALYZA
18
2.9.4
Diagram pr´ ace
Proces zakl´ad´an´ı pr´ace zaˇc´ın´a v´ ybˇerem smˇeny, do kter´e chceme pr´aci pˇridat. Tak´e je tˇreba vybrat z´aloˇzku Pr´ace“ v prav´e ˇc´asti obrazovky. Nyn´ı uˇz staˇc´ı stisknout tlaˇc´ıtko ” Nov´ y z´aznam“, kter´e se nach´az´ı v hlavn´ı liˇstˇe vyobrazen´e ikonou nov´eho z´aznamu 1 nebo ” pˇres nab´ıdku N´astroje“ v hlavn´ım menu. Po otevˇren´ı dialogov´eho okna pro zakl´ad´an´ı ” vykonan´e pr´ace je tˇreba vyplnit povinn´e udaje, kter´e jsou oznaˇceny ˇcerven´ ym r´ameˇckem. Konkr´etnˇe se jedn´a o Vozidlo“, Typ opravy“ a Popis z´avady“, kde je moˇzn´e bud’ ” ” ” ˇ e z´avady“ nebo napsat vlastn´ı. Jako nepovinn´ vybrat popis Cast´ yu ´daj je popis Zp˚ usob ” ” ˇ e zp˚ opravy“, kter´ y t´eˇz lze vybrat bud’ z Cast´ usoby“ opravy nebo sepsat vlastn´ı v poli ” Zp˚ usob opravy“. Po vyplnˇen´ı vˇsech potˇrebn´ ych u ´daj˚ u a stisknut´ı tlaˇc´ıtka Zaloˇzit“ se ” ” z´aznam objev´ı na prav´e stranˇe okna v z´aloˇzce Pr´ace“. Proces maz´an´ı vykonan´e pr´ace ” spoˇc´ıv´a ve v´ ybˇeru konkr´etn´ıho z´aznamu v z´aloˇzce Pr´ace“ a stisknut´ı tlaˇc´ıtka Smazat ” ” z´aznam“, kter´e je moˇzn´e nal´ezt bud’ v hlavni liˇstˇe v podobˇe ikony smazat z´aznam 2 nebo pˇres nab´ıdku N´astroje“ v hlavn´ım menu. ”
1
ikona zaloˇzen´ı z´ aznamu.
2
ikona odebran´ı z´ aznamu.
2.9. UML DIAGRAMY AKTIVIT
Obr´azek 2.10: Diagram pr´ace
19
´ KAPITOLA 2. ANALYZA
20
2.9.5
Diagram vozidel, typu pr´ ace, oddˇ elen´ı a statusu
Proces vozidel, typu pr´ace, oddˇelen´ı a statusu je stejn´ y. Z´aleˇz´ı jen na tom, kter´e dialogov´e okno otevˇreme. Veˇsker´a okna jsou bud’ na hlavn´ı liˇstˇe aplikace oznaˇcen´a ikonami vozidla
1
, typu pr´ace
2
, oddˇelen´ı
3
, statusu
4
, nebo v nab´ıdce Okna“ v ” hlavn´ım menu. Po zvolen´ı konkr´etn´ıho procesu se otevˇre dialogov´e okno, do kter´eho je pˇri zakl´ad´an´ı z´aznamu potˇreba vyplnit povinn´ yu ´daj, jenˇz je or´amovan´ y ˇcervenou barvou. Tak´e je moˇzn´e doplnit nepovinn´ yu ´daj v podobˇe dodateˇcn´e informace do pole Do” dateˇcn´a informace“. Po vyplnˇen´ı veˇsker´ ych u ´daj˚ u a stiskem tlaˇc´ıtka Uloˇzit“ se z´aznam ” objev´ı na prav´e stranˇe seznamu jako vybran´a poloˇzka. Pokud je nˇejak´a poloˇzka vybran´a a chceme zaloˇzit novou, je tˇreba stisknout tlaˇc´ıtko Nov´ y“. Smazat z´aznam je moˇzn´e ” v´ ybˇerem z´aznamu z prav´eho seznamu a stiskem tlaˇc´ıtka Smazat“. Proces editace zaˇc´ın´a ” v´ ybˇerem z´aznamu, kter´ y chceme upravit. Po vybr´an´ı z´aznamu uprav´ıme pole Dodateˇcn´a ” informace“ a stisknut´ım tlaˇc´ıtka Uloˇzit“ proveden´e zmˇeny uloˇz´ıme. ”
1
ikona vozidel.
2
ikona typu pr´ ace.
3
ikona oddˇelen´ı.
4
ikona statusu.
2.9. UML DIAGRAMY AKTIVIT
Obr´ azek 2.11: Diagram vozidel, typu pr´ace, oddˇelen´ı a statusu
21
´ KAPITOLA 2. ANALYZA
22
2.9.6
Diagram turnus˚ u
Proces turnus˚ u zaˇc´ın´a stiskem tlaˇc´ıtka Turnusy“, kter´e se nach´az´ı na hlavn´ı listˇe v ” podobˇe ikony turnus˚ u 1 a nebo v nab´ıdce Okna“ v hlavn´ım menu, kter´e otevˇre dialogov´e ” okno. Proces zakl´ad´an´ı turnus˚ u zaˇc´ın´a vyplnˇen´ım povinn´ ych pol´ı Poˇc´atek pr´ace“ a Ko” ” nec pr´ace“, jeˇz jsou or´amovan´e ˇcervenou barvou. Je moˇzn´e tak´e doplnit dodateˇcnou informaci o turnusu do pole Dodateˇcn´a informace“. Stisknut´ım tlaˇc´ıtka Uloˇzit“ se z´aznam ” ” uloˇz´ı a souˇcasnˇe se objev´ı v seznamu na prav´e stranˇe dialogov´eho okna. Tak´e se nastav´ı jako aktu´alnˇe vybran´a poloˇzka. Pokud je jiˇz vybran´ y nˇejak´ y turnus a chceme zakl´adat nov´ y, je tˇreba stisknout tlaˇc´ıtko Nov´ y“. V pˇr´ıpadˇe editace je tˇreba vybrat z prav´eho se” znamu z´aznamu turnus, kter´ y chceme editovat, a po u ´pravˇe pole Dodateˇcn´a informace“ ” a stisknut´ı tlaˇc´ıtka Uloˇzit“ se upraven´ y z´aznam uloˇz´ı. V pˇr´ıpadˇe smaz´an´ı staˇc´ı vybrat ” z´aznam, kter´ y chceme smazat, staˇc´ı stisknout tlaˇc´ıtko Smazat“. ”
1
ikona turnus˚ u.
2.9. UML DIAGRAMY AKTIVIT
Obr´ azek 2.12: Diagram turnus˚ u
23
´ KAPITOLA 2. ANALYZA
24
2.9.7
Diagram zamˇ estnanc˚ u
Proces zamˇestnanc˚ u zaˇc´ın´a stisknut´ım tlaˇc´ıtka Zamˇestnanci“, kter´e se nach´az´ı v ” hlavn´ı liˇstˇe aplikace reprezentovan´e ikonou zamˇestnanc˚ u 1 , nebo v nab´ıdce Okna“ ” hlavn´ıho menu, kter´e otevˇre dialogov´e okno. Proces zakl´ad´an´ı zamˇestnance zaˇc´ın´a vyplnˇen´ım povinn´ ych u ´daj˚ u o zamˇestnanci, kter´e jsou oznaˇceny ˇcerven´ ym r´ameˇckem. Dalˇs´ı nepovinn´e u ´daje je moˇzn´e vyplnit dle potˇreb. Jeden z povinn´ ych u ´daj˚ u je seznam turnus˚ u zamˇestnance, kter´ y mus´ı obsahovat aspoˇ n jeden turnus. Pˇredpokl´ad´a se, ˇze jiˇz byl vytvoˇren minim´alnˇe jeden turnus, kter´ y bude moˇzn´e vybrat a vloˇzit do seznamu turnusu zamˇestnance. Po vyplnˇen´ı vˇsech povinn´ ych u ´daj˚ u a pˇr´ıpadnˇe i nˇekter´ ych voliteln´ ych staˇc´ı pro dokonˇcen´ı procesu zaloˇzen´ı stisknout tlaˇc´ıtko Uloˇzit“, a t´ım se zamˇestnanec ” uloˇz´ı a zobraz´ı se v prav´em seznamu jako vybran´a poloˇzka. Pokud je jiˇz nˇejak´a poloˇzka vybran´a a chceme vytvoˇrit nov´eho zamˇestnance, stiskneme tlaˇc´ıtko Nov´ y“. V pˇr´ıpadˇe ” odstranˇen´ı vybereme zamˇestnance a stiskneme tlaˇc´ıtko Smazat“. Pro editaci vybereme ” zamˇestnance a uprav´ıme nˇekter´ y z nepovinn´ ych u ´daj˚ u s moˇznost´ı i editovat seznam turnusu zamˇestnance, jenˇz mus´ı obsahovat minim´alnˇe jeden turnus. Stiskem tlaˇc´ıtka Uloˇzit“ ” se veˇsker´e zmˇeny uloˇz´ı.
1
ikona zamˇestnanc˚ u.
2.9. UML DIAGRAMY AKTIVIT
Obr´ azek 2.13: Diagram zamˇestnanc˚ u
25
´ KAPITOLA 2. ANALYZA
26
2.9.8
Diagram hled´ an´ı
Proces hled´an´ı pr´ace zah´aj´ıme stisknut´ım tlaˇc´ıtka Hled´an´ı pr´ace“, kter´e lze naj´ıt jak ” na hlavn´ı liˇstˇe v podobˇe ikony hled´an´ı pr´ace 1 , tak i v nab´ıdce Hledat“ v hlavn´ım ” menu. V otevˇren´em dialogov´em oknˇe lze hledat dle parametru Vozidlo“, Typ opravy“, ” ” data Od Do“, a textov´eho v´ yrazu, dle kter´eho se hled´a v popisu z´avady jednotliv´ ych ” z´aznam˚ u, kter´ y se p´ıˇse do pole V´ yraz“. Tak´e lze hledat dle Oddˇelen´ı“, pokud pˇrihl´aˇsen´ y ” ” uˇzivatelsk´ y u ´ˇcet spad´a do role Mistr“. Po zvolen´ı potˇrebn´ ych parametr˚ u a stisknut´ı ” tlaˇc´ıtka Hledat“ se veˇsker´e nalezen´e z´aznamy objev´ı ve spodn´ı tabulce v´ ysledk˚ u. V t´eto ” tabulce je moˇzn´e dvojit´ ym poklep´an´ım na z´aznam zobrazit podrobn´e u ´daje. Tlaˇc´ıtkem Reset“ se resetuj´ı vybran´e parametry hled´an´ı. ”
1
ikona hled´ an´ı pr´ ace.
2.9. UML DIAGRAMY AKTIVIT
Obr´azek 2.14: Diagram hled´an´ı
27
´ KAPITOLA 2. ANALYZA
28
2.9.9
Diagram doch´ azky
Proces doch´azky zah´aj´ıme v´ ybˇerem smˇeny, pro kterou chceme zaloˇzit doch´azku. Po v´ ybˇeru smˇeny je tˇreba vybrat z´aloˇzku Doch´azka“ na prav´e stranˇe hlavn´ıho okna. Nyn´ı ” uˇz staˇc´ı stisknout tlaˇc´ıtko Doch´azka“, kter´e se nach´az´ı na hlavn´ı liˇstˇe v podobˇe ikony ” doch´azka 1 , nebo v nab´ıdce Nastroje“ v hlavn´ım menu. Po otevˇren´ı dialogov´eho okna se v ” prav´em seznamu objev´ı seznam zamˇestnanc˚ u, kter´ y m˚ uˇzeme zaˇradit do doch´azky vybran´e smˇeny. Po vybr´an´ı zamˇestnance, kter´eho chceme pˇridat do doch´azky, se ˇcervenˇe or´amuj´ı povinn´e u ´daje, kter´e je nutn´e doplnit (konkretnˇe se jedn´a o Status“ a Turnus“). Zde ” ” se pˇredpokl´ad´a, ˇze jsou jiˇz vytvoˇreny Statusy“ a Zamˇestnanci“, kde jejich diagramy ” ” aktivit jsou pops´any v jin´ ych diagramech aktivit. Poloˇzka Status“ urˇcuje pˇr´ıtomnost ” zamˇestnance (napˇr. pˇr´ıtomen, nepˇr´ıtomen, nemocen). Poloˇzka Turnus“ urˇcuje, v jak´em ” turnusu se moment´alnˇe zamˇestnanec nach´az´ı. Zde je umoˇznˇeno vybrat jen ty turnusy, kter´e m´a zamˇestnanec k sobˇe pˇriˇrazeny. Tak´e je moˇzn´e vyplnit dodateˇcnou informaci do pole Dodateˇcn´a informace“, kde m˚ uˇze b´ yt napˇr´ıklad uvedeno, ˇze si vzal zamˇestnanec ” na p˚ ul dne volno. Po vyplnˇen´ı vˇsech potˇrebn´ ych u ´daj˚ u a stisknut´ı tlaˇc´ıtka Vloˇzit“ ” se zamˇestnanec objev´ı jako vybran´a poloˇzka ve spodn´ım seznamu, kter´ y je seznamem doch´azky vybran´e smˇeny. Pro odebr´an´ı zamˇestnance z doch´azky vybereme zamˇestnance ze spodn´ıho seznamu a klikneme na tlaˇc´ıtko Odebrat“. V pˇr´ıpadˇe potˇreby editace vy” bereme zamˇestnance ve spodn´ım seznamu a uprav´ıme kter´ ykoliv ze tˇr´ı u ´daj˚ u ( Turnus“, ” Status“, Dodateˇcn´a informace“). Po dokonˇcen´ı u ´prav stiskneme tlaˇc´ıtko Uloˇzit“. ” ” ”
1
ikona doch´ azky.
2.9. UML DIAGRAMY AKTIVIT
Obr´ azek 2.15: Diagram doch´azky
29
´ KAPITOLA 2. ANALYZA
30
2.9.10
Diagram zmˇ eny hesla
Proces zmˇeny hesla zah´aj´ıme stisknut´ım z´aloˇzky M˚ uj u ´ˇcet“, kter´a se nach´az´ı ” v nab´ıdce Administrativa“ v hlavn´ım ” menu aplikace. Po otevˇren´ı dialogov´eho okna vypln´ıme povinn´e u ´daje, kter´e jsou oznaˇcen´e ˇcerven´ ym r´ameˇckem, a stisknut´ım tlaˇc´ıtka
Zmˇenit heslo“ se zaˇcne ” prov´adˇet kontrola zadan´ ych parametr˚ u. Pokud vˇse probˇehne u ´spˇeˇsnˇe, tak se objev´ı n´apis ”Heslo bylo u ´spˇeˇsnˇe zmˇenˇeno!”.
Obr´azek 2.16: Diagram zmˇeny hesla
2.9. UML DIAGRAMY AKTIVIT
2.9.11
31
Diagram pr´ ace s uˇ zivatelsk´ ymi u ´ˇ cty
Proces pr´ace s uˇzivatelsk´ ymi u ´ˇcty zah´aj´ıme stisknut´ım z´aloˇzky Spr´ava u ´ˇctu“, kter´a ” se nach´az´ı v nab´ıdce Administrativa“ v hlavn´ım menu. V otevˇren´em dialogov´em oknˇe ” zaloˇz´ıme u ´ˇcet t´ım, ˇze vypln´ıme minim´alnˇe vˇsechna povinn´a pole or´amovan´e ˇcerven´ ym r´ameˇckem, kter´ ymi jsou Uˇzivatelsk´e jm´eno“ a Oddˇelen´ı“, do kter´eho se u ´ˇcet zaˇrad´ı. ” ” Tak´e je moˇzn´e uˇzivatelsk´ yu ´ˇcet sv´azat s konkr´etn´ım zamˇestnancem v´ ybˇerem zamˇestnance. To zapˇr´ıˇcin´ı, ˇze pokud se odebere zamˇestnanec, tak se automaticky odebere i u ´ˇcet, kter´ y je tomuto zamˇestnanci pˇriˇrazen. Pokud uˇzivatelsk´ yu ´ˇcet nechceme m´ıt jen pro vstup do syst´emu a ˇcten´ı z´aznamu, je moˇzn´e mu pˇriˇradit r˚ uzn´e role. Role se daj´ı vybrat v dialogov´em oknˇe v sekci Role“ a vkl´adat je k uˇzivatelsk´emu u ´ˇctu pˇres tlaˇc´ıtko Vloˇzit“. ” ” Po zad´an´ı vˇsech potˇrebn´ ych parametr˚ u a stisknut´ım tlaˇc´ıtka Uloˇzit“ se uˇzivatelsk´ yu ´ˇcet ” zobraz´ı v prav´em seznamu jako vybran´a poloˇzka. Z´aroveˇ n se v sekci Heslo“ objev´ı vy” generovan´e heslo. Pokud chceme zaloˇzit nov´eho uˇzivatele a je jiˇz vybr´an nˇejak´ y uˇzivatel, staˇc´ı stisknout tlaˇc´ıtko Nov´ y“. Pro reset hesla uˇzivatele vybereme uˇzivatele z prav´eho ” seznamu, kter´emu chceme vyresetovat heslo, a stiskneme tlaˇc´ıtko Reset hesla“. Pokud ” chceme uˇzivatele smazat, vybereme jej z prav´eho seznamu a stiskneme tlaˇc´ıtko Smazat“. ” Pokud chceme editovat uˇzivatele, vybereme jej z prav´eho seznamu uˇzivatel˚ uau ´pravou kter´ ychkoliv z parametr˚ u Oddˇelen´ı“, Role“, Zamˇestnanec“ a n´asledn´ ym stisknut´ım ” ” ” tlaˇc´ıtka Uloˇzit“ se veˇsker´e zmˇeny uloˇz´ı. ”
32
´ KAPITOLA 2. ANALYZA
Obr´ azek 2.17: Diagram pr´ace s uˇzivatelsk´ ymi u ´ˇcty
2.9. UML DIAGRAMY AKTIVIT
2.9.12
33
Diagram pˇ red´ avan´ e pr´ ace
Proces zakl´ad´an´ı pˇred´avan´e pr´ace zaˇc´ın´a v´ ybˇerem smˇeny, kter´a bude urˇcovat u ´daj, ve kter´e smˇenˇe byla pˇred´avan´a pr´ace pˇridan´a. Tak´e je tˇreba vybrat z´aloˇzku Pˇred´avka“ v ” prav´e ˇca´sti obrazovky. Nyn´ı uˇz staˇc´ı stisknout tlaˇc´ıtko Nov´ y z´aznam“, kter´e se nach´az´ı ” v hlavn´ı liˇstˇe vyobrazen´e ikonou nov´eho z´aznamu 1 , nebo pˇres nab´ıdku N´astroje“ ” v hlavn´ım menu. Po otevˇren´ı dialogov´eho okna pro zakl´ad´an´ı pˇred´avan´e pr´ace je tˇreba vyplnit povinn´e udaje, kter´e jsou or´amovan´e ˇcervenou barvou. Jedn´a se o Vozidlo“, Typ ” ” ˇ e z´avady“ nebo napsat opravy“ a Popis z´avady“, kde je moˇzn´e bud’ vybrat popis Cast´ ” ” vlastn´ı. Po vyplnˇen´ı vˇsech potˇrebn´ ych u ´daj˚ u a stisknut´ı tlaˇc´ıtka Zaloˇzit“ se z´aznam ” objev´ı na prav´e stranˇe okna v z´aloˇzce Pˇred´avka“. Proces maz´an´ı pˇred´avan´e pr´ace spoˇc´ıv´a ” ve v´ ybˇeru konkr´etn´ıho z´aznamu v z´aloˇzce Pˇred´avka“ a stisknut´ım tlaˇc´ıtka Smazat ” ” z´aznam“, kter´e je moˇzn´e nal´ezt bud’ v hlavni liˇstˇe v podobˇe ikony smazat z´aznam 2 nebo pˇres nab´ıdku N´astroje“ v hlavn´ım menu. Pro pˇrevod pˇred´avan´e pr´ace do z´aznamu ” vykonan´e pr´ace mus´ı byt vybran´a smˇena, do kter´e chceme pˇred´avanou pr´aci pˇren´est. Tak´e je tˇreba vybrat z´aznam v z´aloˇzce Pˇred´avka“, kter´ y m´a b´ yt pˇrenesen do vykonan´e ” pr´ace vybran´e smˇeny. Stisknut´ım tlaˇc´ıtka Pˇren´est“, kter´e se nach´az´ı bud’ v hlavn´ı liˇstˇe ” jako ikona pˇren´est z´aznam 3 nebo v nab´ıdce N´astroje“ hlavn´ıho menu, se vybran´a ” pˇred´avan´a pr´ace pˇrenese do vykonan´ ych prac´ı vybran´e smˇeny.
1
ikona nov´eho z´ aznamu.
2
ikona odebran´ı z´ aznamu.
3
ikona pˇrenesen´ı z´ aznamu.
34
´ KAPITOLA 2. ANALYZA
Obr´ azek 2.18: Diagram pˇred´avan´e pr´ace
Kapitola 3 Popis ˇ reˇ sen´ı 3.1
Pouˇ zit´ e n´ astroje
Aplikaci jsem programoval v prostˇred´ı Visual Studio 2012“. Toto prostˇred´ı jsem si ” vybral z d˚ uvodu, ˇze je vhodn´e pro n´avrh aplikac´ı v jazyce C# a velmi v´ yraznˇe ulehˇcuje pr´aci pˇri programov´an´ı. Postup v´ yvoje jsem verzoval pomoc´ı Gitu“ (bezplatn´ y syst´em ” pro spr´avu verz´ı projektu) a z´alohoval na SkyDrive“ [1], kter´ y je cloudov´e u ´loˇziˇstˇe, ” jenˇz nab´ız´ı 7 GB prostoru zdarma. Pro komunikaci pˇres https jsem si musel vytvoˇrit certifik´at. K tomu jsem pouˇzil n´astroj SelfCert“ [2] , kter´ y umoˇzn ˇuje vytv´aˇret certifik´aty ” s´am sebou podepsan´e. Tyto certifik´aty se pouˇz´ıvaj´ı jen pro testovac´ı u ´ˇcely, protoˇze nejsou d˚ uvˇeryhodn´e. Pouˇzil jsem je i pˇri ostr´em provozu z finanˇcn´ıch d˚ uvod˚ u. Cel´ y projekt, kter´ y jsem dˇelal, nikdo nefinancoval, a proto jsem nepouˇzil certifik´at podepsan´ y autorizaˇcn´ı sluˇzbou. Datab´azi jsem vytv´aˇrel v prostˇred´ı SQL Server managmet studio“. Pro kreslen´ı ” nˇekter´ ych diagram˚ u jsem pouˇzil Microsoft Visio“. N´apovˇedu pro klientskou aplikaci jsem ” vytvoˇril v n´astroji HTML Help WorkShop“. Postup, jak pracovat s n´astrojem HTML ” ” Help WorkShop“, je velmi dobˇre pops´an v materi´alech [3].
35
ˇ SEN ˇ ´I KAPITOLA 3. POPIS RE
36
3.2
Bezpeˇ cnost
Bezpeˇcnost proti u ´niku dat zajiˇst’uje autentizace a autorizace, jenˇz omezuj´ı pˇr´ıstup pouze tˇem, kteˇr´ı maj´ı uˇzivatelsk´ y u ´ˇcet a pr´ava vykon´avat urˇcitou operaci. Co se t´ yˇce komunikace mezi serverem a klientem, zde je bezpeˇcnost zabezpeˇcena protokolem https. Uˇzivatelsk´a hesla se do datab´aze ukl´adaj´ı jako hash. Hash se vytv´aˇr´ı kombinac´ı uˇzivatelsk´eho jm´ena a hesla. T´ım je zajiˇstˇeno to, ˇze pokud budou m´ıt dva uˇzivatel´e stejn´a hesla, tak jejich hashe se budou i v tomto pˇr´ıpadˇe liˇsit. K vytv´aˇren´ı hashe jsem pouˇzil dva algoritmy MD5
1
a SHA1
2
. V´ıce informac´ı o kryptografick´e funkc´ı SHA“ se lze ” doˇc´ıst v materi´alech [4] a o MD5“ v materi´alech [5]. Algoritmem MD5 se vytv´aˇr´ı hash ” kombinace uˇzivatelsk´eho jm´ena a hesla. Algoritmem SHA1 se vytv´aˇr´ı hash z vygenerovan´eho MD5 hashe. Pouˇzil jsem tento postup pro zajiˇstˇen´ı vyˇsˇs´ı bezpeˇcnosti. Heslo se po s´ıti pos´ıl´a jen v pˇr´ıpadˇe zaloˇzen´ı u ´ˇctu nebo resetov´an´ı hesla, kde sluˇzba vygeneruje n´ahodn´e d˚ uvˇeryhodn´e heslo, kter´e odeˇsle klientsk´e aplikaci. Toto heslo je doporuˇcen´e pˇri prvn´ım pˇrihl´aˇsen´ı zmˇenit. Nˇekter´e metody na sluˇzb´ach mohou vyvol´avat jen uˇzivatel´e s potˇrebn´ ym opr´avnˇen´ım. Pˇri pokusu o vyvol´an´ı metody se prov´ad´ı autorizace, a pokud autorizace probˇehne ne´ uspˇeˇsnˇe, zak´aˇze se pˇr´ıstup k t´eto metodˇe.
3.3
Sluˇ zby
Sluˇzby jsem programoval v technologii WCF
1
. WCF je technologie, kter´a umoˇzn ˇuje
vytv´aˇret servisnˇe orientovan´e aplikace. Skl´ad´a se ze seznamu endpoint˚ u (koncov´e body), pˇres kter´e je moˇzn´e se sluˇzbou komunikovat. Kaˇzd´ y endpoint se skl´ad´a z adresy, bindingu a contractu. Adresa urˇcuje um´ıstˇen´ı sluˇzby, tj. kam se maj´ı odes´ılat zpr´avy. Binding urˇcuje chov´an´ı konkr´etn´ıho endpointu, tedy dle jak´eho protokolu se budou pos´ılat zpr´avy, jak´e se pouˇzije zabezpeˇcen´ı, k´odov´an´ı, sessions atd. Jako posledn´ı vlastnost´ı enpointu je contract, coˇz je rozhran´ı, kter´e sluˇzba poskytuje pro komunikaci. WCF sluˇzba komunikuje pomoc´ı SOAP 2 zpr´av, coˇz je protokol pro pˇren´aˇsen´ı dat ve tvaru XML 3 pˇres s´ıt’. V´ıce informac´ı o WCF“ lze nal´ezt v knize [6]. ” 1
MD5 (Message digest algorithm) je kryptografick´ y algoritmus, kter´ y ze vstupn´ıch dat vytvoˇr´ı v´ ystup
pevn´e d´elky, kter´ y se naz´ yv´ a hash. 2 SHA1 (Secure hash algorithm) je t´eˇz kryptografick´ ym algoritmem podobn´ y MD5.
ˇ 3.3. SLUZBY
3.3.1
37
Transakˇ cn´ı zpracov´ an´ı
Veˇsker´e operace prov´adˇen´e s daty jsou hl´ıd´any pomoc´ı n´avrhov´eho vzoru Unit of ” Work“, kter´a zajiˇst’uje transakˇcn´ı zpracov´an´ı. To znamen´a, ˇze se zaznamen´avaj´ı prov´adˇen´e zmˇeny a aˇz po potvrzen´ı se veˇsker´e zmˇeny najednou uloˇz´ı do datab´aze. Pokud by nˇekter´a operace neproˇsla u ´spˇeˇsnˇe, tak se zahod´ı veˇsker´e zmˇeny. T´ım se zajist´ı, ˇze se do datab´aze neuloˇz´ı nekonzistentn´ı data. N´avrhov´ y vzor Unit Of Work“ je pops´an v materi´alech [7]. ” Unit of Work“ pˇristupuje k dat˚ um pˇres n´avrhov´ y vzor Repository“, coˇz je rozhran´ı, ” ” 1 kter´e umoˇzn ˇuje z´akladn´ı CRUD operace nad daty. V´ yhoda Repozitory“ je v tom, ˇze ” nab´ız´ı rozhran´ı s pr´aci nad daty, kter´e je st´ale stejn´e. Ale pˇritom nab´ız´ı v´ıce moˇznost´ı implementace tohoto rozhran´ı k pˇr´ıstupu k dat˚ um. V´ıce o n´avrhov´em vzoru Repository“ ” se lze doˇc´ıst v materi´alech [8]. Moje navrˇzen´e Repository“ pˇristupuje k dat˚ um pˇres En” tity Framework 2 , kter´ y namapuje datab´azov´e tabulky na kolekce a umoˇzn ˇuje pracovat s jednotliv´ ymi ˇr´adky jako s objekty. V´ıce informaci o Entity Frameworku“ se lze doˇc´ıst ” v knize [9].
3.3.2
Konfigurace sluˇ zeb
Konfigurace sluˇzeb je nastavena v souboru web.config v sekci services“, Kaˇzd´e sluˇzbˇe ” je nastaven´e chov´ani behaviorConfiguration“ a tak´e koncov´e body endpoint“. V kon” ” cov´ ych bodech je nastaven typ chov´an´ı komunikace, zabezpeˇcen´ı, certifik´at, kter´ y se m´a pouˇz´ıt, a rozhran´ı, kter´e se nab´ız´ı pro komunikaci. Pro kaˇzdou sluˇzbu jsou pˇr´ıstupny dva koncov´e body, druhy s rozhran´ım ImetadataExchange“ zpˇr´ıstupˇ nuje metadata, kter´a ” popisuji samotnou sluˇzbu. Pomoc´ı tˇechto dat je moˇzn´e vygenerovat proxy tˇr´ıdu, kter´a slouˇz´ı jako prostˇredn´ık mezi sluˇzbou a klientem. Tak´e zde jsou uloˇzeny v sekci connecti” onStrings“ ˇretˇezce pro pˇripojen´ı k datab´azov´emu serveru. 1
WCF (Windows Communication Foundation) je technologie pro tvorbu servisnˇe orientovan´ ych apli-
kaci. 2 SOAP (Simple Object Access Protocol). 3 XML (Extensible Markup Language). 1 CRUD (Creat,Read,Update,Delete) je zkratka znamenaj´ıc´ı z´akladn´ı operace nad daty kter´ ymi jsou vytvoˇren´ı, ˇcten´ı, editace a maz´ an´ı. 2 Entity Framework je ORM (object relation maper).
ˇ SEN ˇ ´I KAPITOLA 3. POPIS RE
38
3.3.3
Validace dat
Proto, aby se nepos´ılaly cel´e entity pˇres SOAP“ zpr´avy a nepˇren´aˇsely se tak nevyuˇzit´a ” data, jsem vytvoˇril oˇrezan´e objekty pro pˇrenos jen potˇrebn´ ych informac´ı. Tyto vytvoˇren´e objekty jsem validoval pomoc´ı anotace tˇr´ıd, jenˇz se prov´ad´ı pomoc´ı atribut˚ u, kter´e se vkl´adaj´ı nad konkr´etn´ımi vlastnostmi dan´e tˇr´ıdy. Validace se pak prov´ad´ı vyvol´an´ım metody IsValid“, kter´e se pˇred´a objekt urˇcen´ y pro validaci. Pokud validace neprobˇehne ” u ´spˇeˇsnˇe, vyvol´a se v´ yjimka, kter´a se odeˇsle pomoc´ı WCF“ jako FaultContact“. ” ”
3.3.4
Hostov´ an´ı
Sluˇzby jsem hostoval na IIS 7“. Pro bezpeˇcnou komunikaci jsem zvolil protokol https. ” Aby fungovala bezpeˇcn´a komunikace, musel jsem vytvoˇrit certifik´at pomoc´ı programu SelfCert“. Pot´e bylo potˇreba vytvoˇrit hostovac´ı prostˇred´ı. V IIS 7“ jsem vytvoˇril web, ” ” kter´emu jsem nastavil n´azev, IP adresu, protokol https“, port a vybral vytvoˇren´ y certi” fik´at. Musel jsem nastavit pr´ava certifik´atu, aby ho hostovac´ı web mohl pouˇz´ıt. Tak´e jsem musel v datab´azi vytvoˇrit u ´ˇcet, kter´ y umoˇzn´ı pˇr´ıstup k datab´azi. Pro hostov´an´ı sluˇzeb v IIS 7“ jsem zaloˇzil v Visual Studio 2012 ASP.NET“ projekt, kter´ y je v webov´ ym ” ” projektem, ve kter´em jsou hostovan´e jednotliv´e sluˇzby. V tomto projektu jsem nareferencoval jednotliv´e sluˇzby, vytvoˇril .svc“ soubory kter´e definuj´ı sluˇzby a nakonfiguroval ” je v souboru web.config. Posledn´ım krokem je jiˇz jen publikov´ani projektu do adres´aˇre s vytvoˇren´ ym webem na IIS 7“. ”
3.3.5
Bezpeˇ cnostn´ı sluˇ zba
Pr´aci s uˇzivatelsk´ ymi u ´ˇcty zajiˇst’uje samostatn´a sluˇzba, kter´a umoˇzn ˇuje prohl´ıˇzet, zakl´adat, editovat a mazat uˇzivatelsk´e u ´ˇcty s moˇznost´ı resetovat hesla jednotliv´ ych uˇzivatelsk´ ych u ´ˇct˚ u a to za podm´ınky, ˇze pˇrihl´aˇsen´ y uˇzivatel m´a pr´ava k tˇemto funkc´ım. Pro vygenerov´an´ı bezpeˇcn´eho hesla jsem naprogramoval funkci, kter´a z pole znak˚ u vygeneruje n´ahodn´e heslo zadan´e d´elky. Tato funkce se pouˇz´ıv´a pˇri zakl´ad´an´ı nebo resetov´an´ı hesla. Seznam znak˚ u, ze kter´ ych se vytv´aˇr´ı heslo a k´od gener´atoru, je moˇzn´e vidˇet v k´odu 3.3.5.
ˇ 3.3. SLUZBY
39
private const string Chars = @"abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789!#$%&’()*+,-./:;<=>?@[\]_"; private void GeneratePassword(int length) { Random rand = new Random((int)DateTime.Now.Ticks & 0x0000FFFF); var password = new char[length]; for (var i = 0; i < length; i++) { password[i] = Chars[rand.Next(0, Chars.Length)]; } Password = new String(password); }
Sluˇzba nab´ız´ı pro komunikaci rozhran´ı ISecurityService“, kter´e umoˇzn ˇuje volat ” n´asleduj´ıc´ı metody. Pro vol´an´ı nˇekter´ ych metod je tˇreba m´ıt u ´ˇcet, kter´ y je zaˇrazen do urˇcit´e role. Dostupn´ e metody pro pr´ aci s uˇ zivatelsk´ ymi u ´ˇ cty: • Objects.User AddUser(Objects.User user) zaloˇz´ı v datab´azi uˇzivatele a vrac´ı tento objekt s vygenerovan´ ym heslem. Tuto metodu mohou volat jen uˇzivatele s rol´ı Administrator. • void DeleteUser(Int32 userID) smaˇze uˇzivatelsk´ y u ´ˇcet s odpov´ıdaj´ıc´ım ID. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Administrator. • string ResetPassword(Int32 userID) vygeneruje a nastav´ı heslo uˇzivateli se zadan´ ym ID a z´aroveˇ n vygenerovan´e heslo vrac´ı jako ˇretˇezec. Tuto metodu mohou volat jen uˇzivatele s rol´ı Administrator. • void UpdateUser(Objects.User user) aktualizuje uˇzivatelsk´ yu ´ˇcet dle pˇredan´eho objektu. Tuto metodu mohou volat jen uˇzivatele s rol´ı Administrator. • List
GetRoles() vrac´ı kolekci uˇzivatelsk´ ych rol´ı. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Administrator. • List GetUsers() vrac´ı kolekci uˇzivatelsk´ ych u ´ˇctu bez hesel. Tuto metodu mohou volat jen uˇzivatele s rol´ı Administrator. • Objects.User GetUserInfo(string userName) vrac´ı uˇzivatelsk´ yu ´ˇcet bez hesla, kter´emu odpov´ıd´a uˇzivatelsk´e jm´eno v zadan´em parametru. Tuto metodu m˚ uˇze volat kter´ ykoliv uˇzivatel.
ˇ SEN ˇ ´I KAPITOLA 3. POPIS RE
40
• bool ChangePassword(Objects.User user) zmˇen´ı uˇzivatelsk´e heslo kter´e je je obsaˇzeno v pˇredan´em objektu. Toto heslo je j´ıˇz v podobˇe hashe. Metoda vrac´ı informaci, zda se zmˇena hesla povedla. Tuto metodu m˚ uˇze volat kter´ ykoliv uˇzivatel.
3.3.6
Vyhled´ avac´ı sluˇ zba
Vyhled´av´an´ı z´aznamu zajiˇst’uje samostatn´a sluˇzba poskytuj´ıc´ı hled´an´ı z´aznamu podle r˚ uzn´ ych parametr˚ u. Je moˇzn´e libovolnˇe nastavovat a hledat podle parametr˚ u: vozidla, typu opravy, data od do, textov´eho v´ yrazu, kter´ y je obsaˇzen v popisu z´avady. Pro ´ cty, uˇzivatelsk´e u ´ˇcty s rol´ı Mistr“ je moˇzn´e hledat z´aznamy v konkr´etn´ıch oddˇelen´ıch. Uˇ ” kter´e nejsou zaˇrazeny do role Mistr“, toto pr´avo nemaj´ı a vyhled´avaj´ı z´aznamy vˇzdy jen ” v oddˇelen´ı, ve kter´em jsou samy zaˇrazeny. Sluˇ zba nab´ız´ı pro komunikaci rozhran´ı IFullTextService“, kter´ a umoˇ zn ˇ uje ” volat metodu: List FindWork(Parameters parameters). Tato metoda umoˇzn ˇuje vyhled´av´an´ı vykonan´e pr´ace dle zadan´ ych parametru, kter´e jsou pˇredan´e metodˇe. Tuto metodu muˇze volat jak´ ykoliv uˇzivatel.
3.3.7
Datov´ a sluˇ zba
Dalˇs´ı sluˇzba zajiˇst’uje veˇskerou datovou komunikaci, kter´ ymi jsou napˇr. z´apis, editace a maz´an´ı smˇen, vozidel, turnus˚ u, typu oprav, zamˇestnanc˚ u a oddˇelen´ı. Dostupn´ e metody pro pr´ aci s doch´ azku: • void AddAttendance(Objects.Attendance attendance) zaloˇz´ı doch´azku dle pˇredan´eho objektu. Tuto metodu mohou volat jen uˇzivatele s rol´ı Z´apis. • void DeleteAttendance(Objects.Attendance attendance) smaˇze doch´azku s odpov´ıdaj´ıc´ı kombinaci ID smˇeny a ID zamˇestnance, kter´e jsou obsahem pˇredan´eho objektu. Tuto metodu mohou volat jen uˇzivatele s rol´ı Z´apis.
ˇ 3.3. SLUZBY
41
• void UpdateAttendance(Objects.Attendance attendance) aplikuje zmˇeny doch´azky s odpov´ıdaj´ıc´ı kombinaci ID zamˇestnance a ID smˇeny, kter´e jsou tak´e obsahem pˇredan´eho objektu. Tuto metodu mohou volat jen uˇzivatele s rol´ı Z´apis. • List FindAttendances(Int64 dateID,Int32 detachmentID) vrac´ı kolekci doch´azky, kter´e jsou obsaˇzen´e v zadan´e smˇenˇe a oddˇelen´ı. Tuto metodu m˚ uˇze volat jak´ ykoliv uˇzivatel. Dostupn´ e metody pro pr´ aci se smˇ enami: • Int64 AddDate(Objects.Date date) zaloˇz´ı smˇenu dle pˇredan´eho objektu a vr´at´ı ID zaloˇzen´e smˇeny. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • void DeleteDate(Int64 dateID) smaˇze smˇenu s odpov´ıdaj´ıc´ım ID. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • void UpdateDate(Objects.Date date) aktualizuje smˇenu s odpov´ıdaj´ıc´ım ID dle pˇredan´eho objektu. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • List GetYear(); vrac´ı kolekci rok˚ u, ve kter´ ych jsou zaloˇzeny smˇeny. Tuto metodu m˚ uˇze volat jak´ ykoliv uˇzivatel. • List GetMonth(Int32 year) vrac´ı kolekci mˇes´ıc˚ u zadan´eho roku, ve kter´em jsou zaloˇzeny smˇeny. Tuto metodu m˚ uˇze volat jak´ ykoliv uˇzivatel. • List FindDates(Int32 year,Int32 month) vrac´ı kolekci smˇen, kter´e jsou obsaˇzen´e v zadan´em roku a mˇes´ıci. Tuto metodu m˚ uˇze volat jak´ ykoliv uˇzivatel. Dostupn´ e metody pro pr´ aci s pˇ red´ avanou prac´ı: • Int32 AddChangeover(Objects.Changeover changeover) zaloˇz´ı pˇred´avanou pr´aci dle pˇredan´eho objektu a vr´at´ı ID zaloˇzen´e pˇred´avan´e pr´ace. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • void DeleteChangeover(Int32 changeoverID) smaˇze pˇred´avanou pr´aci se zadan´ ym ID. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • void UpdateChangeover(Objects.Changeover changeover); aktualizuje pˇred´avanou pr´aci s odpov´ıdaj´ıc´ım ID dle pˇredan´eho objektu. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis.
ˇ SEN ˇ ´I KAPITOLA 3. POPIS RE
42
• Objects.Work TransferChangeover(Int64 dateID,Int32 changeoverID) pˇrevede pˇred´avanou pr´aci s odpov´ıdaj´ıc´ım ID jako vykonanou pr´aci do smˇeny s odpov´ıdaj´ıc´ım ID. Metoda t´eˇz vrac´ı objekt pˇreveden´eho z´aznamu v podobˇe vykonan´e pr´ace. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • List FindChangeovers(Int32 detachmentID) vrac´ı kolekci pˇred´avan´ ych prac´ı, kter´e spadaj´ı do oddˇelen´ı se zadan´ ym ID. Tuto metodu m˚ uˇze volat jak´ ykoliv uˇzivatel. Dostupn´ e metody pro pr´ aci s oddˇ elen´ ymi: • Int32 AddDetachment(Objects.Detachment detachment) zaloˇz´ı oddˇelen´ı dle pˇredan´eho objektu a vr´at´ı ID zaloˇzen´eho oddˇelen´ı. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • void DeleteDetachment(Int32 detachmentID) smaˇze oddˇelen´ı se zadan´ ym ID. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • void UpdateDetachment(Objects.Detachment detachment) aktualizuje oddˇelen´ı s odpov´ıdaj´ıc´ım ID dle pˇredan´eho objektu. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • Objects.Detachment FindDetachment(Int32 detachmentID) vrac´ı objekt oddˇelen´ı dle zadan´eho ID. Tuto metodu m˚ uˇze volat jak´ ykoliv uˇzivatel. • List GetDetachments() vrac´ı kolekci oddˇelen´ı. Tuto metodu m˚ uˇze volat jak´ ykoliv uˇzivatel Dostupn´ e metody pro pr´ aci s turnusy: • Int32 AddTour(Objects.Tour tour) zaloˇz´ı turnus dle pˇredan´eho objektu a vr´at´ı ID zaloˇzen´eho turnusu. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • void DeleteTour(Int32 tourID) smaˇze turnus se zadan´ ym ID. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • void UpdateTour(Objects.Tour tour) aktualizuje turnus s odpov´ıdaj´ıc´ım ID dle pˇredan´eho objektu. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • List GetTours() vrac´ı kolekci turnusu. Tuto metodu m˚ uˇze volat jak´ ykoliv uˇzivatel
ˇ 3.3. SLUZBY
43
Dostupn´ e metody pro pr´ aci s vozidly: • Int32 AddVehicle(Objects.Vehicle vehicle) zaloˇz´ı vozidlo dle pˇredan´eho objektu a vr´at´ı ID zaloˇzen´eho turnusu. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • void DeleteVehicle(Int32 vehicleID) smaˇze vozidlo se zadan´ ym ID. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • void UpdateVehicle(Objects.Vehicle vehicle) aktualizuje vozidlo s odpov´ıdaj´ıc´ım ID dle pˇredan´eho objektu. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • List GetVehicles() vrac´ı kolekci vozidel. Tuto metodu m˚ uˇze volat jak´ ykoliv uˇzivatel. Dostupn´ e metody pro pr´ aci s pracemi: • Int64 AddWork(Objects.Work work) zaloˇz´ı pr´aci dle pˇredan´eho objektu a vr´at´ı ID zaloˇzen´e pr´ace. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • void DeleteWork(Int64 workID) smaˇze pr´aci se zadan´ ym ID. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • void UpdateWork(Objects.Work work) aktualizuje pr´aci s odpov´ıdaj´ıc´ım ID dle pˇredan´eho objektu. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • List FindWorks(Int64 dateID,Int32 detachmentID) vrac´ı kolekci prac´ı, kter´e spadaj´ı do oddˇelen´ı se zadan´ ym ID a tak´e do smˇeny se zadan´ ym ID . Tuto metodu m˚ uˇze volat jak´ ykoliv uˇzivatel. • List<string> GetTopFaultWorks(Int32 count,Int32 detachmentID) vrac´ı kolekci nejˇcastˇejˇs´ıch z´avad, kter´e jsou uloˇzeny v datab´azi. Kde count“ urˇcuje ma” xim´aln´ı mnoˇzstv´ı z´aznam˚ u, kter´e se m´a vracet, a detachmendID“ urˇcuje, v jak´em ” oddˇelen´ı se maj´ı hledat nejˇcastˇejˇs´ı z´avady. • List<string> GetTopCauseWorks(Int32 count,Int32 detachmentID) vrac´ı kolekci nejˇcastˇejˇs´ıch oprav, kter´e jsou uloˇzeny v datab´azi. Kde count“ urˇcuje ma” xim´aln´ı mnoˇzstv´ı z´aznam˚ u, kter´e se m´a vracet, a detachmendID“ urˇcuje, v jak´em ” oddˇelen´ı se maj´ı hledat nejˇcastˇejˇs´ı opravy.
ˇ SEN ˇ ´I KAPITOLA 3. POPIS RE
44 Dostupn´ e metody pro pr´ aci se zamˇ estnanci:
• Int32 AddWorker(Objects.Worker Detailworker) zaloˇz´ı zamˇestnance dle pˇredan´eho objektu a vr´at´ı ID zaloˇzen´eho zamˇestnance. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • void DeleteWorker(Int32 workerID) smaˇze zamˇestnance se zadan´ ym ID. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • void UpdateWorker(Objects.Worker Detailworker) aktualizuje zamˇestnance s odpov´ıdaj´ıc´ım ID dle pˇredan´eho objektu. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • Objects.WorkerDetail FindWorker(Int32 workerID) vrac´ı detailn´ı informace o zamˇestnanci se zadan´ ym ID. Tuto metodu m˚ uˇze volat jak´ ykoliv uˇzivatel. • List FindWorkers(Int32 detachmentID) vrac´ı kolekci zamˇestnanc˚ u, kteˇr´ı spadaj´ı do oddˇelen´ı se zadan´ ym ID. Tuto metodu m˚ uˇze volat jak´ ykoliv uˇzivatel. Dostupn´ e metody pro pr´ aci se stavy zamˇ estnanc˚ u: • Int32 AddWorkerState(Objects.WorkerState workerState) zaloˇz´ı stav zamˇestnance dle pˇredan´eho objektu a vr´at´ı ID zaloˇzen´eho stavu. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • void DeleteWorkerState(Int32 workerStateID) smaˇze stav zamˇestnance se zadan´ ym ID. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • void UpdateWorkerState(Objects.WorkerState workerState) aktualizuje stav zamˇestnance s odpov´ıdaj´ıc´ım ID dle pˇredan´eho objektu. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • List GetWorkerStates() vrac´ı kolekci stav˚ u zamˇestnanc˚ u. Tuto metodu m˚ uˇze volat jak´ ykoliv uˇzivatel. Dostupn´ e metody pro pr´ aci s typy oprav: • Int32 AddWorkType(Objects.WorkType workType)zaloˇz´ı typ opravy dle pˇredan´eho objektu a vr´at´ı ID zaloˇzen´eho typu. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis.
ˇ 3.3. SLUZBY
45
• void DeleteWorkType(Int32 workTypeID)smaˇze typ opravy se zadan´ ym ID. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • void UpdateWorkType(Objects.WorkType workType)aktualizuje typ opravy s odpov´ıdaj´ıc´ım ID dle pˇredan´eho objektu. Tuto metodu mohou volat jen uˇzivatel´e s rol´ı Z´apis. • List GetWorkTypes()vrac´ı kolekci typ˚ u oprav. Tuto metodu m˚ uˇze volat jak´ ykoliv uˇzivatel.
ˇ SEN ˇ ´I KAPITOLA 3. POPIS RE
46
3.4
Klient
Klientsk´a aplikace je naprogramovan´a pomoc´ı technologie
WPF
1
.V´ıce in-
formac´ı o
WPF“ lze nal´ezt v knize ” [10] a materi´alech [11]. Pˇri implementaci klientsk´e aplikace jsem musel ˇcasto upravovat nˇekter´e ˇc´asti k´odu hlavnˇe z d˚ uvodu zjiˇstˇen´ı, ˇze m˚ uj zp˚ usob programov´an´ı nebyl zrovna ten spr´avn´ y, kter´ y se bˇeˇznˇe pouˇz´ıv´a. Jelikoˇz jsem chtˇel m´ıt aplikaci, kter´a bude jednoduˇse rozˇs´ıˇriteln´a, a tak´e abych se nauˇcil spr´avnˇe programovat, d´aval jsem na tyto vˇeci velk´ y d˚ uraz a tyto ˇc´ast´ı pˇrepisoval. Aby se aplikace pˇri prov´adˇen´ı nˇejak´eho dotazu na server nezasek´avala, tak veˇsker´a dotazov´an´ı se prov´adˇely asynchronnˇe. Prov´adˇen´ım
Obr´azek 3.1: N´avrhov´ y vzor MVVM
jak´ekoliv asynchronn´ı operace je uˇzivatel upozornˇen obrazovkou, kter´a se pˇrekresl´ı pˇres aktu´alnˇe otevˇren´e okno s n´apisem, ˇze program pracuje. Jako n´avrhov´ y vzor se pouˇzil MVVM“, kter´ y umoˇzn ˇuje oddˇelit logiku aplikace od jej´ıho vzhledu. Tento model se ” skl´ad´a ze tˇri ˇca´sti View“, Model“ a ViewModel“. View“ je grafick´e uˇzivatelsk´e roz” ” ” ” hran´ı. View“ se ve WPF“ p´ıˇse v jazyce XAML“, kter´ y je pro tento u ´ˇcel velmi dobˇre ” ” ” pˇrizp˚ usoben´ y. Model tvoˇr´ı konkr´etn´ı data, se kter´ ymi aplikace pracuje. V m´em pˇr´ıpadˇe jsou to sluˇzby, ke kter´ ym se aplikace pˇripojuje a ˇza´d´a, pˇr´ıpadnˇe odes´ıl´a data. Model by nemˇel nic vˇedˇet o View“. ViewModel“ je nejd˚ uleˇzitˇejˇs´ı ˇca´st´ı, jelikoˇz zprostˇredkov´av´a ” ” komunikaci mezi uˇzivatelsk´ ym rozhran´ım View“ a daty Modelem“. Pro sv´az´an´ı View” ” ” Modelu“ a View“ se pouˇz´ıv´a Binding“ a pomoc´ı Commandu“ je moˇzn´e z View“ ” ” ” ” vyvolat metodu ve ViewModelu“, kter´a se provede tˇreba pˇri stisku tlaˇc´ıtka. Dalˇs´ı infor” mace o n´avrhov´em vzoru MVVM“ se lze doˇc´ıst v knize [12]. ”
1
WPF (Windows Presentation Foundation) je podmnoˇzina .NET frameworku, kter´a pouˇz´ıv´a pro
definici vzhledu jazyk XAML [zaml].
3.4. KLIENT
3.4.1
47
Uˇ zivatelsk´ e rozhran´ı
Uˇzivatelsk´e rozhran´ı bylo ps´ano v jazyce, kter´ y se naz´ yv´a XAML 1 . Vˇse, co lze napsat v jazyce XAML“, lze napsat i v jazyce C#“ pˇr´ımo do k´odu. Umoˇzn ˇuje velmi rychle ” ” vytv´aˇret r˚ uznorodou a zaj´ımavou grafiku. V´ıce informac´ı o XAML“ se lze doˇc´ıst v knize ” [10]. N´avrh, kter´ y jsem vytvoˇril, je podobn´ y bˇeˇzn´ ym aplikac´ım. Veˇsker´e ikony kter´e zde byly pouˇzity, jsou urˇceny k pouˇzit´ı zdarma i pro komerˇcn´ı uˇzit´ı. Ikony pouˇzit´e v aplikaci byly staˇzen´ y ze str´anek [13]. Klient po pˇrihl´aˇsen´ı automaticky rozpozn´a uˇzivatelsk´a pr´ava a dle toho pˇrizp˚ usob´ı uˇzivatelsk´e rozhran´ı. Ikony se tak´e mˇen´ı dle toho, jak´a z´aloˇzka je moment´alnˇe vybr´ana. V aplikaci jsou smˇeny uchov´any v pˇrehledn´e stromov´e struktuˇre, jak je zobrazeno na obr´azku 3.2, kde dle data je moˇzn´e velmi rychle naj´ıt konkr´etn´ı smˇenu. Smˇeny mohou b´ yt jak noˇcn´ı tak i denn´ı, kde jejich druh zaznamen´av´a ikona ve smyslu slunce (denn´ı) nebo mˇes´ıce (noˇcn´ı). Napravo se pak objevuj´ı ve vybran´e z´aloˇzce z´aznamy vybran´e smˇeny.
Obr´ azek 3.2: Uˇzivatelsk´e rozhran´ı
1
XAML je znaˇckovac´ı jazyk podobn´ y HTML zaloˇzen´ y na XML, kter´ y je vyv´ıjen Microsoftem, a je
souˇc´ ast´ı .NET frameworku.
ˇ SEN ˇ ´I KAPITOLA 3. POPIS RE
48
3.4.2
Konfigurace klienta
Proto, aby klient mohl komunikovat se sluˇzbami, je tˇreba neimplementovat pro komunikaci s kaˇzdou sluˇzbou proxy tˇr´ıdu, kter´a funguje jako prostˇredn´ık mezi sluˇzbou a klientem. Proxy tˇr´ıdu m˚ uˇzeme bud’ napsat sami nebo si ji m˚ uˇzeme nechat vygenerovat z metadat. V m´em pˇr´ıpadˇe jsem pouˇzil pro vygenerovan´ı proxy tˇr´ıd Visual Studio 2012“, ” kde staˇc´ı nareferencovat sluˇzby a Visual Studio 2012“ uˇz s´am pomoc´ı metadat vygene” ruje jednotliv´e proxy tˇr´ıdy. Pˇritom se automaticky vygeneruje i konfigurace do souboru app.config, ve kter´em jsou nastaven´e jednotliv´e koncov´e body.
3.4.3
N´ apovˇ eda
N´apovˇedu pro klientskou aplikaci jsem vytv´aˇret pomoci programu HTML Help WorkShop“, ” kter´ y dok´aˇze z HTML“ str´anek vygenerovat soubor typu .chm“, kter´ y se standardnˇe ” ” ve windows pouˇz´ıv´a pro n´apovˇedu. N´astroj HTML Help WorkShop“ umoˇzn ˇuje vytv´aˇret ” stromovou strukturu pro prohl´ıˇzen´ı jednotliv´ ych souboru HTML“, tak´e se v nˇem d´a ” vytvoˇrit rejstˇr´ık a zapnout moˇznost pro vyhled´av´an´ı v cel´e n´apovˇedˇe. Jak pracovat s n´astrojem HTML Help WorkShop“ je velmi dobˇre pops´an v materi´alech [3]. N´apovˇedu ” lze spustit z klientsk´e aplikace pˇres nab´ıdku O aplikaci“ stisknut´ım poloˇzky N´apovˇeda“ ” ” v hlavn´ım menu.
3.4.4
Validace vstupu
Veˇsker´a zad´avac´ı pole se validuj´ı pomoc´ı Fluent Validation“. Fluent Validation“ ” ” je validaˇcn´ı knihovna nab´ızej´ıc´ı rozhran´ı pro plynulou validaci objekt˚ u pomoc´ı lambda v´ yrazu. Fluent Validation“ je pops´ana v materi´alech [14]. V projektu jsou vytvoˇreny pro ” vˇetˇsinu ViewModelu“ validaˇcn´ı tˇr´ıdy, kter´e dˇed´ı z generick´e validaˇcn´ı tˇr´ıdy Abstrac” ” tValidator“, kter´a umoˇzn ˇuje vyvolat validaci nad ViewModelem“. Kaˇzd´ y ViewModel“ ” ” dˇed´ı z BaseViewModelu“, kter´ y tak´e implementuje validaˇcn´ı rozhran´ı IDataErrorInfo“. ” ” Toto rozhran´ı umoˇzn ˇuje validovat konkr´etn´ı vlastnosti ViewModelu“, kter´e jsou nabain” dov´any ve View“. Pokud validace neprobˇehne u ´spˇeˇsnˇe nad nˇekterou z vlastnost´ı, kter´a je ” nabaindov´ana na ovl´adac´ı prvek, tak se zobraz´ı error template, kter´ y jsem si nadefinoval jako ˇcerven´ y r´ameˇcek kolem ovl´adac´ı kontrolky s popisem chyby v tooltypu.
3.4. KLIENT
3.4.5
49
Instalace klienta
Klientsk´a aplikace je publikovan´a pomoc´ı technologie ClickOnce“ jako webov´a sluˇzba ” na serveru, kter´a je hostovan´a na IIS 7“. Z tohoto webu je moˇzn´e si nainstalovat klient” skou aplikaci po stisknut´ı tlaˇc´ıtka Install“. Instal´ator s´am rozpozn´a potˇrebu instalace ” Net frameworku“ a nainstaluje ji dle potˇreby. Teprve pot´e se nainstaluje klientsk´a apli” kace. Po kaˇzd´em spuˇstˇen´ı klientsk´e aplikace se zkontroluje, zda nen´ı na serveru nov´a verze. Pokud ano, nab´ıdne se uˇzivateli k instalaci. V´ıce informac´ı o ClickOnce“ se nal´ez´a ” v materi´alech [15].
3.4.6
Odinstalace klienta
Klientskou aplikaci je moˇzn´e odinstalovat jako kaˇzdou jinou aplikaci ve windows. Pokud v pr˚ ubˇehu provozu klientsk´e aplikace byly nainstalov´any nov´e verze, je moˇzn´e se pˇri odinstalov´an´ı vr´atit ke starˇs´ım verz´ım programu. Tato volba se zobraz´ı pˇri odinstalov´an´ı klientsk´e aplikace.
3.4.7
Verzov´ an´ı klientsk´ e aplikace
Jak jiˇz bylo zm´ınˇeno v´ yˇse, technologie ClickOnce“ umoˇzn ˇuje verzovat publikovan´ y ” software. T´ım p´adem je moˇzn´e si nastavit automatick´e zv´ yˇsen´ı ˇc´ısla verze po kaˇzd´e publikaci softwaru. Takto publikovan´ y software si vytv´aˇr´ı pro kaˇzdou verzi novou sloˇzku, do kter´e se tato verze uloˇz´ı.
ˇ SEN ˇ ´I KAPITOLA 3. POPIS RE
50
3.5
Datov´ y model datab´ aze
Datab´aze je navrˇzen´a v technologii MS SQL“ obsahuj´ıc´ı 14 tabulek. K datab´azi se ” nepˇristupuje pˇr´ımo ale pomoci EntityFramework“-u, kter´ y namapuje tabulky na objekty. ” To znamen´a, ˇze se d´a pˇristupovat k jednotliv´ ym tabulk´am jako ke generick´ ym kolekc´ım a ˇze se d´a pˇristupovat k jednotliv´ ym ˇr´adk˚ um jako k jednotliv´ ym objekt˚ um dan´e tabulky, kde kaˇzd´ y objekt m´a vlastnosti, kter´e jsou ekvivalentem k atribut˚ um tabulky. Cel´ y model datab´aze je moˇzn´e vidˇet na obr´azku 3.3. V´ıce informac´ı o datab´azi MS SQL“ se lze doˇc´ıst ” v materi´alech [16].
Obr´ azek 3.3: Datov´ y model datab´aze
´ MODEL DATABAZE ´ 3.5. DATOVY
3.5.1
51
Atributy datov´ eho modelu datab´ aze
Jednotliv´e sloupce v tabulk´ach maj´ı v´ yznamy popsan´e n´ıˇze: • Kliˇ c – PK urˇcuje, ˇze se jedn´a o prim´arn´ı kl´ıˇc. FK znaˇc´ı, ˇze se jedn´a o ciz´ı kl´ıˇc. PFK znaˇc´ı, ˇze se jedn´a o prim´arn´ı ciz´ı kl´ıˇc. • N´ azev – urˇcuje n´azev sloupce v tabulce. • Typ – urˇcuje datov´ y typ sloupce. • Not null – Hodnota ano znaˇc´ı, ˇze sloupec mus´ı obsahovat hodnotu, a hodnota ne znaˇc´ı, ˇze sloupec nemus´ı obsahovat hodnotu. • Unik´ atn´ı – Hodnota ano znaˇc´ı, ˇze sloupec mus´ı obsahovat unik´atn´ı data, a hodnota ne znaˇc´ı, ˇze se ve sloupci mohou objevovat stejn´a data. Sloupce oznaˇcen´e jako AnoS oznaˇcuj´ı skuteˇcnost, ˇze kombinace u ´daj˚ u v tˇechto sloupc´ıch mus´ı b´ yt unik´atn´ı. • Autoinkrementace – Honota ano znaˇc´ı, ˇze se automaticky generuje kl´ıˇc sloupce pˇri kaˇzd´em pˇrid´an´ı z´aznamu. • Koment´ aˇ r – pˇr´ıklad toho, co se d´a do konkretn´ıho sloupce vloˇzit.
3.5.2
Tabulka Attendances
Tabulka Attendances“ obsahuje veˇsker´e udaje o doch´azce, prim´arn´ım kl´ıˇcem je zde ” kombinace atributu AttendanceWorkerID“, kter´ y urˇcuje id zamˇestnance, a atributu ” AttendanceDateID“, kter´ y urˇcuje id smˇeny. T´ım je zaruˇceno, ˇze zamˇestnanec m˚ uˇze ” b´ yt zaˇrazen do doch´azky smˇeny jen jednou. Atributem AttendanceDateID“ se urˇcuje ” smˇena, pro kterou je urˇcen z´aznam o doch´azce. Zamˇestnanec, kter´ y patˇr´ı do z´aznamu, je urˇcen atributem AttendanceWorkerID“. Stav zamˇestnance v doch´azce se urˇcuje atri” butem AttendanceWorkerStateID“ a turnus atributem AttendanceWorkerTourID“. Do ” ” posledn´ıho atributu AttendanceDescription“ je moˇzn´e uloˇzit dodateˇcnou informaci. ” Kliˇ c
N´ azev
Typ
Not null
Unik´ atn´ ı
Autoinkrementace
PFK
AttendanceDateID
bigint
ANO
ANOS
NE
PFK
AttendanceWorkerID
int
ANO
ANOS
NE
FK
AttendanceWorkerStateID
int
ANO
NE
NE
FK
AttendanceWorkerTourID
int
ANO
NE
NE
AttendanceDescription
nvarchar(MAX)
NE
NE
NE
Tabulka 3.1: Attendances
Koment´ aˇ r
1/2 dne dovolena
ˇ SEN ˇ ´I KAPITOLA 3. POPIS RE
52
3.5.3
Tabulka Dates
Tabulka Dates“ obsahuje veˇsker´e informace o smˇen´ach. Datum smˇeny se ukl´ad´a do ” sloupce DateDate“, sloupec DateIsNight“ urˇcuje, o jakou smˇenu se jedn´a. Pokud je ” ” hodnota sloupce DateIsNight“ true, tak se jedn´a o noˇcn´ı smˇenu, jinak se jedn´a o denn´ı ” smˇenu. Tak´e je moˇzn´e do sloupce DateDescription“ vloˇzit dodateˇcn´e informace o smˇenˇe, ” napˇr´ıklad zda se jedn´a o smˇenu, kter´a se vykon´av´a ve sv´atek. Kliˇ c
N´ azev
Typ
Not null
Unik´ atn´ ı
Autoinkrementace
PK
DateID
bigint
ANO
ANO
ANO
Koment´ aˇ r
DateDate
date
ANO
ANOS
NE
12.12.2012
DateIsNight
bit
ANO
ANOS
NE
false
DateDescription
nvarchar(MAX)
NE
NE
NE
Sv´ atek
Tabulka 3.2: Dates
3.5.4
Tabulka Detachments
Tabulka Detachments“ udrˇzuje veˇsker´e informace o jednotliv´ ych oddˇelen´ıch, kde se ” jm´ena oddˇelen´ı ukl´adaj´ı do sloupce DetachmentName“. Do sloupce DetachmentDe” ” scriptor“ je moˇzn´e vloˇzit dodateˇcnou informaci o oddˇelen´ı. Kliˇ c
N´ azev
Typ
Not null
Unik´ atn´ ı
Autoinkrementace
PK
DetachmentID
int
ANO
ANO
ANO
Koment´ aˇ r
DetachmentName
nvarchar(50)
ANO
ANO
NE
Zkuˇ sebna
DetachmentDescription
nvarchar(MAX)
NE
NE
NE
Praha 4, Chodovsk´ a 35
Tabulka 3.3: Detachments
3.5.5
Tabulka Changeovers
Tabulka Changeovers“ udrˇzuje informace o pˇred´avan´e pr´aci, kter´a se v dan´e smˇenˇe ” nestihla vykonat. Atribut ChangeoverDateID“ urˇcuje, v jak´e smˇenˇe byl z´aznam o pˇred´avce ” vytvoˇren. Atribut ChangeoverVehicleID“ urˇcuje vozidlo, o kter´e se jedn´a, atributem ” ChangeoverWorkTypeID“ se urˇcuje, o jak´ y typ z´avady se jedn´a, a atribut Changeover” ” DetachmentID“ urˇcuje, k jak´emu oddˇelen´ı z´aznam patˇr´ı. Pro popis z´avady slouˇz´ı atribut ChangeoverDescription“. ”
´ MODEL DATABAZE ´ 3.5. DATOVY
53
Kliˇ c
N´ azev
Typ
Not null
Unik´ atn´ ı
Autoinkrementace
PK
ChangeoverID
int
ANO
ANO
ANO
FK
ChangeoverDateID
bigint
ANO
NE
NE
FK
ChangeoverVehicleID
int
ANO
NE
NE
FK
ChangeoverWorkTypeID
int
ANO
NE
NE
FK
ChangeoverDetachmentID
int
ANO
NE
NE
ChangeoverDescription
nvarchar(MAX)
ANO
NE
NE
Koment´ aˇ r
Nastavit tachometr
Tabulka 3.4: Changeovers
3.5.6
Tabulka Roles
Tabulka Roles“ obsahuje seznam dostupn´ ych rol´ı pro uˇzivatel´e. Tato tabulka slouˇz´ı ” pro autorizaˇcn´ı u ´ˇcely uˇzivatelsk´ ych u ´ˇct˚ u. Role jsou jiˇz na zaˇca´tku pˇresnˇe d´any a z klientsk´e ˇcasti je nen´ı moˇzn´e mˇenit. Kaˇzd´a role umoˇzn ˇuje spouˇstˇet r˚ uzn´e operace na stranˇe sluˇzeb. Do sloupce RoleName“ se vkl´ad´a jm´eno role a do sloupce RoleDescription“ je moˇzn´e ” ” vloˇzit popis t´eto role. Kliˇ c
N´ azev
Typ
Not null
Unik´ atn´ ı
Autoinkrementace
PK
RoleID
int
ANO
ANO
ANO
Koment´ aˇ r
RoleName
nvarchar(30)
ANO
ANO
NE
Admin
RoleDescription
nvarchar(MAX)
NE
NE
NE
Pr´ ava pro u ´ˇ cty
Tabulka 3.5: Roles
3.5.7
Tabulka Tours
Tabulka Tours“ obsahuje seznam turnus˚ u. Do tˇechto turnus˚ u pak mohou b´ yt zaˇrazeny ” jednotliv´ı zamˇestnanci. Sloupec TourStartTime“ urˇcuje zaˇca´tek pracovn´ı doby a slou” pec TourEndTime“ urˇcuje konec pracovn´ı doby. Do sloupce TourDescription“ je moˇzn´e ” ” vloˇzit informaci o turnusu. Kliˇ c
N´ azev
Typ
Not null
Unik´ atn´ ı
Autoinkrementace
PK
TourID
int
ANO
ANO
ANO
Koment´ aˇ r
TourStartTime
time(0)
ANO
ANOS
NE
06:15:00
TourEndTime
time(0)
ANO
ANOS
NE
18:15:00
TourDescription
nvarchar(MAX)
NE
NE
NE
Noˇ cn´ı smˇ ena
Tabulka 3.6: Tours
3.5.8
Tabulka UserInRole
Tabulka UserInRole“ je vazebn´ı tabulkou, kter´a je urˇcen´a pro vztah m:n tabulek ” Users“ a Roles“. Definuje, ˇze kaˇzd´emu uˇzivateli je moˇzn´e pˇriˇradit v´ıce rol´ı a v konkr´etn´ı ” ”
ˇ SEN ˇ ´I KAPITOLA 3. POPIS RE
54 roli m˚ uˇze b´ yt obsaˇzeno v´ıce uˇzivatel˚ u. Kliˇ c
N´ azev
Typ
Not null
Unik´ atn´ ı
Autoinkrementace
PFK
UserInRoleRoleID
int
ANO
ANOS
NE
PFK
UserInRoleUserID
int
ANO
ANOS
NE
Koment´ aˇ r
Tabulka 3.7: UserInRole
3.5.9
Tabulka Users
Tabulka Users“ obsahuje informace o uˇzivatelsk´ ych u ´ˇctech. Pomoc´ı atributu UserWor” ” kerID“ je moˇzn´e k uˇzivatelsk´emu u ´ˇctu pˇridruˇzit konkr´etn´ıho zamˇestnance. Tato vazba umoˇzn ˇuje automaticky smazat pˇridruˇzen´ y uˇzivatelsk´ yu ´ˇcet, pokud se z datab´aze smaˇze zamˇestnanec, se kter´ ym je tento u ´ˇcet sv´az´an. Atribut UserDetachmentID“ urˇcuje, do ” jak´eho oddˇelen´ı je uˇzivatelsk´ yu ´ˇcet pˇridruˇzen. T´ım je zajiˇstˇeno, ˇze uˇzivatel m˚ uˇze manipulovat s daty jen v oddˇelen´ı, do kter´eho je zaˇrazen. Ve sloupci UserName“ je uloˇzeno ” uˇzivatelsk´e jm´eno, ve sloupci UserPassword“ je uloˇzeno heslo ve tvaru hashe a do sloupce ” UserDescription“ je moˇzn´e doplnit dodateˇcn´e informace. ” Kliˇ c
N´ azev
Typ
PK
UserID
int
Not null
Unik´ atn´ ı
Autoinkrementace
ANO
ANO
ANO
FK
UserWorkerID
FK
UserDetachmentID
int
NE
NE
NE
int
ANO
NE
NE
UserName
nvarchar(30)
ANO
ANO
NE
UserPassword
nvarchar(MAX)
ANO
NE
NE
UserDescription
nvarchar(MAX)
NE
NE
NE
Koment´ aˇ r
User ´ cet pro zamˇ Uˇ estnance
Tabulka 3.8: Users
3.5.10
Tabulka Vehicles
Tabulka Vehicles“ obsahuje veˇsker´e informace o vozidlech. Identifikace vozidla se ” vkl´ad´a do sloupce VehicleNumber“ a veˇsker´e dalˇs´ı informace o vozidlech se ukl´adaj´ı do ” sloupce VehicleDescription“. ” Kliˇ c
N´ azev
Typ
Not null
Unik´ atn´ ı
Autoinkrementace
PK
VehicleID
int
ANO
ANO
ANO
VehicleNumber
nvarchar(20)
ANO
ANO
NE
471001
VehicleDescription
nvarchar(MAX)
NE
NE
NE
Chyby telerail
Tabulka 3.9: Vehicles
Koment´ aˇ r
´ MODEL DATABAZE ´ 3.5. DATOVY
3.5.11
55
Tabulka WorkerInTour
Tabulka WorkerInTour“ je vazebn´ı tabulkou, kter´a je urˇcen´a pro vztah m:n tabu” lek Workers“ a Tours“. Definuje, ˇze kaˇzd´ y zamˇestnanec muˇze pracovat v rozd´ıln´ ych ” ” turnusech a ˇze pod konkr´etn´ım turnusem m˚ uˇze pracovat v´ıce zamˇestnanc˚ u. Kliˇ c
N´ azev
Typ
Not null
Unik´ atn´ ı
Autoinkrementace
PFK
WorkerInTourWorkerID
int
ANO
ANOS
NE
PFK
WorkerInTourTourID
int
ANO
ANOS
NE
Koment´ aˇ r
Tabulka 3.10: WorkerInTour
3.5.12
Tabulka Workers
Tabulka Workers“ obsahuje informace o zamˇestnanc´ıch. Atribut WorkerDetachmen” ” tID“ urˇcuje, do jak´eho oddˇelen´ı zamˇestnanec patˇr´ı. Jm´eno zamˇestnance se ukl´ad´a do atributu WorkerFirstName“ a jeho pˇr´ıjmen´ı se ukl´ad´a do atributu WorkerLastName“. Atri” ” but WorkerServiceNumber“ urˇcuje osobn´ı ˇc´ıslo zamˇestnance, atribut WorkerSapNum” ” ber“ urˇcuje identifikaˇcn´ı ˇc´ıslo zamˇestnance. Jako voliteln´e u ´daje je moˇzn´e vloˇzit sluˇzebn´ı email do sloupce WorkerServiceEmail“, soukrom´ y email do sloupce WorkerPersona” ” lEmail“, sluˇzebn´ı telefonn´ı ˇc´ıslo do sloupce WorkerServicePhone“, soukrom´e ˇc´ıslo do ” sloupce WorkerPersonalPhone“ a pro dodateˇcnou informac´ı slouˇz´ı sloupec WorkerDe” ” scription“. Atribut WorkerPhoto“ slouˇz´ı pro vloˇzen´ı obr´azku zamˇestnance. ” Kliˇ c
N´ azev
Typ
Not null
Unik´ atn´ ı
Autoinkrementace
PK
WorkerID
int
ANO
ANO
ANO
Koment´ aˇ r
FK
WorkerDetachmentID
int
ANO
NE
NE
WorkerFirstName
nvarchar(20)
ANO
NE
NE
Armen
WorkerLastName
nvarchar(30)
ANO
NE
NE
Hajrapetjan
WorkerServiceNumber
nvarchar(20)
ANO
ANO
NE
752220
WorkerSapNumber
nvarchar(20)
ANO
ANO
NE
300600
WorkerServiceEmail
nvarchar(50)
NE
NE
NE
[email protected]
WorkerPersonalEmail
nvarchar(50)
NE
NE
NE
[email protected]
WorkerServicePhone
nvarchar(20)
NE
NE
NE
+420725082207
WorkerPersonalPhone
nvarchar(20)
NE
NE
NE
+420725055455
WorkerDescription
nvarchar(MAX)
NE
NE
NE
Mistr
WorkerPhoto
image
NE
NE
NE
Tabulka 3.11: Workers
3.5.13
Tabulka WorkerStates
Tabulka WorkerStates“ obsahuje seznam stav˚ u zamˇestnanc˚ u. Tyto u ´daje slouˇz´ı pro ” urˇcen´ı stavu zamˇestnance pˇri tvorbˇe doch´azky, kde se urˇcuje, zda je zamˇestnanec pˇr´ıtomen,
ˇ SEN ˇ ´I KAPITOLA 3. POPIS RE
56
nepˇr´ıtomen, nemocen atd.. Sloupcem WorkerStateName“ se definuje stav zamˇestnance ” a do sloupce WorkerStateDescription“ se d´a vloˇzit dodateˇcn´a informace. ” Kliˇ c
N´ azev
Typ
Not null
Unik´ atn´ ı
Autoinkrementace
PK
WorkerStateID
int
ANO
ANO
ANO
WorkerStateName
nvarchar(30)
ANO
ANO
NE
WorkerStateDescription
nvarchar(MAX)
NE
NE
NE
Koment´ aˇ r
Pˇ r´ıtomen
Tabulka 3.12: WorkerStates
3.5.14
Tabulka Works
Tabulka Works“ obsahuje z´aznamy vˇsech vykonan´ ych pr´ac´ı. Atribut WorkDateID“ ” ” urˇcuje, do jak´e smˇeny patˇr´ı z´aznam o vykonan´e pr´aci. Atribut WorkVehicleID“ urˇcuje, ” o jak´e vozidlo se jedn´a. Atributem WorkWorkTypeID“ se urˇcuje, o jak´ y typ z´avady se ” jedn´a, a atribut WorkDetachmentID“ urˇcuje, ke kter´emu oddˇelen´ı z´aznam patˇr´ı. Pro ” popis z´avady slouˇz´ı atribut WorkFaultDescription“ a pro popis zp˚ usobu opravy slouˇz´ı ” atribut WorkCauseDescription“. ” Kliˇ c
N´ azev
Typ
Not null
Unik´ atn´ ı
Autoinkrementace
PK
WorkID
bigint
ANO
ANO
ANO
Koment´ aˇ r
FK
WorkDateID
bigint
ANO
NE
NE
FK
WorkVehicleID
int
ANO
NE
NE
FK
WorkWorkTypeID
int
ANO
NE
NE
FK
WorkDetachmentID
int
ANO
NE
NE
WorkFaultDescription
nvarchar(MAX)
ANO
NE
NE
Nesv´ıt´ı reflektor
WorkCauseDescription
nvarchar(MAX)
NE
NE
NE
V´ ymˇ ena lampy
Tabulka 3.13: Works
3.5.15
Tabulka WorkTypes
Tabulka WorkTypes“ obsahuje seznam typ˚ u prac´ı. Tyto udaje slouˇz´ı pro urˇcen´ı typu ” pr´ace pˇri zakl´ad´an´ı vykonan´e pr´ace, kde se urˇcuje, zda byla pr´ace vykon´ana nepl´anovanˇe, pl´anovanˇe, telefonicky atd.. Sloupcem WorkTypeName“ se definuje typ pr´ace a do ” sloupce WorkTypeDescription“ se d´a vloˇzit dodateˇcn´a informace. ” Kliˇ c
N´ azev
Typ
Not null
Unik´ atn´ ı
Autoinkrementace
PK
WorkTypeID
int
ANO
ANO
ANO
WorkTypeName
nvarchar(30)
ANO
ANO
NE
E0
WorkTypeDescription
nvarchar(MAX)
NE
NE
NE
Technick´ a kontrola
Tabulka 3.14: WorkTypes
Koment´ aˇ r
ˇ ´I ZAMESTNANC ˇ ˚ 3.6. SKOLEN U
3.6
57
ˇ Skolen´ ı zamˇ estnanc˚ u
Pro zamˇestnance, kteˇr´ı budou pouˇz´ıvat tento informaˇcn´ı syst´em, bylo provedeno ˇskolen´ı v pouˇz´ıv´an´ı tohoto informaˇcn´ıho syst´emu. Na ˇskolen´ı byly zamˇestnanc˚ um zaloˇzeny uˇzivatelsk´e u ´ˇcty. Byla jim pˇredstavena struktura cel´eho syst´emu. Zamˇestnanci se nauˇcili, jak klienta nainstalovat, jak se pˇrihl´asit do syst´emu a jak si zmˇenit heslo. Nauˇcili se vytv´aˇret a upravovat z´aznamy o vozidlech, oddˇelen´ıch, typech oprav, zamˇestnanc´ıch, turnusech a statusech zamˇestnanc˚ u. Nauˇcili se vytv´aˇret smˇeny, pˇrid´avat a odeb´ırat z´aznamy pr´ace a doch´azky do smˇeny. Tak´e se dozvˇedˇeli, jak vytv´aˇret pˇred´avku a jak je pˇresouvat do vykonan´e pr´ace. Bylo jim uk´az´ano, jak pracovat s vyhled´av´an´ım z´aznam˚ u a zobrazen´ı jejich detail˚ u. Dalˇs´ı ˇca´st´ı ˇskolen´ı byla spr´ava uˇzivatelsk´ ych u ´ˇct˚ u a tisk, kde jim bylo uk´az´ano, jak vytisknout smˇenu a jak vytv´aˇret a upravovat uˇzivatelsk´e u ´ˇcty. Cel´e ˇskolen´ı ˇ ˇ bylo provedeno v praktick´em pojet´ı. Skolen´ ı prob´ıhalo v prostor´ach CD.
58
ˇ SEN ˇ ´I KAPITOLA 3. POPIS RE
Kapitola 4 Testy 4.1
Testov´ an´ı bˇ ehem v´ yvoje
Bˇehem v´ yvoje a pˇri psan´ı jednotliv´ ych funkcionalit jsem osobnˇe zkouˇsel funkˇcnost vytvoˇren´eho informaˇcn´ıho syst´emu. Funkce napsan´e na stranˇe sluˇzeb jsem zkouˇsel pomoc´ı n´astroje WCF Test Client“ [17], kter´ y je integrov´an do Visual Studia 2012“. Pomoc´ı ” ” tohoto n´astroje je moˇzn´e volat jednotliv´e metody sluˇzeb a t´ım je testovat aniˇz by bylo tˇreba ps´at vlastn´ı klientskou aplikaci. Co se t´ yˇce testov´an´ı klientsk´e aplikace, tak i tu jsem bˇehem v´ yvoje testoval a to jiˇz pomoc´ı navrˇzen´eho uˇzivatelsk´eho rozhran´ı, se kter´ ym je funkˇcn´ı ˇca´st sv´az´ana.
4.2
Funkˇ cn´ı test
Funkˇcn´ım testem se ovˇeˇrovala spr´avn´a funkce implementovan´eho syst´emu, tedy zda splˇ nuje veˇsker´e poˇzadavky, pro kter´e byla navrˇzena. V tomto testu se obecnˇe testovala veˇsker´a napsan´a funkcionalita, zda spr´avnˇe funguje a zda splˇ nuje poˇzadavky zamˇestnanc˚ u. Ve zkuˇsebn´ım provozu syst´emu sami zamˇestnanci zkouˇseli veˇskerou funkcionalitu syst´emu a zkouˇseli, zda veˇsker´a funkcionalita, kter´a byla uvedena v zad´an´ı, je funkˇcn´ı. Co se t´ yˇce tohoto testu, tak provoz probˇehl bez jak´ ychkoliv probl´em˚ u.
59
60
KAPITOLA 4. TESTY
4.3
Testy sluˇ zeb
Pro otestov´an´ı sluˇzeb byly navrˇzeny unit testy, kter´e otestovaly kaˇzdou metodu sluˇzby. V´ ysledky test˚ u jsou zobrazeny na obr´azku 4.1 i s dobou jejich trv´an´ı. V´ıce informac´ı o Unit Testech“ se lze doˇc´ıst v materi´alech [18]. ”
Obr´ azek 4.1: V´ ysledky testu sluˇzeb s dobou jejich trv´an´ı
• Sluˇzba DataService se testovala nad z´akladn´ımi operacemi CRUD
1
.
• Sluˇzba SecurityService byla t´eˇz testov´ana nad operacemi CRUD a tak´e funkc´ı pro resetov´an´ı hesla. • Sluˇzba FullTextService byla testov´ana na vyhled´avan´ı z´aznamu jak pomoc´ı parametru tak i pomoc´ı v´ yrazu.
1
CRUD (create, read, update, delete) je zkratkou pro z´akladn´ı operace nad daty. Kaˇzd´e p´ısmeno
znamen´ a jednu operaci C (create – zaloˇzen´ı), R (read – ˇcten´ı), U (update – editace), D (delete- maz´an´ı).
ˇ ´ 4.4. TESTY UZIVATELSK EHO ROZHRAN´I
4.4
61
Testy uˇ zivatelsk´ eho rozhran´ı
Pro testov´ani uˇzivatelsk´eho rozhran´ı jsem pouˇzil Coded UI Test, kter´ y je automatizovan´ ym testem zahrnuj´ıc´ım i funkˇcn´ı testy ovl´adac´ıch prvk˚ u. Tento zp˚ usob testov´an´ı umoˇzn ˇuje potvrdit, ˇze cel´a aplikace funguje tak, jak m´a i s uˇzivatelsk´ ym rozhran´ım. V tomto testu v podstatˇe staˇc´ı naklikat postup pr´ace s aplikac´ı, kter´ y se postupnˇe nahr´av´a, a pot´e zvolit, zda chceme z tohoto postupu vygenerovat testovac´ı metodu, kterou pot´e m˚ uˇzeme spustit, a postup zopakovat. Jak vytv´aˇret Coded UI Testy“ se lze doˇc´ıst v ma” teri´alech [19]. V klientsk´e aplikaci se testovaly jednotliv´e obrazovky, kde se kontrolovala funkˇcnost jednotliv´ ych komponent. V´ ysledky test˚ u je moˇzn´e vidˇet na obr´azku 4.2 i s dobou jejich trv´an´ı.
Obr´ azek 4.2: V´ ysledky test˚ u uˇzivatelsk´eho rozhran´ı s dobou jejich trv´an´ı
4.5
Pilotn´ı test
Po dokonˇcen´ı implementace projektu byl cel´ y syst´em nasazen do zkuˇsebn´ıho provozu v re´aln´em prostˇred´ı pro vyzkouˇsen´ı spolehlivosti a funkˇcnosti syst´emu jako celku. Syst´em bˇeˇz´ı v tomto zkuˇsebn´ım provozu jiˇz nˇekolik mˇes´ıc˚ u a zat´ım nebyl objeven ˇza´dn´ y probl´em. Zkuˇsebn´ı provoz zat´ım nebyl ukonˇcen z d˚ uvodu hled´an´ı prostˇredk˚ u pro z´alohov´an´ı datab´aze pro zajiˇstˇen´ı vyˇsˇs´ı bezpeˇcnosti uloˇzen´ ych dat.
62
KAPITOLA 4. TESTY
Kapitola 5 Z´ avˇ er Pˇri n´avrhu t´eto pr´ace jsem v prvn´ı f´azi zjiˇst’oval, zda o syst´em jev´ı z´ajem vˇetˇsina zamˇestnanc˚ u, kteˇr´ı by jej mˇeli vyuˇz´ıvat. Zjiˇstˇen´ı z´ajmu bylo provedeno formou ankety, kde se kaˇzd´ y zamˇestnanec mohl svobodnˇe rozhodnout, zda o tento syst´em jev´ı z´ajem, ˇci nikoliv. Dalˇs´ım krokem bylo seps´an´ı poˇzadavk˚ u na syst´em, vytvoˇren´ı n´avrh˚ u datov´ ych model˚ u sluˇzeb, klientsk´e aplikace a datab´azov´eho modelu. Tak´e jsem pˇripravil UML diagram aktivit, kter´e popisuj´ı manipulaci se syst´emem. Po dokonˇcen´ı anal´ yzy cel´eho syst´emu jsem zaˇcal s implementaˇcn´ı ˇca´st´ı, bˇehem n´ıˇz jsem jednotliv´e ˇc´asti k´odu pokryl unit testy pro kontrolu jejich pln´e funkˇcnosti. Po dokonˇcen´ı implementace byla provedena ˇrada test˚ u, kter´e mˇely zaruˇcit bezchybn´e chov´an´ı cel´eho syst´emu jako celku. Cel´ y informaˇcn´ı syst´em byl po navrˇzen´ı a realizaci nasazen v depu kolejov´ ych vozidel a spuˇstˇen do zkuˇsebn´ıho provozu. V tomto zkuˇsebn´ım provozu se testovala jej´ı funkˇcnost v re´aln´em prostˇred´ı a zjiˇst’ovaly se potˇrebn´e u ´pravy a doplnˇen´ı funkcionality do syst´emu. Tento syst´em po nasazen´ı zefektivnil pracovn´ı proces d´ıky rozmanit´emu a rychl´emu vyhled´av´an´ı z´aznam˚ u s moˇznost´ı zjiˇstˇen´ı popisu z´avady a zp˚ usobu jej´ı opravy. Tak´e sn´ıˇzil z´atˇeˇz na zamˇestnance neust´al´ ym obvol´av´an´ım a zjiˇst’ov´an´ım stavu vykonan´ ych prac´ı. Co se t´ yˇce tohoto projektu, neskonˇcilo to jen zhotoven´ım t´eto diplomov´e pr´ace, ale poˇra´d se tento syst´em rozˇsiˇruje o nov´e funkce.
63
´ ER ˇ KAPITOLA 5. ZAV
64
Z m´eho hlediska mˇe velice tˇeˇs´ı, ˇze pr´ace, kterou jsem vykonal v re´aln´e praxi, funguje a umoˇzn ˇuje ulehˇcit pr´aci jin´ ym lidem. Tak´e jsem se mnoh´emu nauˇcil pˇri programov´an´ı t´eto pr´ace (n´avrhov´e vzory a r˚ uzn´e technologie jak´ ymi jsou WPF, WCF). Tak´e jsem se nauˇcil pracovat s relaˇcn´ı datab´az´ı MSSQL a s IIS 7.
Literatura [1] Sky Drive: http://windows.microsoft.com/cs-cz/onedrive/onedrive-help#onedrive= windows-8 [2] SelfCert: Create a Self-Signed Certificate: http://blog.pluralsight.com/selfcert-create-a-self-signedcertificate-interactively-gui-or-programmatically-in-net ´ : HTML HELP a jeho zaˇclenˇen´ı do Visual FoxPro 2006. [3] Rudolf Jalovecky [4] Secure Hash Algorithm: http://cs.wikipedia.org/wiki/Secure_Hash_Algorithm [5] Message-Digest algorithm: http://cs.wikipedia.org/wiki/Message-Digest_algorithm [6] Pablo Cibraro and Kurt Claeys: Professional WCF 4 : Windows Communication Fundation with .NET 4. Wiley Publishing 2010. [7] Unit Of Work Pattern: http://voho.cz/wiki/informatika/oop/navrhovy-vzor/unit-of-work http://blog.netcorex.cz/tag/unitofwork/ http://www.codeproject.com/Articles/581487/Unit-of-Work-DesignPattern http://msdn.microsoft.com/en-us/magazine/dd882510.aspx [8] Generic Repository Pattern: http://www.tugberkugurlu.com/archive/generic-repository-patternentity-framework-asp-net-mvc-and-unit-testing-triangle [9] Julia Lerman: Programming Entity Framework. O’Reilly Media 20120 65
66
LITERATURA
[10] Charles Petzold: Mistrovstv´ı ve Windows Presentation Fundation. COMPUTER PRESS 2008. [11] Windows Presentation Fundation: http://msdn.microsoft.com/en-us/library/ms754130.aspx [12] Ryan Vice and Muhammad Shujaat Siddiqi: MVVM Survival Guide for Enterprise Architectures in Silverlight and WPF. Packt Publishing 2012 [13] Ikony: https://www.iconfinder.com/ http://thenounproject.com/ [14] Fluent Validation Framework: http://fluentvalidation.codeplex.com/wikipage?title= Validators&referringTitle=Documentation&ANCHOR#NotEmpty [15] ClickOnce Security and Deployment: http://msdn.microsoft.com/cs-cz/library/t71a733d.aspx [16] MS SQL: http://www.dotnetportal.cz/clanek/140/Seznameni-a-instalaceMicrosoft-SQL-Serveru http://www.dotnetportal.cz/clanek/141/Sprava-sluzeb-a-komponentMicrosoft-SQL-Serveru http://www.dotnetportal.cz/clanek/142/Prvni-kroky-s-databazi http://www.dotnetportal.cz/clanek/143/Fyzicke-soubory-databazedatove-soubory-a-transakcni-log http://www.dotnetportal.cz/clanek/145/Tabulky http://www.dotnetportal.cz/clanek/149/Datove-typy [17] WCF Test Client: http://msdn.microsoft.com/cs-cz/library/bb552364(v=vs.110).aspx [18] Verifying Code by Using Unit Tests: http://msdn.microsoft.com/en-us/library/dd264975.aspx [19] Verifying Code by Using UI Automation: http://msdn.microsoft.com/en-us/library/dd286726.aspx
Sezn´ am pˇ r´ıloh • Pˇr´ıloha A obsahuje soupis poˇzadavku. • Pˇr´ıloha B obsahuje Origin´al ankety a sezn´am zamˇestnanc˚ u pˇr´ıtomn´ ych na ˇskolen´ı. • Pˇr´ıloha C obsahuje obsah pˇriloˇzen´eho CD. • Pˇr´ıloha D obsahuje technickou dokumentaci klientsk´e aplikace. Tato pˇr´ıloha je obsaˇzena na CD. • Pˇr´ıloha E obsahuje technickou dokumentaci serveru. Tato pˇr´ıloha je obsaˇzena na CD. • Pˇr´ıloha F obsahuje uˇzivatelskou dokumentaci k syst´emu. Tato pˇr´ıloha je obsaˇzen´a na CD.
I
II
LITERATURA
Pˇ r´ıloha A Soupis poˇ zadavku • Syst´em mus´ı b´ yt lehce ovladateln´ y, jelikoˇz tento software budou pouˇz´ıvat i starˇs´ı generace, pro kter´e je pr´ace s poˇc´ıtaˇcem mnohem obt´ıˇznˇejˇs´ı. Z tohoto d˚ uvodu by mˇel syst´em umoˇzn ˇovat v´ ybˇer z´aznam˚ u ze statisticky nejbˇeˇznˇejˇs´ıch z´avad a oprav, kter´e se budou generovat pˇri kaˇzd´em spuˇstˇen´ı klienta. • Syst´em mus´ı umoˇzn ˇovat vyhled´av´an´ı z´aznamu s moˇznost´ı zobrazen´ı detailu konkr´etn´ıho z´aznamu, ve kter´em budou zobrazeny pˇrehlednˇe informace o vozidlu, smˇenˇe, typu opravy, z´avadˇe, zp˚ usobu opravy a doch´azce zamˇestnanc˚ u v dan´e smˇenˇe dle d´ale uveden´ ych krit´eri´ı. – Typu z´avady. – Vozidla. – Textov´eho v´ yrazu obsaˇzen´eho v popisu z´avady. – Vymezen´em ˇcasov´em intervalu (od, do). – Pokud m´a uˇzivatel dostateˇcn´a opr´avnˇen´ı, pak m˚ uˇze vyhled´avat z´aznamy jin´ ych oddˇelen´ı. V opaˇcn´em pˇr´ıpadˇe se vyhled´avaj´ı z´aznamy jen v oddˇelen´ı, ve kter´em je veden jeho u ´ˇcet. • Syst´em mus´ı umoˇzn ˇovat tisk a n´ahled tisku smˇen pro z´alohu z´aznam˚ u v pap´ırov´e podobˇe. • Po spuˇstˇen´ı klienta se m´a vˇzdy vybrat posledn´ı zaloˇzen´a smˇena. • Navrhovan´ y syst´em mus´ı umoˇzn ˇovat ukl´adat informace o jednotliv´ ych vozidlech, zaznamen´avat doch´azku zamˇestnanc˚ u s moˇznost´ı pˇrid´an´ı doplˇ nuj´ıc´ıch informac´ı, III
ˇ ´ILOHA A. SOUPIS POZADAVKU ˇ PR
IV
pˇrehlednˇe zobrazovat z´aznamy o zamˇestnanc´ıch a jej´ıch turnusech, zakl´adat, editovat a mazat informace o oddˇelen´ıch, turnusech, typech oprav a statusech zamˇestnanc˚ u pro doch´azku. • Tento syst´em mus´ı b´ yt zabezpeˇcen v˚ uˇci neopr´avnˇen´emu pˇr´ıstupu pomoc´ı uˇzivatelsk´ ych u ´ˇct˚ u a tak´e mus´ı b´ yt zabezpeˇcena komunikace se serverem. • Uˇzivatelsk´e u ´ˇcty by mˇely umoˇzn ˇovat tuto funkcionalitu: – Kaˇzd´ y uˇzivatelsk´ yu ´ˇcet by mˇelo b´ yt moˇzn´e nav´azat na konkr´etn´ıho zamˇestnance. – Kaˇzd´ yu ´ˇcet by mˇel b´ yt zaˇrazen do konkr´etn´ıho oddˇelen´ı. ´ cet zaˇrazen do konkr´etn´ıho oddˇelen´ı by mˇel umoˇzn – Uˇ ˇovat z´apis a ˇcten´ı z´aznamu jen z oddˇelen´ı, do kter´eho je zaˇrazen. – Kaˇzd´ y uˇzivatel by mˇel m´ıt moˇznost si zmˇenit svoje heslo a vidˇet sv´a opr´avnˇen´ı. – Kaˇzd´emu u ´ˇctu by mˇelo b´ yt moˇzn´e nastavit opr´avnˇen´ı pro z´apis do syst´emu, pro administrativu a pro zobrazen´ı z´aznam˚ u z jin´ ych oddˇelen´ı. – Administr´atorsk´e u ´ˇcty by mˇely m´ıt moˇznost zakl´adat, editovat a mazat uˇzivatelsk´e u ´ˇcty s moˇznost´ı resetovat hesla jednotliv´ ych uˇzivatelsk´ ych u ´ˇct˚ u. • Mˇelo by b´ yt moˇzn´e zaznamen´avat jak z´avadu tak i zp˚ usob jej´ı opravy a typ opravy s moˇznost´ı v´ ybˇeru ˇcast´ ych z´avad a oprav, kter´e se generuj´ı pˇri kaˇzd´em spuˇstˇen´ı klienta. • Mˇelo by b´ yt moˇzn´e zaznamen´avat pˇred´avanou pr´aci s moˇznost´ı rychl´eho pˇresunu do vykonan´ ych prac´ı vybran´e smˇeny.
A.1 A.1.1
Uˇ zivatelsk´ e role (opr´ avnˇ en´ı) Bez role
• Registrovan´ y uˇzivatel bez role bude m´ıt tyto moˇznosti: – Pˇrihl´asit se do syst´emu. – Prohl´ıˇzet si smˇeny oddˇelen´ı, do kter´eho s´am spad´a, s moˇznost´ı zobrazen´ı z´aznamu o proveden´ ych prac´ı, doch´azce i pˇredan´ ych prac´ı.
ˇ ´ ROLE (OPRAVN ´ ˇ ´I) A.1. UZIVATELSK E EN
V
– Tisknout sestavy smˇen. – Prohl´ıˇzet si seznam vozidel. – Prohl´ıˇzet si seznam typ˚ u prac´ı. – Prohl´ıˇzet si seznam zamˇestnanc˚ u. – Prohl´ıˇzet si seznam turnus˚ u. – Prohl´ıˇzet si seznam status˚ u. – Hledat z´aznamy pr´ace dle tˇechto parametr˚ u: ∗ Typu z´avady. ∗ Vozidla. ∗ Textov´eho v´ yrazu obsaˇzen´eho v popisu z´avady. ∗ Vymezen´em ˇcasov´em intervalu (od, do). – Zobrazen´ı detailu vyhledan´eho z´aznamu. – Zobrazen´ı informace o vlastn´ım u ´ˇctu. – Zmˇena hesla vlastn´ıho u ´ˇctu.
A.1.2
Z´ apis
• Registrovan´ y uˇzivatel s rol´ı Z´apis“ bude m´ıt tyto moˇznosti: ” – Pˇrihl´asit se do syst´emu. – Prohl´ıˇzet, editovat a mazat smˇeny v oddˇelen´ı, do kter´eho s´am spad´a, s moˇznost´ı zobrazen´ı, editace a maz´an´ı z´aznamu pr´ace, doch´azky i pˇred´avan´ ych prac´ı. – Pˇrevod pˇred´avan´eho z´aznamu do vykonan´e pr´ace. – Tisknout sestavy smˇen. – Prohl´ıˇzet, editovat a mazat z´aznamy vozidel. – Prohl´ıˇzet, editovat a mazat z´aznamy typu pr´ace. – Prohl´ıˇzet, editovat a mazat z´aznamy zamˇestnanc˚ u. – Prohl´ıˇzet, editovat a mazat z´aznamy turnus˚ u. – Prohl´ıˇzet, editovat a mazat z´aznamy status˚ u. – Hledat z´aznamy pr´ace dle tˇechto parametr˚ u:
ˇ ´ILOHA A. SOUPIS POZADAVKU ˇ PR
VI ∗ Typu z´avady. ∗ Vozidla.
∗ Textov´eho v´ yrazu obsaˇzen´eho v popisu z´avady. ∗ Vymezen´em ˇcasov´em intervalu (od, do). – Zobrazen´ı detailu vyhledan´eho z´aznamu. – Zobrazen´ı informace o vlastn´ım u ´ˇctu. – Zmˇena hesla vlastn´ıho u ´ˇctu.
A.1.3
Mistr
• Registrovan´ y uˇzivatel s rol´ı Mistr“ bude m´ıt tyto moˇznosti: ” – Pˇrihl´asit se do syst´emu. – Prohl´ıˇzet si smˇeny oddˇelen´ı, do kter´eho s´am spad´a, s moˇznost´ı zobrazen´ı z´aznamu pr´ace, doch´azky i pˇred´avan´e pr´ace. – Tisknout sestavy smˇen. – Prohl´ıˇzet si seznam vozidel. – Prohl´ıˇzet si seznam typu pr´ace. – Prohl´ıˇzet si seznam zamˇestnanc˚ u. – Prohl´ıˇzet si seznam turnus˚ u. – Prohl´ıˇzet si seznam status˚ u. – Hledat z´aznamy pr´ace dle tˇechto parametr˚ u: ∗ Typu z´avady. ∗ Vozidla. ∗ Oddˇelen´ı. ∗ Textov´eho v´ yrazu obsaˇzen´eho v popisu z´avady. ∗ Vymezen´em ˇcasov´em intervalu (od, do). – Zobrazen´ı detailu vyhledan´eho z´aznamu. – Zobrazen´ı informace o vlastn´ım u ´ˇctu. – Zmˇena hesla vlastn´ıho u ´ˇctu.
ˇ ´ ROLE (OPRAVN ´ ˇ ´I) A.1. UZIVATELSK E EN
A.1.4
VII
Administr´ ator
• Registrovan´ y uˇzivatel s rol´ı Administr´ator“ bude m´ıt tyto moˇznosti: ” – Pˇrihl´asit se do syst´emu. – Prohl´ıˇzet si smˇeny oddˇelen´ı, do kter´eho s´am spad´a, s moˇznost´ı zobrazen´ı z´aznamu pr´ace, doch´azky i pˇred´avan´e pr´ace. – Tisknout sestavy smˇen. – Prohl´ıˇzet, editovat a mazat z´aznamy oddˇelen´ı. – Prohl´ıˇzet si seznam vozidel. – Prohl´ıˇzet si seznam typu pr´ace. – Prohl´ıˇzet si seznam zamˇestnanc˚ u. – Prohl´ıˇzet si seznam turnus˚ u. – Prohl´ıˇzet si seznam status˚ u. – Hledat z´aznamy pr´ace dle tˇechto parametr˚ u: ∗ Typu z´avady. ∗ Vozidla. ∗ Textov´eho v´ yrazu obsaˇzen´eho v popisu z´avady. ∗ Vymezen´em ˇcasov´em intervalu (od, do). – Zobrazen´ı detailu vyhledan´eho z´aznamu. – Zobrazen´ı informace o vlastn´ım u ´ˇctu. – Zmˇena hesla vlastn´ıho u ´ˇctu. – Prohl´ıˇzet, zakl´adat, editovat a mazat uˇzivatelsk´e u ´ˇcty s moˇznost´ı resetovat hesla jednotliv´ ych uˇzivatelsk´ ych u ´ˇct˚ u.
VIII
ˇ ´ILOHA A. SOUPIS POZADAVKU ˇ PR
Pˇ r´ıloha B Origin´ al ankety a sezn´ am pˇ r´ıtomnost´ı na ˇ skolen´ı Origin´al ankety je pˇriloˇzen na n´asleduj´ıc´ıch str´ank´ach t´eto pˇr´ılohy. Seznam zamˇestnanc˚ u kter´ y byli pˇr´ıtomn´ı na ˇskolen´ı je pˇriloˇzen na n´asleduj´ıc´ıch str´ank´ach t´eto pˇr´ılohy.
IX
X
ˇ ´ILOHA B. ORIGINAL ´ ANKETY A SEZNAM ´ PR ˇ ´ITOMNOST´I NA SKOLEN ˇ ´I PR
XI
ˇ ´ILOHA B. ORIGINAL ´ ANKETY A SEZNAM ´ PR ˇ ´ITOMNOST´I NA SKOLEN ˇ ´I XII PR
Pˇ r´ıloha C Obsah pˇ riloˇ zen´ eho CD Sloˇ zky • HA.MVVMClient – Obsahuje zdrojov´e soubory klientsk´e aplikace. • Diagrams – Obsahuje zdrojov´e soubory diagram˚ u aktivit. • HA.MVVMClientTestUI – Obsahuje zdrojov´e soubory testu klientsk´e aplikace. • HA.HostWeb – Obsahuje zdrojov´e soubory hostovac´ıho prostˇred´ı pro sluˇzby. • HA.Services – Obsahuje zdrojov´e soubory sluˇzeb. • HA.ServicesTest – Obsahuje zdrojov´e soubory testu sluˇzeb.
XIII
ˇ ´ILOHA C. OBSAH PRILO ˇ ˇ EHO ´ PR ZEN CD
XIV
Soubory • ScriptDb.sql – Obsahuje skript pro tvorbu datab´aze. • DiplomovaPrace.pdf – Obsahuje elektronickou podobu t´eto diplomov´e pr´ace. • Help.chm – Obsahuje uˇzivatelskou dokumentaci. • ServerDokumentace.pdf – Obsahuje technickou dokumentaci serveru. • KlientDokumentace.pdf – Obsahuje technickou dokumentaci klientsk´e aplikace.