ˇ e vysok´e uˇcen´ı technick´e v Praze Cesk´ Fakulta elektrotechnick´a Katedra poˇc´ıtaˇc˚ u
Diplomov´a pr´ace
Informaˇ cn´ı syst´ em ubytovac´ıho zaˇ r´ızen´ı Bc. Petr Halaˇska
Vedouc´ı pr´ace: Ing. Radek Malinsk´ y
Studijn´ı program: Elektrotechnika a informatika, strukturovan´ y, Navazuj´ıc´ı magistersk´ y Obor: V´ ypoˇcetn´ı technika 15. kvˇetna 2011
iv
v
Podˇ ekov´ an´ı R´ad bych podˇekoval Ing. Radkovi Malinsk´emu za veden´ı m´e diplomov´e pr´ace, za jeho ˇcas a cenn´e rady. D´ ale tak´e sv´e rodinˇe a pˇr´atel˚ um za veˇskerou podporu bˇehem cel´eho studia.
vi
vii
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem pr´ aci vypracoval samostatnˇe a pouˇzil jsem pouze podklady uveden´e v pˇriloˇzen´em seznamu. Nem´am z´ avaˇzn´ y d˚ uvod proti uˇzit´ı tohoto ˇskoln´ıho d´ıla ve smyslu §60 Z´akona ˇc. 121/2000 Sb., o pr´ avu autorsk´em, o pr´ avech souvisej´ıc´ıch s pr´avem autorsk´ ym a o zmˇenˇe nˇekter´ ych z´akon˚ u (autorsk´ y z´ akon).
V Praze dne 10. 5. 2011
.............................................................
viii
Abstract The thesis deals with the implementation of information system designed for hotels and other lodging facilities. The primary objective of the resulting application is a comprehensive report of the booking and other coherent matters. The first part is concerned with a search of available products on the market. Further is the work focused on the analysis maintaining the bachelor thesis and the overview of used technologies. Following chapter is analyzing implementation and operating procedure working with the Java Enterprise Edition. The last chapters describe the process of testing the created prototype, and the final summary of the whole thesis.
Abstrakt Tato diplomov´ a pr´ ace se zab´ yv´ a realizac´ı informaˇcn´ıho syst´emu urˇcen´eho pro hotely a jin´ a ubytovac´ı zaˇr´ızen´ı. Prim´ arn´ım c´ılem v´ ysledn´e aplikace je komplexn´ı spr´ava rezervac´ı a s t´ım spojen´ ych vˇsech z´ aleˇzitost´ı. Prvn´ı ˇc´ ast je vˇenov´ ana reˇserˇsi dostupn´ ych produkt˚ u na trhu. Pr´ace pokraˇcuje anal´ yzou, ve kter´e se doˇcteme, jak´ ym zp˚ usobem je nav´az´ano na bakal´aˇrskou pr´aci a n´avrhem pˇrin´ aˇsej´ıc´ım pˇredevˇs´ım pˇrehled pouˇzit´ ych technologi´ı. N´asleduje rozbor implementace a zp˚ usob pr´ace pod platformou Java Enterprise Edition. V posledn´ıch kapitol´ach je pops´an zp˚ usob testov´an´ı vznikl´eho prototypu a z´avˇereˇcn´e shrnut´ı cel´e diplomov´e pr´ace.
ix
x
Obsah ´ 1 Uvod 1.1 Obsah kapitol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1
2 Popis probl´ emu, specifikace c´ıle
3
3 Reˇ serˇ se existuj´ıc´ıch produkt˚ u 3.1 Sledovan´e vlastnosti . . . . . . . . . 3.1.1 Provoz a funkcionalita . . . . 3.1.2 Finance . . . . . . . . . . . . 3.1.3 Pˇrehledy, vyhodnocen´ı, grafy 3.1.4 Technologie . . . . . . . . . . 3.1.5 Pouˇzitelnost . . . . . . . . . . 3.1.6 Propagace, u ´spˇeˇsnost . . . . . 3.1.7 Cena . . . . . . . . . . . . . . 3.2 Popis vybran´ ych syst´em˚ u . . . . . . 3.3 Souhrnn´ a tabulka . . . . . . . . . . . 3.4 Vyhodnocen´ı . . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
5 5 6 6 7 7 7 7 7 8 11 12
4 Anal´ yza 4.1 P˚ uvodn´ı aplikace . . . . . . . . 4.2 Funkˇcn´ı a nefunkˇcn´ı poˇzadavky 4.3 Definice uˇzivatelsk´ ych rol´ı . . . 4.4 Pˇr´ıpady uˇzit´ı . . . . . . . . . . 4.5 Konceptu´ aln´ı datov´ y model . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
13 13 14 15 16 16
5 N´ avrh ˇ reˇ sen´ı 5.1 V´ ybˇer implementaˇcn´ıho prostˇred´ı . . . . . . . . . 5.1.1 Java Enterprise Edition . . . . . . . . . . 5.1.2 Java Server Faces . . . . . . . . . . . . . . 5.1.2.1 Managed Beans . . . . . . . . . 5.1.2.2 Navigace . . . . . . . . . . . . . 5.1.2.3 Konverze . . . . . . . . . . . . . 5.1.2.4 Validace . . . . . . . . . . . . . ˇ 5.1.2.5 Zivotn´ ı cyklus Java Server Faces 5.1.2.6 JSF 2.0 . . . . . . . . . . . . . . 5.1.3 Enterprise Java Beans (EJB) . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
19 19 19 19 20 21 23 23 24 24 25
. . . . .
. . . . .
. . . . .
xi
xii
OBSAH
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
27 28 29 30 30
6 Realizace 6.1 Poˇc´ateˇcn´ı konfigurace . . . . . . . . 6.1.1 Datab´ aze . . . . . . . . . . . 6.2 EJB modul . . . . . . . . . . . . . . 6.2.1 Model . . . . . . . . . . . . . 6.2.2 Session Beans . . . . . . . . . 6.3 Zabezpeˇcen´ı . . . . . . . . . . . . . . 6.3.1 Konfigurace projektu . . . . . 6.3.2 Konfigurace Glassfish . . . . 6.3.3 Pˇrihlaˇsovac´ı str´ anka . . . . . ˇ 6.4 Sablonovac´ı syst´em . . . . . . . . . . 6.5 Import PrimeFaces do projektu . . . 6.6 Internacionalizace . . . . . . . . . . . 6.7 Modul spravuj´ıc´ı nastaven´ı syst´emu . 6.8 Modul rezervace . . . . . . . . . . . 6.8.1 Zobrazen´ı rezervac´ı . . . . . . 6.8.2 Kalkulace . . . . . . . . . . . 6.8.3 Kniha host˚ u. . . . . . . . . . 6.9 Online rezervace . . . . . . . . . . . 6.9.1 Captcha . . . . . . . . . . . . 6.10 Grafy a pˇrehledy . . . . . . . . . . . 6.11 Export do PDF . . . . . . . . . . . . 6.12 Testovac´ı data . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
33 33 33 33 33 35 35 36 37 37 38 38 39 40 43 43 44 45 45 46 46 47 47
. . . . . . . . . . . . . .
49 49 50 50 50 50 50 50 51 51 52 53 53 53 54
5.2 5.3
5.1.4 Java Persistance API . 5.1.5 PrimeFaces . . . . . . 5.1.6 iText . . . . . . . . . . Diagram komponent . . . . . Diagram nasazen´ı . . . . . . .
. . . . .
. . . . .
. . . . .
7 Testov´ an´ı 7.1 C´ıle testov´ an´ı . . . . . . . . . . . . . . . . . 7.2 C´ılov´ a skupina . . . . . . . . . . . . . . . . 7.3 Pˇr´ıprava testov´ an´ı . . . . . . . . . . . . . . 7.3.1 Screener . . . . . . . . . . . . . . . . 7.3.2 Pre-test . . . . . . . . . . . . . . . . 7.3.3 Post-test . . . . . . . . . . . . . . . 7.3.4 Sc´en´ aˇr u ´kol˚ u . . . . . . . . . . . . . 7.3.5 Nastaven´ı testu . . . . . . . . . . . . 7.4 Proveden´ı test˚ u . . . . . . . . . . . . . . . . 7.4.1 Shrnut´ı pr˚ uchodu jednotliv´ ymi u ´koly 7.4.2 Post-test . . . . . . . . . . . . . . . 7.5 Vyhodnocen´ı test˚ u . . . . . . . . . . . . . . 7.5.1 Hypot´ezy . . . . . . . . . . . . . . . 7.5.2 N´ avrhy na moˇzn´ a vylepˇsen´ı aplikace
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
OBSAH
xiii
8 Z´ avˇ er
55
A Seznam pouˇ zit´ ych zkratek
59
B Tabulky vlastnost´ı porovn´ avan´ ych produkt˚ u B.1 ABX recepce . . . . . . . . . . . . . . . . . . B.2 DeCe Hotel . . . . . . . . . . . . . . . . . . . B.3 Micros Fidelio Suite 8 . . . . . . . . . . . . . B.4 Hores . . . . . . . . . . . . . . . . . . . . . . B.5 Hotel-Keeper . . . . . . . . . . . . . . . . . . B.6 Mefisto . . . . . . . . . . . . . . . . . . . . . B.7 Previo . . . . . . . . . . . . . . . . . . . . . . B.8 Savarin . . . . . . . . . . . . . . . . . . . . . B.9 smartHotel (smartPension) . . . . . . . . . .
. . . . . . . . .
61 61 62 63 63 64 65 66 67 68
C Dotazn´ıky C.1 Screener . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.2 Pre-test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.3 Post-test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69 70 71 72
D Sc´ en´ aˇ ru ´ kol˚ u
73
E Uˇ zivatelsk´ a pˇ r´ıruˇ cka E.1 Instalaˇcn´ı manu´ al . . . . . . . . . . . . . . . . . . . . . . . . . . E.1.1 Postup instalace na lok´aln´ı server vyuˇzit´ım NetBeans . E.1.1.1 Datab´ aze . . . . . . . . . . . . . . . . . . . . . E.1.1.2 Nastaven´ı Secure Realms na serveru Glassfish E.1.1.3 Spuˇstˇen´ı aplikace . . . . . . . . . . . . . . . . . E.1.2 Manu´ aln´ı konfigurace na lok´aln´ım serveru Glassfish . . . E.1.2.1 Datab´ aze . . . . . . . . . . . . . . . . . . . . . E.1.2.2 JDBC Connection Pools, JDBC Resources . . E.1.2.3 Secure Realms . . . . . . . . . . . . . . . . . . E.1.2.4 Spuˇstˇen´ı aplikace . . . . . . . . . . . . . . . . . E.1.3 Naplnˇen´ı datab´ aze testovac´ımi daty . . . . . . . . . . . E.2 Uˇzivatelsk´ y manu´ al . . . . . . . . . . . . . . . . . . . . . . . . . E.2.1 Pˇrihl´ aˇsen´ı se do syst´emu . . . . . . . . . . . . . . . . . . E.2.2 V´ ybˇer jazyka . . . . . . . . . . . . . . . . . . . . . . . . E.2.3 Pˇrehled poloˇzek v menu . . . . . . . . . . . . . . . . . . E.2.4 Rezervace . . . . . . . . . . . . . . . . . . . . . . . . . . E.2.4.1 Plachta rezervac´ı . . . . . . . . . . . . . . . . . E.2.4.2 Vytvoˇren´ı nov´e objedn´avky . . . . . . . . . . . E.2.4.3 Pˇrehled objedn´avek . . . . . . . . . . . . . . . E.2.4.4 Online rezervace . . . . . . . . . . . . . . . . . E.2.5 Host´e . . . . . . . . . . . . . . . . . . . . . . . . . . . . E.2.6 Pokladna . . . . . . . . . . . . . . . . . . . . . . . . . . E.2.6.1 Faktury . . . . . . . . . . . . . . . . . . . . . .
75 75 75 76 76 78 78 78 78 79 79 80 81 81 81 81 82 82 83 85 86 86 86 86
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
xiv
OBSAH
E.2.6.2 Pokladn´ı kniha . . . . . . . . . E.2.7 Statistiky, grafy . . . . . . . . . . . . . . E.2.7.1 V´ ynosy, pˇr´ıjmy . . . . . . . . . E.2.7.2 Obsazenost . . . . . . . . . . . E.2.7.3 Zboˇz´ı a sluˇzby . . . . . . . . . E.2.8 Person´ al . . . . . . . . . . . . . . . . . . E.2.9 Nastaven´ı syst´emu . . . . . . . . . . . . E.2.9.1 Informace o hotelu . . . . . . . E.2.9.2 Kategorie host˚ u . . . . . . . . E.2.9.3 Partneˇri . . . . . . . . . . . . . E.2.9.4 Sez´ ony . . . . . . . . . . . . . E.2.9.5 Stravov´ an´ı . . . . . . . . . . . E.2.9.6 Zboˇz´ı . . . . . . . . . . . . . . E.2.9.7 Sluˇzby . . . . . . . . . . . . . E.2.9.8 Typy pokoj˚ u . . . . . . . . . . E.2.9.9 Pokoje . . . . . . . . . . . . . E.2.9.10 Vybaven´ı . . . . . . . . . . . . E.2.10 N´ apovˇeda . . . . . . . . . . . . . . . . . E.2.11 Rezervaˇcn´ı formul´ aˇr na str´ank´ach hotelu F Obsah pˇ riloˇ zen´ eho CD
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
87 88 88 88 88 89 90 90 90 90 90 90 90 91 91 91 91 91 91 93
Seznam obr´ azk˚ u 4.1 4.2
Uˇzivatelsk´e role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Konceptu´ aln´ı datov´ y model . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15 17
5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12
Strom komponent v JSF . . . . . . . . Statick´ a navigace v JSF . . . . . . . . Dynamick´ a navigace v JSF . . . . . . Architektura v´ıce-vrstv´e aplikace . . . ˇ Zivotn´ ı cyklus Stateful Session Beany ˇ Zivotn´ı cyklus Stateless Session Beany Primefaces kalend´ aˇr . . . . . . . . . . Automatick´e dokonˇcov´ an´ı . . . . . . . Datov´ a tabulka v PrimeFaces . . . . . Galerie obr´ azk˚ u PrimeFaces . . . . . . Diagram komponent . . . . . . . . . . Diagram nasazen´ı . . . . . . . . . . . .
. . . . . . . . . . . .
20 22 22 26 27 27 29 29 29 29 30 31
6.1
Captcha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
E.1 E.2 E.3 E.4 E.5 E.6 E.7 E.8 E.9 E.10 E.11 E.12 E.13 E.14 E.15 E.16 E.17 E.18
Vytvoˇren´ı datab´ aze Java DB v NetBeans . . . . . . Pˇrihlaˇsovac´ı str´ anka serveru Glassfish . . . . . . . . Security Realms . . . . . . . . . . . . . . . . . . . . . JDBC Connection Pool . . . . . . . . . . . . . . . . Naplnˇen´ı testovac´ımi daty . . . . . . . . . . . . . . . Pˇrihl´ aˇsen´ı se do syst´emu . . . . . . . . . . . . . . . . Volba jazyka . . . . . . . . . . . . . . . . . . . . . . Menu . . . . . . . . . . . . . . . . . . . . . . . . . . Plachta rezervac´ı . . . . . . . . . . . . . . . . . . . . N´ ahled rezervace . . . . . . . . . . . . . . . . . . . . Nov´ a objedn´ avka – vyplnˇen´ı z´akazn´ıka . . . . . . . . Nov´ a objedn´ avka – v´ ybˇer z jiˇz uloˇzen´ ych z´akazn´ık˚ u. Nov´ a objedn´ avka – potvrzen´ı . . . . . . . . . . . . . Tabulka objedn´ avek . . . . . . . . . . . . . . . . . . Editace objedn´ avky . . . . . . . . . . . . . . . . . . Faktura . . . . . . . . . . . . . . . . . . . . . . . . . Komponenta pro pˇrevod objedn´avek . . . . . . . . . Graf obsazenosti pokoj˚ u . . . . . . . . . . . . . . . .
76 77 77 79 80 81 81 82 83 83 84 84 85 85 86 87 87 88
xv
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
xvi
´ U ˚ SEZNAM OBRAZK
E.19 Graf poskytovan´ ych sluˇzeb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E.20 Zamˇestnanci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E.21 Formul´ aˇr online rezervace . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89 89 92
Seznam tabulek 3.1
Souhrnn´ a tabulka reˇserˇse existuj´ıc´ıch produkt˚ u na trhu. . . . . . . . . . . . .
11
B.1 B.2 B.3 B.4 B.5 B.6 B.7 B.8 B.9
ABX recepce. . . . . . . . . DeCe Hotel. . . . . . . . . . Micros Fidelio Suite 8. . . . Hores. . . . . . . . . . . . . Hotel-Keeper. . . . . . . . . Mefisto. . . . . . . . . . . . Previo. . . . . . . . . . . . . Savarin. . . . . . . . . . . . SmartHotel (SmartPension).
62 62 63 64 65 66 67 68 68
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
xvii
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
xviii
SEZNAM TABULEK
Kapitola 1
´ Uvod Jiˇz podle n´ azvu si kaˇzd´ y m˚ uˇze lehce udˇelat pˇredstavu, o ˇcem tato pr´ace pojedn´av´a. Informaˇcn´ı syst´em ubytovac´ıho zaˇr´ızen´ı, jin´ ymi slovy syst´em, kter´ y uchov´av´a a zpracov´ av´ a informace t´ ykaj´ıc´ı se provozu a spr´avy hotelu nebo jin´eho ubytovac´ıho zaˇr´ızen´ı. V dneˇsn´ı dobˇe jsou podobn´e IS t´emˇeˇr v kaˇzd´em odvˇetv´ı lidsk´e ˇcinnosti. Vˇsude tam kde je z´ahodno ukl´adat jiˇz zm´ınˇen´e informace do datab´aze. Vytvoˇren´a aplikace v r´amci t´eto pr´ace nen´ı proto jedin´ a ve sv´em oboru, ale i tak pˇrin´aˇs´ı do prostˇred´ı hotelov´ ych aplikac´ı odliˇsn´a ˇreˇsen´ı a moˇznosti. Z hlediska toho co by takov´ y syst´em mˇel a mohl poskytovat, se otev´ır´a pomˇernˇe ˇsirok´e pole, protoˇze od nepamˇeti si kaˇzd´ y hotel mus´ı udrˇzovat velk´e mnoˇzstv´ı informac´ı nutn´ ych pro svou spr´ avu, tak i ze z´ akona vynucen´ ych. Nav´ıc, i dnes nalezneme mnoho podnik˚ u, kter´e si vˇse zaznamen´ avaj´ı sice tˇreba jiˇz v digit´aln´ı formˇe, ale bez pouˇzit´ı nˇejak´eho sofistikovan´eho programu. Proto podle m´eho n´ azoru je tvorba tohoto syst´emu velmi aktu´aln´ı a perspektivn´ı t´ema, co se t´ yˇce budoucnosti. Mimo jin´e hlavn´ı motivac´ı pˇri v´ ybˇeru tohoto t´ematu pro mˇe bylo dokonˇcen´ı projektu, kter´ y jsem zapoˇcal jako bakal´ aˇrskou pr´aci [11] a vytvoˇrit tak informaˇcn´ı syst´em, kter´ y bude obsahovat vˇsechny p˚ uvodnˇe pl´ anovan´e funkce, kter´e byly vzhledem k rozsahu neimplementovan´e. V pˇr´ıpadˇe u ´spˇeˇsn´e realizace se v budoucnosti tak´e nask´ yt´a moˇznost otestovat v´ yslednou aplikaci i v re´ aln´em prostˇred´ı hotelu zprostˇredkovanou pˇres kolegu Petra V˚ ujtˇecha, od kter´eho vznikla prvotn´ı myˇslenka a vytvoˇril bakal´aˇrskou pr´aci Anal´ yza informaˇcn´ıho syst´emu ” pro ubytovac´ı zaˇr´ızen´ı“ [14].
1.1
Obsah kapitol
Struktura pr´ ace je rozdˇelena do nˇekolika kapitol zaˇc´ınaj´ıc´ı t´ımto u ´vodem. V druh´e kapitole je bl´ıˇze specifikov´ ano zad´ an´ı pr´ ace a pops´an probl´em, kter´ y bude hlavn´ım pˇredmˇetem z´ ajmu pˇri vypracov´ av´ an´ı. Tˇret´ı kapitola srovn´ av´ a jiˇz existuj´ıc´ı produkty na ˇcesk´em trhu. Nejprve je provedena anal´ yza dostupnosti, podle kter´e je pot´e vybr´ano devˇet hotelov´ ych syst´em˚ u. Ty jsou porovn´av´ any z hlediska urˇcen´ ych krit´eri´ı a na z´akladˇe z´ıskan´ ych informac´ı jsou vyhodnoceny z´avˇery.
1
2
´ KAPITOLA 1. UVOD
V n´asleduj´ıc´ı ˇctvrt´e je zpracov´ ana anal´ yza projektu. Zde jsou hlavnˇe urˇceny vˇsechny poˇzadavky na syst´em, uˇzivatelsk´e role a konceptu´aln´ı datov´ y model. P´at´a kapitola pojedn´ av´ a o n´ avrhu ˇreˇsen´ı, bl´ıˇze se tak pˇribliˇzuje konkr´etn´ı realizaci a tomu jak´ ym zp˚ usobem bude aplikace implementov´ana. Vlastn´ı implementace je pops´ ana v navazuj´ıc´ı ˇsest´e kapitole, kde jsou vyzdviˇzeny pˇredevˇs´ım d˚ uleˇzit´e ˇc´ asti, specifika a probl´emy pˇri programov´an´ı. Pˇri v´ yvoji takto rozs´ ahlejˇs´ı aplikace je zapotˇreb´ı ji tak´e d˚ ukladnˇeji otestovat a to i za pˇrispˇen´ı nez´avisl´ ych uˇzivatel˚ u. I tento poˇzadavek nen´ı opomenut a vˇse je zaznamen´ano v kapitole sedm´e. Z´avˇerem jsou shrnuty v´ ysledky, diskuse, zda pr´ace splnila vytyˇcen´e c´ıle, n´avrhy na r˚ uzn´a vylepˇsen´ı a moˇznosti dalˇs´ıho pokraˇcov´ an´ı. Souˇc´ast´ı t´eto diplomov´e pr´ ace jsou tak´e pˇr´ılohy, ve kter´ ych m˚ uˇzeme nal´ezt uˇzivatelskou pˇr´ıruˇcku, reˇserˇsn´ı tabulky a dotazn´ıky pro testov´an´ı.
Kapitola 2
Popis probl´ emu, specifikace c´ıle Pr´ace m´ a za c´ıl navrhnout a vytvoˇrit webov´ y syst´em, kter´ y bude podporovat ˇr´ızen´ı hotelu nebo jin´eho ubytovac´ıho zaˇr´ızen´ı. Bude urˇcen pro uˇzivatele, kteˇr´ı v hotelu zodpov´ıdaj´ı pˇredevˇs´ım za spr´ avu rezervac´ı a interakci se z´akazn´ıkem, tj. recepˇcn´ı, ale tak´e pro osoby, kter´e ˇr´ıd´ı cel´ y chod podniku, coˇz m˚ uˇze b´ yt i majitel. Syst´em pobˇeˇz´ı na webov´em aplikaˇcn´ım serveru a z´aroveˇ n bude pˇristupovat do datab´ aze, um´ıstˇen´e podle pˇredpoklad˚ u na stejn´em stroji. Z toho vypl´ yv´a, ˇze uˇzivatel pro pr´aci s programem potˇrebuje pouze webov´ y prohl´ıˇzeˇc. Do syst´emu se bude pˇrihlaˇsovat pomoc´ı uˇzivatelsk´eho u ´ˇctu, d´ıky nˇemuˇz se pˇriˇrad´ı odpov´ıdaj´ıc´ı role. Hlavn´ı funkcionalitou aplikace bude spr´ava objedn´ avek, resp. organizace rezervac´ı jednotliv´ ych pokoj˚ u. S t´ım souvis´ı evidence dalˇs´ıch informac´ı jako napˇr´ıklad knihy host˚ u, poˇzadavk˚ u na stravov´an´ı, prodej sluˇzeb a zboˇz´ı. Nechyb´ı ani spr´ ava pokoj˚ u a vybaven´ı. V´ ystup z aplikace bude zajiˇstˇen ve formˇe exportu do pdf1 nebo tak´e r˚ uzn´ ymi pˇrehledy ve formˇe graf˚ u. Podrobn´ y seznam funkc´ı a poˇzadavk˚ u na syst´em je uveden v kapitole 4 Anal´ yza“. ” Pˇri implementaci budou vyuˇzity modern´ı technologie pro v´ yvoj webov´ ych aplikac´ı. D˚ uleˇzit´e je tak´e jednoduch´e ovl´ ad´ an´ı a intuitivn´ı uˇzivatelsk´e prostˇred´ı, kter´e se bude provˇeˇrovat pomoc´ı experiment´ aln´ıho testov´ an´ı pouˇzitelnosti s participanty. Jak bylo ˇreˇceno v u ´vodu, protoˇze toto t´ema jiˇz bylo zpracov´av´ano v r´amci bakal´aˇrsk´e pr´ace, syst´em tohoto r´ azu uˇz existuje. V anal´ yze je proto tento p˚ uvodn´ı syst´em pops´ an a vyvozeno rozhodnut´ı, zda pokraˇcovat v jeho v´ yvoji nebo navrhnout nov´ y.
1
PDF (Portable Document Format) – souborov´ y form´ at pro ukl´ ad´ an´ı dokument˚ u nez´ avisl´ ych na hardwarovou ˇci softwarovou platformu. Za jeho vznikem stoj´ı spoleˇcnost Adobe.
3
4
´ KAPITOLA 2. POPIS PROBLEMU, SPECIFIKACE C´ILE
Kapitola 3
Reˇ serˇ se existuj´ıc´ıch produkt˚ u V´ ysledn´ y software by mˇel b´ yt dostateˇcnˇe komplexn´ı, aby dok´azal pokr´ yt vˇetˇsinu proces˚ u ˇ v hotelu. Castokr´ at b´ yv´ a tak´e propojen s dalˇs´ımi syst´emy, jako napˇr´ıklad restauraˇcn´ımi nebo u ´ˇcetn´ımi. V souˇcasn´e dobˇe existuje ˇrada informaˇcn´ıch syst´em˚ u tohoto r´azu. C´ılem reˇserˇse je z´ısk´an´ı pˇrehledu o trhu s hotelov´ ymi syst´emy, tyto produkty sledovat, rozebrat a porovnat jejich vlastnosti. Ze zjiˇstˇen´ ych poznatk˚ u se v pak pokus´ıme odpovˇedˇet, zda a proˇc je pˇr´ıhodn´e vytv´aˇret vlastn´ı syst´em, v ˇcem se bude od ostatn´ıch odliˇsovat a co pˇrinese nov´eho, aby se dok´azal na trhu prosadit. V n´ asleduj´ıc´ıch odstavc´ıch je podrobnˇeji pops´ana skupina softwarov´ ych syst´em˚ u pro ubytovac´ı zaˇr´ızen´ı. Pro tento uˇzˇs´ı v´ ybˇer produkt˚ u pˇri internetov´em vyhled´av´an´ı byly stanoveny n´asleduj´ıc´ı kl´ıˇcov´e poˇzadavky: • Grafick´e uˇzivatelsk´e rozhran´ı. • Spr´ ava objedn´ avek, rezervac´ı a s t´ım souvisej´ıc´ı finanˇcn´ı kalkulace. • Administrace pokoj˚ u. • Veden´ı datab´ aze host˚ u. • Manaˇzersk´e pˇrehledy, popˇr. grafy. • Souˇc´ ast´ı syst´emu dalˇs´ı moduly (poskytuj´ıc´ı spr´avu a ˇr´ızen´ı dalˇs´ıch ˇcinnost´ı v hotelu).
3.1
Sledovan´ e vlastnosti
U vybran´ ych hotelov´ ych syst´em˚ u byly sledov´any jako hlavn´ı krit´eria vlastnosti t´ ykaj´ıc´ı se provozu a funkcionality, d´ ale spr´ ava financ´ı, souhrny a vyhodnocen´ı pomoc´ı r˚ uzn´ ych graf˚ u, zp˚ usob jak byly implementov´ any, jejich propagace, reklama, u ´spˇeˇsnost na trhu a v neposledn´ı ˇradˇe tak´e jejich cena. Kompletn´ı v´ ypis vlastnost´ı, na kter´e se zamˇeˇr´ıme:
5
ˇ SE ˇ EXISTUJ´IC´ICH PRODUKTU ˚ KAPITOLA 3. RESER
6
3.1.1
Provoz a funkcionalita
Recepce – modul pro spr´ avu a koordinaci rezervac´ı, obsahuje z´akladn´ı funkce hotelov´eho syst´emu jako pˇridˇelov´ an´ı jednotliv´ ych pokoj˚ u host˚ um apod. Spr´ ava vybaven´ı – moˇznost pˇrehledu o vybaven´ı na jednotliv´ ych pokoj´ıch, napˇr´ıklad tv, st˚ ul, kˇreslo. Uˇ zivatelsk´ e u ´ˇ cty – u ´ˇcet kaˇzd´eho uˇzivatele, kter´ y se syst´emem pracuje, d´ıky nim lze pˇristupovat do aplikace jen pˇres zabezpeˇcen´ y vstup. Spr´ ava person´ alu hotelu – tato funkce umoˇzn ˇuje jednoduch´ y pˇrehled o dalˇs´ıch zamˇestnanc´ıch nejen o tˇech, kteˇr´ı se syst´emem pracuj´ı, ale tak´e o pokojsk´ ych, u ´drˇzb´aˇr´ıch atd. Modul restaurace – hotel ˇcastokr´ at sv´ ym host˚ um tak´e nab´ız´ı stravov´an´ı. M˚ uˇze b´ yt ˇreˇseno sofistikovanˇejˇs´ım programem, kter´ y celou restauraci ˇr´ıd´ı a nebo alespoˇ n zda host m´a k pobytu zaplacenu napˇr´ıklad polopenzi. Online rezervace – potencion´ aln´ı z´ akazn´ık si m˚ uˇze pˇres webov´e str´anky prezentace hotelu prohl´ednout obsazenost na urˇcit´e obdob´ı, ˇci prov´est pˇr´ımo pˇredbˇeˇznou rezervaci d´ıky spojen´ı s hlavn´ı aplikac´ı. Dalˇ s´ı moduly – hotel ke sv´emu bˇehu takt´eˇz potˇrebuje evidenci dalˇs´ıch sv´ ych aktivit, do kter´ ych m˚ uˇzeme zapoˇc´ıtat drobn´ y prodej zboˇz´ı v recepci, nab´ıdka sluˇzeb jako je zap˚ ujˇcen´ı kola, vstup do sauny, baz´enu apod., souˇc´ ast´ı tak´e m˚ uˇze b´ yt modul pro skladov´e hospod´aˇrstv´ı. Speci´ aln´ı funkce – sem spadaj´ı napˇr´ıklad integrace s elektronick´ ymi z´amkov´ ymi syst´emy, pay Tv, telefonn´ımi u ´stˇrednami, ˇr´ızen´ı energi´ı a dalˇs´ı.
3.1.2
Finance
Pokladna – v t´eto ˇc´ asti prob´ıh´ a kalkulace vˇsech penˇez v syst´emu, ubytovac´ı zaˇr´ızen´ı tak pˇrehlednˇe m˚ uˇze evidovat tok finanˇcn´ıch prostˇredk˚ u. Tisk, export faktur – t´ yk´ a se nejen faktur pro z´akazn´ıka, ale tak´e je d˚ uleˇzit´ y tisk knihy host˚ u do p´ısemn´e formy, coˇz je d´ ano z´ akonem. Pˇ repoˇ cet na ciz´ı mˇ eny (smˇ en´ arna) – pˇrevody mˇen podle definovan´ ych nebo automatick´ ych aktu´aln´ıch kurz˚ u. Podpora spolupr´ ace s ubytovac´ımi servery, partnery – zapoˇc´ıt´an´ı provize za zprostˇredkovanou reklamu, zejm´ena pak za kaˇzd´eho takto z´ıskan´eho hosta.
´ VLASTNOSTI 3.1. SLEDOVANE
3.1.3
7
Pˇ rehledy, vyhodnocen´ı, grafy
Pro efektivn´ı ˇr´ızen´ı podniku jsou pˇr´ınosn´e r˚ uzn´e manaˇzersk´e souhrny a grafy, napˇr´ıklad obsazenosti pokoj˚ u bˇehem sez´ on a podobnˇe.
3.1.4
Technologie
Webov´ a aplikace – krit´erium zda se jedn´a o desktopovou ˇci webovou aplikaci. Moˇ znost propojen´ı – hotelov´ y resp. rezervaˇcn´ı syst´em nemus´ı umˇet u ´plnˇe vˇse, proto je v´ yhoda, kdyˇz m´ ame moˇznost syst´em propojit s jin´ ym softwarem, napˇr. pro u ´ˇcetnictv´ı. Propojen´ı nˇ ekolika poboˇ cek – hoteli´er m˚ uˇze vlastnit v´ıce zaˇr´ızen´ı, proto je ˇz´adouc´ı s´ıt’ov´e spojen´ı hotelov´ ych syst´emu. Jednoduch´e to je v pˇr´ıpadˇe, ˇze se jedn´a o webovou aplikaci, kter´a bˇeˇz´ı na nˇejak´em serveru, ohlednˇe desktopov´ ych platforem, m˚ uˇze b´ yt propojen´ı zajiˇstˇeno sd´ılenou datab´ az´ı.
3.1.5
Pouˇ zitelnost
Jednoduch´ e ovl´ ad´ an´ı – kaˇzd´ y porovn´avan´ y produkt byl prezentov´an sv´ ymi tv˚ urci jako jednoduch´ y na ovl´ ad´ an´ı. Pro toto krit´erium nebyly vytvoˇreny ˇz´adn´e usability testy, proto se jedn´a pouze o subjektivn´ı hodnocen´ı autora t´eto pr´ace.
3.1.6
Propagace, u ´ spˇ eˇ snost
Demoverze – moˇznost zda je od v´ yrobce k dispozici demoverze. Z´akazn´ık si tak m˚ uˇze vyzkouˇset program jeˇstˇe pˇred jeho zakoupen´ım a zv´aˇzit tak tuto nemalou investici. Dostupnost – informace o produktu mus´ı b´ yt lehce dostupn´e na internetu pˇri vyhled´ av´an´ı, je to myˇsleno pˇri zad´ an´ı obecn´ ych kl´ıˇcov´ ych slov jako hotelov´e syst´emy“. ” Reference – hodnocen´ı produktu za z´akladˇe mnoˇzstv´ı z´akazn´ık˚ u, jejich zn´amosti a prestiˇzi.
3.1.7
Cena
Jednor´ azov´ a cena – produkt je vˇetˇsinou k zakoupen´ı po sloˇzen´ı jednor´azov´e ˇc´astky, pro z´ akazn´ıka je velmi smˇerodatn´e, zda tento u ´daj je k dispozici na str´ank´ach nebo prezentaci programu. Pron´ ajem – u nˇekter´ ych firem je moˇznost si software pouze pronajmout na urˇcitou dobu a platit tak niˇzˇs´ı ˇc´ astku, vˇetˇsinou mˇes´ıˇcnˇe. Nˇekdy to ale b´ yv´a i jedin´ y zp˚ usob k zakoupen´ı. Moˇ znost u ´ prav – nab´ıdka upraven´ı z´akladn´ıho syst´emu na m´ıru z´akazn´ıkovi podle jeho poˇzadavk˚ u.
ˇ SE ˇ EXISTUJ´IC´ICH PRODUKTU ˚ KAPITOLA 3. RESER
8
Support – do t´eto kategorie spadaj´ı sluˇzby, kter´e nav´ıc k produktu nab´ız´ı prodejce. Jedn´a se napˇr´ıklad o telefonickou ˇci emailovou podporu, d´ale ˇskolen´ı person´alu pro obsluhu syst´emu, nˇekter´e firmy tak´e nab´ızej´ı odborn´ y dohled apod.
3.2
Popis vybran´ ych syst´ em˚ u
Nejprve dne 29.1.2011 probˇehla anal´ yza dostupnosti produkt˚ u na internetu. K tomuto u ´ˇcelu byl pouˇzit vyhled´ avaˇc Google (www.google.com) . Zad´an´ım kl´ıˇcov´ ych v´ yraz˚ u hotelov´e sys” t´emy“, hotelov´ y software“, ubytovac´ı syst´emy“ byly nejˇcastˇejˇs´ımi v´ ysledky produkty: ” ” • ABX recepce • DeCe Hotel • Fidelio • Hores • Hotel-Keeper • Mefisto • Previo • Savarin • smartHotel
ABX recepce www str´ anky: http://www.ab-x.cz/ Stejnˇe jako ˇrada podobn´ ych se tato firma nespecializuje pouze na hotelov´e syst´emy, ale tak´e na pokladn´ı software a k tomu nab´ız´ı dotykov´e pokladny a displeje. Co se t´ yˇce samotn´eho produktu Recepce R3 tak i kdyˇz splˇ nuje ˇradu funkc´ı, tak cel´ y design p˚ usob´ı dosti zastarale a nepˇrehlednˇe. V´ıce viz pˇr´ıloha B.1.
DeCe Hotel www str´ anky: http://www.decehotel.cz/ Hotelov´ y software DeCe Hotel se skl´ ad´ a ze tˇr´ı z´akladn´ıch modul˚ u: Recepce, Restaurace, Smˇen´arna. Kaˇzd´ y z nich je tak´e moˇzno zakoupit jako samostatn´ y program. Bohuˇzel, narozd´ıl od vˇetˇsiny ostatn´ıch zde porovn´ avan´ ych DeCe Hotel nem´a ˇz´adn´e speci´aln´ı funkce,
´ ´ U ˚ 3.2. POPIS VYBRANYCH SYSTEM
9
nepodporuje ˇz´ adn´e napojen´ı na jin´ y software ˇci jinou s´ıt’ovou komunikaci. V´ıce viz pˇr´ıloha B.2.
Micros Fidelio Suite 8 www str´ anky: http://www.gastrosystems.cz/ Podle informac´ı na str´ ank´ ach se jedn´a o velk´ y syst´em, kter´ y pouˇz´ıvaj´ı zn´am´e hotely. Prezentuje se jako v souˇcasnosti nejprod´avanˇejˇs´ı recepˇcn´ı syst´em. Je moˇzn´e, ˇze z tohoto d˚ uvodu nepotˇrebuje v´ yrobce na nich uv´ adˇet cenu a poskytovat demoverzi, vˇse ˇreˇs´ı jin´ ymi zp˚ usoby a po popt´ avce z´ akazn´ıka. Samotn´ y produkt se jev´ı jako velmi propracovan´ y, moˇzn´a ale aˇz na u ´kor pouˇzitelnosti. V´ıce viz pˇr´ıloha B.3.
Hores www str´ anky: http://www.horesplus.cz/ Komplexn´ı syst´em obsahuj´ıc´ı celou ˇradu voliteln´ ych modul˚ u a speci´aln´ıch funkc´ı. Vyˇsˇs´ı cena vˇsak bude pˇri rozhodov´ an´ı z´ akazn´ıka hr´at podstatn´ y faktor. Licenci z´akladn´ıho programu pro 20 pokoj˚ u firma nab´ız´ı za 32 900,- Kˇc. Ovˇsem s pˇr´ıdavn´ ymi moduly se cena lehce m˚ uˇze vyˇsplhat aˇz ke 100 000,- Kˇc, coˇz je pro mal´e a stˇredn´ı hotely podle m´eho n´azoru pˇrespˇr´ıliˇs vysok´a investice. V´ıce viz pˇr´ıloha B.4.
Hotel-Keeper www str´ anky: http://www.hotel-keeper.cz/ Hotel-Keeper nab´ız´ı v´ıce r˚ uzn´ ych verz´ı, jak pro velk´e hotely, pensiony, tak levnˇejˇs´ı odlehˇcenou verzi pro mal´e ubytovac´ı zaˇr´ızen´ı. V nab´ıdce tak´e nalezneme vlastn´ı syst´em pro restauraci. Znaˇcnou nev´ yhodou ale povaˇzuji, ˇze restauraci nelze spojit nebo jinak integrovat s hlavn´ım hotelov´ ych syst´emem, jedn´ a se totiˇz o samostatnou aplikaci. Produkt od tohoto v´ yrobce narozd´ıl od mnoha testovan´ ych, ale poskytuje pˇr´ıjemn´e uˇzivatelsk´e rozhran´ı, kter´e by nemˇelo b´ yt sloˇzit´e na ovl´ ad´ an´ı. V´ıce viz pˇr´ıloha B.5.
Mefisto www str´ anky: http://www.mefisto.cz/ Spoleˇcnost Mefisto Software nab´ız´ı r˚ uzn´e druhy syst´em˚ u jak pro hotely, tak jen pro re-
10
ˇ SE ˇ EXISTUJ´IC´ICH PRODUKTU ˚ KAPITOLA 3. RESER
staurace, sportoviˇstˇe, l´ aznˇe, wellness centra. Hlavn´ı prod´avanou aplikac´ı je Mefisto GRAND a pro menˇs´ı hotely Mefisto Hotel. Jejich v´ yhodou je, ˇze cel´ y syst´em je tvoˇren pomoc´ı modul˚ u, takˇze nen´ı probl´em integrace, napˇr´ıklad s nab´ızenou restaurac´ı ˇci skladov´ ym hospod´aˇrstv´ım. V´ıce viz pˇr´ıloha B.6.
Previo www str´ anky: http://www.previo.cz/ Jedin´a aplikace z hodnocen´ ych v t´eto pr´ aci, kter´a nelze zakoupit jednor´azovˇe. Je to z d˚ uvodu toho, ˇze se jedn´ a o webovou aplikaci a v pˇr´ıpadˇe zakoupen´ı pobˇeˇz´ı na serveru spoleˇcnosti Previo. Tato firma se d´ ale specializuje na tvorbu www str´anek a prezentac´ı hotel˚ u, kter´e nab´ız´ı spoleˇcnˇe s hotelov´ ym syst´emem. Za pˇr´ıplatek umoˇzn ˇuje z´akazn´ıkovi um´ıstit na str´anky tzv. online rezervaci pro hosty. V´ıce viz pˇr´ıloha B.7.
Savarin www str´ anky: http://www.cominn.cz/ Firma Savarin se sp´ıˇse zab´ yv´ a restauraˇcn´ımi a pokladn´ımi syst´emy, prod´av´a i speci´aln´ı pokladn´ı komponenty. Do t´eto reˇserˇse je zapojena d´ıky modulu Recepce Savarin, kter´ y umoˇzn ˇuje funkce zde porovn´ avan´ ych syst´em˚ u, jako rezervovat pokoje a ubytovat tak hosty, vystavovat u ´ˇcty, kalkulovat prodej zboˇz´ı a sluˇzeb a tak d´ale, v´ıce je rozeps´ano opˇet v n´asleduj´ıc´ı tabulce. V´ıce viz pˇr´ıloha B.8.
smartHotel (smartPension) www str´ anky: http://www.smarthotel.cz/ Posledn´ı ze syst´em˚ u je smartHotel, jehoˇz odlehˇcen´a verze bez pˇr´ıdavn´ ych modul˚ u je prod´av´ana jako produkt smartPension. Pro potencion´aln´ı z´akazn´ıky nep˚ usob´ı www str´anky produktu pˇr´ıliˇs profesion´ alnˇe pˇredevˇs´ım kv˚ uli ˇspatn´e optimalizaci pro rozd´ıln´e prohl´ıˇzeˇce. Samotn´ y syst´em vˇsak d´ıky v´ıcelet´emu v´ yvoji vypad´a konkurenceschopnˇe a bez chyb. V´ıce viz pˇr´ıloha B.9.
´ TABULKA 3.3. SOUHRNNA
Souhrnn´ a tabulka
Hor es
Hot el-K eep er Mefi sto
Pre vio
Sav arin
A
A
A
A
A
A
A
Spr´ ava vybaven´ı
N
N
N
N
N
N
N
N
N
Uˇzivatelsk´e u ´ˇcty
A
A
A
A
A
A
A
A
A
Spr´ ava person´ alu hotelu
N
N
N
N
N
N
N
N
N
Modul restaurace
N
A
N
N
N
A
N
A
N
Online rezervace
A
N
A
A
N
A
A
N
A
Dalˇs´ı moduly
A
A
A
A
N
A
A
N
A
Speci´ aln´ı funkce
A
N
A
A
A
A
N
A
A
Pokladna
A
A
A
A
A
A
A
A
A
Tisk, export faktur
A
A
A
A
A
—
A
A
A
Smˇen´ arna
A
A
N
A
A
A
A
A
A
Spolupr´ ace s ubyt. servery
N
N
N
N
A
N
A
N
N
A
A
A
A
A
A
A
A
A
Webov´ y syst´em
N
N
A
N
N
N
A
N
N
Propojen´ı s jin´ ym softwarem
A
N
A
A
N
A
A
N
A
Propojen´ı poboˇcek
A
N
A
A
A
A
A
N
N
Jednoduch´e ovl´ ad´ an´ı, pˇrehlednost
N
N
—
N
A
—
A
N
N
Demoverze
A
A
N
A
A
N
A
A
A
Dostupnost
A
A
A
A
A
N
A
N
N
Jednor´ azov´ a cena
A
A
—
A
A
A
N
A
A
Pron´ ajem
N
N
N
N
A
A
A
A
N
Moˇznost u ´pravy
N
N
A
A
N
A
N
N
A
Support
A
A
A
A
A
A
A
A
A
Provoz Finance Cena
Tech.
Pˇrehledy, grafy
Tabulka 3.1: Souhrnn´a tabulka reˇserˇse existuj´ıc´ıch produkt˚ u na trhu.
sma rtH
otel
Fid elio
A
Porovn´ avan´e hotelov´e syst´emy:
Hot el
DeC e
A
Rec ABX
Recepce
Prop.
epc e
3.3
11
ˇ SE ˇ EXISTUJ´IC´ICH PRODUKTU ˚ KAPITOLA 3. RESER
12
3.4
Vyhodnocen´ı
Reˇserˇse potvrdila pomˇernˇe dostateˇcnou nab´ıdku na naˇsem trhu, nav´ıc v´ yˇcet produkt˚ u nen´ı rozhodnˇe kompletn´ı. Porovn´ av´ any byly pouze ty vybran´e na z´akladˇe v´ ysledk˚ u internetov´eho vyhled´avaˇce. Jiˇz na zaˇc´atku byla v poˇzadavc´ıch stanovena spr´ava objedn´avek a rezervac´ı, proto nepˇrekvap´ı, ˇze vˇsechny hodnocen´e syst´emy obsahovaly modul rezervace. Co je zaj´ımav´e, tak ani jeden neposkytuje spr´ avu person´ alu hotelu a vybaven´ı na jednotliv´ ych pokoj´ıch. V ostatn´ıch krit´eri´ıch se uˇz ale vˇetˇsinou liˇsily. Modul restaurace obsahuje jen menˇsina aplikac´ı, je to tak´e z toho d˚ uvodu, ˇze se pˇrev´aˇznˇe poˇc´ıt´a s moˇznost´ı jeho samostatn´eho nasazen´ı do restaurace. Pokud se zamˇeˇr´ıme na dalˇs´ı moduly, tak kaˇzd´ y syst´em bud’to nˇejak´e obsahoval nebo alespoˇ n nab´ızel speci´aln´ı funkce. Kalkulace a tok finanˇcn´ıch prostˇredk˚ u je jednou ze z´akladn´ıch funkc´ı podobn´ ych produkt˚ u, proto nechyb´ı ani v jednom ze zm´ınˇen´ ych, stejnˇe tak tisk faktur a podobn´ ych dokument˚ u. Na druhou stranu nebylo pˇr´ıliˇs podporov´ano zapoˇc´ıt´an´ı provize do v´ ysledn´e kalkulace pˇri spolupr´aci s ubytovac´ımi servery. Za povˇsimnut´ı stoj´ı, ˇze pouze dva syst´emy jsou webov´e, vˇetˇsina tak´e pˇri prvn´ım setk´an´ı s uˇzivatelem p˚ usob´ı znaˇcnˇe nepˇrehlednˇe a sloˇzitˇe na ovl´ad´an´ı. Co se t´ yˇce propagace, tak firmy se snaˇz´ı sv˚ uj produkt prodat, aˇz na p´ ar v´ yjimek nab´ızej´ı k vyzkouˇsen´ı sv´e demoverze a jsou lehko dostupn´e pˇri vyhled´ av´ an´ı na internetu. Pro z´akazn´ıky nab´ızej´ı i jin´e formy n´akupu neˇz jednor´azov´e zaplacen´ı, jako napˇr´ıklad na spl´atky nebo pron´ajem. Samozˇrejmost´ı je i urˇcit´a forma supportu. Z tabulky v pˇredchoz´ı kapitole, kde jsou pˇrehlednˇe zobrazena jednotliv´a krit´eria, nelze jednoznaˇcnˇe ˇr´ıci jak´ y program je nejlepˇs´ı. Pˇri v´ ybˇeru urˇcitˇe hraje hlavn´ı roli, pro jak´e zaˇr´ızen´ı bude aplikace pouˇzita. Pro menˇs´ı pensiony se bude hodit sp´ıˇse levnˇejˇs´ı syst´em s m´enˇe funkcemi neˇz pro velk´ y pˇetihvˇezdiˇckov´ y hotel. V naˇs´ı anal´ yze dva ze syst´em˚ u nen´ı moˇzn´e objektivnˇe ohodnotit, protoˇze spoleˇcnosti nenab´ızej´ı jejich demoverze. Jin´e zas p˚ usob´ı dosti nepˇrehlednˇe, sloˇzitˇe a nepˇr´ıvˇetivˇe. D˚ uleˇzit´ ym faktorem pro z´akazn´ıky mus´ı tak´e b´ yt modern´ı vzhled. Jako nejlepˇs´ı pro ubytovac´ı zaˇr´ızen´ı stˇredn´ı velikosti se jev´ı hotelov´ y syst´em Previo, kter´ y sice neobsahuje r˚ uzn´e speci´ aln´ı funkce (pay Tv, elektronick´e z´amky na dveˇre, ˇr´ızen´ı teploty na pokoj´ıch), ale jehoˇz v´ yhodou je pˇredevˇs´ım webov´a forma, jednoduch´e ovl´ad´an´ı a splnˇen´ı vˇetˇsiny zkouman´ ych krit´eri´ı. Probl´em je pouze jeho nemal´a cena a nemoˇznost jednor´azov´eho n´akupu. Podle referenc´ı ale vˇse nasvˇedˇcuje tomu, ˇze v souˇcasn´e dobˇe hodnˇe hotel˚ u vsadilo na tuto variantu. Z´avˇerem je tedy jednoduch´e odpovˇedˇet na ot´azku: Proˇc vyv´ıjet vlastn´ı hotelov´ y syst´em?“ ” ˇ adn´ Z´ y totiˇz nen´ı tak dokonal´ y, aby mˇel vˇsechny sledovan´e funkce. Pˇredevˇs´ım spr´avu vybaven´ı a person´alu defakto nemˇel implementov´ an ani jeden. Pˇrev´aˇzn´a vˇetˇsina zkouˇsen´ ych aplikac´ı na trhu nen´ı webov´ a, coˇz v´ yraznˇe sniˇzuje moˇznosti mobility. Nav´ıc v budoucnu se podle m´eho n´azoru vˇse bude stˇehovat na web, proto by bylo pro toto odvˇetv´ı nev´ yhodn´e z˚ ustat pouze v lok´aln´ıch verz´ıch. Prosadit se na ˇcesk´em trhu nebude i tak jednoduch´e, aby byl n´aˇs vlastn´ı syst´em u ´spˇeˇsn´ y, bude pro nˇej nutnost´ı obsaˇzen´ı funkc´ı, ve kter´ ych se shodly a poskytovaly je vˇsechny zde hodnocen´e produkty a d´ale pˇrid´an´ı nov´ ych modul˚ u, kter´e ostatn´ı nemaj´ı. V neposledn´ı ˇradˇe je d˚ uleˇzit´ a cenov´ a relace a pˇrekon´an´ı tak ˇcasto pˇredraˇzen´e konkurence.
Kapitola 4
Anal´ yza V t´eto ˇc´ asti je nejprve provedena anal´ yza souˇcasn´eho stavu aplikace, zamˇeˇren´a pˇredevˇs´ım na to, v ˇcem pˇredchoz´ı syst´em pokulh´aval a zda se v˚ ubec vyplat´ı na nˇej navazovat. Srovn´ an´ı existuj´ıc´ıch produkt˚ u na trhu z pˇredeˇsl´e kapitoly n´am napom˚ uˇze definovat a doplnit funkˇcn´ı a nefunkˇcn´ı poˇzadavky, kter´e jsou uvedeny d´ale. Jako souˇc´ast anal´ yzy nechyb´ı ani ustanoven´ı uˇzivatelsk´ ych rol´ı, odkaz na pˇr´ıpady uˇzit´ı neboli USE-CASE diagramy a Konceptu´aln´ı datov´ y model, z nˇehoˇz vych´ az´ı n´ avrh datab´aze a je jedn´ım ze z´akladn´ıch kamen˚ u anal´ yzy.
4.1
P˚ uvodn´ı aplikace
V roce 2009 byla vytvoˇrena bakal´aˇrsk´a pr´ace Realizace syst´emu pro podporu hotelov´e ” agendy“ [11]. Syst´em byl navrˇzen podle anal´ yzy vypracovan´e takt´eˇz jako bakal´aˇrsk´a pr´ ace Anal´ yza informaˇcn´ıho syst´emu pro ubytovac´ı zaˇr´ızen´ı“ [14] studentem Petrem V˚ ujtˇechem. ” Samotn´ y n´ avrh byl obs´ ahl´ y a v´ ysledn´ y program by tak pˇresahoval r´amce bakal´aˇrsk´e pr´ ace, proto byla zpracov´ ana jen ˇc´ ast funkcionality, coˇz bylo plnˇe dostaˇcuj´ıc´ı. I tak mˇela aplikace ˇradu nedostatk˚ u a dnes s odstupem doby bych ˇradu vˇec´ı po nabyt´ ych zkuˇsenostech implementoval jinak. Nejvˇetˇs´ım probl´emem bylo nedostateˇcn´e rozdˇelen´ı persistentn´ı vrstvy a logiky aplikace, tedy vrstvy, kde se mimo jin´e nach´azej´ı controllery. Jako z´aklad byl pouˇzit n´avrhov´ y vzor Model-View-Controller1 . Jako datov´a vrstva byl implementov´an pouze ˇcist´ y model aplikace a vˇse ostatn´ı kromˇe view bylo uloˇzeno v tˇr´ıd´ach Controlleru, kter´e napˇr´ıklad zpracov´avaly uˇzivatelsk´ y vstup a tak´e pˇr´ımo prov´adˇely dotazy do datab´aze, coˇz rozhodnˇe nen´ı dobr´ y zp˚ usob. Znaˇcnˇe je omezena moˇznost budouc´ıho rozˇsiˇrov´an´ı, ˇci v´ ymˇeny jednotliv´ ych ˇc´ast´ı jako datov´eho u ´loˇziˇstˇe, uˇzivatelsk´eho rozhran´ı. Dnes se tento probl´em ˇreˇs´ı napˇr´ıklad n´avrhov´ ym vzorem DAO2 nebo technologi´ı EJB3 (viz stejnojmenn´a kapitola 5.1.3). Za nedostatek tak´e povaˇzuji nepˇr´ıliˇs vhodnˇe zvolen´ y zp˚ usob validace a chyby vych´azej´ıc´ı z neefektivn´ı pr´ace s datov´ ym modelem a datab´ az´ı. Pˇri tvorbˇe tak´e vzniklo pomˇernˇe znaˇcn´e mnoˇzstv´ı redundantn´ıho k´odu. 1
Model-View-Controller – n´ avrhov´ y vzor, kter´ y rozdˇeluje aplikaci na datov´ y model, ˇr´ıd´ıc´ı logiku a uˇzivatelsk´e rozhran´ı. 2 DAO (Data Access Object) – objekt, kter´ y poskytuje rozhran´ı pro pˇr´ıstup do datab´ aze. 3 Enterprise Java Beans – serverov´ a komponentov´ a architektura, kter´ a je souˇca ´st´ı platformy Java EE.
13
´ KAPITOLA 4. ANALYZA
14
Vˇse zde zm´ınˇen´e vypl´ yv´ a z toho, ˇze na bakal´aˇrsk´e pr´aci jsem se hlavnˇe uˇcil pro mˇe nov´ ym technologi´ım a protoˇze s tvorbou enterprise4 syst´em˚ u jsem do t´e doby nemˇel t´emˇeˇr ˇz´adn´e zkuˇsenosti, vznikli tyto nedokonalosti. Vzhledem k v´ yˇse zm´ınˇen´ ym z´aleˇzitostem jsem se rozhodl zaˇc´ıt implementaci syst´emu u ´plnˇe od zaˇc´atku pouze s vyuˇzit´ım anal´ yzy a n´avrhu z p˚ uvodn´ı pˇredlohy. Tyto ˇc´ asti, i kdyˇz byli zpracov´any kvalitn´ım zp˚ usobem, bude stejnˇe z´ahodno v´ıce rozpracovat a vylepˇsit.
4.2
Funkˇ cn´ı a nefunkˇ cn´ı poˇ zadavky
Z´akladn´ı funkˇcn´ı a nefunkˇcn´ı poˇzadavky z˚ ust´avaj´ı stejn´e jako pro bakal´aˇrskou pr´aci. Doˇslo k pˇrid´an´ı nˇekolika dalˇs´ıch a jejich poˇcet se tak rozrostl. Zde je uveden celkov´ y seznam:
Funkˇ cn´ı poˇ zadavky: • Syst´em bude umoˇzn ˇovat spravov´ an´ı objedn´avek (zastˇreˇsuje rezervaci pokoj˚ u, poˇzadavky na stravov´ an´ı, prodej sluˇzeb, zboˇz´ı). • Syst´em bude uchov´ avat informace o z´akazn´ıc´ıch ubytovac´ıho zaˇr´ızen´ı. • Syst´em bude podporovat spolupr´ aci s partnery. • Syst´em bude poskytovat pˇrehledy a statistick´e u ´daje. • Syst´em bude evidovat turistick´e a ubytovac´ı poplatky, kter´e je ubytovac´ı zaˇr´ızen´ı ze z´akona povinno odv´ adˇet. • Syst´em bude evidovat informace o pokoj´ıch. • Syst´em bude evidovat informace o sez´on´ach. • Syst´em bude evidovat informace o cen´ach pokoj˚ u vzhledem k obsazenosti pokoje a sez´onˇe. • Syst´em bude pˇr´ıstupn´ ym pouze registrovan´ ym uˇzivatel˚ um. • Syst´em bude spravovat vybaven´ı na pokoj´ıch • Syst´em bude z´ akazn´ık˚ um umoˇzn ˇovat pˇres webov´e str´anky hotelu online rezervaci. • Syst´em bude poskytovat jednoduchou spr´avu zamˇestnanc˚ u. • Syst´em bude zobrazovat pˇrepoˇcty celkov´ ych cen podle aktu´aln´ıch kurz˚ u. • Syst´em bude umoˇzn ˇovat tisk(export) faktur pro jednotliv´e objedn´avky a tisk(export) knihy host˚ u. 4
Enterprise syst´em – typicky se jedn´ a o rozs´ ahl´ y podnikov´ y syst´em umoˇzn ˇuj´ıc´ı spr´ avu r˚ uzn´ ych proces˚ u
ˇ ´ 4.3. DEFINICE UZIVATELSK YCH ROL´I
15
Nefunkˇ cn´ı poˇ zadavky: • Syst´em bude pˇr´ıstupn´ y pˇres webov´e rozhran´ı. • Syst´em bude implementov´ an v multiplatformn´ım programovac´ım jazyce. • Syst´em bude m´ıt jednoduch´e a pˇrehledn´e uˇzivatelsk´e rozhran´ı a ovl´ad´an´ı. • Data budou uloˇzena v relaˇcn´ı datab´azi. • Str´ anky budou ve validn´ım HTML a CSS. • Syst´em bude spr´ avnˇe zobrazov´an v hlavn´ıch webov´ ych prohl´ıˇzeˇc´ıch.
4.3
Definice uˇ zivatelsk´ ych rol´ı
Do syst´emu budou pˇristupovat r˚ uzn´ı uˇzivatel´e, od recepˇcn´ıch aˇz po administr´atory. Proto bude nutn´e tyto akt´ery rozdˇelit do skupin s r˚ uzn´ ymi pravomocemi.
Obr´azek 4.1: Uˇzivatelsk´e role.
Podle diagramu je zˇrejm´e, ˇze je poˇc´ıt´ano se tˇremi z´akladn´ımi rolemi:
Recepˇ cn´ı – jedn´a se sice o nejniˇzˇs´ı roli v syst´emu, ale jedin´e s ˇc´ım nebude moci pracovat bude spr´ ava zamˇestnanc˚ u a dalˇs´ıch uˇzivatel˚ u. Vˇsechny ostatn´ı moˇznosti budou vˇsem recepˇcn´ım zpˇr´ıstupnˇeny.
Manaˇ zer – tato role pˇredstavuje napˇr´ıklad vedouc´ıho smˇeny. Narozd´ıl od recepˇcn´ı m˚ uˇze spravovat zamˇestnance a v pˇr´ıpadˇe pokojsk´e nebo u ´drˇzb´aˇre pˇriˇrazovat u ´klidy, resp. opravy.
Administr´ ator – role administr´atora je klasicky vyhrazena uˇzivatel˚ um s nejvyˇsˇs´ımi pr´ avy a bez ˇz´ adn´eho omezen´ı. V aplikaci bude m´ıt nav´ıc moˇznost vytv´aˇret a editovat manaˇzery, ale i dalˇs´ı administr´ atory za pˇredpokladu, ˇze jich bude potˇreba v´ıce neˇz jeden.
´ KAPITOLA 4. ANALYZA
16
4.4
Pˇ r´ıpady uˇ zit´ı
Jednotliv´e pˇr´ıpady uˇzit´ı vych´ azej´ı z poˇzadavk˚ u na aplikaci, pokud vˇetˇsina z nich byla zachov´ana, jak se p´ıˇse v kapitole 4.2, nedoch´ az´ı ani u USE-CASE diagram˚ u k pˇrevratn´ ym zmˇen´am a pˇri tvorbˇe t´eto pr´ ace byly vyuˇzity p˚ uvodn´ı z bakal´aˇrsk´e pr´ace [14].
4.5
Konceptu´ aln´ı datov´ y model
Konceptu´aln´ı datov´ y model doznal oproti p˚ uvodn´ı verzi [14] ˇc´asteˇcn´ ych zmˇen. Zaprv´e bylo nutn´e opravit chyby. Tˇr´ıda Cen´ık byla omezena pouze pro kapacitu osmi host˚ u. Sice se nepˇredpokl´ ad´ a, ˇze by hotel potˇreboval um´ıstit tolik host˚ u na jeden pokoj, ale i tak tento nedostatek znaˇcnˇe omezoval flexibilitu datov´eho modelu a byl nevhodnˇe navrˇzen. ˇ sen´ım je vytvoˇren´ı dvou atribut˚ Reˇ u v Cen´ıku a urˇcen´ı tak ceny pro jakoukoliv obsazenost. Dalˇs´ı probl´em spoˇc´ıval v nemoˇznosti pˇrid´avat v´ıce stejn´ ych zboˇz´ı ˇci sluˇzeb k objedn´avce. Nam´ısto vztahu N:M byla pˇrid´ ana tˇr´ıda nahrazuj´ıc´ı tento vztah a atribut urˇcuj´ıc´ı poˇcet. Vzhledem k rozˇs´ıˇren´ı funkˇcn´ıch poˇzadavk˚ u bylo nutn´e syst´em k jejich splnˇen´ı i dostateˇcnˇe rozˇs´ıˇrit. Ke kaˇzd´emu pokoji se novˇe v´ aˇze tˇr´ıda Vybaven´ı umoˇzn ˇuj´ıc´ı spr´avu n´abytku a dalˇs´ıho zaˇr´ızen´ı. D´ıky nepovinnosti vazby je moˇzn´e evidovat i vyˇrazen´e vˇeci nebo jen uschovan´e ve skladu. Samostatn´ ym odd´ılem je spr´ ava zamˇestnanc˚ u. K modelu jsou pˇripojeny entity typu Za´ zb´aˇr a spoleˇcnˇe s p˚ mˇestnanec, Manaˇzer, Recepˇcn´ı, Pokojsk´a, Udrˇ uvodn´ı tˇr´ıdou Uˇzivatele vytv´aˇrej´ı jednoduch´ y strom dˇediˇcnosti. Podle jednotliv´ ych tˇr´ıd jsou tak´e vˇsichni uˇzivatel´e aplikace klasifikov´ ani do uˇzivatelsk´ ych rol´ı. Zaznamen´av´any jsou rovnˇeˇz ˇcinnosti pokojsk´ ych au ´drˇzb´aˇr˚ u ve formˇe u ´klid˚ u a oprav proveden´ ych vˇzdy v urˇcit´ y den. Pro online rezervace se pˇridala nov´ a samostatn´a entita Pˇredbˇeˇzn´e rezervace. D˚ uvod, proˇc tyto u ´daje nejsou nijak zakomponov´ any do hlavn´ı ˇc´asti s objedn´avkou, je prost´ y. N´avˇstˇevn´ık webu m˚ uˇze formul´ aˇr vyplnit nesmysln´ ymi u ´daji a proto je nutn´a n´asledn´a kontrola uˇzivatele syst´emu. Pro tvorbu vˇsech UML5 diagram˚ u uveden´ ych v t´eto diplomov´e pr´aci byl pouˇzit n´astroj Enterprise Architect 7.5 [12].
5
UML (Unified Modeling Language) – je grafick´ y jazyk pro n´ avrh a dokumentaci softwarov´ ych syst´em˚ u.
´ ´I DATOVY ´ MODEL 4.5. KONCEPTUALN
Obr´ azek 4.2: Konceptu´aln´ı datov´ y model.
17
18
´ KAPITOLA 4. ANALYZA
Kapitola 5
N´ avrh ˇ reˇ sen´ı N´avrh ˇreˇsen´ı se snaˇz´ı bl´ıˇze pˇribl´ıˇzit konkr´etn´ı implementaci a syst´em navrhnout jiˇz v z´ avislosti na zvolen´e platformˇe a implementaˇcn´ım prostˇred´ı. Kapitola zaˇc´ın´a popisem technologi´ı pouˇzit´ ych pˇri v´ yvoji syst´emu a nast´ınˇen´ı zp˚ usobu pr´ace s nimi. V dalˇs´ı ˇc´asti jsou uvedeny diagramy komponent a nasazen´ı.
5.1 5.1.1
V´ ybˇ er implementaˇ cn´ıho prostˇ red´ı Java Enterprise Edition
Pro vytvoˇren´ı syst´emu je vyuˇzita platforma Java Enterprise Edition [4], kter´a se pˇr´ımo hod´ı k v´ yvoji velk´ ych podnikov´ ych aplikac´ı a informaˇcn´ıch syst´em˚ u. Je zaloˇzena na v´ıcevrstv´e architektuˇre, jenˇz rozdˇeluje aplikaci na prezentaˇcn´ı, aplikaˇcn´ı a persistentn´ı vrstvu. Specifikace, kter´e spadaj´ı pod Java EE, i zm´ınˇen´e vrstvy jsou bl´ıˇze rozebr´any v n´asleduj´ıc´ım textu.
5.1.2
Java Server Faces
Java Server Faces [4] (d´ ale jen JSF) je komponentovˇe orientovan´ y framework pro webov´e aplikace. Znamen´ a to, ˇze cel´ a webov´a str´anka je sloˇzena z jednotliv´ ych komponent, kter´e jsou v syst´emu ch´ ap´ any jako interaktivn´ı sloˇzka. Pod pojmem komponenta si napˇr´ıklad m˚ uˇzeme pˇredstavit formul´ aˇr, odkaz, tlaˇc´ıtko nebo jen vstupn´ı pole ve formul´aˇri. Jejich v´ yhodou je, ˇze se daj´ı vz´ ajemnˇe skl´ adat a vytv´aˇrej´ı tak dalˇs´ı. Vˇetˇsina komponent jsou vyˇsˇs´ı logick´e celky, vznikl´e sloˇzen´ım z nˇekolika tˇr´ıd: Tag – reprezentuje komponentu, tak jak ji zapisujeme do webov´e str´anky (napˇr´ıklad inputText, selectOneListbox, OneListbox). Zpracuje poˇzadavek od uˇzivatele a pˇred´a d´ ale logice. UI Component – tato tˇr´ıda zast´av´a aplikaˇcn´ı logiku cel´e komponenty, jako tˇreba konverzi hodnot na text, vol´ an´ı action metod nebo validace (jedn´a se napˇr. o tˇr´ıdy UIInput, UISelectOne).
19
´ ˇ SEN ˇ ´I KAPITOLA 5. NAVRH RE
20
Renderer – je posledn´ı tˇr´ıdou, ze kter´e se takov´a typick´a komponenta skl´ad´a. M´a za u ´kol pˇrev´est komponentu do html k´ odu, star´a se tedy o vykreslov´an´ı. Pˇri vykreslov´an´ı str´ anky je vˇzdy vytvoˇren tzv. komponentov´ y strom. Na obr´azku 5.1 m˚ uˇzeme vidˇet pˇr´ıklad stromu sloˇzen´eho z koˇrene UIView obsahuj´ıc´ı komponentu OutputText a formul´aˇre s jedn´ım vstupn´ım polem a tlaˇc´ıtkem.
Obr´ azek 5.1: Strom komponent v JSF (zdroj [13]).
Uˇzivatel odeˇsle poˇzadavek na server napˇr´ıklad kliknut´ım na tlaˇc´ıtko. Dan´a komponenta (v naˇsem pˇr´ıpadˇe commandButton) vyvol´ a event a ten je zpracov´an hlavn´ım Servletem v JSF. Jedn´a se o tzv. FacesServlet, kter´ y zpracov´av´a eventy vyvolan´e jednotliv´ ymi komponentami a jin´e uˇzivatelovy poˇzadavky. Star´ a se defakto o propojen´ı HTML1 a Javy. V pˇr´ıpadˇe, ˇze do nˇej pˇristoup´ı v´ıce poˇzadavk˚ u, zpracuje je v´ıcevl´aknov´ ym zp˚ usobem, kaˇzd´ y jako jedno vl´akno. Framework Java Server Faces, obdobnˇe jako dalˇs´ı podobn´e, se drˇz´ı architektury MVC. D´ıky tomu efektivnˇe oddˇeluje prezentaˇcn´ı vrstvu od zbytku aplikace. V n´asleduj´ıc´ıch odstavc´ıch si pˇredstav´ıme dalˇs´ı soun´ aleˇzitosti s t´ımto frameworkem spojen´e. 5.1.2.1
Managed Beans
Managed Beans tak´e ˇcasto oznaˇcov´ any jako Backing Beans, jsou jedn´ım ze z´akladn´ıch kamen˚ u v Java Server Faces, protoˇze zajiˇst’uj´ı aplikaˇcn´ı logiku syst´emu. Jedn´a se v podstatˇe o Java tˇr´ıdy, obsahuj´ıc´ı gettery, settery a metody, reaguj´ıc´ı na ud´alosti komponent.
1
HTML (HyperText Markup Language) – znaˇckovac´ı jazyk urˇcen´ y pˇredevˇs´ım pro v´ yvoj webov´ ych str´ anek.
´ ER ˇ IMPLEMENTACN ˇ ´IHO PROSTRED ˇ ´I 5.1. VYB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
21
@ManagedBean @SessionScoped public class MyBean{ private String name; public String getName(){ return name; } public void setName(String name){ this.name = name; } ... }
Dˇr´ıve se definovalo pouˇzit´ı urˇcit´e Managed Beany v konfiguraˇcn´ım xml souboru faces-config.xml, dnes ve specifikaci JSF 2.0 [5] toto m˚ uˇzeme nahradit pomoc´ı anotac´ı pˇr´ımo nad deklarac´ı urˇcit´e tˇr´ıdy, coˇz je pˇri programov´an´ı o mnoho pohodlnˇejˇs´ı. D˚ uleˇzit´ ym parametrem u Managed Beans je scope, kter´ y urˇcuje ˇzivotnost Beany. Request – nastaven´ı request znamen´a, ˇze Beana se vytvoˇr´ı pˇri poˇzadavku uˇzivatele a po jeho vyˇr´ızen´ı je odstranˇena. Session – jak uˇz n´ azev napov´ıd´ a, ˇzivotnost takov´e Beany je pouze v r´amci jedn´e session. Aplication – pˇri t´eto volbˇe parametru, je aktivn´ı po celou dobu co bˇeˇz´ı aplikace na serveru. None – kdyˇz nastav´ıme scope na none, tak Beana nen´ı nijak ukl´adan´a, ani viditeln´a pro JSF str´ anku, vytv´ aˇr´ı se aˇz na vyˇz´ad´an´ı. Vˇetˇsinou se tato volba pouˇz´ıv´a, kdyˇz jedna Beana referencuje na jinou, kter´e se pˇriˇrad´ı scope typu none. 5.1.2.2
Navigace
Naˇcten´ı dat z formul´ aˇre do nˇejak´e Beany a umoˇznit tak program´atorovi dalˇs´ı pr´aci s tˇemito daty um´ı cel´ a ˇrada framework˚ u. Java Server Faces um´ı jeˇstˇe nˇeco nav´ıc a jedna z tˇechto vˇec´ı je napˇr´ıklad navigace. Pod t´ımto pojmem se rozum´ı pˇrechod ze str´anky na jinou str´anku, vyvolan´ y tˇreba stisknut´ım tlaˇc´ıtka. Statick´ a navigace Rozliˇsujeme dva druhy navigace, prvn´ı z nich je tzv. statick´a navigace, kde je napevno zad´ an atribut action“. Nejprve je ale zapotˇreb´ı nastavit pomoc´ı navigaˇcn´ıch pravidel
do konfiguraˇcn´ıho souboru faces-config.xml, co se m´a za dan´e situace dˇelat. Zde na uk´azce je pˇr´ıklad takov´eho pravidla, kde v pˇr´ıpadˇe, ˇze se nach´az´ıme na str´ance first.xhtml a dojde k vyvol´ an´ı akce next“, tak dojde k pˇrechodu na str´anku second.xhtml. ”
´ ˇ SEN ˇ ´I KAPITOLA 5. NAVRH RE
22
Obr´ azek 5.2: Statick´a navigace v JSF.
1 2 3 4 5 6 7 8 9 10 11
... /first.xhtml next /second.xhtml ...
Dynamick´ a navigace Druh´ ym typem je dynamick´ a navigace zn´azornˇen´a na n´asleduj´ıc´ım pˇr´ıkladu. Metoda ve tˇr´ıdˇe MyBean m˚ uˇze vracet nˇejak´e ˇretˇezce, podle toho co vr´at´ı, tak to se pak pouˇzije jako smˇerov´an´ı na dalˇs´ı str´anku. Nav´ıc kdyˇz method() vr´at´ı ˇretˇezec o stejn´em n´azvu jako je str´anka, tak se jedn´a o implicitn´ı navigaci. Syst´em s´ am urˇc´ı pˇrechod na novou str´anku a program´ator nemus´ı zapisovat ˇz´ adn´ a navigaˇcn´ı pravidla do konfiguraˇcn´ıho souboru faces-config.xml.
Obr´ azek 5.3: Dynamick´a navigace v JSF.
1 2 3 4
public class MyBean { ... public String method() { if (...) {
´ ER ˇ IMPLEMENTACN ˇ ´IHO PROSTRED ˇ ´I 5.1. VYB
5 6 7 8 9
23
return "index"; } return "next"; } }
5.1.2.3
Konverze
Dalˇs´ı co JSF um´ı je konverze, neboli konvertov´an´ı vstupn´ıch hodnot. Vyuˇzijeme ji, pokud budeme cht´ıt hodnotu (ˇretˇezec) co uˇzivatel zapsal do vstupn´ıho pole ve formul´aˇri zkonvertovat do nˇejak´eho javovsk´eho objektu. Konverze na ˇc´ısla prob´ıh´a automaticky, takˇze t´ım se nemus´ıme zatˇeˇzovat. Konverzi je vhodn´e pouˇz´ıt pro datum nebo ˇcas, jako je zde na uk´ azce, vyuˇzit´ım konvertoru, kter´ y poskytuje JSF, konkr´etnˇe pro rok.
1 2 3
Tak´e si m˚ uˇzeme vytv´ aˇret vlastn´ı konvertory. Z´akladem je tˇr´ıda implementuj´ıc´ı interface Convertor se dvˇemi metodami getAsObject(), kter´a vrac´ı objekt a metoda getAsString(), kter´a vrac´ı ˇretˇezec pro zpˇetn´e zobrazen´ı objektu na str´ance. Tyto metody tedy slouˇz´ı k pˇrev´adˇen´ı ˇretˇezce na n´ aˇs poˇzadovan´ y objekt a zas naopak. Pˇrid´an´ı konvertoru do naˇseho syst´emu se provede v faces-config.xml. Novˇe ve verzi JSF 2.0 m˚ uˇzeme vyuˇz´ıt anotac´ı a konvertor tak zaregistrovat do syst´emu t´ımto zp˚ usobem.
1 2 3 4 5
@FacesConverter("phoneConverter") class PhoneConverter implements Converter { public Object getAsObject() {...} public String getAsString() {...} }
5.1.2.4
Validace
D´ale Java Server Faces obsahuje tak´e podporu pro validaci. Funguje klasick´ ym zp˚ usobem, kdyˇz uˇzivatel odeˇsle data pomoc´ı formul´aˇre, tak neˇz se zaˇcnou d´ale zpracov´avat syst´emem, provede se validace, kter´ a ovˇeˇr´ı, zda byla napˇr´ıklad vyplnˇena vˇsechna povinn´a pol´ıˇcka nebo zda jsou vyplnˇena spr´ avnˇe. Defaultn´ıch valid´ ator˚ u je pomˇernˇe m´alo, takˇze pokud budeme programovat vlastn´ı JSF aplikaci, tak dozajista vyuˇzijeme moˇznost tvorby vlastn´ıch valid´ator˚ u. Jejich implementace je velice podobn´ a jako u konvertor˚ u. Tˇr´ıda naˇseho valid´atoru implementuje interface Validator, kde hlavn´ı metodou, kter´ a se pˇri validaci vol´a, je validate(). Pokud data neprojdou validac´ı je vyhozena v´ yjimka a dalˇs´ı zpracov´an´ı dat je zastaveno, nedojde k uloˇzen´ı dat do beany a ukonˇc´ı se uˇzivatelova ˇz´ adost. D˚ uleˇzitou vlastnost´ı je, ˇze kdyˇz se validuje formul´aˇr a tˇreba
´ ˇ SEN ˇ ´I KAPITOLA 5. NAVRH RE
24
jen jedno pole na zaˇc´ atku neprojde, tak se jeˇstˇe zkontroluj´ı i dalˇs´ı. D˚ uvod je prost´ y, uˇzivatel d´ıky tomu uvid´ı vˇsechny chyby, co ve formul´aˇri udˇelal. Na n´asleduj´ıc´ım k´ odu m˚ uˇzeme vidˇet, jak by se takov´ y valid´ator implementoval. V prvn´ım pˇr´ıpadˇe pomoc´ı faces-config.xml, ve druh´em jednoduˇseji, pomoc´ı anotace @Validator.
1 2 3 4 5 6 7
@FacesValidator("emailValidator") public class EmailValidator implements Validator{ public void validate(FacesContext fc, UIComponent comp, Object value) throws ValidatorException { ... } }
5.1.2.5
ˇ Zivotn´ ı cyklus Java Server Faces
Chod aplikace a zpracov´ an´ı ˇz´ adost´ı je ˇr´ızeno podle ˇzivotn´ıho cyklu JSF. M´a ˇsest hlavn´ıch f´az´ı, mezi nimiˇz jsou r˚ uzn´e mezistavy pro zpracov´an´ı ud´alost´ı. Na zaˇc´atku pˇrijde request od uˇzivatele a pot´e uˇz n´ asleduje prvn´ı f´ aze: 1. Restore View – pˇri t´eto f´ azi dojde k postaven´ı komponentov´eho stromu (viz obr. 5.1). 2. Apply Request Values – pˇreˇctou se parametry, kter´e nese ˇz´adost. Napˇr´ıklad kdyˇz dojde k vyplnˇen´ı a odesl´ an´ı nˇejak´eho formul´aˇre, naˇctou se vyplnˇen´a data. 3. Validation – tˇret´ı f´ az´ı je validace naˇcten´ ych dat. 4. Update Model Values – zde dojde k uloˇzen´ı nov´ ych hodnot z formul´aˇre do Managed Beany, kde s nimi pak program´ ator m˚ uˇze d´ale pracovat. 5. Invoke Application – neboli f´ aze akce a navigace. Probˇehnou metody nav´azan´e na komponentu a v pˇr´ıpadˇe implementovan´eho pˇresmˇerov´an´ı, dojde k pˇrechodu na jinou str´anku. 6. Render Response – je posledn´ı f´az´ı pˇredt´ım, neˇz se odeˇsle zpˇet uˇzivateli odpovˇed’. Na serveru se zavol´ a initial request na novou str´anku a tak´e se v tomto st´adiu mohou uloˇzit stavy komponent, pokud je potˇreba. V pˇr´ıpadˇe, ˇze doˇslo k prvn´ımu naˇcten´ı str´anky a session je prozat´ım pr´azdn´a, pˇrech´az´ı se z prvn´ı f´aze ihned na vytvoˇren´ı odpovˇedi. 5.1.2.6
JSF 2.0
V roce 2009 byla vyd´ ana platforma Java EE 6 [5] jej´ıˇz souˇc´ast´ı je nov´a verze JSF 2.0, kter´a pˇrinesla ˇradu inovac´ı. Zde je v´ yˇcet tˇech nejhlavnˇejˇs´ıch: • nen´ı potˇreba ps´ at vˇsechny konfiguraˇcn´ı informace a metadata do souboru faces-config.xml, ale je moˇzn´e vyuˇz´ıt jednoduˇsˇs´ıch a pˇrehlednˇejˇs´ıch anotac´ı,
´ ER ˇ IMPLEMENTACN ˇ ´IHO PROSTRED ˇ ´I 5.1. VYB
25
• souˇc´ ast´ı Java Server Faces je tak´e ˇsablonovac´ı syst´em Facelets zaloˇzen´ y na standardu XML2 , • vylepˇsen´ a integrace Ajaxu, • zjednoduˇsen´ı tvorby vlastn´ıch komponent, • podpora GET requestu, pomoc´ı nˇehoˇz m˚ uˇzeme tak´e efektivnˇe pˇren´aˇset data, • implicitn´ı navigace, • vylepˇsen´ı v´ yjimek a validace, • nov´e druhy scope pro Managed Beans – View, Custom, • nov´e komponentov´e knihovny, • a dalˇs´ı...
5.1.3
Enterprise Java Beans (EJB)
Dostateˇcn´e oddˇelen´ı persistentn´ı a aplikaˇcn´ı vrstvy zajist´ı technologie Enterprise Java Beans [4], souˇc´ ast platformy Java EE. Tˇr´ıdy zajiˇst’uj´ıc´ı v naˇsem syst´emu tuto funkcionalitu se naz´ yvaj´ı Session Beany, kter´e jsou jedn´ım z dvou typ˚ u Enterprise Java Beans (druh´e Message Driven Beans zde nejsou popisov´any). Jak je vidˇet na obr´ azku 5.4, EJB implementuje tzv. servisn´ı (business) vrstvu aplikace. Pracuje s datovou vrstvou a jej´ı EJB metody jsou vol´any aplikaˇcn´ı vrstvou, kterou reprezentuj´ı Managed Beany. Program´ ator se o mnoho vˇec´ı pˇri pouˇz´ıvan´ı EJB nemus´ı zaj´ımat. O inicializaci se postar´ a kontejner, stejnˇe tak o pˇr´ıstup k Entity Manageru, vˇse pomoc´ı dependency injection.
1 2 3 4 5 6 7 8 9 10 11 12
@Stateless public class HotelSessionBean implements HotelSessionBeanLocal{ @PersistenceContext private EntityManager em; public Guest getGuest(Integer id){ Guest guest = em.find(Guest.class, id); return guest; } ... }
2
XML (Extensible Markup Language) [19] – obecn´ y znaˇckovac´ı jazyk, kter´ y je pˇredevˇs´ım urˇcen pro v´ ymˇenu dat mezi aplikacemi a pro publikov´ an´ı dokument˚ u ve standardizovan´em form´ atu.
´ ˇ SEN ˇ ´I KAPITOLA 5. NAVRH RE
26
Obr´ azek 5.4: Architektura v´ıce-vrstv´e aplikace (zdroj [15]).
Anotace @EJB ˇr´ık´ a kontejneru, ˇze chci pouˇz´ıt konkr´etn´ı Session Beanu. Je tak injectov´ana instance, kter´a implementuje interface HotelSessionBeanLocal. 1 2 3 4 5 6 7 8 9 10 11 12 13 14
@ManagedBean @SessionScoped public class HotelBean { @EJB private HotelSessionBeanLocal hotelSessionBean; private Guest guest; public Guest getGuest(Integer id){ return hotelSessionBean.getGuest(); } ... }
Pˇri pr´aci s aplikac´ı m´ a klient k dispozici v r´amci session pˇr´ıstup pr´avˇe k jedn´e instanci Session Beany. Kaˇzd´a z nich m´ a sv˚ uj ˇzivotn´ı cyklus a to v z´avislosti jak´eho jsou typu: Stateless nebo Stateful.
´ ER ˇ IMPLEMENTACN ˇ ´IHO PROSTRED ˇ ´I 5.1. VYB
27
ˇ Obr´ azek 5.5: Zivotn´ ı cyklus Stateful Session Beany (zdroj [4]).
ˇ Obr´ azek 5.6: Zivotn´ ı cyklus Stateless Session Beany (zdroj [4]).
5.1.4
Java Persistance API
Java Persistence API [4] je specifikace snaˇz´ıc´ı se standardizovat objektovˇe-relaˇcn´ı mapov´ an´ı, tj. mapov´ an´ı Java objekt˚ u na jednotliv´e z´aznamy v tabulk´ach relaˇcn´ı datab´aze. Pro vyuˇzit´ı tohoto standardu pouˇzijeme implementuj´ıc´ı bal´ıˇcek EclipseLink, kter´ y n´am samo nab´ız´ı 3 IDE . Pro urˇcen´ı mapovan´ ych entit, atribut˚ u a dalˇs´ıch vlastnost´ı se pˇredevˇs´ım pouˇz´ıvaj´ı anotace4 . Zde si uvedeme pˇrehled z´akladn´ıch anotac´ı pouˇzit´ ych v t´eto pr´aci: @Entity - urˇcuje tˇr´ıdu mapovanou jako entity na relaˇcn´ı tabulku. @Table - slouˇz´ı k definici n´ azvu tabulky. @Transient - tato promˇenn´ a nebude mapov´ana. @Id - oznaˇcuje prim´ arn´ı kl´ıˇc. @GeneratedValue - ˇr´ık´ a, ˇze tato promˇenn´a bude automaticky generovan´a. @OneToOne - deklaruje vztah s jinou entitou v pomˇeru 1:1. @OneToMany - vztah 1:N. 3 Integrated Development Environment – softwarov´ a aplikace poskytuj´ıc´ı program´ ator˚ um komplexn´ı prostˇred´ı pro v´ yvoj softwaru. 4 Anotace – zp˚ usob z´ apisu meta-informac´ı, uv´ adˇej´ı se pˇr´ımo do k´ odu
´ ˇ SEN ˇ ´I KAPITOLA 5. NAVRH RE
28
@ManyToOne - vztah N:1. @ManyToMany - vztah N:N. @JoinColumn - specifikuje sloupec pˇripojen´ y k entitˇe za u ´ˇcelem mapov´an´ı vztahu nejˇcastˇeji N:1. @PrimaryKeyJoinColumn - stejn´e jako @JoinColumn, jen nav´ıc se souˇcasnˇe jedn´a o sloupec prim´ arn´ıho kl´ıˇce. @Temporal - oznaˇcuje promˇennou, kter´a mapuje na typ java.sql.Date, java.sql.Calendar nebo java.sql.Timestamp. @Inheritance - deklaruje zp˚ usob ukl´ ad´an´ı entit do tabulek pˇri dˇedˇen´ı. @DiscriminatorColumn - definice diskrimin´atoru, pro rozliˇsen´ı potomk˚ u pˇri dˇedˇen´ı.
5.1.5
PrimeFaces
PrimeFaces [7] je knihovna, obsahuj´ıc´ı v´ıce neˇz 100 Java Server Faces komponent, kter´e v´ yvoj´aˇr m˚ uˇze na sv´ ych webov´ ych str´ ank´ ach vyuˇz´ıt. Pro pˇredstavu jsou to komponenty jako kalend´aˇr, r˚ uzn´e panely, dialogy, datov´e tabulky, grafy, obr´azkov´e galerie a dalˇs´ı. Jejich hlavn´ı v´ yhodou oproti standardn´ım komponent´am z JSF je rozˇs´ıˇren´ı o Ajax5 chov´an´ı. D´a se tedy ˇr´ıci, ˇze se jedn´ a o ajaxov´ y framework rozˇsiˇruj´ıc´ı JSF komponenty. Pro pr´aci program´atora to znamen´a, ˇze je tak odst´ınˇen od Javascriptu a pracuje jen s ˇcistou“ Javou, resp. s Java ” Server Faces. Zde na uk´azce k´ odu je PrimeFaces tlaˇc´ıtko volaj´ıc´ı funkci createNew(), to by nebylo aˇz tak nic nov´eho, ale d´ıky parametru update je zavol´an Ajax, kter´ y bez znovunaˇcten´ı str´anky aktualizuje objekt s identifik´ atorem books“. ” Nejedn´a se o jedinou takto zaloˇzenou technologii. Podobn´ ych ˇreˇsen´ı m˚ uˇzeme nal´ezt bezpoˇcet, za zm´ınku napˇr´ıklad stoj´ı Richfaces, MyFaces, Icefaces. Pokaˇzd´e se jedn´a o knihovnu widget˚ u, vybudovanou nad JSF. Na zaˇc´atku pˇri v´ ybˇeru knihovny, kterou zvolit pro tuto pr´aci (vˇetˇsinou nelze pouˇz´ıt dvˇe z´ aroveˇ n), hr´alo znaˇcnou roli, ˇze PrimeFaces v souˇcasnosti obsahuj´ı s pˇrehledem nejv´ıce komponent, jednoduˇse se integruj´ı do syst´emu, je to rychle se vyv´ıjej´ıc´ı projekt a jsou nejl´epe propracovan´e z hlediska vzhledu. Stejnˇe jako ostatn´ı zde popisovan´e technologie i PrimeFaces jsou ˇs´ıˇren´e pod licenc´ı opensource6 .
5
Ajax (Asynchronous JavaScript and XML) – technologie pro vz´ ajemnou v´ ymˇenu XML dat mezi www str´ ankou a serverem za pomoci JavaScriptu. Znaˇcnou v´ yhodou tohoto ˇreˇsen´ı je, ˇze vˇse prob´ıh´ a bez znovunaˇc´ıt´ an´ı str´ anky. 6 Open-source – oznaˇcen´ı pro software s otevˇren´ ym zdrojov´ ym k´ odem.
´ ER ˇ IMPLEMENTACN ˇ ´IHO PROSTRED ˇ ´I 5.1. VYB
29
Obr´azek 5.7: Primefaces kalend´ aˇr (zdroj [7]). Obr´azek 5.8: Auto. dokonˇcov´an´ı (zdroj [7]).
Obr´ azek 5.9: Datov´a tabulka v PrimeFaces (zdroj [7]).
Obr´ azek 5.10: Galerie obr´azk˚ u PrimeFaces (zdroj [7]).
5.1.6
iText
Jedn´a se o opensource knihovnu, umoˇzn ˇuj´ıc´ı tvorbu a manipulaci s PDF dokumenty. Pomoc´ı tohoto n´ astroje m˚ uˇze v´ yvoj´ aˇr vytvoˇrit t´emˇeˇr libovoln´ y dokument. Nechyb´ı moˇznost vkl´ad´ an´ı
´ ˇ SEN ˇ ´I KAPITOLA 5. NAVRH RE
30
rastrov´ ych obr´ azk˚ u nebo tvorba vektorov´e grafiky a dalˇs´ı. Nav´ıc iText [3] um´ı generovat i do jin´ ych form´ at˚ u (RTF7 , HTML). Zp˚ usob, jak´ ym se dokument implementuje, je pomoc´ı objektov´ ych struktur postupnˇe vkl´ adan´ ych na ˇcistou str´anku. Za zm´ınku tak´e stoj´ı knihovna iTextSharp, kter´ a je urˇcena pro programovac´ı jazyk C#.
5.2
Diagram komponent
Diagram komponent znovu upˇresˇ nuje strukturu aplikace a jeho rozdˇelen´ı na jednotliv´e vrstvy: prezentaˇcn´ı, aplikaˇcn´ı, servisn´ı a datovou, popsan´e v pˇredchoz´ıch kapitol´ach.
Obr´ azek 5.11: Diagram komponent.
5.3
Diagram nasazen´ı
Architektura m´ a jedin´e ˇreˇsen´ı d´ ano jiˇz poˇzadavkem na webovou aplikaci pod platformou JavaEE a to klient-server. Pro n´ azornost je uveden diagram nasazen´ı 5.12. Jako serverov´ y software je vyuˇzit aplikaˇcn´ı server Glassfish v3 [1], na kter´em bˇeˇz´ı informaˇcn´ı syst´em, alternativou by mohl b´ yt Apache Tomcat. V pˇr´ıpadˇe datab´azov´eho stroje m´ame ˇsirˇs´ı paletu moˇznost´ı, od MySQL, Java DB aˇz po PostgreSQL a dalˇs´ı. Uˇzivatel se na klientsk´em poˇc´ıtaˇci k serveru pˇripojuje pomoc´ı webov´eho prohl´ıˇzeˇce a protokol˚ u TCP/IP8 a HTTP9 . 7
RTF (Rich Text Format) – form´ at pro uloˇzen´ı textu, vyvinut´ y spoleˇcnost´ı Microsoft. TCP/IP (Transmission Control Protocol/Internet Protocol) – jedn´ a se o sadu protokol˚ u umoˇzn ˇuj´ıc´ı komunikaci v poˇc´ıtaˇcov´e s´ıti. 9 HTTP (HyperText Transfer Protocol) – protokol pro komunikaci a v´ ymˇenu hypertextov´ ych dokument˚ u mezi prohl´ıˇzeˇcem a webov´ ym serverem. 8
5.3. DIAGRAM NASAZEN´I
31
Obr´azek 5.12: Diagram nasazen´ı.
Pˇri re´ aln´em nasazen´ı m´ a hotel na v´ ybˇer, zda aplikace bude urˇcena pouze pro lok´ aln´ı pouˇzit´ı (tj. server bude pˇripojen pouze k lok´aln´ı s´ıti) nebo zda bude pˇr´ıstupn´a po internetu. Kaˇzd´a z tˇechto voleb m´ a sv´e v´ yhody i nev´ yhody, napˇr´ıklad prvn´ı je bezpeˇcnˇejˇs´ı, druh´a zas poskytuje pˇr´ıstup odkudkoliv.
32
´ ˇ SEN ˇ ´I KAPITOLA 5. NAVRH RE
Kapitola 6
Realizace Tato kapitola pojedn´ av´ a o kl´ıˇcov´ ych bodech realizace, jak n´asledovaly postupnˇe za sebou od vytvoˇren´ı nov´eho projektu ve v´ yvojov´em prostˇred´ı, pˇres programov´an´ı formul´aˇr˚ u, aˇz po naplnˇen´ı testovac´ımi daty.
6.1
Poˇ c´ ateˇ cn´ı konfigurace
Informaˇcn´ı syst´em byl implementov´an ve v´ yvojov´em prostˇred´ı Netbeans IDE 6.9.1 [6]. V´ yhodou tohoto prostˇred´ı je automatick´a instalace a konfigurace serveru Glassfish 3 [1], na kter´em byla aplikace testov´ ana. Projekt, kter´ y je pomoc´ı pr˚ uvodce v IDE zaloˇzen jako Enterprise application, se skl´ ad´ a z dvou modul˚ u: EJB modul – zajiˇst’uje persistentn´ı a servisn´ı vrstvu, Web application – Java Server Faces projekt reprezentuj´ıc´ı aplikaˇcn´ı a prezentaˇcn´ı vrstvu. Poˇcas cel´e realizace byl zdrojov´ y k´od pravidelnˇe z´alohov´an prostˇrednictv´ım SVN1 [8] do repozit´ aˇre od spoleˇcnosti Google [2]: http://code.google.com/p/x36dip/.
6.1.1
Datab´ aze
Pro aplikaci je vytvoˇrena testovac´ı datab´aze na lok´aln´ım poˇc´ıtaˇci s adresou: jdbc:derby://localhost:1527/x36dip. Pˇripojen´ı k projektu se prov´ad´ı v EJB modulu v souboru sun-resources.xml, vyplnˇen´ım vˇsech n´aleˇzitost´ı pro connection pool.
6.2
EJB modul
Skl´ad´a se ze tˇr´ıd reprezentuj´ıc´ıch model cel´e aplikace a Session Beans (viz kapitola 5.1.3).
6.2.1
Model
D´ıky Java Persistence API (viz kapitola 5.1.4) dojde k objektovˇe-relaˇcn´ımu mapov´an´ı zm´ınˇen´ ych tˇr´ıd na tabulky v datab´ azi, kter´e jsou pˇri prvn´ım spuˇstˇen´ı vytvoˇreny. Pro tyto procedury je nejprve zapotˇreb´ı v konfiguraˇcn´ım souboru persistence.xml vytvoˇrit persistentn´ı jednotku 1
SVN (Subversion) – syst´em pro spr´ avu a verzov´ an´ı zdrojov´eho k´ odu.
33
34
KAPITOLA 6. REALIZACE
a nastaven´ı zp˚ usobu generov´ an´ı relaˇcn´ıch tabulek. IDE defaultnˇe pˇriˇrad´ı pro JPA mapov´an´ı knihovnu EclipseLink. Ze zdrojov´eho k´ odu je zde uvedena ˇc´ast entity Customer, kter´a se mapuje na tabulku pod stejnojmenn´ ym n´ azvem. D´ ale si m˚ uˇzeme vˇsimnout atributu, kter´ y urˇcuje zp˚ usob struktury tabulek pˇri dˇediˇcnosti InheritanceType.JOINED. Tento typ znamen´a, ˇze data budou ukl´ad´ana do oddˇelen´ ych tabulek s vazbou na rodiˇce (Customer) pˇres ciz´ı kl´ıˇc. K z´akazn´ıkovi se tak´e v datab´ azi pˇriˇrazuj´ı r˚ uzn´e objedn´avky, to je zajiˇstˇeno anotac´ı @OneToMany urˇcuj´ıc´ı vazbu. D˚ uleˇzit´ ym atributem je zde mappedBy specifikuj´ıc´ı, ˇze se tento seznam nebude pˇr´ımo ukl´adat jako sloupec v tabulce Z´ akazn´ık, nicm´enˇe bude vˇzdy naplnˇen objedn´avkami pˇri naˇcten´ı z´akazn´ıka z datab´ aze (m˚ uˇzeme si pˇredstavit jako zavol´an´ı dotazu: SELECT o FROM Order o WHERE o.customer = vybran´ y z´akazn´ık“). V´ yznam ostatn´ıch anotac´ı je prezen” tov´an v kapitole 5.1.4. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
@Entity @Table(name = "CUSTOMER") @Inheritance(strategy = InheritanceType.JOINED) public class Customer implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id_customer", nullable = false) private Integer id_customer; @Column(name = "email") private String email; @Column(name = "phone") private String phone; ... @OneToMany(mappedBy = "customer") private List orders;
V pˇr´ıpadˇe vazby z druh´e strany, tj. v entitˇe Order, vypad´a k´od n´asledovnˇe. Pomoc´ı anotace JoinColumn je definov´ ano pˇrid´ an´ı sloupce, kter´ y bude plnit roli ciz´ıho kl´ıˇce pro vazbu s tabulkou Customer. 1 2 3 4 5 6 7
@Entity @Table(name = "ORDERTABLE") public class Order implements Serializable { @ManyToOne @JoinColumn(name = "id_customer", referencedColumnName = "id_customer") private Customer customer;
ˇ ´I 6.3. ZABEZPECEN
35
Za zm´ınku tak´e stoj´ı nutnost zmˇenit jm´eno tabulky z d˚ uvodu rezervace nˇekter´ ych n´ azv˚ u v SQL-992 .
6.2.2
Session Beans
Hlavn´ı ˇc´ asti EJB jsou tzv. Session Beans (viz. kapitola 5.1.3). Implementuj´ı metody pro pr´aci s persistentn´ı vrstvou a d´ıky abstraktn´ı vrstvˇe EJB jsou tyto tˇr´ıdy nejzazˇs´ım m´ıstem v programu, kde se z hlediska zdrojov´eho k´odu dostaneme nejbl´ıˇze k datab´azi. Pokud se na vˇsechny naprogramovan´e Session Beans v aplikaci pod´ıv´ame celkovˇe, tak nejˇcastˇeji se pro kaˇzdou entitu defakto opakuje stejn´a sada metod doplnˇen´a o nˇekter´e speci´aln´ı podp˚ urn´e. Metoda pro nalezen´ı poloˇzky v datab´azi podle identifik´atoru, metoda pro naplnˇen´ı seznamu objekty jednoho typu z cel´e tabulky a pot´e metody pro uloˇzen´ı, editaci a odstranˇen´ı: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
public User getUser(Integer id) { User user = em.find(User.class, id); return user; } public List<User> getAllUsers() { List<User> users = (List<User>) em.createQuery( "SELECT u FROM User u").getResultList(); return users; } public void createUser(User user) { em.persist(user); } public void updateUser(User user) { em.merge(user); } public void removeUser(User user) { user = em.merge(user); em.remove(user); }
6.3
Zabezpeˇ cen´ı
Vzhledem k tomu, ˇze syst´em bude uchov´avat citliv´a data o hostech a hotelu samotn´em, je nutnost´ı implementovat dostateˇcn´e zabezpeˇcen´ı syst´emu proti neopr´avnˇen´emu vstupu ciz´ı osoby. K tomu poslouˇz´ı mechanismus Security Realms [15], kter´ y dok´aˇze k urˇcit´e ˇc´asti aplikace povolit pˇr´ıstup jen uˇzivatel˚ um definovan´ ych rol´ı. 2
SQL-99 [18] – oznaˇcen´ı pro standard dotazovac´ıho jazyka SQL (pˇrijat´ y v roce 1999)
36
KAPITOLA 6. REALIZACE
6.3.1
Konfigurace projektu
V souboru web.xml se nastav´ı <security-constraint> definuj´ıc´ı podle chr´anˇen´e a volnˇe pˇr´ıstupn´e oblasti. D´ ale zp˚ usob autentifikace, v naˇsem pˇr´ıpadˇe pomoc´ı formul´aˇre na str´ance login.xhtml a n´ azev pro Security Realm. Posledn´ım bodem je v´ yˇcet rol´ı, kter´e chceme pro bezpeˇcnost v aplikaci pˇriˇrazovat jednotliv´ ym uˇzivatel˚ um. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
<security-constraint> secured <web-resource-collection> <web-resource-name>web sites /* manager receptionist admin <security-constraint> unsecured <web-resource-collection> <web-resource-name>resources /resources/* <web-resource-collection> ... ... FORM x36dip_security /login.xhtml /login.xhtml ... <security-role> manager <security-role> receptionist <security-role>
ˇ ´I 6.3. ZABEZPECEN
40 41 42
37
admin ...
T´ım konfigurace projektu nekonˇc´ı, jeˇstˇe je nutn´e speci´alnˇe pro server Glassfish nastavit v souboru sun-web.xml mapov´ an´ı rol´ı uloˇzen´ ych v datab´azi na role definovan´ ych v pˇredch´azej´ıc´ım souboru web.xml. V naˇsem pˇr´ıpadˇe jsou jm´ena rol´ı stejn´a.
1 2 3 4 5 6
... <security-role-mapping> manager manager ...
6.3.2
Konfigurace Glassfish
Tento typ zabezpeˇcen´ı vyˇzaduje vytvoˇren´ı Security Realm pˇr´ımo v konfiguraci serveru. Pˇredevˇs´ım jde o nastaven´ı konexe k datab´azi a definice tabulky Uˇzivatel˚ u s loginem a heslem. N´avod pro nastaven´ı Security Realms na serveru Glassfish je podrobnˇeji pops´an v Uˇzivatelsk´e pˇr´ıruˇcce viz. E.1.1.2.
6.3.3
Pˇ rihlaˇ sovac´ı str´ anka
Pro dokonˇcen´ı zabezpeˇcen´ı pomoc´ı Security Realms staˇc´ı jiˇz pˇrihlaˇsovac´ı formul´aˇr, kter´ y po odesl´an´ı automaticky v syst´emu spust´ı ovˇeˇrov´an´ı jm´ena, hesla a role.
1 2 3 4 5
Pokud se l´epe pod´ıv´ ame na zp˚ usob jak´ ym je navrˇzen syst´em (obr´azek 4.2), napadne n´ as myˇslenka pouˇzit´ı diskrimin´ atoru (viz @DiscriminatorColumn kapitola 5.1.4) pro urˇcen´ı jednotliv´ ych rol´ı pomoc´ı typu a nemuseli bychom pˇrid´avat atribut role. V tomto pˇr´ıpadˇe by ale museli m´ıti pˇrihlaˇsovac´ı jm´eno a heslo vˇsichni zamˇestnanci, kteˇr´ı dˇed´ı z entity Employee, to znamen´ a i ti, kteˇr´ı nemaj´ı a nikdy ani nebudou m´ıt pˇr´ıstup do syst´emu (ukl´ızeˇcka, u ´drˇzb´ aˇr). Redundantn´ımu z´ aznamu by jsme se stejnˇe tedy nevyhnuli. Probl´em by se vyˇreˇsil, kdyby Security Realm v Glassfishi dok´ azalo naˇc´ıtat zm´ınˇen´ y diskrimin´ator i z jin´e relaˇcn´ı tabulky, neˇz kde je um´ıstˇeno jm´eno a heslo, coˇz bohuˇzel nedok´aˇze.
38
6.4
KAPITOLA 6. REALIZACE
ˇ Sablonovac´ ı syst´ em
Jak jiˇz bylo zm´ınˇeno v kapitole 5.1.2.6, souˇc´ast´ı JSF 2.0 je ˇsablonovac´ı syst´em Facelets. Jeho zakomponov´an´ı do aplikace spoˇc´ıv´ a pouze ve vytvoˇren´ı hlavn´ı neboli template“ str´anky, do ” kter´e se pak vkl´ adaj´ı vˇsechny ostatn´ı. Pro oznaˇcen´ı m´ısta, kam chceme z r˚ uzn´ ych str´anek vkl´adat r˚ uzn´ y obsah, slouˇz´ı tag z Facelets knihovny ui:insert. 1 2 3 ... 4 17 ... 18 19 Template n´am tedy odstraˇ nuje redundantn´ı k´od a zvyˇsuje pˇrehlednost. Kromˇe z´akladn´ıho uˇzivatelsk´eho rozhran´ı jsou v nˇem tak´e deklarov´any vˇsechny jmenn´e prostory, vloˇzeny odkazy na potˇrebn´e knihovny, CSS styly a Javascriptov´e soubory. K tomu, aby str´anka vˇedˇela, ˇze m´a pouˇz´ıt ˇsablonu, slouˇz´ı tag ui:composition, do jak´eho bloku pˇresnˇe bude k´od patˇrit urˇc´ı tag ui:define. 1 2 3 4 ... 5 6 7 8