Za´padoˇceska´ univerzita v Plzni Fakulta aplikovany´ch vˇed Katedra informatiky a vy´poˇcetn´ı techniky
Diplomov´ a pr´ ace Mobiln´ı aplikace pro rezervace objekt˚ u
Plzeˇ n, 2013
Luk´aˇs Gemela
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem diplomovou pr´aci vypracoval samostatnˇe a v´ yhradnˇe s pouˇzit´ım citovan´ ych pramen˚ u. V Plzni dne 13. kvˇetna 2013 Luk´aˇs Gemela
Abstract Currently there is no information system that enables effective lending and reservation management of movable and immovable properties in a general way. This thesis is dedicated to solving this problem by using the unique possibilities of mobile devices. First, the problem is generalized and the usability of mobile device technologies is analyzed. Afterwards, a specific implementation of the information system is introduced. The system is based on the client-server architecture in which the client is represented by a mobile device using the Android operating system.
Obsah ´ 1 Uvod 2 Problematika spr´ avy v´ yp˚ ujˇ cek 2.1 Motivace . . . . . . . . . . . . . . 2.2 Existuj´ıc´ı pˇr´ıbuzn´e syst´emy . . . 2.3 Generalizace probl´emu v´ yp˚ ujˇcek 2.4 Shrnut´ı . . . . . . . . . . . . . .
1
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
2 2 4 5 15
3 Mobiln´ı zaˇ r´ızen´ı 3.1 Mobiln´ı zaˇr´ızen´ı jako pracovn´ı n´astroj . 3.2 Technick´e prostˇredky mobiln´ıch zaˇr´ızen´ı 3.3 Mobiln´ı aplikaˇcn´ı platformy . . . . . . . 3.4 V´ yvoj mobiln´ıch aplikac´ı . . . . . . . . . 3.5 Shrnut´ı . . . . . . . . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
16 16 17 23 27 31
4 Poˇ zadavky na syst´ em spr´ avy rezervac´ı 4.1 Vyuˇzitelnost mobiln´ıch zaˇr´ızen´ı . . . . . 4.2 Obecn´ y popis syst´emu . . . . . . . . . . 4.3 Funkce webov´eho rozhran´ı . . . . . . . . 4.4 Funkce klientsk´e aplikace . . . . . . . . 4.5 Mimofunkˇcn´ı poˇzadavky . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
32 32 36 38 50 54
5 Moˇ znosti n´ avrhu webov´ ych aplikac´ı 5.1 V´ıcevrstv´ a architektura . . . . . . . 5.2 Aplikaˇcn´ı vrstva . . . . . . . . . . . 5.3 Vrstva persistence dat . . . . . . . . 5.4 Prezentaˇcn´ı vrstva . . . . . . . . . . 5.5 Architektura orientovan´a na sluˇzby . 5.6 Technologick´e n´ astroje pro v´ yvoj . . 5.7 Shrnut´ı . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
55 55 58 60 65 75 78 80
. . . . . . .
. . . . . . .
6 RAT - Reserve A Thing! 6.1 Informaˇcn´ı syst´em RAT . . . 6.2 RAT server . . . . . . . . . . 6.3 RatDroid . . . . . . . . . . . 6.4 RatSharp . . . . . . . . . . . 6.5 Testov´ an´ı a nasazen´ı syst´emu
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
81 . 81 . 82 . 99 . 104 . 105
7 Z´ avˇ er
106
A Rozvrˇ zen´ı mobiln´ı aplikace
107
B Popis webov´ ych REST sluˇ zeb
113
C Uˇ zivatelsk´ a pˇ r´ıruˇ cka 118 C.1 Webov´e rozhran´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 C.2 Aplikace RatDroid . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 D Administr´ atorsk´ a dokumentace 132 D.1 Nasazen´ı webov´e aplikace . . . . . . . . . . . . . . . . . . . . . . . 132 D.2 Nasazen´ı mobiln´ı aplikace RatDroid . . . . . . . . . . . . . . . . . 135 E Obsah pˇ riloˇ zen´ eho m´ edia
137
´ 1 Uvod T´emˇeˇr v kaˇzd´e rozs´ ahlejˇs´ı organizaci obvykle existuje mnoˇzina invent´arn´ıho majetku, kter´ y je dostupn´ y ˇclen˚ um t´eto organizace k zap˚ ujˇcen´ı nebo doˇcasn´emu vyuˇz´ıv´an´ı. Mluv´ıme-li o tomto majetku, m´ame na mysli jak vˇeci movit´e, jako je napˇr´ıklad v´ ypoˇcetn´ı technika nebo kancel´aˇrsk´e pom˚ ucky, tak vˇeci nemovit´e, jako jsou m´ıstnosti, budovy atp. Za modelovou organizaci si m˚ uˇzeme pˇredstavit napˇr´ıklad neziskov´e organizace, mal´e a stˇredn´ı podniky nebo vzdˇel´avac´ı instituce. Term´ınem v´ yp˚ ujˇcka“ pˇredmˇetu pot´e nemysl´ıme pˇred´an´ı do d´eletrvaj´ıc´ıho uˇz´ıv´an´ı v ˇr´adech ” t´ ydn˚ u nebo mˇes´ıc˚ u, ale kr´ atkodob´e zap˚ ujˇcen´ı pˇredmˇetu jeho ˇzadateli s t´ım pˇredpokladem, ˇze se oˇcek´ av´ a jeho opˇetovn´e navr´acen´ı v pˇredem domluven´em term´ınu tak, aby si pˇredmˇet mohl p˚ ujˇcit jin´ y ˇzadatel. Tato diplomov´ a pr´ ace se zab´ yv´a probl´emem spr´avy v´ yp˚ ujˇcek movit´ ych i nemovit´ ych objekt˚ u a implementac´ı jeho ˇreˇsen´ı za pomoci unik´atn´ıch moˇznost´ı mobiln´ıch zaˇr´ızen´ı. Nejprve bude tento probl´em zobecnˇen a n´aslednˇe budou nast´ınˇeny z´akladn´ı poˇzadavky kladen´e na vznikaj´ıc´ı syst´em tak, aby bylo moˇzn´e spr´avu v´ yp˚ ujˇcek efektivnˇe ˇreˇsit (Kap. 2). V Kap. 3 bude ˇcten´aˇr sezn´amen s nejrozˇs´ıˇrenˇejˇs´ımi mobiln´ımi technologiemi a platformami. N´aslednˇe se v Kap. 4 ˇcten´aˇr sezn´am´ı s u ´plnou specifikac´ı poˇzadavk˚ u, kter´e bude syst´em implementovat za vyuˇzit´ı technologi´ı mobiln´ıch zaˇr´ızen´ı. V realizaˇcn´ı ˇc´asti (Kap. 5) budou rozebr´ana obecn´a architektonick´ a ˇreˇsen´ı informaˇcn´ıch syst´em˚ u s ohledem na platformu Java, aby byla pot´e uk´az´ana konkr´etn´ı implementace informaˇcn´ıho syst´emu pro p˚ ujˇcov´an´ı a rezervaci objekt˚ u (Kap. 6).
1
2 Problematika spr´avy v´yp˚ ujˇ cek V t´eto kapitole rozebereme st´ avaj´ıc´ı probl´em, zobecn´ıme jej do podoby logick´eho modelu a n´ aslednˇe nast´ın´ıme z´ akladn´ı poˇzadavky na syst´em tak, aby bylo moˇzn´e spr´avu v´ yp˚ ujˇcek efektivnˇe ˇreˇsit.
2.1
Motivace
Motivac´ı pro vytvoˇren´ı t´eto pr´ ace byla jist´a nepraktiˇcnost pouˇz´ıv´an´ı st´avaj´ıc´ıho syst´emu spr´ avy v´ yp˚ ujˇcek movit´ ych vˇec´ı na Katedˇre informatiky a v´ ypoˇcetn´ı techniky pˇri Z´ apadoˇcesk´e Univerzitˇe v Plzni. Naskytla se ot´azka, zdali by nebylo moˇzn´e uˇcinit spr´ avu v´ yp˚ ujˇcek efektivnˇejˇs´ı, jednoduˇsˇs´ı a pr˚ uchodnˇejˇs´ı jak pro uˇzivatele, tak pro spr´ avce tohoto syst´emu. Problematika spr´avy v´ yp˚ ujˇcek a rezervac´ı vˇsak m˚ uˇze b´ yt vztaˇzena na libovolnou organizaci, kde k tˇemto aktivit´am pravidelnˇe doch´az´ı, a lze tedy ˇr´ıci, ˇze se jedn´a o obecn´ y probl´em.
2.1.1
Pˇ r´ıpadov´ a studie
Na katedˇre existuje mnoˇzina movit´ ych objekt˚ u (notebook˚ u a dataprojektor˚ u), kter´e si mohou zamˇestnanci a spolupracovn´ıci katedry na omezenou dobu zap˚ ujˇcit. Toto technick´e vybaven´ı je dostupn´e v sekretari´atu katedry a je moˇzn´e je od sebe rozliˇsit podle pap´ırov´eho ˇst´ıtku s identifikaˇcn´ım ˇc´ıslem, kter´ y je fyzicky pˇripevnˇen na vybaven´ı. Na katedˇre je zaveden v´ yp˚ ujˇcn´ı list“, kde kaˇzd´ y zamˇestananec pˇreb´ıraj´ıc´ı pˇred” mˇet potvrzuje pˇrevzet´ı pˇredmˇetu a zavazuje se, ˇze jej do dohodnut´eho term´ınu opˇet vr´at´ı. Je tˇreba definovat datum a ˇcas v´ yp˚ ujˇcky a vr´acen´ı objektu. V´ yp˚ ujˇcn´ı list je veden v podobˇe pap´ırov´eho formul´aˇre. Typick´ y sc´en´aˇr v´ yp˚ ujˇcky je tedy takov´ y, ˇze vyuˇcuj´ıc´ı poˇzaduj´ıc´ı notebook pro svou pˇredn´aˇsku mus´ı nejprve nal´ezt identifikaˇcn´ı ˇc´ıslo vyˇzadovan´eho notebooku a pot´e jej mus´ı spolu se sv´ ym jm´enem a datem v´ yp˚ ujˇcky a datem vr´ acen´ı zan´est do jednoho ˇr´adku pap´ırov´eho formul´aˇre. Pˇri fyzick´em vr´ acen´ı notebooku pot´e vyuˇcuj´ıc´ı obvykle stvrd´ı tento akt vlastn´ım podpisem ˇr´ adky s u ´daji o vyp˚ ujˇcen´ı objektu. Je tak´e moˇzn´e z´ apisem do jin´eho formul´aˇre vytv´aˇret rezervace vybaven´ı. Pˇri vytv´aˇren´ı rezervac´ı se mus´ı zamˇestnanec manu´aln´ım proch´azen´ım jiˇz vytvoˇren´ ych z´aznam˚ u ujistit, ˇze jeho rezervace se nekryje s jinou jiˇz dˇr´ıve vytvoˇrenou rezervac´ı. Je tˇreba specifikovat rezervovan´e zaˇr´ızen´ı, datum a ˇcasov´e rozmez´ı rezervace. Slov-
2
Problematika spr´avy v´yp˚ ujˇcek
Motivace
n´ım popisem je tak´e moˇzn´e rezervace opakovat v ˇcase – zamˇestnanci si rezervuj´ı vybaven´ı podle rozvrhov´ ych akc´ı a ty se v r´amci semestru opakuj´ı. Tyto pravideln´e rezervace jsou pot´e zamˇestnanci sekretari´atu katedry zn´azorˇ nov´any v t´ ydenn´ım pap´ırov´em kalend´ aˇri, kde je graficky podchycena d´elka trv´an´ı rezervace a jm´ena vˇsech u ´ˇcastn´ık˚ u. Spr´ ava nemovit´ ych objekt˚ u (tj. m´ıstnost´ı) je ˇreˇsena pomoc´ı celouniverzitn´ıho informaˇcn´ıho syst´emu IS/STAG, kter´ y umoˇzn ˇuje mapovat rozvrhov´e akce (jako jsou napˇr. pˇredn´ aˇsky, semin´ aˇre, zkouˇsky) na m´ıstnosti a n´aslednˇe vytv´aˇret kalend´aˇre m´ıstnost´ı v r´ amci semestru. Tento informaˇcn´ı syst´em nicm´enˇe neumoˇzn ˇuje jakkoliv ˇreˇsit rezervace tˇech m´ıstnost´ı, kter´e nejsou t´ımto syst´emem evidov´any (napˇr. zasedac´ı m´ıstnost na katedˇre) nebo jejichˇz rezervace jdou nad r´amec standardn´ıch rozvrhov´ ych akc´ı.
2.1.2
Nev´ yhody st´ avaj´ıc´ıho ˇ reˇ sen´ı
St´avaj´ıc´ı syst´em je zaveden pouze nad omezenou mnoˇzinou vybaven´ı. Pokud by vˇsak mˇel b´ yt poˇcet notebook˚ u a dataprojektor˚ u zv´ yˇsen, pˇr´ıpadnˇe by mˇelo b´ yt umoˇznˇeno realizovat v´ yp˚ ujˇcky i nad jin´ ymi pˇredmˇety, ˇreˇsen´ı v podobˇe pap´ırov´ ych formul´ aˇr˚ u zaˇcne nar´ aˇzet na sv´e hranice pouˇzitelnosti. D´ale se s n´ım poj´ı cel´a ˇrada nedostatk˚ u: - movit´e objekty nelze na z´ akladˇe pap´ırov´eho formul´aˇre efektivnˇe rezervovat do budoucnosti. - z´ aznamy o zap˚ ujˇcen´ı jsou dostupn´e pouze na jednom m´ıstˇe v pap´ırov´e podobˇe. - nelze efektivnˇe sledovat vyuˇzitelnost pˇredmˇet˚ u. - samotn´ y akt v´ yp˚ ujˇcky a rezervace je s ohledem na nutn´e vyplˇ nov´an´ı pap´ırov´ ych formul´ aˇr˚ u pomˇernˇe zdlouhav´ y a obtˇeˇzuj´ıc´ı. - chyb´ı aktu´ aln´ı pˇrehled jak´e objekty jsou p˚ ujˇceny, rezervov´any, nevr´aceny atp. - uˇzivatel´e maj´ı obecnˇe pˇri vyplˇ nov´an´ı pap´ırov´ ych formul´aˇr˚ u sklony k chyb´am a nepˇresnostem. - je nutn´e udrˇzovat t´ ydenn´ı kalend´aˇr rezervac´ı a manu´alnˇe prov´adˇet kontrolu, jestli se rezervace nepˇrekr´ yvaj´ı. - neexistuje jednotn´ y ˇcasov´ y form´at pro definov´an´ı opakovan´ ych rezervac´ı.
3
Problematika spr´avy v´yp˚ ujˇcek
Existuj´ıc´ı pˇr´ıbuzn´e syst´emy
Realizace rezervac´ı nemovit´ ych objekt˚ u pak zcela chyb´ı. Bylo by vhodn´e zobecnit probl´em v´ yp˚ ujˇcky movit´ ych a nemovit´ ych objekt˚ u, zav´est jednotnou terminologii tak, aby byly navrˇzen´e postupy obecnˇe pouˇziteln´e, a navrhnout ˇreˇsen´ı v podobˇe nˇejak´eho druhu informaˇcn´ıho syst´emu.
2.2
Existuj´ıc´ı pˇ r´ıbuzn´ e syst´ emy
Teoretick´ a ˇreˇsen´ı prop˚ ujˇcov´ an´ı zdroj˚ u ve velmi obecn´e rovinˇe existuj´ı a jsou pops´ana v r´ amci tzv. Inventory managementu. Tento pojem poch´az´ı z logistiky a oznaˇcuje sadu postup˚ u zab´ yvaj´ıc´ıch se ot´azkami dohledu nad skladov´ ymi z´asobami, jejich objedn´ av´ an´ı a udrˇzov´an´ı jejich poˇctu v udrˇziteln´ ych mez´ıch. Syst´emy, kter´e se nejv´ıce bl´ıˇz´ı potˇreb´ am t´eto pr´ace, se pot´e zpravidla oznaˇcuj´ı jako invent´arn´ı syst´emy (Inventory Systems nebo Stock Systems). Ty lze charakterizovat jako sadu hardwarov´ ych a softwarov´ ych n´astroj˚ u, kter´e automatizuj´ı proces sledov´ an´ı invent´arn´ıch objekt˚ u. Druh sledovan´ ych objekt˚ u m˚ uˇze b´ yt vpravdˇe jak´ ykoliv poˇcitateln´ y pˇredmˇet (napˇr´ıklad obleˇcen´ı, knihy, technick´e vybaven´ı). Modern´ı invent´arn´ı syst´emy jsou t´emˇeˇr v´ yhradnˇe zaloˇzeny na technologii skenovateln´ ych ˇc´ arov´ ych k´od˚ u, QR k´od˚ u nebo RFID ˇst´ıtk˚ u (viz d´ale). Takov´ ych syst´em˚ u je cel´ a ˇrada, obvykle je invent´arn´ı syst´em souˇc´ast´ı cel´eho bal´ıku rozs´ ahl´ ych podnikov´ ych syst´em˚ u jako je napˇr´ıklad Microsoft Dynamics nebo Oracle SCM. Vˇsechny ale maj´ı jedno spoleˇcn´e – jsou zamˇeˇreny na v´ yrobu a logistiku invent´ aˇre, kter´ y je urˇcen k prodeji, nikoliv k u ´ˇcel˚ um zap˚ ujˇcov´an´ı zamˇestnanc˚ um (nebo ˇclen˚ um organizace). Spr´ avou takov´eho druhu objekt˚ u, kter´e se obvykle oznaˇcuje slovem assets, se zab´ yv´ a jin´ a discipl´ına – tzn. Asset Management [1]. V podnikov´e terminologii se slovo asset pˇrekl´ ad´ a jako tzv. provozn´ı aktivum, neboli objekt, kter´ y generuje pˇridanou hodnotu. Mezi aktiva m˚ uˇzeme zaˇradit pozemky, budovy, ale i stroje, softwarov´e licence a dalˇs´ı zaˇr´ızen´ı. Asset management se pot´e zab´ yv´a spr´avou tˇechto aktiv bˇehem jejich ˇzivotn´ıho cyklu tak, aby jejich provozov´an´ı generovalo maxim´ aln´ı pˇridanou hodnotu. Asset Management syst´em˚ u je cel´a ˇrada – z tˇech nejvˇetˇs´ıch zde jmenujme napˇr. Maximo Asset Management od IBM, Software Asset Management od spoleˇcnosti Microsoft a z tˇech ryze ˇcesk´ ych napˇr´ıklad ALVAO Asset Management. Tyto syst´emy zpravidla umoˇzn ˇuj´ı pˇridˇelovat jednotliv´a aktiva mezi zamˇestnance v r´amci evidence majektu (aby bylo vˇzdy jasn´e, kdo m´a danou SW licenci, poˇc´ıtaˇc atd. aktu´alnˇe v drˇzen´ı) – ˇz´ adn´ y z nich ovˇsem neposkytuje moˇznost pl´anov´an´ı, rezervac´ı ani okamˇzit´eho vyzvednut´ı z podnˇetu zamˇestnanc˚ u. Nav´ıc naˇs´ım c´ılem nen´ı majetek evidovat (i kdyˇz nˇejak´ a forma evidence bude pravdˇepodobnˇe nutn´a), ani ˇr´ıdit
4
Problematika spr´avy v´yp˚ ujˇcek
Generalizace probl´emu v´yp˚ ujˇcek
jeho ˇzivotn´ı cyklus, ale pouze ˇr´ıdit jeho ˇcasov´ y“ obˇeh mezi uˇzivateli. ” Jak je vidˇet, analogie ˇreˇsen´ı naˇseho probl´emu se v podnikov´e informaˇcn´ı sf´eˇre nehled´ a snadno. Spr´ avˇe movit´ ych objekt˚ u se pravdˇepodobnˇe nejv´ıce bl´ıˇz´ı r˚ uzn´e knihovn´ı syst´emy, jejichˇz souˇc´ ast´ı je i v´ yp˚ ujˇcn´ı protokol, pˇr´ıpadnˇe dalˇs´ı specializovan´ y software pro r˚ uzn´e p˚ ujˇcovny movit´ ych objekt˚ u. Jako pˇr´ıklad aplikace umoˇzn ˇuj´ıc´ı rezervace nemovit´ ych objekt˚ u bychom mohli jmenovat MS Outlook. Ten umoˇzn ˇuje rezervovat m´ıstnosti a dalˇs´ı pˇredem definovan´e zdroje pro napl´anovan´e sch˚ uzky a jin´e ˇcasov´e ud´ alosti. Autorovi t´eto pr´ace se vˇsak nepodaˇrilo naj´ıt ˇz´adn´ y st´avaj´ıc´ı software, kter´ y by celistvˇe ˇreˇsil nast´ınˇen´ y probl´em vyp˚ ujˇcov´an´ı majetku v obecn´e rovinˇe.
2.3
Generalizace probl´ emu v´ yp˚ ujˇ cek
´ Ukolem t´eto kapitoly je zobecnit probl´em v´ yp˚ ujˇcek a definovat term´ıny, se kter´ ymi by bylo moˇzn´e d´ ale pracovat.
2.3.1
Objekt, Uˇ zivatel, Rezervace
Protoˇze ˇreˇs´ıme v´ yp˚ ujˇcky jak nemovit´ ych, tak movit´ ych pˇredmˇet˚ u, nebudeme tyto pojmy jiˇz nad´ ale pouˇz´ıvat a shrneme jej do jednoho term´ınu objekt, a to n´asledovnˇe: Definice 1. Objekt“ je movit´y nebo nemovit´y majetek organizace, kter´y lze do” ˇcasnˇe p˚ ujˇcit uˇzivatel˚ um. Aktem zap˚ ujˇcen´ı objektu“ budeme tedy nad´ale rozumˇet nejen fyzick´e zap˚ ujˇcen´ı ” napˇr. notebooku, ale i zap˚ ujˇcen´ı m´ıstnosti pro prezentaci, konferenˇcn´ıho s´alu pro pˇredn´ aˇsku, cel´e budovy pro r˚ uzn´e akce atp. Nyn´ı definujme term´ın pro uˇzivatele syst´emu: Definice 2. Uˇzivatel“ je ˇclen organizace nebo jin´ a osoba, kter´ a je opr´ avnˇena ” k vyp˚ ujˇcov´ an´ı objekt˚ u. Zcela z´ amˇernˇe neomezujeme uˇzivatele pouze na hranice organizace. T´ım n´am moˇzn´ y poˇcet uˇzit´ı dramaticky nar˚ ust´a napˇr´ıklad o parkovac´ı m´ısta pro n´avˇstˇevn´ıky nebo online m´ıstenku k sezen´ı v autobuse. Jedin´e, co je nutn´e pro koncov´ y syst´em ˇreˇsit, je pr´ avˇe opr´ avnˇenost k v´ yp˚ ujˇcce.
5
Problematika spr´avy v´yp˚ ujˇcek
Generalizace probl´emu v´yp˚ ujˇcek
Nyn´ı je tˇreba zav´est logiku rezervac´ı objekt˚ u. Aktem rezervace objektu uˇzivatel ˇr´ık´a, ˇze je to on, kdo bude ˇz´ adan´ y objekt v budouc´ım ˇcasov´em u ´seku vyuˇz´ıvat a ˇz´adn´ y jin´ y uˇzivatel nen´ı opr´ avnˇen do tohoto ˇcasov´eho u ´seku jakkoliv zasahovat nebo v tomto u ´seku objekt s´ am vyuˇz´ıvat. Definice 3. Rezervace“ je ˇcasov´y u ´sek poˇc´ınaj´ıc´ı v pˇr´ıtomnosti nebo budoucnosti, ” ve kter´em dan´y objekt m˚ uˇze m´ıt vyp˚ ujˇcen´y pouze dan´y uˇzivatel. Rezervac´ı m˚ uˇze m´ıt jeden uˇzivatel libovoln´e mnoˇzstv´ı a libovoln´ y poˇcet rezervac´ı m˚ uˇze b´ yt v´ az´ an k jednomu objektu – jedinou podmiˇ nuj´ıc´ı prerekvizitou pro vytvoˇren´ı rezervace je neexistence jin´e rezervace ve stejn´em ˇcasov´em u ´seku. V´ ysledkem je vlastnˇe kalend´ aˇr ˇcasov´ ych ud´alost´ı – rezervac´ı, a to jak pro uˇzivatele, tak pro objekt.
2.3.2
ˇ Zivotn´ ı cyklus rezervace
Nyn´ı je nutn´e si poloˇzit ot´ azku, jak zobecnit vlastn´ı vyzved´av´an´ı a vracen´ı objekt˚ u. Je tˇreba si uvˇedomit, ˇze tato ˇcinnost se jiˇz vlastnˇe nevztahuje na konkr´etn´ı objekty, ale na jejich rezervace. Samozˇrejmˇe, objekt zde hraje roli pˇredmˇetu rezervace, bez nˇej by vlastnˇe rezervace samotn´a postr´adala smysl – nicm´enˇe je to pr´avˇe rezervace, kter´ a bude uˇzivateli vytv´ aˇrena, upravov´ana a nakonec fyzicky vyzvednuta“ ” pˇrevzet´ım objektu. Jiˇz bylo ˇreˇceno, ˇze k samotn´emu vytvoˇren´ı v´ yp˚ ujˇcky nebo rezervace doch´az´ı v okamˇziku vyplnˇen´ı kolonky v pap´ırov´em formul´aˇri. T´ım uˇzivatel vlastnˇe potvrdil“ ” svou v´ yp˚ ujˇcku a je nyn´ı opravdu opr´avnˇen k tomu, aby mohl ˇz´adan´ y objekt pˇrevz´ıt. Co ale u napˇr. v´ yˇse zm´ınˇen´eho pˇr´ıkladu parkovac´ıho st´an´ı? Tam k pˇrevzet´ı dˇr´ıve rezervovan´eho objektu doch´ az´ı uˇz samotn´ ym aktem pˇr´ıjezdu auta, u rezervace m´ıstnosti fyzick´ ym obsazen´ım m´ıstnosti atp. Je pˇrinejmenˇs´ım poˇsetil´e v tˇechto pˇr´ıpadech vyˇzadovat po uˇzivatel´ıch jakoukoliv dalˇs´ı akci. Jednak je to zbyteˇcn´ y proces nav´ıc a jednak je miziv´ a ˇsance, ˇze by uˇzivatel´e v tˇechto situac´ıch modelem ˇ sen´ım je tedy rozdˇelen´ı objekt˚ pˇredepsanou akci skuteˇcnˇe prov´ adˇeli. Reˇ u do dvou kategori´ı: Definice 4. Povinnˇe potvrzovan´e objekty pˇri vyzvednut´ı jsou objekty, jejichˇz rezervace budou pro vyzvednut´ı vyˇzadovat po majitel´ıch tˇechto rezervac´ı danou akci. Nepotvrzovan´e objekty pˇri vyzvednut´ı ˇz´ adnou akci vyˇzadovat nebudou a k jejich vyzvednut´ı dojde posunem poˇc´ atku ˇcasov´eho u ´seku rezervace do souˇcasnosti. ˇ aˇr by nemˇel nab´ Cten´ yt dojmu, ˇze povinnˇe potvrzovan´e pˇredmˇety jsou vˇzdy ty movit´e a nepotvrzovan´e ty nemovit´e. D´ıky tomu, ˇze vynucen´ım potvrzen´ı o vyzvednut´ı vznik´ a vlastnˇe nov´ y z´ aznam o aktivitˇe uˇzivatele, je moˇzn´e si pˇredstavit sc´en´aˇre, kdy se i u nemovit´ ych objekt˚ u uplatn´ı potvrzov´an´ı a naopak:
6
Problematika spr´avy v´yp˚ ujˇcek
Generalizace probl´emu v´yp˚ ujˇcek
- chceme sledovat re´ alnou uˇz´ıvanost objekt˚ u. - v souˇcasnosti bˇeˇz´ıc´ı rezervace, kter´e jejich majitel nepotvrd´ı (a objekt si tak vlastnˇe nevyzvedne), mohou propadnout“ a objekt si m˚ uˇze v pˇrekr´ yvaj´ıc´ım ” ˇcasov´em r´ amci rezervovat jin´ y uˇzivatel. - movit´e objekty se pohybuj´ı v omezen´em prostoru, nen´ı potˇreba jejich obˇeh potvrzov´ an´ım komplikovat. Z podobn´ ych d˚ uvod˚ u je d´ ale zavedeno i potvrzov´an´ı pˇri vracen´ı objektu: Definice 5. Povinnˇe potvrzovan´e objekty pˇri vracen´ı jsou objekty, jejichˇz rezervace budou pro vr´ acen´ı objektu vyˇzadovat po majitel´ıch tˇechto rezervac´ı danou akci. Nepotvrzovan´e objekty pˇri vr´ acen´ı ˇza ´dnou akci vyˇzadovat nebudou a k jejich vr´ acen´ı dojde posunem konce ˇcasov´eho u ´seku rezervace do souˇcasnosti. V´ yhody jsou zˇrejm´e – rezervaci je moˇzn´e uˇzivatelem pˇredˇcasnˇe ukonˇcit a ostatn´ı uˇzivatel´e tak budou m´ıt v re´ aln´em ˇcase informaci o tom, zdali je jimi sledovan´ y objekt aktu´ alnˇe k dispozici. Zaveden´ım povinnˇe potvrzovan´ ych a nepotvrzovan´ ych objekt˚ u, at’ uˇz pˇri vyzvednut´ı ˇci pˇri vracen´ı, n´ am umoˇzn´ı jistou formu genericity a flexibility cel´eho modelu – z´aleˇz´ı jen na konkr´etn´ı situaci a pouˇzit´ı, re´aln´em druhu objekt˚ u a pˇr´an´ı uˇzivatel˚ u.
2.3.3
Periodick´ e rezervace
Nejr˚ uznˇejˇs´ı lidsk´e aktivity se v ˇcase ˇcasto opakuj´ı – nejinak je to i s naˇsimi rezervacemi. Pˇr´ıkladem m˚ uˇze b´ yt napˇr. kaˇzdot´ ydenn´ı setk´an´ı t´ ymu s potˇrebou rezervace m´ıstnosti, pˇredn´ aˇska s rezervac´ı projektoru apod. Abychom tento jev nˇejak podchytili, zavedeme pojem periodick´e rezervace: Definice 6. Periodick´ a rezervace je takov´ a rezervace, kter´ a se opakuje v ˇcase s pevnˇe danou periodou a pevnˇe dan´ym poˇctem opakov´ an´ı. Periodick´ a rezervace m˚ uˇze b´ yt samozˇrejmˇe vedena k libovoln´emu typu objektu – pokud bude objekt povinnˇe potvrzovan´ y pˇri vyzvednut´ı, mus´ı uˇzivatel vyzvednut´ı rezervace potvrzovat. Opakov´ an´ı rezervace vˇsak zp˚ usob´ı, ˇze tak mus´ı uˇcinit na poˇc´atku kaˇzd´eho ˇcasov´eho u ´seku rezervace. Obdobn´a situace bude platit i pro vracen´ı objekt˚ u. Zde vˇsak nast´ av´ a urˇcit´ y nesoulad. Rezervace sama o sobˇe sice k sobˇe v´aˇze objekt a uˇzivatele, dosud definovan´ y model vˇsak v pˇr´ıpadˇe cyklick´e rezervace pokulh´av´ a – jak definovat periodiˇcnost? Od jak´eho data? Po jak dlouhou dobu? Jak´ y
7
Problematika spr´avy v´yp˚ ujˇcek
Generalizace probl´emu v´yp˚ ujˇcek
ˇcasov´ yu ´sek maj´ı zabrat jednotliv´e periody? Co kdyˇz uˇzivatel bude cht´ıt nˇekter´ y ˇcasov´ yu ´sek pˇreskoˇcit nepˇr´ıklad z d˚ uvodu v´ yluky v rozvrhu? Z tohoto d˚ uvodu upˇresn´ıme pˇredch´azej´ıc´ı definici n´asledovnˇe: Definice 7. Kaˇzd´ a rezervace se skl´ ad´ a z jedn´e nebo v´ıce ˇcasov´ych period, kde kaˇzd´ a perioda obsahuje ˇcasov´y u ´sek rezervace v dan´e periodˇe. a pˇrid´ ame definici dalˇs´ı, kter´ a n´ am umoˇzn´ı jednotliv´e periody vyp´ınat“: ” Definice 8. Neplatn´ a perioda je takov´ a perioda, ve kter´e se ˇcasov´y u ´sek rezervace interpretuje tak, jako by ˇz´ adn´ a rezervace v t´eto periodˇe nevznikla. Vysvˇetlen´ı tˇecho definic je n´ azornˇe uk´az´ano na Obr. 2.1. Kaˇzd´a rezervace se skl´ad´a z jedn´e a v´ıce ˇcasov´ ych period, pˇriˇcemˇz periody maj´ı konstantn´ı d´elku. V tˇechto period´ ach jsou pot´e zahrnuty jednotliv´e ˇcasov´e u ´seky samotn´e rezervace objektu (zn´azornˇeno ˇcervenou barvou). Uˇzivatel m˚ uˇze v tˇechto u ´sec´ıch pouˇz´ıvat pˇredmˇet, kter´ y si zarezervoval. Pokud je nˇekter´a z period neplatn´a (na obr´azku zn´azornˇeno ˇsedou barvou), je i ˇcasov´ yu ´sek rezervace v t´eto periodˇe obsaˇzen´ y neplatn´ y a bude se interpretovat tak, jako by ˇz´ adn´a rezervace v dan´e periodˇe nikdy nevznikla.
Obr´azek 2.1: Struktura periodick´e rezervace.
2.3.4
Potvrzen´ı vyzvednut´ı objektu
Samotn´ y akt vyzvednut´ı rezervace se zd´a jako pomˇernˇe trivi´aln´ı ud´alost. Nicm´enˇe narozd´ıl od vytvoˇren´ı rezervace je tato ud´alost sv´az´ana s aktu´aln´ım ˇcasem a ˇcasem poˇc´atku vyzved´ avan´e rezervace. Jistˇe by nemˇelo b´ yt moˇzn´e vyzved´avat objekty, jejichˇz rezervace jeˇstˇe nezaˇcala. Protoˇze vˇsak uˇzivatel´e sotva budou vyzved´avat objekty v pˇresnˇe dan´ y ˇcas poˇc´ atku rezervace, je tˇreba umoˇznit pˇredˇcasn´e vyzvednut´ı, pˇr´ıpadnˇe vyzvednut´ı po term´ınu zaˇc´atku rezervace. D´ale je tˇreba se pt´at, co se stane s rezervacemi, kter´e nebudou vyzvednuty. Aby tyto probl´emy mohly b´ yt uspokojivˇe vyˇreˇseny, je nejprve nutn´e definovat z´akladn´ı ˇcasov´e konstanty rezervac´ı:
8
Problematika spr´avy v´yp˚ ujˇcek
Generalizace probl´emu v´yp˚ ujˇcek
Definice 9. Minim´ aln´ı d´elka rezervace“ je minim´ aln´ı d´elka ˇcasov´eho u ´seku re” zervace v kaˇzd´e sv´e periodˇe. Definice 10. Maxim´ aln´ı d´elka rezervace“ je maxim´ aln´ı d´elka ˇcasov´eho u ´seku ” rezervace v kaˇzd´e sv´e periodˇe. Definice 11. Maxim´ aln´ı d´elka rezervace je menˇs´ı nebo rovna ˇcasov´e d´elce periody rezervace. Rezervac´ım jsou t´ımto definov´ any meze pro jejich ˇcasov´e u ´seky ve vˇsech period´ach rezervace.
Pˇ redˇ casn´ e vyzvednut´ı Na Obr. 2.2 je zn´ azornˇena ˇcasov´a osa, aktu´aln´ı ˇcas a situace pˇredˇcasn´eho vyzvednut´ı rezervace. Je tˇreba se nejprve pt´at, jak velk´ y ˇcasov´ y rozd´ıl uˇzivatele dˇel´ı od ˇcasu vyzvednut´ı a ˇcasu zaˇc´ atku rezervace objektu, kter´a uˇzivateli patˇr´ı a zda takov´ a rezervace v˚ ubec existuje.
Obr´azek 2.2: Pˇredˇcasn´e vyzvednut´ı rezervace. Pokud je tento rozd´ıl menˇs´ı neˇz minim´aln´ı d´elka rezervace, znamen´a to, ˇze mezi aktu´aln´ı ˇcas a ˇcas poˇc´ atku rezervace se jiˇz ˇz´adn´a nov´a rezervace nevejde. Nyn´ı je tˇreba jeˇstˇe zv´ aˇzit dalˇs´ı rezervace, kter´e mohou do ˇcasov´eho rozd´ılu zasahovat. Na Obr. 2.3 je zn´ azornˇena situace, kdy se uˇzivatel1 pokouˇs´ı pˇredˇcasnˇe vyzvednout objekt na svou v minulosti vytvoˇrenou rezervaci. To vˇsak nen´ı moˇzn´e, protoˇze mezi aktu´aln´ım ˇcasem a ˇcasem poˇc´atku rezervace st´ale prob´ıh´ a rezervace uˇzivatele2. Uˇzivateli1 tedy nezb´ yv´a nic jin´eho, neˇz vyˇckat aˇz blokuj´ıc´ı rezervace skonˇc´ı a uˇzivatel2 vyzvednut´ y objekt nevr´at´ı.
9
Problematika spr´avy v´yp˚ ujˇcek
Generalizace probl´emu v´yp˚ ujˇcek
Obr´azek 2.3: Kolize rezervac´ı pˇri vyzved´av´an´ı. Pokud vˇsak ˇz´ adn´ a takov´ a blokuj´ıc´ı rezervace neexistuje, je moˇzn´e objekt vyzvednout i pˇredˇcasnˇe. Poˇc´ atek rezervace se posune na aktu´aln´ı datum a rezervace se oznaˇc´ı jako vyzvednut´ a. Tuto situaci ilustruje Obr. 2.4.
´ esn´e vyzvednut´ı rezervace. Obr´azek 2.4: Uspˇ Pokud je rozd´ıl od ˇcasu vyzvednut´ı a ˇcasu zaˇc´atku rezervace objektu vˇetˇs´ı neˇz minim´ aln´ı d´elka rezervace, uˇzivatel vyzved´av´a objekt pˇr´ıliˇs brzy a nen´ı moˇzn´e objekt vyzvednout. Nen´ı vˇsak d˚ uvod proˇc by uˇzivateli nemohla b´ yt vytvoˇrena rezervace nov´ a s poˇc´ atkem v aktu´aln´ım ˇcase. Term´ın ukonˇcen´ı rezervace bude moci uˇzivatel s´ am definovat. Novˇe vytvoˇren´a rezervace by mˇela b´ yt tak´e automaticky vyzvednuta, jak ukazuje Obr. 2.5.
Obr´azek 2.5: Vytvoˇren´ı nov´e rezervace. Vytvoˇren´ı rezervace vˇsak mus´ı splˇ novat podm´ınku o neexistenci jin´e rezervace na stejn´ y objekt ve stejn´em ˇcasov´em u ´seku. Na Obr. 2.6 je zn´azornˇena situace, kdy se uˇzivatel1 pokouˇs´ı pˇredˇcasnˇe vyzvednout objekt na z´akladˇe budouc´ı rezervace.
10
Problematika spr´avy v´yp˚ ujˇcek
Generalizace probl´emu v´yp˚ ujˇcek
Obr´azek 2.6: Kolize rezervac´ı pˇri vytv´aˇren´ı. Toto vyzvednut´ı je z d˚ uvodu pˇr´ıliˇsn´e vzd´alenosti rezervace odm´ıtnuto a uˇzivateli1 je umoˇznˇeno vytvoˇren´ı rezervace nov´e, s libovolnou d´elkou trv´an´ı. Ten tedy zad´a pˇredpokl´ adanou dobu trv´ an´ı nov´e rezervace a pokus´ı se rezervaci vytvoˇrit. Nyn´ı je nutn´e zkontrolovat, zda v ˇcasov´em u ´seku nov´e rezervace neexistuje jin´a rezervace na stejn´ y objekt. Jak je vidˇet, tato rezervace skuteˇcnˇe existuje a patˇr´ı uˇzivateli2 a proto vytvoˇren´ı nov´e rezervace pro uˇzivatele1 skonˇc´ı ne´ uspˇesnˇe.
Vyzvednut´ı po term´ınu Uˇzivatel´e z libovoln´eho d˚ uvodu nemus´ı term´ın vyzvednut´ı objektu vˇcas stihnout. Rezervace jiˇz zaˇcala a objekt nen´ı st´ale vyzvednut – st´av´a se tedy nevyzvednutou. Tuto situaci ilustruje Obr. 2.7.
Obr´azek 2.7: Nevyzvednut´a rezervace. Ot´azkou je, jak se takov´ ym rezervac´ıch zachovat. Jistˇe nen´ı ˇz´adouc´ı blokovat ostatn´ı uˇzivatele rezervac´ı, kter´ a ztratila sv´e p˚ uvodn´ı posl´an´ı – zaruˇcit jej´ımu majiteli v´ yp˚ ujˇcku objektu. Ten si vˇsak ˇz´adn´ y objekt fyzicky nep˚ ujˇcil, neprovedl potvrzen´ı o vyzvednut´ı a t´ım p´ adem se cel´a rezervace st´av´a neplatnou. Na druhou stranu, jistˇe chceme umoˇznit i vyzvednut´ı objektu po term´ınu rezervace.
11
Problematika spr´avy v´yp˚ ujˇcek
Generalizace probl´emu v´yp˚ ujˇcek
Rozumn´ ym kompromisem bude zaveden´ı dalˇs´ı ˇcasov´e konstanty do naˇseho modelu: Definice 12. Expirace rezervace“ je ˇcasov´y u ´sek od zaˇc´ atku nevyzvednut´e rezer” vace, po kter´y je rezervace ch´ ap´ ana jako st´ ale platn´ a. Pokud je poˇc´ atek rezervace roven aktu´aln´ımu ˇcasu a rezervace st´ale nen´ı vyzvednuta, je vyˇclenˇen ˇcasov´ y u ´sek, tzv. expirace rezervace, po kter´ y bude rezervace st´ale ch´ ap´ ana jako platn´ a. V tomto ˇcasov´em u ´seku ostatn´ı uˇzivatel´e nebudou moci vytv´aˇret sv´e rezervace na stejn´ y objekt a rezervace m˚ uˇze b´ yt st´ale vyzvednuta jej´ım majitelem. Tato situace je zn´azornˇena na Obr. 2.8.
Obr´azek 2.8: Expirace rezervace. Jak ilustruje Obr. 2.9, aˇz se ˇcas dostane za dobu expirace rezervace a tato st´ale nen´ı vyzvednuta, bude umoˇznˇeno ostatn´ım uˇzivatel˚ um vytvoˇrit vlastn´ı rezervaci v ˇcasov´em u ´seku t´eto nevyzvednut´e rezervace. Pokud se tak stane, je p˚ uvodn´ı ˇcasov´ y interval rezervace automaticky zneplatnˇen a majitel rezervace jiˇz nem˚ uˇze objekt vyzvednout (tato zmˇena se neprom´ıtne do ostatn´ıch period v pˇr´ıpadˇe cyklick´e rezervace).
Obr´azek 2.9: Zneplatnˇen´ı rezervace. Tento pˇr´ıstup m´ a jeˇstˇe jednu v´ yhodu – i po vyprˇsen´ı doby expirace je st´ale moˇzn´e rezervaci vyzvednout. Lze tak ale uˇcinit pouze v pˇr´ıpadˇe, kdy jin´ı uˇzivatel´e nevytvoˇrili nov´e rezervace do ˇcasov´eho u ´seku rezervace p˚ uvodn´ı.
2.3.5
Potvrzen´ı vr´ acen´ı objekt˚ u
Jak jiˇz bylo zm´ınˇeno, administr´ator syst´emu bude moci vynutit potvrzen´ı vr´acen´ı objektu. T´ım se opˇet dost´ av´ame do situace, kdy je nutn´e definovat chov´an´ı
12
Problematika spr´avy v´yp˚ ujˇcek
Generalizace probl´emu v´yp˚ ujˇcek
akce vr´ acen´ı objektu v r˚ uzn´ ych ˇcasov´ ych intervalech. Oˇcividnˇe nebude moˇzn´e potvrzovat vracen´ı tˇech objekt˚ u, kter´e jsou vedeny jako povinnˇe potvrzovan´e pˇri vyzvednut´ı a jejichˇz rezervace nebyla vyzvednuta.
Pˇ redˇ casn´ e vr´ acen´ı objektu V tomto pˇr´ıpadˇe dojde ke zkr´ acen´ı doby rezervace na ˇcas vr´acen´ı objektu a cel´a v´ yp˚ ujˇcka t´ım bude dokonˇcena. Je tak mimo jin´e umoˇznˇeno, aby i ostatn´ı uˇzivatel´e vyuˇzili ˇcas po t´eto rezervaci pro sv´e v´ yp˚ ujˇcky. Pˇr´ıpad pˇredˇcasn´eho vr´acen´ı je zobrazen na Obr. 2.10.
Obr´azek 2.10: Pˇredˇcasn´e vr´acen´ı objektu.
Vr´ acen´ı objektu po term´ınu Pokud je objekt vr´ acen po term´ınu konce rezervace, nedojde k ˇz´adn´e zmˇenˇe tohoto term´ınu – mohli bychom se dostat do kolize s jinou rezervac´ı. Rezervace vr´acen´eho objektu bude pouze vedena jako ukonˇcena.
Nevr´ acen´ı objektu V pˇr´ıpadˇe d´eletrvaj´ıc´ıho nevr´ acen´ı objektu uˇzivatel mohl pouze zapomenout objekt vr´ atit nebo toto vr´ acen´ı potvrdit, mohlo vˇsak tak´e doj´ıt ke zcizen´ı majektu organizace. Je tedy ˇz´ adouc´ı v pˇr´ıpadˇe nevr´acen´ı objektu o tom nˇejak´ ym zp˚ usobem informovat zopodvˇedn´e osoby, aby mohly na tuto ud´alost vˇcas reagovat.
13
Problematika spr´avy v´yp˚ ujˇcek
Generalizace probl´emu v´yp˚ ujˇcek
Jedn´ım z moˇzn´ ych pˇr´ıstup˚ u je definov´an´ı ˇcasov´eho u ´seku, bˇehem kter´eho bude nevr´acen´ı objektu tolerov´ ano. N´ aslednˇe je moˇzn´e vyuˇz´ıt nˇekter´eho z komumikaˇcn´ıch kan´al˚ u (e-mail, sms atp.) pro odesl´an´ı zpr´avy zodpovˇedn´ ym osob´am nebo majiteli t´eto nevr´ acen´e rezervace. D´ ale je napˇr´ıklad moˇzn´e zablokovat dalˇs´ı vyp˚ ujˇcov´an´ı objektu do doby, neˇz je tento navr´ acen posledn´ım p˚ ujˇcuj´ıc´ım uˇzivatelem. Kaˇzdop´adnˇe bude nutn´e umoˇznit rychl´e dohled´ an´ı uˇzivatele, kter´ y mˇel objekt naposledy p˚ ujˇcen a nevr´atil jej.
2.3.6
Lokalizace objekt˚ u
Je ˇz´adouc´ı nˇejak´ ym zp˚ usobem poskytnout uˇzivatel˚ um dalˇs´ı doplˇ nkov´a data o objektech – kde se objekt fyzicky nach´az´ı, jak vypad´a a jak se z nˇemu dostat. Tyto informace budou jistˇe velmi cenn´e zejm´ena pro ty uˇzivatele, kteˇr´ı rezervace tˇechto objekt˚ u prov´ adˇej´ı nepravidelnˇe, nejsou st´alou souˇc´ast´ı organizace nebo jsou v n´ı nov´aˇcky. Zejm´ena poloha budov, m´ıstnost´ı nebo objekt˚ u, kter´e se ˇcasto pohybuj´ı ´ mezi v´ıce uˇzivateli, se jev´ı jako velmi uˇziteˇcn´a. Udaje by mˇely b´ yt co nejrychleji dohledateln´e a nemˇelo by jich b´ yt zbyteˇcnˇe moc, aby se v nich uˇzivatel´e neztr´aceli.
14
Problematika spr´avy v´yp˚ ujˇcek
2.4
Shrnut´ı
Shrnut´ı
Nyn´ı m´ ame vytvoˇren´ y potˇrebn´ y obecn´ y model pro to, abychom mohli zaˇc´ıt s bliˇzˇs´ı specifikac´ı poˇzadavk˚ u na nov´ y syst´em. Tento model je vˇcetnˇe jiˇz definovan´ ych atribut˚ u entit a vz´ ajemn´ ych vazeb zobrazen na Diagramu 2.1.
Diagram 2.1: Obecn´ y model rezervac´ı a v´ yp˚ ujˇcek objekt˚ u. K dosaˇzen´ı u ´pln´e komplexnosti n´am vˇsak st´ale nˇeco chyb´ı – je tˇreba bl´ıˇze urˇcit, jak´e technick´e ˇreˇsen´ı bude pouˇzito pro n´asleduj´ıc´ı c´ıle: - autentizace uˇzivatel˚ u. - identifikace objekt˚ u. - vyzvednut´ı a vr´ acen´ı objektu. - lokalizace objekt˚ u. V n´asleduj´ıc´ıch kapitol´ ach si uk´ aˇzeme, jak lze tˇechto c´ıl˚ u dos´ahnout pomoc´ı unik´atn´ıch technick´ ych vlastnost´ı mobiln´ıch zaˇr´ızen´ı a pokus´ıme se definovat z´akladn´ı sadu mobiln´ıch technologi´ı, kter´ a bude pouˇzita pro nov´ y informaˇcn´ı syst´em.
15
3 Mobiln´ı zaˇr´ızen´ı V dneˇsn´ı dobˇe drtiv´ a vˇetˇsina populace vlastn´ı mobiln´ı telefon. V t´eto mnoˇzinˇe existuje nemal´ a podmnoˇzina majitel˚ u tzv. chytr´ ych telefon˚ u. Tyto telefony jsou unik´atn´ı t´ım, ˇze vyuˇz´ıvaj´ı pokroˇcil´eho operaˇcn´ıho syst´emu a obvykle maj´ı vlastn´ı aplikaˇcn´ı rozhran´ı, kter´e umoˇzn´ı instalaci program˚ u tˇret´ıch stran. Jejich konektivita se tak´e neomezuje na pouh´e GSM hovory – zcela bˇeˇznˇe podporuj´ı technologie jako je napˇr´ıklad WiFi nebo 3G pro rychl´ y pˇr´ıstup do Internetu. V posledn´ıch letech lze tak´e pozorovat n´astup tzv. tablet˚ u. Tablet je zaˇr´ızen´ı, kter´e sice obvykle neumoˇzn ˇuje komunikaci po klasick´e GSM s´ıti, disponuje vˇsak mnohem vˇetˇs´ım displejem neˇz chytr´ y telefon. V posledn´ı dobˇe se ukazuje, ˇze chytr´e telefony a tablety d´ıky sv´e mobilitˇe, jednoduchosti, delˇs´ı v´ ydrˇzi na baterii a ergonomick´emu uˇzivatelsk´emu rozhran´ı skuteˇcnˇe zaˇc´ınaj´ı naplˇ novat v´ yznam term´ınu osobn´ı poˇc´ıtaˇc“. Chytr´e telefony a tablety se st´avaj´ı mnohem popul´arnˇejˇs´ı neˇz ” klasick´e stoln´ı poˇc´ıtaˇce a notebooky a to dokonce do t´e m´ıry, ˇze nˇekteˇr´ı lid´e jiˇz ani nec´ıt´ı potˇrebu pro svou bˇeˇznou agendu klasick´e poˇc´ıtaˇce vyuˇz´ıvat. V t´eto kapitole se ˇcten´ aˇr sezn´am´ı s uˇzivatelsk´ ymi a technologick´ ymi v´ yhodami, kter´e mobiln´ı zaˇr´ızen´ı pˇrin´aˇsej´ı. Budou rozebr´any moˇznosti v´ yvoje aplikac´ı pro r˚ uzn´e mobiln´ı platformy a jejich uplatnˇen´ı v r´amci rozs´ahl´ ych informaˇcn´ıch syst´em˚ u.
3.1
Mobiln´ı zaˇ r´ızen´ı jako pracovn´ı n´ astroj
Souˇcasn´ a mobiln´ı zaˇr´ızen´ı jiˇz d´ avno pˇrevzala u ´lohu r˚ uzn´ ych specializovan´ ych pˇr´ıstroj˚ u jako jsou databanky, Pocket PC nebo palmtopy. D´ıky tomu, ˇze zpravidla obsahuj´ı snadno dostupn´e aplikace pro pl´anov´an´ı a organizaci ˇcasu a souˇcasnˇe kombinuj´ı klasickou telefonii s rychl´ ym pˇr´ıstupem na Internet, staly se obl´ıbenou pom˚ uckou manaˇzer˚ u a dalˇs´ıch zamˇestnanc˚ u, u nichˇz je vyˇzadov´ana okamˇzit´a dostupnost a operativnost. Nicm´enˇe vyuˇzit´ı mobiln´ıch zaˇr´ızen´ı je mnohem ˇsirˇs´ı. Lze si je pˇredstavit jako jak´esi mobiln´ı termin´ aly, pˇres kter´e zamˇestnanci interaktivnˇe komunikuj´ı s centr´aln´ım syst´emem. Ten m˚ uˇze slouˇzit pro napˇr. spr´avu skladov´ ych z´asob, jako datab´aze z´akazn´ık˚ u nebo k objedn´ av´ an´ı obˇed˚ u ve ˇskoln´ı j´ıdelnˇe – moˇznosti jsou skuteˇcnˇe ˇsirok´e. Dotykov´e ovl´ ad´ an´ı je zpravidla intuitivnˇejˇs´ı neˇz klasick´e pˇr´ıstupy, nav´ıc menˇs´ı dipleje nut´ı v´ yvoj´ aˇre aplikac´ı k co nejvˇetˇs´ı jednoduchosti a kompaktnosti rozhran´ı – d´ıky tomu m˚ uˇze mobiln´ı zaˇr´ızen´ı po rychl´em zaˇskolen´ı pouˇz´ıvat skuteˇcnˇe kaˇzd´ y.
16
Mobiln´ı zaˇr´ızen´ı
Technick´e prostˇredky mobiln´ıch zaˇr´ızen´ı
Je tak´e moˇzn´e vyuˇz´ıt r˚ uzn´e technologie tˇechto zaˇr´ızen´ı, kter´e klasick´e poˇc´ıtaˇce zpravidla neumoˇzn ˇuj´ı, nebo je jejich pouˇzit´ı znaˇcnˇe neergonomick´e ˇci pro bˇeˇzn´e uˇzivatele sloˇzit´e. Nezanedbatelnou v´ yhodou je tak´e to, ˇze zamˇestnanci obvykle maj´ı tato zaˇr´ızen´ı prakticky poˇr´ ad u sebe a ve vˇetˇsinˇe pˇr´ıpad˚ u i pˇripojen´a k Internetu, coˇz oproti staticky um´ıstˇen´ ym termin´al˚ um nebo webov´emu rozhran´ı ˇr´adovˇe zvyˇsuje komfort uˇz´ıv´ an´ı syst´emu a zvyˇsuje jeho flexibilitu. Mezi dalˇs´ı moˇznosti mobiln´ıch zaˇr´ızen´ı v organizaci patˇr´ı uplatnˇen´ı tzv. BYOD (Bring Your Own Device) politiky. Tento pˇr´ıstup umoˇzn ˇuje v organizac´ıch pouˇz´ıvat stejn´e zaˇr´ızen´ı pro osobn´ı i pracovn´ı u ´ˇcely [4]. IT oddˇelen´ı nezakazuje pouˇz´ıv´an´ı vlastn´ıch zaˇr´ızen´ı v organizaci, naopak jej aktivnˇe podporuje a snaˇz´ı se poskytovat maxim´ aln´ı podporu pro hladkou integraci zaˇr´ızen´ı s infrastrukturou. Tento pˇr´ıstup m´a samozˇrejmˇe sv´ a rizika a z´ aleˇz´ı na kaˇzd´e organizaci zdali pouˇz´ıv´an´ı takov´ ych zaˇr´ızen´ı ve sv´e infrastruktuˇre umoˇzn´ı, pˇr´ıpadnˇe zdali nezvol´ı postup z druh´e strany“ ” – tedy zdali radˇeji neposkytne zamˇestnanc˚ um takov´a zaˇr´ızen´ı, kter´a by mohli pouˇz´ıvat i k soukrom´ ym u ´ˇcel˚ um.
3.2
Technick´ e prostˇ redky mobiln´ıch zaˇ r´ızen´ı
Mobiln´ı zaˇr´ızen´ı v sobˇe ukr´ yvaj´ı celou ˇradu zaj´ımav´ ych technologi´ı, se kter´ ymi se na klasick´ ych poˇc´ıtaˇc´ıch obvykle nesetk´ame. Tato kapitola m´a za u ´kol sezn´amit ˇcten´aˇre s tˇemito technologiemi a rozebrat jejich klady a z´apory.
3.2.1
Lokalizace zaˇ r´ızen´ı
Mobiln´ı zaˇr´ızen´ı obvykle umoˇzn ˇuj´ı lokalizovat svou polohu, a to za pouˇzit´ı nˇekolika technologi´ı.
GSM lokalizace Pokud mobiln´ı zaˇr´ızen´ı podporuje s´ıtˇe GSM (Global System for Mobile Communications), je moˇzn´e pouˇz´ıt tzv. GSM lokalizaci. U t´eto lokalizaˇcn´ı metody doch´az´ı k pˇrenosu ˇz´ adosti o lokalizaci z mobiln´ıho zaˇr´ızen´ı do s´ıtˇe, kde se s vyuˇzit´ım dat zjiˇstˇen´ ych z tohoto zaˇr´ızen´ı a s´ıtˇe stanov´ı jeho poloha. Mobiln´ı zaˇr´ızen´ı pak zpˇetnˇe pˇrijme informaci o poloze [3]. GSM s´ıt’ m´ a buˇ nkovou strukturu, kdy kaˇzd´e buˇ nce je pˇridˇeleno (v r´amci tzv. Location Area unik´ atn´ı) Cell ID ˇc´ıslo. To slouˇz´ı pro urˇcen´ı pˇr´ıstupov´eho bodu pro mobiln´ı zaˇr´ızen´ı. Poloha vˇsech z´akladnov´ ych stanic (tzv. BTS – Base transceiver
17
Mobiln´ı zaˇr´ızen´ı
Technick´e prostˇredky mobiln´ıch zaˇr´ızen´ı
station) vytv´ aˇrej´ıc´ı buˇ nkovou strukturu je oper´atorovi zn´ama. Poloha uˇzivatele v s´ıti m˚ uˇze b´ yt stanovena s vyuˇzit´ım metody Cell ID s pˇresnost´ı odpov´ıdaj´ıc´ı velikosti buˇ nky, ve kter´e se zrovna mobiln´ı zaˇr´ızen´ı nach´az´ı. Ta se pohybuje od 100m do 500m v mˇestsk´ ych oblastech a v jednotk´ach i des´ıtk´ach kilometr˚ u mimo mˇesta. Nicm´enˇe pˇresnost lokalizace m˚ uˇze b´ yt v´ yznamnˇe zv´ yˇsena vyuˇzit´ım tzv. Timing Advance (zkratkou TA). Tento parametr pˇredstavuje ˇcas ˇs´ıˇren´ı sign´alu mezi mobiln´ım zaˇr´ızen´ım a jednotliv´ ymi BTS. Pˇri znalosti rychlosti ˇs´ıˇren´ı sign´alu m˚ uˇze b´ yt urˇcena jejich pˇribliˇzn´ a vzd´ alenost. Mobiln´ı zaˇr´ızen´ı vˇsak v praxi pˇrij´ım´a sign´al od v´ıce BTS, coˇz umoˇzn ˇuje v´ ypoˇcet pr˚ uniku bunˇek, kter´e tyto stanice vytv´aˇrej´ı. Pro pˇresn´e urˇcen´ı polohy je tˇreba tˇr´ı (a v´ıce) stanic. Dos´ahne se tak zv´ yˇsen´ı pˇresnosti urˇcov´ an´ı polohy na hodnoty, kter´a m˚ uˇze dos´ahnout zhruba 50m. Tento postup uˇzivatelsk´eho urˇcen´ı polohy nen´ı d´ıky sv´e mal´e pˇresnosti pˇr´ıliˇs efektivn´ı a v praxi jej nahradily jin´e metody lokalizace. Pouˇz´ıv´a se vˇsak st´ale u kombinovan´ ych metod lokalizace k dalˇs´ımu zpˇresˇ nov´an´ı polohy zaˇr´ızen´ı (a je nutn´ y pro vlastn´ı funkˇcnost GSM s´ıtˇe).
GPS lokalizace GPS (anglicky Global Position System) patˇr´ı mezi tzv. glob´aln´ı navigaˇcn´ı druˇzicov´e syst´emy (anglicky Global Navigation Satellite System, zkratkou GNSS). P˚ uvodnˇe byl vyvinut pro vojensk´e u ´ˇcely a v souˇcasn´e dobˇe je pod kontrolou Ministerstva obrany Spojen´ ych st´ at˚ u americk´ ych [2]. GPS umoˇzn ˇuje za pomoci pˇrij´ımaˇce GPS sign´ alu z´ısk´ an´ı tˇr´ıdimenzion´aln´ıch souˇradnic pˇrij´ımaˇce, jeho aktu´aln´ı rychlost vzhledem k povrchu Zemˇe a tak´e ˇcas. Pˇrij´ımaˇc m˚ uˇze b´ yt pouˇzit k´ ymkoliv a kdekoliv na planetˇe, ve dne i v noci, na souˇsi, na moˇri i ve vzduchu. Existuj´ı samozˇrejmˇe i dalˇs´ı GNSS syst´emy: jmenujme napˇr´ıklad rusk´ y GLONASS, ˇc´ınsk´ y Compass nebo novˇe vznikaj´ıc´ı syst´em Evropsk´e unie - Galileo. V souˇcasn´e dobˇe je vˇsak GPS zdaleka nejpouˇz´ıvanˇejs´ı GNSS syst´em se zdaleka nejˇsirˇs´ı podporou v´ yrobc˚ u lokalizaˇcn´ıch zaˇr´ızen´ı. GPS funguje d´ıky flotile vys´ılac´ıch druˇzic. Kaˇzd´a druˇzice je vynesena na pˇresnˇe stanovenou obˇeˇznou dr´ ahu tak, aby bylo bylo zajiˇstˇeno, ˇze lokalizaˇcn´ı zaˇr´ızen´ı bude moci z jak´ehokoliv m´ısta na Zemi v jakoukoliv denn´ı dobu pˇrij´ımat sign´aly ˇ z nejm´enˇe tˇr´ı druˇzic. Ctvrt´ y sign´ al druˇzice je pak nezbytn´ y pro synchronizaci hodin pˇrij´ımaˇce s hodinami druˇzic. Je nezbytn´e zm´ınit, ˇze lokalizaˇcn´ı zaˇr´ızen´ı hraj´ı roli pouze pasivn´ıch pˇrij´ımaˇc˚ u druˇzicov´eho sign´alu. V souˇcasn´e dobˇe jsou GPS pˇrij´ımaˇce integrov´any do cel´e ˇrady zaˇr´ızen´ı a ty jsou velmi ˇsiroce vyuˇz´ıv´ any – jmenujme alespoˇ n autonavigace, pˇr´ıstroje pro zabezpeˇcen´ı majektu, sledov´ an´ı osob, geodetick´e pˇr´ıstroje nebo napˇr´ıklad syst´emy urˇcen´e
18
Mobiln´ı zaˇr´ızen´ı
Technick´e prostˇredky mobiln´ıch zaˇr´ızen´ı
k optimalizaci zdroj˚ u, jako je napˇr´ıklad monitorov´an´ı dopravy. Vˇetˇsina dnes prod´avan´ ych chytr´ ych telefon˚ u a tablet˚ u GPS pˇrij´ımaˇc obsahuje, a d´ıky moˇznosti tento pˇrij´ımaˇc aktivnˇe vyuˇz´ıvat aplikacemi tˇret´ıch stran poskytuj´ı pro uˇzivatele ˇsirok´e moˇznosti pouˇzit´ı, poˇc´ınaje navigac´ı, pˇres nejr˚ uznˇejˇs´ı inteligentn´ı vyhled´avaˇce zaloˇzen´e na aktu´ aln´ı poloze zaˇr´ızen´ı a konˇce u r˚ uzn´ ych podob soci´aln´ıch ˇci geolokaˇcn´ıch her, jako je napˇr´ıklad Foursquare nebo Geocaching.
Nev´ yhody GPS Asi nejvˇetˇs´ı nev´ yhodou GPS je jeho prim´arn´ı vyuˇzit´ı pro arm´adu. Pro civiln´ı vyuˇzit´ı je dostupn´ a pouze ˇc´ ast sluˇzeb tohoto syst´emu s omezenou pˇresnost´ı lokalizace a jeho provozovatel m˚ uˇze kdykoliv i funkˇcnost t´eto ˇc´asti omezit nebo ji jednoduˇse vypnout. GPS sign´ al m´ a vysokofrekvenˇcn´ı charakter (origin´aln´ı n´avrh pˇredpokl´ad´a dvˇe nosn´e frekvence na 1575.42 MHz a 1227.60 MHz, coˇz je jiˇz v p´asmu UHF). D´ıky tomu vˇsak obt´ıˇznˇe proch´ az´ı nˇekter´ ymi pevn´ ymi materi´aly, a proto je uvnitˇr budov pro pˇrij´ımaˇc d´ıky cel´e plej´ adˇe fyzick´ ych bari´er sloˇzit´e aˇz nemoˇzn´e zachytit sign´al alespoˇ n ze ˇctyˇr druˇzic souˇcasnˇe a n´aslednˇe stanovit polohu. Nav´ıc se zde mohou nach´azet zdroje ruˇsen´ı sign´ alu GPS. Situace se ponˇekud lepˇs´ı, pokud se pˇrij´ımaˇc pohybuje pobl´ıˇz okna. GPS sign´al pomˇernˇe dobˇre proch´az´ı sklem a tak je moˇzn´e, ˇze pˇri dobr´em v´ yhledu napˇr. v pˇr´ıpadˇe v´ yˇskov´e budovy s velk´ ymi okny bude GPS lokalizace pravdˇepodobnˇe fungovat. Tento pˇr´ıpad je vˇsak sp´ıˇse v´ yjimkou a na GPS zaˇr´ızen´ı uvnitˇr budov se obecnˇe nelze spolehnout. Konkurenˇcn´ı GNSS syst´emy se ˇ sen´ım d´ıky sv´e technologick´e pˇr´ıbuznosti s GPS pot´ ykaj´ı se stejn´ ymi obt´ıˇzemi. Reˇ by vˇsak mohla b´ yt tzv. IPS navigace (viz d´ale).
Lokalizace IPS IPS (Indoor Positioning System) je navigaˇcn´ı syst´em navrˇzen´ y tak, aby fungoval uvnitˇr budov. Narozd´ıl od GPS nevyuˇz´ıv´a pozicov´eho sign´alu druˇzic, ale rovnou nˇekolika rozliˇcn´ ych technologi´ı, kter´e spolu mohou fungovat i souˇcasnˇe. Pod pojmem IPS se neskr´ yv´ a ˇz´ adn´ a konkr´etn´ı technologie, ˇz´adn´ y uchopiteln´ y standard – v souˇcasn´e dobˇe prob´ıh´ a boj o to, kdo prvn´ı pˇrijde s prvn´ım, ˇsiroce pouˇz´ıvan´ ym ˇreˇsen´ım IPS lokalizace. Jedna z moˇzn´ ych technick´ ych implementac´ı je vyuˇz´ıt s´ıtˇe Wi-Fi, kter´a je dnes ˇsiroce rozˇs´ıˇren´ a a naprost´ a vˇetˇsina mobiln´ıch zaˇr´ızen´ı se k n´ı dok´aˇze pˇripojit. Dosud uskuteˇcnˇen´e realizace byly obvykle zaloˇzeny na principu indik´ator˚ u s´ıly pˇrijat´eho sign´alu (RSSI - Received Signal Strength Indicator ) a seznamu pˇr´ıstupov´ ych bod˚ u, ke kter´ ym je mobiln´ı zaˇr´ızen´ı pˇripojeno [5] [6]. Bohuˇzel tento pˇr´ıstup se uk´azal jako
19
Mobiln´ı zaˇr´ızen´ı
Technick´e prostˇredky mobiln´ıch zaˇr´ızen´ı
neefektivn´ı – s´ıla sign´ alu se totiˇz mˇen´ı v ˇcase velmi nerovnomˇernˇe a pro rychle se pohybuj´ıc´ı objekty skokovˇe. Probl´emem tak´e je, ˇze r˚ uzn´a zaˇr´ızen´ı indikuj´ı s´ılu sign´alu r˚ uznˇe, a je tedy velmi tˇeˇzk´e z tohoto u ´daje cokoliv predikovat. Proto se objevily pokusy, jak detekci polohy zaˇr´ızen´ı v´ıce zpˇresnit pouˇzit´ım dalˇs´ı technologie ˇsiroce pouˇz´ıvan´e v mobin´ıch zaˇr´ızen´ıch. Tou technologi´ı je Bluetooth. Napˇr´ıklad syst´em uveden´ y v [7] s´ıtˇe Wi-Fi pouˇz´ıv´a pouze jako p´ateˇrn´ı komunikaˇcn´ı linky mezi centr´ aln´ım serverem a jednotliv´ ymi Bluetooth uzly. Ty maj´ı r´adiov´ y dosah pˇribliˇznˇe deset metr˚ u a jejich rozm´ıstˇen´ı po budovˇe mus´ı b´ yt pˇredem zn´amo. Pˇri vstupu do budovy se uˇzivatel mus´ı pˇripojit k nejbliˇzs´ımu Bluetooth uzlu – a t´ım mu pˇred´ a unik´ atn´ı 48bit Bluetooth ID sv´eho zaˇr´ızen´ı. To je uloˇzeno na centr´aln´ı server. Pˇri poˇzadavku lokalizace tohoto registrovan´eho zaˇr´ızen´ı se vˇsechny Bluetooth uzly pokus´ı pˇripojit k zaˇr´ızen´ı s jiˇz uloˇzen´ ym Bluetooth ID – uzel, kter´emu se to podaˇr´ı, odes´ıl´ a zpˇet sv´e unik´atn´ı ID na server, kter´ y pot´e vyhodnot´ı polohu hledan´eho zaˇr´ızen´ı a odes´ıl´a tuto informaci zpˇet ˇzadateli. Pˇresnost tohoto syst´emu je pˇribliˇznˇe deset metr˚ u (coˇz odpov´ıd´a rozsahu jednotliv´ ych Bluetooth uzl˚ u) a s vˇetˇs´ım poˇctem uzl˚ u a jejich menˇs´ım dosahem by se pˇresnost jistˇe dala jeˇstˇe zv´ yˇsit. Velkou nev´ yhodou tohoto pˇr´ıstupu je ovˇsem velk´a n´aroˇcnost na infrastrukturu s´ıtˇe. V posledn´ı dobˇe se objevuj´ı studie, jak prov´est lokalizaci uvnitˇr budov na z´akladˇe magnetick´eho pole Zemˇe [8] [9]. K tomu je pouˇzita dalˇs´ı, dnes jiˇz bˇeˇznˇe se vyskytuj´ıc´ı technologie v mobiln´ıch zaˇr´ızen´ıch – magnetometr neboli kompas. Zjednoduˇsenˇe ˇreˇceno, kaˇzd´ y ˇctvereˇcn´ı centimetr Zemˇe vyzaˇruje magnetick´e pole – a toto pole je modulov´ ano betonov´ ymi a ocelov´ ymi konstrukcemi modern´ıch budov. Vestavˇen´e kompasy v mobiln´ıch zaˇr´ızen´ıch jsou obvykle natolik citliv´e, aby zaznamenaly zmˇeny v magnetick´em poli. Pokud je vytvoˇrena mapa tˇechto magnetick´ ych pol´ı, pˇresn´ a navigace pomoc´ı zabudovan´eho kompasu je pot´e velmi jednoduch´ a. K vytvoˇren´ı t´eto mapy je opˇet moˇzn´e pouˇz´ıt vestavˇen´eho kompasu. Pˇresnost tˇechto syst´em˚ u je zhruba 1,5m a nikterak v´ yraznˇe ji neovlivˇ nuj´ı ani menˇs´ı kovov´e pˇredmˇety [11]. Tato technologie je tak´e jiˇz komerˇcnˇe vyuˇz´ıv´ana [10]. Ot´ azkou z˚ ust´ av´ a, jak bude magnetick´e mapov´an´ı ovlivˇ nov´ano vˇetˇs´ımi umˇel´ ymi objekty (napˇr. auty, doˇcasn´ ymi kovov´ ymi konstrukcemi apod.) a nakolik bude trval´e. Magnetick´e pole Zemˇe se totiˇz kaˇzd´ ych nˇekolik let mˇen´ı. Cel´a oblast IPS navigace tedy z˚ ust´ av´ a po technick´e str´ance ne zcela uspokojivˇe vyˇreˇsena.
3.2.2
Digit´ aln´ı fotoapar´ at
Kaˇzd´e mobiln´ı zaˇr´ızen´ı dnes integruje alespoˇ n jeden digit´aln´ı fotoapar´at (kter´ y souˇcasnˇe slouˇz´ı jako videokamera). Pouˇzit´ı tˇechto zaˇr´ızen´ı je ˇsirok´e, od vyuˇzit´ı
20
Mobiln´ı zaˇr´ızen´ı
Technick´e prostˇredky mobiln´ıch zaˇr´ızen´ı
jako klasick´eho fotoapar´ atu, pˇres videohovory aˇz po napˇr´ıklad bezpeˇcnostn´ı kameru v automobilu. My vˇsak zde toto zaˇr´ızen´ı uv´ad´ıme kv˚ uli nˇeˇcemu jin´emu – vestavˇen´ y fotoapar´ at lze lehce pouˇz´ıt jako integrovanou ˇcteˇcku optick´ ych k´od˚ u.
Optick´ e k´ ody Optick´ y k´ od k´ oduje data popisuj´ıc´ı objekt, ke kter´emu je optick´ y k´od pˇriloˇzen. Lze rozdˇelit do dvou skupin – jednorozmˇern´e (ˇc´arov´e) a dvojrozmˇern´e QR k´ody (Quick Response Codes). Liˇs´ı se zejm´ena svoj´ı odolnost´ı proti chyb´am, poˇctem znak˚ u, kter´ y je moˇzno k´ odovat, a d´elkou textu, kter´ y m˚ uˇze k´od n´est [12]. Tyto k´ody byly p˚ uvodnˇe ˇciteln´e pouze specializovan´ ymi ˇcteˇckami a skenery, dnes je vˇsak moˇzn´e pomoc´ı pokroˇcil´e anal´ yze obrazu vyuˇz´ıt i bˇeˇznˇe dostupn´e stoln´ı skenery a fotoapar´ aty – tedy i ty integrovan´e v mobiln´ıch zaˇr´ızen´ıch. Sejmut´ı optick´eho k´odu vyˇzaduje pˇr´ımou viditelnost mezi ˇctec´ım zaˇr´ızen´ım a k´odem samotn´ ym. Optick´e k´ ody jsou d´ıky sv´e jednoduchosti a finanˇcn´ı nen´aroˇcnosti vyuˇz´ıv´any v mnoha oblastech lidsk´e ˇcinnosti – v logistice a obchodu, v evidenˇcn´ıch syst´emech nebo napˇr. slouˇz´ı k veˇrejn´e prezentaci a marketingu. Hlavn´ım vyuˇzit´ım je unik´atn´ı identifikace objektu, ke kter´emu je k´od pˇriloˇzen – takov´ y k´od budeme d´ale naz´ yvat jako tag.
3.2.3
R´ adiov´ e technologie
Mobiln´ı zaˇr´ızen´ı mohou integrovat technologie, kter´e umoˇzn ˇuj´ı komunikaci na kr´atk´e vzd´ alenosti pomoc´ı r´ adiov´ ych vln. V t´eto kapitole budou tyto technologie uvedeny v ˇsirˇs´ım kontextu a pot´e bude rozebr´ano jejich konkr´etn´ı vyuˇzit´ı v mobiln´ıch zaˇr´ızen´ıch.
Technologie RFID (Radio Frequency Identification) Dle [13] je RFID technologie umoˇzn ˇuj´ıc´ı (obdobnˇe jako optick´e k´ody) identifikaci objekt˚ u, nicm´enˇe nevyˇzaduje k tomu pˇr´ımou viditelnost. Pˇrenos dat zde neprob´ıh´a opticky, ale za pomoci r´ adiov´ ych vln. RFID syst´emy mohou automaticky identifikovat nˇekolik objekt˚ u um´ıstˇen´ ych ve stejn´em prostoru na z´akladˇe pˇreˇcten´ı jejich tag˚ u, a to bez lidsk´e asistence. RFID zaˇr´ızen´ı lze rozdˇelit do dvou skupin: aktivn´ı a pasivn´ı. Aktivn´ı zaˇr´ızen´ı vyˇzaduj´ı zdroj nap´ajen´ı, bud’ z elektrick´e s´ıtˇe nebo pomoci baterie. v obvykl´em pˇr´ıpadˇe je ˇzivotnost tagu omezena ˇzivotnost´ı baterie (a ˇzivotnost tagu je mˇeˇrena v poˇctu operac´ı ˇcten´ı, kter´e tag mus´ı spolehnivˇe dokonˇcit).
21
Mobiln´ı zaˇr´ızen´ı
Technick´e prostˇredky mobiln´ıch zaˇr´ızen´ı
Pˇr´ıkladem aktivn´ıho tagu m˚ uˇze b´ yt vys´ılaˇc v letadle, kter´ y identifikuje zemi jeho p˚ uvodu. Protoˇze jsou vˇsak baterie drah´e, relativnˇe rozmˇern´e a s omezenou ˇzivotnost´ı, ˇcin´ı aktivn´ı tagy ponˇekud nepraktick´ ymi. Proto existuj´ı tagy pasivn´ı. Tyto tagy nevyˇzaduj´ı ˇz´ adn´ y zdroj nap´ ajen´ı. Skl´adaj´ı se ze tˇr´ı ˇc´ast´ı: ant´eny, mikroˇcipu pˇripojen´eho k ant´enˇe a ochrann´eho obalu. Strana, kter´a chce tag pˇreˇc´ıst, je odpovˇedn´a za jeho nap´ ajen´ı. Ant´ena tagu slouˇz´ı k zachyt´av´an´ı energie a odesl´an´ı poˇzadovan´eho identifik´ atoru objektu. Poskytnut´ı tohoto identifik´atoru zajist´ı mikroˇcip. Existuj´ı dva pˇr´ıstupy, jak zajiˇst’ovat nap´ajen´ı pasivn´ıho tagu – pomoc´ı principu magnetick´e indukce a elektromagnetick´ ych vln. Oba dva poskytuj´ı dostatek energie pro nap´ ajen´ı mikroˇcipu v pasivn´ım tagu (typicky od 10µW do 1mW ), liˇs´ı se vˇsak ve vzd´alenosti, po kterou mohou tuto energii poskytnout. D´ıky tomu d´ale rozliˇsujeme pasivn´ı zaˇr´ızen´ı podle dosahu na tzv. far-field a near-field.
NFC (Near-field communication) NFC je sada standard˚ u, kter´e si kladou za c´ıl definovat mechanismy, pomoc´ı kter´ ych mohou mobiln´ı zaˇr´ızen´ı z bezprostˇredn´ı bl´ızkosti (do 20cm) komunikovat s dalˇs´ımi pˇr´ıstoji, a souˇcasnˇe umoˇznily ˇc´ıst data ze st´avaj´ıch pasivn´ıch RFID zdroj˚ u. Naprosto z´ amˇernˇe nen´ı vyuˇzito technologi´ı jako je Wi-Fi nebo Bluetooth – jejich r´adiov´ y dosah je pˇr´ıliˇs velik´ y a vyˇzaduj´ı p´arov´an´ı. Je upˇrednostnˇena jednoduˇsˇs´ı konfigurace, byt’ za cenu niˇzˇs´ıch rychlost´ı. NFC technologie (narozd´ıl od RFID) podporuje ˇsifrov´ an´ı. Mimo klasick´ ych RFID tag˚ u NFC podporuje i ˇcten´ı nˇekter´ ych standard˚ u tzv. chytr´ ych karet. NFC umoˇzn ˇuje nˇekolik reˇzim˚ u pˇrenosu ve tˇrech reˇzimech: Reader/Writer ˇcten´ı nebo z´ apis do pasivn´ıho zaˇr´ızen´ı, Peer-to-peer neboli obousmˇern´a komunikace dvou aktivn´ıch zaˇr´ızen´ı, a reˇzim Card emulation, ve kter´em je emulov´ano NFC pasivn´ı zaˇr´ızen´ı. NFC tak´e nad r´amec RFID definuje vlastn´ı sadu tag˚ u. Ty se od sebe liˇs´ı velikost´ı pamˇeti, pouˇzit´ ym ˇcipem, pˇrenosovou rychlost´ı a moˇznost´ı pˇrepisov´ an´ı. Technologie uˇz z principu nen´ı kompatibiln´ı s far–field RFID tagy. D´ıky vˇsem tˇemto vlastnostem je moˇzn´e tuto technologii uplatnit napˇr. k bezkontaktn´ım platb´ am, identifikaci, sd´ılen´ı nebo napˇr. pro rychl´e nastaven´ı sloˇzitˇejˇs´ıch druh˚ u komunikace. V souˇcasnosti jsou k dispozici des´ıtky typ˚ u chytr´ ych telefon˚ u s NFC ˇcipy. Kaˇzd´e zaˇr´ızen´ı ale ne zcela implementuje vˇsechny pˇredepsan´e standardy, nebo je naopak rozˇsiˇruje – t´ım vznik´a vz´ajemn´a nekompatibilita, kdy nˇekter´e typy tag˚ u nemus´ı j´ıt na tˇechto pˇr´ıstroj´ıch pˇreˇc´ıst, nebo nemus´ı nav´azat komunikaci s NFC zaˇr´ızen´ım od jin´eho v´ yrobce [14].
22
Mobiln´ı zaˇr´ızen´ı
3.3
Mobiln´ı aplikaˇcn´ı platformy
Mobiln´ı aplikaˇ cn´ı platformy
V t´eto kapitole budou pˇredstaveny nejrozˇs´ıˇrenˇejˇs´ı aplikaˇcn´ı platformy mobiln´ıch zaˇr´ızen´ı. Kapitola si neklade za c´ıl detailnˇe rozeb´ırat klady a nedostatky jednotliv´ ych platforem, dojde vˇsak k bliˇzˇs´ımu sezn´amen´ı ze strany v´ yvoj´aˇr˚ u aplikac´ı pro tyto platformy a budou uvedeny pˇredpoklady a poˇzadavky, kter´e na v´ yvoj´aˇre jednotliv´ı vydavatel´e platforem kladou. Pod pojmem mobiln´ı aplikaˇcn´ı platforma“ je moˇzn´e si pˇredstavit nejen sadu ” softwarov´eho vybaven´ı pro fyzick´e mobiln´ı zaˇr´ızen´ı, vˇcetnˇe napˇr. j´adra syst´emu nebo programov´emu rozhran´ı pro aplikace tˇret´ıch stran, ale i tˇreba z´akladn´ı sadu standard˚ u, kter´e mus´ı koncov´e zaˇr´ızen´ı splˇ novat, nebo definici metod instalace aplikac´ı tˇret´ıch stran. Protoˇze kaˇzd´ y dodavatel platformy si pro sv˚ uj produkt nastavil vlastn´ı unik´ atn´ı prostˇred´ı a jen velmi obt´ıˇznˇe se stanov´ı hranice co je definov´ano platformou a co je jiˇz v reˇzii v´ yrobc˚ u koncov´ ych zaˇr´ızen´ı, nelze tento pojem pˇr´ıliˇs dobˇre zobecnit. Lze vˇsak ˇr´ıci, ˇze platformy se vz´ajemnˇe liˇs´ı jak funkcemi poskytovan´ ymi operaˇcn´ım syst´emem uˇzivateli, tak i rozhran´ım operaˇcn´ıho syst´emu pro v´ yvoj´aˇre mobiln´ıch aplikac´ı a v neposledn´ı ˇradˇe aplikacemi tˇret´ıch stran, kter´e jsou na dan´e platformˇe k dispozici.
3.3.1
St´ avaj´ıc´ı mobiln´ı platformy
V souˇcasn´e dobˇe lze hovoˇrit o tˇrech nejrozˇs´ıˇrenˇejˇs´ıch platform´ach – iOS od spoleˇcnosti Apple, Android a MS Windows Phone. Mezi dalˇs´ı, minoritn´ı platformy pak patˇr´ı BlackBerry OS nebo napˇr´ıklad Bada od spoleˇcnosti Samsung.
Apple iOS Tento mobiln´ı operaˇcn´ı syst´em byl urˇcen pouze pro mobiln´ı telefony iPhone, pozdˇeji se vˇsak zaˇcal pouˇz´ıvat i na dalˇs´ıch mobiln´ıch zaˇr´ızen´ıch spoleˇcnosti Apple, jako jsou iPod Touch nebo tablet iPad. Tento syst´em byl d´ıky sv´e jednoduchosti pouˇz´ıv´an´ı, orientac´ı na dotykov´e ovl´ad´an´ı a zamˇeˇren´ım na stˇrednˇeproud´eho z´akazn´ıka prvn´ı sv´eho druhu a odstartoval dneˇsn´ı ´eru popularity mobiln´ıch zaˇr´ızen´ı. Obdobn´e syst´emy samozˇrejmˇe existovaly i pˇred iOS, byly vˇsak sp´ıˇse na okraji z´ajmu nebo byly prim´ arnˇe orientov´ any do podnikov´e sf´ery. Spoleˇcnost Apple plnˇe kontroluje nejen v´ yvoj tohoto uzavˇren´eho syst´emu, ale i kompletn´ı v´ yrobu a distribuci fyzick´ ych zaˇr´ızen´ı a m´a tak´e ve sv´e reˇzii vˇsechny
23
Mobiln´ı zaˇr´ızen´ı
Mobiln´ı aplikaˇcn´ı platformy
ofici´aln´ı distribuˇcn´ı kan´ aly obsahu z´akazn´ık˚ um, at’ uˇz se jedn´a o multimedi´aln´ı obsah nebo aplikace tˇret´ıch stran. Pouˇzit´ı syst´emu na jin´ ych zaˇr´ızen´ıch nen´ı moˇzn´e. V´ yvoj aplikac´ı je moˇzn´ y v objektovˇe orientovan´em jazyce Objective-C, implementovan´em jako rozˇs´ıˇren´ı jazyka C. V´ yvoj´aˇrsk´e n´astroje od programov´eho prostˇred´ı aˇz po pouˇzit´ y hardware, na kter´em bude program´ator aplikaci vytv´aˇret, jsou plnˇe pod kontrolou spoleˇcnosti Apple.
Windows Phone Windows Phone je obchodn´ı n´ azev mobiln´ıho operaˇcn´ıho syst´emu spoleˇcnosti Microsoft. V souˇcasn´e dobˇe jsou jako Windows Phone oznaˇcov´any syst´emy Windows Phone 7 a Windows Phone 8, kter´e vˇsak nejsou vz´ajemnˇe kompatibiln´ı a internˇe vyuˇz´ıvaj´ı jin´e j´ adro a jinou verzi aplikaˇcn´ıho frameworku. Spoleˇcnost Microsoft je vydavatelem tohoto syst´emu, sama ale ˇz´adn´e zaˇr´ızen´ı nevyr´ ab´ı. Licence syst´emu si kupuj´ı jednotliv´ı v´ yrobci mobiln´ıch zaˇr´ızen´ı a nasazuj´ı je do sv´ ych produkt˚ u. V´ yrobci mus´ı dodrˇzet poˇzadavky na koncov´e zaˇr´ızen´ı pˇredepsan´e spoleˇcnost´ı Microsoft. Patˇr´ı mezi nˇe napˇr. pouˇzit´ y mikroprocesor, velikost displeje, uˇzivatelsk´ a tlaˇc´ıtka, poˇzadavky na fotoapar´at atp. D´ıky tomu m´a vydavatel platformy ˇc´ asteˇcnou kontrolu nad koncov´ ym zaˇr´ızen´ım a tak´e to d´av´a do rukou v´ yvoj´ aˇr˚ u aplikac´ı generickou specifikaci zaˇr´ızen´ı. V´ yvoj aplikac´ı je moˇzn´ y v jazyce C# nebo Visual Basic za pomoci .NET Frameworku ve verzi Compact, kter´ y je pˇrizp˚ usoben´ y na bˇeh na mobiln´ıch zaˇr´ızen´ıch a jeho vydavatelem je tak´e spoleˇcnost Microsoft.
3.3.2
Mobiln´ı platforma Android
Pro potˇreby t´eto pr´ ace se d´ıky zdaleka nejvˇetˇs´ı rozˇs´ıˇrenosti mezi uˇzivateli, otevˇrenosti, unifikovanosti a ˇsirok´ ym moˇznostem pouˇzit´ı budeme nad´ale pˇrednostnˇe zab´ yvat platformou Android. Android je aplikaˇcn´ı platforma urˇcen´a pro mobiln´ı zaˇr´ızen´ı, vyv´ıjen´a spoleˇcnost´ı Google a sdruˇzen´ım v´ yrobc˚ u mobiln´ıch zaˇr´ızen´ı (Open Handset Alliance) [15]. Zahrnuje operaˇcn´ı syst´em zaloˇzen´ y na GNU/Linuxu, uˇzivatelsk´e rozhran´ı, sadu knihoven, podporu multim´edi´ı a koncov´e aplikace. Vˇetˇsina ˇc´ast´ı t´eto platformy je uvolˇ nov´ ana pod ASL (Apache Software License) licenc´ı, j´adro syst´emu je licencov´ ano pod GPL (General Public Licence). Jedn´a se tedy o open-source platformu.
24
Mobiln´ı zaˇr´ızen´ı
Mobiln´ı aplikaˇcn´ı platformy
Jednotliv´ı v´ yrobci mohou pˇrisp´ıvat do zdrojov´eho k´odu nebo jej modifikovat pro sv´ a zaˇr´ızen´ı. Andoid je zcela zdarma a kdokoliv si jej m˚ uˇze st´ahnout a upravit sv´ ym potˇreb´ am. D´ıky tomu je tento syst´em masovˇe rozˇs´ıˇren´ y a dalece pˇres´ahl sv´e p˚ uvodn´ı urˇcen´ı – m˚ uˇzeme se s n´ım setkat i v digit´aln´ıch fotoapar´atech, televiz´ıch, ledniˇck´ ach nebo i na bˇeˇzn´ ych x86 poˇc´ıtaˇc´ıch.
Architektura Architektura platformy Android je rozdˇelena do nˇekolika komponent, kter´e se mohou vz´ ajemnˇe ˇc´ asteˇcnˇe prol´ınat. Nejniˇzˇs´ı vrstva je j´ adro operaˇcn´ıho syst´emu, kter´e je odvozeno z Linuxov´eho j´adra. Je plnˇe vyuˇzito jeho vlastnost´ı jako je ˇsirok´a podpora hardwaru, podpora spr´avy pamˇeti, spr´ ava s´ıt´ı, ˇr´ızen´ı opr´avnˇen´ı a multitaskingu nebo spr´ava proces˚ u. To pˇrisp´ıv´ a ke stabilitˇe a ˇsirok´e kompatibilitˇe syst´emu. Naopak j´adro neobsahuje moduly pro grafick´e uˇzivatelsk´e rozhran´ı X Window System a ani u ´pln´ y toolkit GNU knihoven. J´adro je vyuˇz´ıv´ ano sadou knihoven napsan´ ych v jazyce C nebo C++, at’ uˇz odvozen´ ych z jin´ ych projekt˚ u nebo napsan´ ych pˇr´ımo pro Android. Jednou z tˇechto knihoven je napˇr. standardn´ı knihovna jazyka C, modifikovan´a speci´alnˇe pro mobiln´ı zaˇr´ızen´ı, nebo napˇr´ıklad implementace OpenGL. Komponenta zajiˇst’uj´ıc´ı bˇeh uˇzivatelsk´ ych aplikac´ı se oznaˇcuje jako Android Runtime. Obsahuje virtu´ aln´ı stroj Dalvik (DVM – Dalvik Virtual Machine), kter´ y je optimalizov´ an pro bˇeh na mobiln´ıch zaˇr´ızen´ıch. Vyuˇz´ıv´a z´akladn´ıch vlastnost´ı Linuxov´eho j´ adra, jako je spr´ ava pamˇeti nebo pr´ace s vl´akny. V t´eto vrstvˇe jsou tak´e obsaˇzeny z´ akladn´ı knihovny programovac´ıho jazyka Java. Knihovny se bl´ıˇz´ı platformˇe Java SE, neposkytuj´ı vˇsak bal´ıky napˇr. pro pr´aci s XML (eXtensible Markup Language) nebo AWT – ty byly obvykle nahrazeny vlastn´ı implementac´ı nebo bylo pouˇzito r˚ uzn´ ych projekt˚ u Apache (napˇr. pro pr´aci se s´ıt’ov´ ym rozhran´ım). Aˇc by se tak na prvn´ı pohled mohlo zd´at, Dalvik nen´ı virtu´aln´ı stroj urˇcen´ y pro bˇeh klasick´eho Java bytek´ odu. Pˇreklad aplikace prob´ıh´a zkompilov´an´ım zdrojov´eho k´odu do Java bytek´ odu pomoc´ı klasick´eho javac kompil´atoru. Pot´e se tento bytek´od pˇrekompiluje pomoc´ı Dalvik kompil´atoru a v´ ysledn´ y Dalvik bytek´od lze teprve spustit v DVM. Kaˇzd´ a spuˇstˇen´ a aplikace bˇeˇz´ı ve sv´em vlastn´ım procesu a s vlastn´ı instanc´ı virtu´ aln´ıho stroje. Komponenta Application framework je samotn´e programov´e rozhran´ı pro uˇzivatelskou aplikaci. Zpˇr´ıstupˇ nuje r˚ uzn´e sluˇzby platformy, uˇzivatelsk´e rozhran´ı, upozorˇ novac´ı stavov´ y ˇr´ adek, aplikace bˇeˇz´ıc´ı na pozad´ı, u ´loˇziˇstˇe dat, hardware pouˇz´ı-
25
Mobiln´ı zaˇr´ızen´ı
Mobiln´ı aplikaˇcn´ı platformy
van´eho zaˇr´ızen´ı, s´ıt’ov´e sluˇzby atp.
Android Software Development Kit Pro v´ yvoj´ aˇre aplikac´ı urˇcen´ ych pro platformu Android je vytvoˇren bal´ık r˚ uzn´ ych n´astroj˚ u souhrnnˇe naz´ yvan´ y jako Android SDK. Je dostupn´ y pro vˇsechny hlavn´ı platformy operaˇcn´ıch syst´em˚ u GNU/Linux, Windows i Mac OS a lze jej integrovat do cel´e ˇsk´ aly programovac´ıch prostˇred´ı. Souˇc´ast´ı SDK je i emul´ator, kter´ y umoˇzn´ı testovat aplikace bez pˇr´ıtomnosti fyzick´eho zaˇr´ızen´ı.
Kompatibilita Velkou nev´ yhodou Androidu je jeho roztˇr´ıˇstˇenost“. Narozd´ıl od ostatn´ıch platfo” rem nevynucuje po v´ yrobc´ıch zaˇr´ızen´ı a v´ yvoj´aˇr´ıch dodrˇzov´an´ı z´akladn´ı myˇslenkov´e linie syst´emu – existuje pouze obecn´a sada doporuˇcen´ı na hardware a grafick´e rozhran´ı. D´ıky variabilitˇe koncov´ ych zaˇr´ızen´ı co do v´ ykonu, rozmˇer˚ u obrazovky a integrovan´eho vybaven´ı je pro v´ yvoj´aˇre velmi tˇeˇzk´e vyv´ıjet aplikace schopn´e bˇehu na vˇsech zaˇr´ızen´ıch. Nav´ıc se programov´e rozhran´ı u Androidu s kaˇzdou jeho verz´ı velmi rychle mˇen´ı. Zejm´ena s n´astupem tablet˚ u (na kter´e se d´ıky velk´ ym displej˚ um mus´ı uˇzivatelsk´e rozhran´ı koncipovat odliˇsnˇe neˇz na chytr´e telefony) doˇslo k velk´ ym implementaˇcn´ım zmˇen´am uvnitˇr syst´emu, kter´e se velmi citelnˇe dotkly i aplikaˇcn´ıho frameworku. Naˇstˇest´ı existuje cel´ a ˇrada postup˚ u, jak se probl´em˚ um s kompatibilitou alespoˇ n ˇc´asteˇcnˇe vyhnout. Zejm´ena je moˇzn´e v manifestu mobiln´ı aplikace specifikovat minim´aln´ı verzi platformy, na jakou je moˇzn´e aplikaci spustit. D´ale je moˇzn´e specifikovat napˇr´ıklad podporovan´ a rozliˇsen´ı atp. Majitel˚ um zaˇr´ızen´ı, kter´a nesplˇ nuj´ı nastaven´e podm´ınky, se aplikaci v˚ ubec nepodaˇr´ı nainstalovat, pˇr´ıpadnˇe se jim v˚ ubec nezobraz´ı v distribuˇcn´ım kan´alu. Rozhran´ı aplikaˇcn´ıho frameworku je zpˇetnˇe udrˇzov´ ano, takˇze aplikace pro niˇzˇs´ı verzi platformy lze bez probl´em˚ u spustit na nov´ ych zaˇr´ızen´ıch. Je tak´e moˇzn´e vytv´ aˇret rozvrˇzen´ı obrazovek aplikace pˇr´ımo pro nˇekolik moˇzn´ ych rozliˇsen´ı. Pokud m´ a aplikace zobrazovat bitmapy, jsou tyto konvertov´any do ˇctyˇr r˚ uzn´ ych verz´ı podle u ´rovnˇe jemnosti a rozliˇsen´ı displeje tak, aby se syst´em s´am rozhodl, jakou verzi m´ a zobrazit. Pokud program´ ator potˇrebuje pouˇz´ıvat funkcionalitu vyˇsˇs´ı verze a pˇresto mus´ı b´ yt podporov´ ana i starˇs´ı verze platformy, je to moˇzn´e s pouˇzit´ım tzv. Support Package Library. Tato knihovna zpˇetnˇe portuje funkcionalitu nov´ ych verz´ı Andoidu.
26
Mobiln´ı zaˇr´ızen´ı
V´yvoj mobiln´ıch aplikac´ı
V neposledn´ı ˇradˇe je moˇzn´e vyuˇz´ıt bohat´ ych moˇznost´ı emul´atoru. Tomu lze nastavit ˇsirokou ˇsk´ alu moˇzn´ ych rozliˇsen´ı a je moˇzn´e emulovat nˇekter´e hardwarov´e funkce re´ aln´eho zaˇr´ızen´ı. Na emul´atoru jsou lehce spustiteln´e vˇsechny existuj´ıc´ı verze platformy. D´ıky tomu je vˇzdy moˇzn´e dostateˇcnˇe otestovat aplikaci a ujistit se, ˇze se chov´ a a vypad´ a stejnˇe na ˇsirok´e ˇsk´ale zaˇr´ızen´ı, aniˇz by je v´ yvoj´aˇr fyzicky vlastnil.
3.4
V´ yvoj mobiln´ıch aplikac´ı
Jak vypl´ yv´ a z pˇredch´ azej´ıc´ıho pˇrehledu, s kaˇzdou platformou se poj´ı zcela jin´a sada technologi´ı a vyuˇziteln´ ych programovac´ıch jazyk˚ u. Nav´ıc i r˚ uzn´e verze t´e sam´e platformy mohou b´ yt mezi sebou navz´ajem nekompatibiln´ı. Moˇznosti v´ yvoje aplikac´ı pro mobiln´ı platformy jsou nav´ıc limitov´any dalˇs´ımi restrikcemi ze strany vydavatele platformy (napˇr. v´ yvoj´aˇrsk´e n´astroje nebo distribuˇcn´ı kan´aly aplikace).
3.4.1
Pˇ renositelnost aplikac´ı
Nab´ız´ı se ot´ azka, zda by nebylo moˇzn´e implementovat aplikaci tak, aby byla pˇrenositeln´ a napˇr´ıˇc v´ yˇse zm´ınˇen´ ymi platformami. To by umoˇznilo sn´ıˇzit u ´roveˇ n duplicity k´odu a t´ım omezit ˇcasov´e a finanˇcn´ı n´aklady na v´ yvoj. Nav´ıc by nebylo nutn´e udrˇzovat k´ od hned v nˇekolika jazyc´ıch.
HTML5 (HyperText Markup Language) ˇ asteˇcn´ C´ a odpovˇed’ na tuto ot´ azku spoˇc´ıv´a v novˇe vznikaj´ıc´ı specifikaci jazyka HTML. Tzv. HTML5 je standard, kter´ y (kromˇe jin´eho) bude umoˇzn ˇovat pˇrehr´av´an´ı multim´edi´ı pˇr´ımo ve webov´em prohl´ıˇzeˇci a v kombinaci s dalˇs´ımi technologiemi jako je CSS a JavaScript vytv´ aˇret aplikace, kter´e funguj´ı i bez pˇripojen´ı k Internetu nebo k intern´ı s´ıti organizace [16]. Vˇetˇsina souˇcasn´ ych prohl´ıˇzeˇc˚ u (vˇcetnˇe tˇech pro dˇr´ıve zm´ınˇen´e mobiln´ı platformy) jiˇz HTML5 na alespoˇ n element´arn´ı u ´rovni podporuj´ı. Pokud by se podaˇrilo vyvinout aplikaci s vyuˇzit´ım na jiˇz ust´alen´ ych a implementovan´ ych ˇc´ asti HTML5 standardu, mˇela by tato aplikace b´ yt spustiteln´a na vˇsech mobiln´ıch platform´ ach, kde je dostupn´ y dostateˇcnˇe sofistikovan´ y webov´ y prohl´ıˇzeˇc. Tento pˇr´ıstup se vˇsak pot´ yk´ a s celou ˇradou probl´em˚ u. Takto vytvoˇren´a aplikace vyˇzaduje pro sv˚ uj bˇeh dalˇs´ı aplikaˇcn´ı vrstvu v podobˇe prohl´ıˇzeˇce – interpretera jazyka HTML5. To s sebou nese zv´ yˇsen´e n´aroky na syst´emov´e prostˇredky zaˇr´ızen´ı
27
Mobiln´ı zaˇr´ızen´ı
V´yvoj mobiln´ıch aplikac´ı
a s t´ım souvisej´ıc´ı sniˇzov´ an´ı v´ ydrˇze baterie. Specifikace HTML5 st´ale nen´ı koneˇcn´a a jeho podpora mezi prohl´ıˇzeˇci je velice variabiln´ı. Nejvˇetˇs´ı nev´ yhodou je vˇsak to, ˇze aplikace nem´ a pˇr´ım´ y pˇr´ıstup k aplikaˇcn´ımu frameworku mobiln´ı platformy, coˇz prakticky znemoˇzn ˇuje vyuˇz´ıt technick´e prostˇredky zaˇr´ızen´ı, jejichˇz rozhran´ı jde nad r´ amec definovan´eho HTML5 standardu. Pokud je vˇsak aplikace dostateˇcnˇe jednoduch´ a, je jistˇe moˇzn´e sluˇzeb technologie HTML5 vyuˇz´ıt.
Xamarin toolkit Efektivnˇejˇs´ım ˇreˇsen´ım probl´emu by bylo pouˇzit´ı toolkitu spoleˇcnosti Xamarin. Ta se rozhodla pˇrevz´ıt projekt Mono, kter´ y byl p˚ uvodnˇe veden´ y spoleˇcnost´ı Novell. Mono je open-source projekt, jehoˇz c´ılem je vytvoˇrit multiplatformn´ı implementaci .NET frameworku. Mono je podporov´ano na operaˇcn´ıch syst´emech Microsoft Windows, Linux, Unix, OS X, Solaris, BSD, Android, iOS a tak´e na nˇekter´ ych hern´ıch konzol´ıch. Souˇc´ ast´ı projektu jsou tak´e n´astroje pro podporu v´ yvoje, multiplatformn´ı C# kompil´ ator a implementace r˚ uzn´ ych dalˇs´ıch knihoven [17]. Jazykem multiplatformn´ı aplikace by se tedy stal C#. Knihovny toolkitu podporuj´ı integraci do platforem iOS a Android, do kaˇzd´e trochu jin´ ym zp˚ usobem. Ve druh´em pˇr´ıpadˇe lze zjednoduˇsenˇe ˇr´ıci, ˇze kaˇzd´a takto vytvoˇren´a aplikace pro Android je puˇstˇena ve dvou bˇehov´ ych prostˇred´ıch – NET Mono runtime a DVM, pˇriˇcemˇz je vyuˇzito JNI (Java Native Interface) rozhran´ı pro vz´ajemnou komunikaci obou prostˇred´ı. Protoˇze je Mono runtime implementov´an v jazyce C, m˚ uˇze velmi jednoduˇse volat syst´emov´e sluˇzby Linuxov´eho j´adra Androidu nebo vyuˇz´ıvat pˇridruˇzen´ ych knihoven (napˇr. pro OpenGL grafiku). Technologie m´ a samozˇrejmˇe sv´e limity (nelze pouˇz´ıt ˇz´adn´e Java knihovny, pouze ˇc´ asteˇcn´ a podpora Java generick´ ych tˇr´ıd, nˇekter´a standardn´ı rozhran´ı nelze implementovat) a nezaruˇcuje stoprocentn´ı pˇrepouˇzitelnost k´odu, nicm´enˇe pˇredstavuje zaj´ımavou moˇznost jak vyrobit skuteˇcnˇe multiplatformn´ı mobiln´ı aplikaci. Toolkit je bezplatnˇe uvolnˇen pouze k omezen´emu vyuˇzit´ı, dalˇs´ı funkcionalitu je tˇreba dokoupit.
28
Mobiln´ı zaˇr´ızen´ı
3.4.2
V´yvoj mobiln´ıch aplikac´ı
V´ yvojov´ e prostˇ red´ı
V´ yvoj aplikac´ı pro mobiln´ı zaˇr´ızen´ı se ve sv´e element´arn´ı formˇe nijak z´asadnˇe neliˇs´ı od klasick´eho programov´ an´ı plnohodnotn´ ych“ desktopov´ ych aplikac´ı. Vydavatel ” platformy poskytuje sadu standardn´ıch v´ yvoj´aˇrsk´ ych n´astroj˚ u, integrovan´e v´ yvojov´e prostˇred´ı a emul´ ator, na kter´em je moˇzn´e aplikace spouˇstˇet a debuggovat. Na Obr´azku 3.1 je sn´ımek obrazovky bˇeˇz´ıc´ıho emul´atoru mobiln´ı platformy Android.
Obr´azek 3.1: Bˇeˇz´ıc´ı emul´ator platformy Android. Spouˇstˇet aplikace je samozˇrejmˇe moˇzn´e i s fyzick´ ym zaˇr´ızen´ım (zejm´ena proto, ˇze emul´ator z principu nem˚ uˇze emulovat vˇsechny funkce zaˇr´ızen´ı jako je gyroskop, telefonn´ı hovory atp.). Nˇekteˇr´ı vydavatel´e ovˇsem omezuj´ı vyuˇzit´ı fyzick´ ych zaˇr´ızen´ı (napˇr. Microsoft zavedl maxim´ aln´ı poˇcet takto nainstalovan´ ych aplikac´ı a podmin ˇuje pouˇzit´ı re´ aln´eho zaˇr´ızen´ı jeho online registrac´ı). Nˇekdy je tak´e moˇzn´e vyuˇz´ıt v´ yvoj´aˇrsk´e prostˇred´ı tˇret´ıch stran, coˇz se ˇr´ıd´ı licenˇcn´ımi podm´ınkami vydavatel˚ u platformy. Kupˇr´ıkladu u Androidu je moˇzn´e vyuˇz´ıt hned nˇekolika moˇzn´ ych prostˇred´ı nebo si i vytvoˇrit prostˇred´ı vlastn´ı. Nejobvyklejˇs´ı volbou je zpravidla instalace z´asuvn´eho modulu do ˇsiroce pouˇz´ıvan´eho v´ yvojov´eho prostˇred´ı Eclipse. Modul umoˇzn ˇuje nejen spr´avu fyzick´ ych zaˇr´ızen´ı a emul´ator˚ u, ale i pˇr´ımou instalaci a debuggov´an´ı aplikace a integruje tak Android SDK toolkit a samotn´e v´ yvojov´e prostˇred´ı.
29
Mobiln´ı zaˇr´ızen´ı
3.4.3
V´yvoj mobiln´ıch aplikac´ı
Distribuce aplikac´ı
Je obvykl´e, ˇze vydavatel platformy povoluje distribuci aplikac´ı pouze pˇres sv˚ uj ofici´aln´ı centr´ aln´ı distribuˇcn´ı kan´ al – napˇr. na Obr´azku 3.2 je uk´azka aplikace urˇcen´e pro distribuci a spr´ avu uˇzivatelsk´ ych aplikac´ı pro mobiln´ı platformu Android.
Obr´azek 3.2: Uk´azka distribuce aplikac´ı pro platformu Android. V´ yvoj´ aˇr mobiln´ı aplikace mus´ı zpravidla m´ıt vytvoˇren´ y v´ yvoj´aˇrsk´ yu ´ˇcet u vydavatele platformy a svou aplikaci neposkytuje pˇr´ımo c´ılov´ ym uˇzivatel˚ um, ale nahr´av´a ji vˇzdy pˇres tento u ´ˇcet do distribuˇcn´ıho kan´alu. Nˇekteˇr´ı vydavatel´e neposkytuj´ı tyto u ´ˇcty zdarma nebo participuj´ı na zisc´ıch z prodeje aplikace.
30
Mobiln´ı zaˇr´ızen´ı
Shrnut´ı
Tento model m´ a nˇekolik v´ yhod – uˇzivatel´e vid´ı vˇsechny aplikace pro sv´e zaˇr´ızen´ı na jednom m´ıstˇe. Pokud je aplikace placen´a, je finanˇcn´ı transakce uskuteˇcnˇena vˇzdy jen mezi z´ akazn´ıkem a vydavatelem platformy – ten se pot´e postar´a o rozdˇelen´ı t´eto ˇc´astky. Je obvykl´e ˇze tyto kan´ aly se staraj´ı i o aktualizace aplikac´ı. V neposledn´ı ˇradˇe distribuˇcn´ı kan´ aly ˇc´ asteˇcnˇe ˇreˇs´ı i ot´azku bezpeˇcnosti a jist´e kvality aplikac´ı – vydavatel platformy m´ a kontrolu nad obsahem distribuˇcn´ıho kan´alu. Na druhou stranu m˚ uˇze b´ yt tento model aˇz zbyteˇcnˇe omezuj´ıc´ı. To, jestli bude moˇzn´e instalovat aplikace i z jin´ ych zdroj˚ u, z´aleˇz´ı ˇcistˇe na vydavateli platformy.
3.5
Shrnut´ı
Sezn´amili jsme se s ˇsirok´ ymi moˇznostmi mobiln´ıch zaˇr´ızen´ı, at’ jiˇz po str´ance vyuˇzitelnosti v r´ amci informaˇcn´ıch syst´em˚ u, tak po str´ance technologick´e. Byly pˇredstaveny tˇri nejrozˇs´ıˇrenˇejˇs´ı mobiln´ı platformy s d˚ urazem na moˇznosti v´ yvoje aplikac´ı pro tyto platformy a jejich n´ aslednou distribuci.
31
4 Poˇzadavky na syst´em spr´avy rezervac´ı Tato kapitola m´ a na z´ akladˇe pˇr´ıpadov´e studie na Katedˇre informatiky a v´ ypoˇcetn´ı techniky pˇri Z´ apadoˇcesk´e Univerzitˇe v Plzni a pˇredch´azej´ıc´ıho zobecnˇen´ı probl´emu v´ yp˚ ujˇcek a rezervac´ı objekt˚ u za c´ıl navrhnout kompletn´ı specifikaci poˇzadavk˚ u na nov´ y syst´em v´ yp˚ ujˇcek a rezervac´ı. Nejprve dojde k rozboru vyuˇzitelnosti mobiln´ıch technologi´ı pro tento syst´em. N´ aslednˇe bude definov´ana pˇresn´a sada funkc´ı, kter´e mus´ı nov´ y syst´em implementovat.
4.1
Vyuˇ zitelnost mobiln´ıch zaˇ r´ızen´ı
V Kap. 2.4 jsme definovali v´ yˇcet z´akladn´ıch poˇzadavk˚ u na nov´ y syst´em, aniˇz bychom definovali jejich technologick´ y podklad. Nyn´ı se pokus´ıme spojit tyto poˇzadavky s technologiemi mobiln´ıch zaˇr´ızen´ı tak, abychom maxim´alnˇe vyuˇzili v´ yhody, kter´e n´ am tyto technologie nab´ızej´ı.
4.1.1
Moˇ znosti pˇ r´ıstupu a autorizace
Je moˇzn´e si pˇredstavit nˇekolik zp˚ usob˚ u technick´eho ˇreˇsen´ı pˇr´ıstupu do syst´emu za pomoci mobiln´ıch zaˇr´ızen´ı a s t´ım souvisej´ıc´ı autorizace uˇzivatel˚ u.
Jeden termin´ al pro v´ıce uˇ zivatel˚ u V organizaci jsou na pˇredem dan´ ych m´ıstech rozm´ıstˇeny tablety, umoˇzn ˇuj´ıc´ı autorizaci uˇzivatele a n´ aslednou rezervaci objektu. Tyto termin´aly jsou vybaveny technologi´ı NFC. Uˇzivatel, kter´ y chce prov´est rezervaci, pˇristoup´ı k tabletu, pˇriloˇz´ı sv˚ uj telefon vybaven´ y NFC technologi´ı a d´ıky unik´atn´ımu kl´ıˇci se pˇrihl´as´ı do syst´emu. V´ yhody jsou zˇrejm´e – d´ıky NFC ˇsifrov´an´ı je identifik´ator nezjistiteln´ y tˇret´ı stranou. V organizaci jiˇz m˚ uˇze existovat princip ovˇeˇrov´an´ı uˇzivatel˚ u na principu pˇr´ıstupov´ ych karet a v tom pˇr´ıpadˇe lze za pˇredpokladu, ˇze je NFC technologie se standardem karet navz´ ajem kompatibiln´ı, autentizaci sjednotit se st´avaj´ıc´ı infrastrukturou (pˇr´ıstupov´e karty by hr´aly roli NFC tagu s u ´daji o uˇzivateli). Uˇzivatel´e si tak´e nemus´ı pamatovat dalˇs´ı heslo.
32
Poˇzadavky na syst´em spr´avy rezervac´ı
Vyuˇzitelnost mobiln´ıch zaˇr´ızen´ı
Autorizace pˇres NFC m´ a vˇsak tak´e sv´e nev´ yhody – pouˇzit´ı kompatibiln´ıch pˇr´ıstupov´ ych karet nelze pauˇsalizovat, coˇz se nesluˇcuje se z´akladn´ım poˇzadavkem poskytnout co nejuniverz´ alnˇejˇs´ı ˇreˇsen´ı syst´emu. Mobiln´ıch zaˇr´ızen´ı vybaven´ ych NFC technologi´ı je st´ ale pˇr´ıliˇs m´ alo na to, aby bylo moˇzn´e omezit autorizaci jen na nˇe. Pro ovˇeˇrov´ an´ı by se daly teoreticky pouˇz´ıt i ˇc´arov´e nebo QR k´ody. Kaˇzd´ y uˇzivatel by u sebe nosil visaˇcku s vytiˇstˇen´ ym k´odem a pouze by ji pˇriloˇzil k integrovan´emu fotoapar´ atu tabletu. Toto levn´e a jednoduch´e ˇreˇsen´ı (kaˇzd´ y by si sv˚ uj unik´atn´ı k´ od mohl sv´epomoc´ı opakovanˇe vytisknout) ovˇsem nar´aˇz´ı na nepˇrekonatelnou bari´eru – tyto k´ ody nelze nijak ˇsifrovat. Pro jednoduchou autorizaci by jistˇe postaˇcily, ale jejich snadn´ a reprodukovatelnost, ˇcitelnost a nulov´a moˇznost zabezpeˇcen´ı toto ˇreˇsen´ı pˇredem zavrhuje. Nev´ yhodou cel´eho modelu je tak´e jeho statiˇcnost. Nen´ı ˇz´adouc´ı nutit uˇzivatele, aby kv˚ uli rezervov´ an´ı m´ıstnosti leˇz´ıc´ı v pˇr´ızem´ı chodili do p´at´eho patra budovy, protoˇze je tam je um´ıstˇen´ y tablet s aplikac´ı umoˇzn ˇuj´ıc´ı vytvoˇren´ı rezervace. Pokus´ıme se tedy spojit mobiln´ı zaˇr´ızen´ı se syst´emem jeˇstˇe u ´ˇzeji.
Jeden termin´ al pro jednoho uˇ zivatele V tomto modelu prov´ ad´ı uˇzivatel´e rezervace na zaˇr´ızen´ıch, kter´a maj´ı fyzicky u sebe – tedy na sv´ ych osobn´ıch telefonech a tabletech. Zde se jiˇz jev´ı autorizace pomoc´ı NFC nebo optick´ ych k´ od˚ u jako zcela zbyteˇcn´a. Nen´ı ˇz´adn´eho d˚ uvodu proˇc nevyuˇz´ıt intern´ı u ´loˇziˇstˇe zaˇr´ızen´ı a neautorizovat se pomoc´ı jm´ena a hesla, pˇriˇcemˇz tyto u ´daje by byly pauˇs´ alnˇe vyˇzadov´any pouze pˇri prvn´ım startu aplikace nebo pˇri ne´ uspˇeˇsn´em pˇripojen´ı do syst´emu. Tyto u ´daje by mˇelo b´ yt moˇzn´e kdykoliv zmˇenit. Pˇredch´ azej´ıc´ı model se s t´ımto pˇr´ıstupem pˇritom nijak nevyluˇcuje – je moˇzn´e poskytnout dalˇs´ı, webov´e rozhran´ı pro ty uˇzivatele, kteˇr´ı patˇriˇcn´e zaˇr´ızen´ı nevlastn´ı, nebo je z nˇejak´eho d˚ uvodu odm´ıtaj´ı pouˇz´ıvat. V tomto webov´em rozhran´ı by se uˇzivatel´e autorizovali stejn´ ym jm´enem a heslem jako na mobiln´ıch zaˇr´ızen´ıch s t´ım rozd´ılem, ˇze by mˇelo b´ yt umoˇznˇeno se ze syst´emu kdykoliv odhl´asit. Toto webov´e rozhran´ı je pot´e moˇzno provozovat kdekoliv jako statick´ y termin´al a uˇzivatel´e se k nˇemu budou moci pˇripojovat ze sv´ ych poˇc´ıtaˇc˚ u pˇres webov´ y prohl´ıˇzeˇc. Port´ al bude tak´e moˇzn´e vyuˇz´ıt pro administr´atory syst´emu ke spr´avˇe objekt˚ u, uˇzivatel˚ u a rezervac´ı. V r´ amci co nejvˇetˇs´ıho uˇzivatelsk´eho komfortu by tak´e mˇelo b´ yt moˇzn´e vyuˇz´ıt jiˇz pravdˇepodobnˇe existuj´ıc´ı datab´azi uˇzivatel˚ u a ovˇeˇrovat zadan´a jm´ena a hesla proti t´eto datab´ azi. Uˇzivatel´e by pot´e nemuseli spravovat duplicitn´ı pˇrihlaˇsovac´ı u ´daje.
33
Poˇzadavky na syst´em spr´avy rezervac´ı
4.1.2
Vyuˇzitelnost mobiln´ıch zaˇr´ızen´ı
Identifikace objekt˚ u
Pro vytvoˇren´ı rezervace je nejprve tˇreba pˇresnˇe urˇcit, k jak´emu objektu rezervaci vytv´aˇr´ıme. D´ıky mobiln´ım zaˇr´ızen´ım m´ame k dispozici v´ıc neˇz jen obvyklou sadu moˇznost´ı (napˇr. fulltextov´e vyhled´av´an´ı, datab´azov´e dotazy apod.) – m˚ uˇzeme vyuˇz´ıt NFC technologii nebo optick´e k´ody. Obˇe technologie dovol´ı identifikaci ˇr´adovˇe urychlit. V prvn´ım pˇr´ıpadˇe jsou objekty fyzicky sp´arov´any s NFC nebo RFID pasivn´ımi tagy. Uˇzivatel vytv´ aˇrej´ıc´ı rezervaci pouze pˇriloˇz´ı zaˇr´ızen´ı vybaven´e NFC k tagu a prakticky okamˇzitˇe z´ısk´ a identifik´ator objektu, se kter´ ym lze pot´e d´ale pracovat. V´ yhodou je zejm´ena objem dat, kter´ y se do tagu vejde – je moˇzn´e do tag˚ u uloˇzit i dalˇs´ı informace o objektu (polohu, invent´arn´ı ˇc´ıslo apod.) a ty prohl´ıˇzet libovolnou NFC ˇcteˇckou. Nezanedbateln´a je tak´e trvanlivost a odolnost pasivn´ıch tag˚ ua moˇznost jejich snadn´eho um´ıstˇen´ı. Bohuˇzel, ke vˇsem nev´ yhod´ am NFC, kter´e jiˇz byly zm´ınˇeny, se pˇrid´avaj´ı i pomˇernˇe vysok´e n´ aklady za poˇr´ızen´ı tag˚ u a jejich nesnadn´a replikovatelnost. Protoˇze tagy mus´ı b´ yt kv˚ uli snadn´e orientaci um´ıstˇeny na dobˇre viditeln´em m´ıstˇe, jistˇe by se po ˇcase staly c´ılem nenechavc˚ u. ˇ sen´ım je vyuˇzit´ı optick´ Reˇ ych QR k´od˚ u. Do tˇechto k´od˚ u je moˇzn´e (narozd´ıl od k´od˚ u ˇc´ arov´ ych) uloˇzit obdobn´ y objem dat jako do NFC tag˚ u, ovˇsem nepoj´ı se s nimi ˇz´ adn´e fyzick´e zaˇr´ızen´ı. D´ıky tomu je moˇzn´e QR k´ody libovolnˇe replikovat a mˇenit jejich velikost, lepit je po zdech, vkl´adat je do hlaviˇcek dokument˚ u, n´astˇenek, popisk˚ u dveˇr´ı, ˇst´ıtk˚ u notebook˚ u atp. Pokud je ˇst´ıtek poˇskozen, je moˇzn´e pˇri ˇcten´ı vyuˇz´ıt autoopravn´ ych algoritm˚ u, kter´e umoˇzn ˇuj´ı i z velmi poˇskozen´eho obrazu z´ıskat p˚ uvodn´ı data. Pˇri nen´avratn´em zniˇcen´ı ˇst´ıtku staˇc´ı pouze vytisknout na obyˇcejn´e tisk´ arnˇe ˇst´ıtek jin´ y. Uˇzivatel m´ısto NFC ˇcipu vyuˇzije prost´eho fotoapar´ atu, a t´ım se pouˇzitelnost mobiln´ıch zaˇr´ızen´ı pˇri vytv´aˇren´ı rezervace ˇr´adovˇe rozˇs´ıˇr´ı. Nev´ yhodou oproti NFC je pak niˇzˇs´ı odolnost nosn´eho materi´alu a pomalejˇs´ı doba ˇcten´ı – d´ıky obvykle n´ızk´e kvalitˇe integrovan´ ych fotoapar´at˚ u a potˇreby analyzovat jejich obraz dalˇs´ımi algoritmy je ˇcten´ı QR k´od˚ u obvykle o nˇeco pomalejˇs´ı. M˚ uˇze doj´ıt k tak velk´emu fyzick´emu poˇskozen´ı ˇst´ıtku, ˇze jiˇz nebude ˇciteln´ ya nov´ y nebude moment´ alnˇe k dispozici. Pro tyto pˇr´ıpady by mˇela mobiln´ı aplikace umoˇznit i klasick´e vyhled´ an´ı objektu podle textov´eho ˇretˇezce, pˇr´ıpadnˇe nab´ıdnout moˇznost vytvoˇrit si seznam ˇcasto pouˇz´ıvan´ ych objekt˚ u. Tato funkcionalita uˇzivatel˚ um mimo jin´e umoˇzn´ı rezervovat si libovoln´ y objekt, aniˇz by byli nuceni skenovat QR k´ od.
34
Poˇzadavky na syst´em spr´avy rezervac´ı
4.1.3
Vyuˇzitelnost mobiln´ıch zaˇr´ızen´ı
Vyzvednut´ı a vr´ acen´ı objektu
Pro vyzved´ av´ an´ı a vracen´ı objekt˚ u m˚ uˇzeme pouˇz´ıt jiˇz definovan´e postupy pro identifikaci objekt˚ u. Uˇzivatel m˚ uˇze na sv´em osobn´ım zaˇr´ızen´ı objekt bud’ skenovat, nebo vyuˇzije jinou metodu pro identifikaci. Pot´e dojde k samotn´e akci vyzvednut´ı nebo vr´ acen´ı.
4.1.4
Lokalizace objekt˚ u
Lokalizace objekt˚ u v re´ aln´em ˇcase nen´ı snadn´a. U nepohybliv´ ych objekt˚ u mimo budovu je moˇzn´e urˇcit jejich zemˇepisnou polohu na z´akladˇe GPS pˇrij´ımaˇce a tu pot´e distribuovat spolu s popisem objektu, zak´odovat ji do QR popisu atp. Uˇzivatel´e si pot´e mohou snadno zobrazit polohu objektu na sv´em mobiln´ım zaˇr´ızen´ı v integrovan´ ych mapov´ ych podkladech. U pohybliv´ ych objekt˚ u jistˇe m˚ uˇzeme obdobnˇe definovat jejich obvyklou polohu v dobˇe, kdy nejsou nikomu vyp˚ ujˇceny. Jak ovˇsem zaˇr´ıdit sledov´an´ı objekt˚ u v re´aln´em ˇcase, tedy i v ˇcase vyp˚ ujˇcen´ı uˇzivatel˚ um? Osazen´ı vˇsech objekt˚ u GPS lok´atory je finanˇcnˇe ne´ unosn´e. Bylo by moˇzn´e sledovat objekty na z´akladˇe polohy zaˇr´ızen´ı, ze kter´ ych byly tyto objekty vyzvednuty. To se vˇsak rovn´a sledov´an´ı polohy majitele zaˇr´ızen´ı a t´ım p´ adem se tento pˇr´ıstup pot´ yk´a s celou ˇradou probl´em˚ u: - uˇzivatel´e mus´ı d´ at provozovateli syst´emu souhlas se sledov´an´ım. - mobiln´ı zaˇr´ızen´ı se nesm´ı vzd´alit od sledovan´eho objektu. - uˇzivateli staˇc´ı vypnout GPS navigaci nebo pˇripojen´ı na Internet a sledov´an´ı je ztraceno. - sledov´ an´ı nebude fungovat uvnitˇr budov. Tyto probl´emy ˇcin´ı efektivn´ı sledov´an´ı objekt˚ u velice obt´ıˇzn´ ym. ˇ sen´ı uvnitˇr budov by mohlo b´ Reˇ yt vyuˇzit´ı pasivn´ıch RFID far–field tag˚ u, kter´e by byly fyzicky sv´ az´ any s objekty. To by v kombinaci ˇcteˇcek tˇechto tag˚ u um´ıstˇen´ ych na vˇsech r´ amech dveˇr´ı a dalˇs´ıch strategick´ ych m´ıstech umoˇznilo jak´esi sledov´an´ı polohy – ˇcteˇcky by mˇely unik´ atn´ı identifik´ator a byly by propojeny s centr´aln´ım serverem, kter´ y by znal polohu ˇcteˇcek. Pˇri kaˇzd´em pr˚ uchodu tagu kolem ˇcteˇcky by tato odeslala na server sv˚ uj identifik´ator a identifik´ator objektu pˇreˇcten´ y z RFID tagu. T´ım by se dos´ ahlo alespoˇ n pˇribliˇzn´e polohy. Bohuˇzel, nejenˇze by bylo moˇzn´e tento syst´em velmi jednoduˇse obej´ıt, byl by tak´e finanˇcnˇe n´akladn´ y a n´aroˇcn´ y na
35
Poˇzadavky na syst´em spr´avy rezervac´ı
Obecn´y popis syst´emu
infrastrukturu. Dˇr´ıve zm´ınˇen´e moˇznosti IPS navigace se zdaj´ı b´ yt pro u ´ˇcely t´eto pr´ace jen obt´ıˇznˇe vyuˇziteln´e. Zvol´ıme proto jin´ y pˇr´ıstup. Objekty budou slouˇceny do skupin – tˇr´ıd, kter´e je budou nˇejak´ ym zp˚ usobem popisovat a seskupovat. Zp˚ usob slouˇcen´ı objekt˚ u z˚ ustane z´amˇernˇe nedefinov´ an – m˚ uˇze tak b´ yt z d˚ uvodu geografick´eho (vˇsechny objekty v budovˇe A), technick´eho, na z´ akladˇe podobnosti objekt˚ u, na z´akladˇe stejn´eho dodavatele – konkr´etn´ı d˚ uvody pro slouˇcen´ı budou pˇrenech´any na administr´atorech ´ syst´emu. Udaj o lokaci pot´e bude moci moˇzn´e uv´est v popisu objektu, nebo v popisu tˇr´ıdy. Vˇetˇsina mobiln´ıch zaˇr´ızen´ı syntaxi geografick´ yh souˇradnic rozpozn´a a v pˇr´ıpadˇe nutnosti nab´ıdne jejich zobrazen´ı v intern´ıch map´ach.
4.1.5
Shrnut´ı
Z anal´ yzy vyuˇzitelnosti mobiln´ıch zaˇr´ızen´ı pro syst´em spr´avy v´ yp˚ ujˇcek a rezervac´ı vyplynuly pro u ´ˇcely t´eto pr´ ace n´asleduj´ıc´ı obecn´e poˇzadavky na koncov´ y syst´em. Uˇzivatel´e budou moci na sv´em mobiln´ım zaˇr´ızen´ı vyuˇz´ıvat aplikaci pro vytv´aˇren´ı a editaci rezervac´ı objekt˚ u. Z mobiln´ıch technologi´ı bude vyuˇzit fotoapar´at jako ˇcteˇcka QR k´ od˚ u a pˇr´ıstup k Internetu. Kaˇzd´ y objekt bude m´ıt unik´atn´ı QR k´od, jehoˇz naskenov´ an´ım budou moci uˇzivatel´e objekt jednoznaˇcnˇe identifikovat. Syst´em nab´ıdne vyhled´ av´ an´ı objekt˚ u a editovateln´ y seznam obl´ıben´ ych“ objekt˚ u ” pro kaˇzd´eho uˇzivatele. Vedle t´eto aplikace bude spuˇstˇen i webov´ y port´al se stejnou funkcionalitou s v´ yjimkou skenov´ an´ı QR k´ od˚ u. Port´al bude slouˇzit nejen uˇzivatel˚ um pro spr´avu vlastn´ıch rezervac´ı a seznamu obl´ıben´ ych objekt˚ u, ale i administr´ator˚ um pro spr´avu objekt˚ u, uˇzivatel˚ u a jejich rezervac´ı. Objekty budou sluˇcov´ any do tˇr´ıd podle logick´ ych pravidel definovan´ ych administr´atory syst´emu. Jak objekty, tak tˇr´ıdy objekt˚ u poskytnou moˇznost dodateˇcn´eho popisu, ve kter´em mohou b´ yt libovoln´e informace vˇcetnˇe zemˇepisn´ ych souˇradnic.
4.2
Obecn´ y popis syst´ emu
Pˇredmˇetem tohoto popisu a n´ asledn´e specifikace je syst´em pro realizaci rezervac´ı movit´ ych a nemovit´ ych objekt˚ u pomoc´ı centr´aln´ıho serveru s webov´ ym rozhran´ım a mobiln´ıch klient˚ u.
36
Poˇzadavky na syst´em spr´avy rezervac´ı
4.2.1
Obecn´y popis syst´emu
´ cel syst´ Uˇ emu
Syst´em slouˇz´ı k realizaci ˇcasov´e rezervace objekt˚ u. Objekty se rozum´ı jak vˇeci movit´e (jako napˇr´ıklad notebook, projektor atp.), tak i vˇeci nemovit´e. D´ıky tomuto syst´emu bude moˇzn´e na Katedˇre informatiky a v´ ypoˇcetn´ı techniky pˇri Z´apadoˇcesk´e Univerzitˇe v Plzni zefektivnit st´avaj´ıc´ı procesy vyp˚ ujˇcov´an´ı a rezervace tˇechto objekt˚ u, rozˇs´ıˇrit oblast pouˇzit´ı i na dalˇs´ı objekty co do typu a mnoˇzstv´ı a decentralizovat spr´ avu objekt˚ u, v´ yp˚ ujˇcek a rezervac´ı.
4.2.2
Rozsah syst´ emu
Uˇzivatel´e se pˇripojuj´ı k centr´ aln´ımu serveru syst´emu pomoc´ı klientsk´e aplikace nebo prostˇrednictv´ım webov´eho rozhran´ı. Autorizace uˇzivatel˚ u syst´emu prob´ıh´a zad´an´ım kombinace unik´ atn´ıho jm´ena a hesla. Souˇc´ast´ı syst´emu bude datab´aze uˇzivatel˚ u. Syst´em bude implementovat dva zp˚ usoby autorizace - oproti lok´aln´ı datab´ azi syst´emu a pomoc´ı u ´ˇctu syst´emu Orion. Po pˇripojen´ı je moˇzn´e vytv´ aˇret nebo editovat rezervace objekt˚ u a uskuteˇcn ˇovat jejich v´ yp˚ ujˇcky. Rezervace je tvoˇrena identifik´atorem rezervovan´eho objektu a ˇcasov´ ym rozpˇet´ım, po kter´e si uˇzivatel chce objekt rezervovat. Identifik´ator bude realizov´ an jako textov´ y popisek nebo jako QR k´od fyzicky um´ıstˇen´ y na objektu. Objekty budou seskupeny do tˇr´ıd. V´ ysledkem ˇcinnosti syst´emu je kalend´aˇr s rezervacemi, kter´ y bude zobrazen pro kaˇzd´eho uˇzivatele a pro kaˇzd´ y objekt v klientsk´e aplikaci a ve webov´em rozhran´ı.
4.2.3
Omezen´ı n´ avrhu a implementace
Pro spr´ avnou funkci cel´eho syst´emu je nutn´e pˇripojen´ı k internetu. Serverov´a ˇc´ast bude implementov´ ana v programovac´ım jazyce Java. Syst´em bude poskytovat webov´e rozhran´ı. Klientsk´ a mobiln´ı aplikace bude implementov´ana pro platformu Android.
4.2.4
Tˇ r´ıdy uˇ zivatel˚ u
V syst´emu budou definov´ any tˇri tˇr´ıdy uˇzivatel˚ u: - Uˇzivatel – typicky zamˇestnanec katedry nebo jej´ı spolupracovn´ık, kter´ y si
37
Poˇzadavky na syst´em spr´avy rezervac´ı
Funkce webov´eho rozhran´ı
potˇrebuje p˚ ujˇcovat objekty z invent´aˇre katedry nebo prov´adˇet jejich rezervace pro napˇr. v´ yukov´e u ´ˇcely. - Spr´ avce rezervac´ı – zamˇestnanec sekretari´atu katedry nebo jin´a osoba odpovˇedn´ a za udrˇzov´ an´ı poˇr´ adku v rezervac´ıch a v´ yp˚ ujˇck´ach majetku. - Administr´ ator – zamˇestnanec sekretari´atu katedry, spr´avce s´ıtˇe katedry nebo jin´ a osoba odpovˇedn´ a za udrˇzov´an´ı informaˇcn´ıho syst´emu katedry.
4.3
Funkce webov´ eho rozhran´ı
V t´eto tapitole dojde k pˇresn´emu vymezen´ı syst´emu a definici funkc´ı poˇzadovan´ ych od webov´eho rozhran´ı.
4.3.1
Z´ akladn´ı rozvrˇ zen´ı webov´ eho rozhran´ı
Rozvrˇzen´ı webov´eho rozhran´ı se bude skl´adat z hlaviˇcky s n´azvem aplikace a hlavn´ıho menu um´ıstˇen´eho na lev´e stranˇe obrazovky (Obr. 4.1). V menu se bude zobrazovat konstantn´ı seznam hypertextov´ ych odkaz˚ u. Pˇri kliknut´ı na odkaz se poˇzadovan´ a str´ anka zobraz´ı v prav´e ˇc´asti vedle menu. Aplikace pro rezervaci předmět ů
Hlavička stránky Menu Odkaz1 Odkaz2 Odkaz3 Odkaz4 Odkaz5
Obsah
...
Obr´azek 4.1: Z´akladn´ı rozvrˇzen´ı webov´eho rozhran´ı.
38
Poˇzadavky na syst´em spr´avy rezervac´ı
4.3.2
Funkce webov´eho rozhran´ı
Autorizace uˇ zivatel˚ u
Do webov´eho rozhran´ı bude umoˇznˇeno pˇrihl´aˇsen´ı pomoc´ı uˇzivatelsk´eho jm´ena a hesla a n´ asledn´e u ´pln´e odhl´ aˇsen´ı (Diagram 4.1). Bez pˇrihl´aˇsen´ı nebude umoˇznˇena ˇz´adn´a dalˇs´ı interakce se syst´emem a bude zobrazena str´anka s pˇrihlaˇsovac´ım formul´aˇrem. Odkaz pro odhl´ aˇsen´ı bude pˇr´ımou souˇc´ast´ı hlavn´ıho menu aplikace. V pˇr´ıpadˇe neaktivity bude uˇzivatel automaticky odhl´aˇsen.
Diagram uˇzit´ı 4.1: Autorizace uˇzivatel˚ u pˇres webov´e rozhran´ı.
4.3.3
Spr´ ava uˇ zivatel˚ u
Pro vˇsechny role budou viditeln´e profily ostatn´ıch uˇzivatelsk´ ych u ´ˇct˚ u. Administr´ator bude moci vytv´ aˇret, mazat a editovat vˇsechny uˇzivatelsk´e u ´ˇcty v syst´emu (Diagram 4.2). Uˇzivatelsk´ yu ´ˇcet se bude skl´ adat ze jm´ena, pˇr´ıjmen´ı, emailu, definice role v syst´emu, pˇrihlaˇsovac´ıho jm´ena a poskytovatele autorizace u ´ˇctu. Vˇsechny poloˇzky mus´ı b´ yt pˇri vytv´ aˇren´ı nebo editaci profilu vyplnˇeny. Pˇri smaz´an´ı u ´ˇctu uˇzivatele mus´ı b´ yt odstranˇeny i vˇsechny s u ´ˇctem souvisej´ıc´ı rezervace.
Editace profilu a zmˇ ena hesla Pokud je poskytovatel autorizace u ´ˇctu nastaven na intern´ı datab´azi, je pˇri vytv´aˇren´ı u ´ˇctu vyˇzadov´ ano i zad´ an´ı hesla. T´ımto heslem pot´e budou uˇzivatel´e syst´emu autorizov´ ani. Vˇsechny role budou moci mˇenit sv´e vlastn´ı heslo, pouze Administr´ator bude opr´ avnˇen mˇenit hesla i ostatn´ıch u ´ˇct˚ u (Diagram 4.3).
39
Poˇzadavky na syst´em spr´avy rezervac´ı
Funkce webov´eho rozhran´ı
Diagram uˇzit´ı 4.2: Zobrazen´ı a editace uˇzivatelsk´ ych u ´ˇct˚ u. Vˇsechny role tak´e mohou mˇenit poloˇzky sv´eho vlastn´ıho profilu s v´ yjimkou poskytovatele autorizace a definice role. Pˇri editaci profilu mus´ı z˚ ustat unik´atn´ı pˇrihlaˇsovac´ı jm´eno uˇzivatele.
Diagram uˇzit´ı 4.3: Spr´ava uˇzivatel˚ u.
4.3.4
Spr´ ava tˇ r´ıd objekt˚ u
Administr´ ator bude moci pˇrid´ avat, editovat a mazat tˇr´ıdy objekt˚ u (Diagram 4.4). Tˇr´ıda objekt˚ u se skl´ ad´ a z n´ azvu tˇr´ıdy a popisn´e informace. N´azev tˇr´ıdy je povinn´a poloˇzka. Tˇr´ıda bude definovat, zda bude nutn´e potvrzovat vyzvednut´ı nebo vracen´ı
40
Poˇzadavky na syst´em spr´avy rezervac´ı
Funkce webov´eho rozhran´ı
vˇsech objekt˚ u, kter´e budou pˇriˇrazeny do t´eto tˇr´ıdy. Pˇri odstranˇen´ı tˇr´ıdy objekt˚ u mus´ı b´ yt automaticky vymaz´ any i vˇsechny objekty t´eto tˇr´ıdy.
Diagram uˇzit´ı 4.4: Spr´ava tˇr´ıd objekt˚ u.
4.3.5
Spr´ ava objekt˚ u
Administr´ ator bude moci pˇrid´ avat, editovat a mazat objekty (Diagram 4.5). Objekt je definov´ an n´ azvem, popisem a unik´atn´ım textov´ ym identifik´atorem. Identifik´ator nebude moˇzn´e po vloˇzen´ı objektu do syst´emu v r´amci editace mˇenit. Pˇri odstranˇen´ı objektu ze syst´emu mus´ı b´ yt vymaz´any i vˇsechny s objektem souvisej´ıc´ı rezervace.
Diagram uˇzit´ı 4.5: Spr´ava objekt˚ u.
41
Poˇzadavky na syst´em spr´avy rezervac´ı
Funkce webov´eho rozhran´ı
Vˇsechny objekty bude moˇzn´e zobrazit v tabulce a tuto tabulku bude moˇzn´e filtrovat na z´ akladˇe textov´eho vyhled´av´an´ı nebo tˇr´ıd objekt˚ u (Obr´azek 4.2). Obj ekty T ída obj ekt : Notebooky Název:
HP 656*
Název
Popis
Akce
HP 6560b
notebook
Editovat
Smazat ...
...
...
...
...
Obr´azek 4.2: Z´akladn´ı rozvrˇzen´ı spr´avy objekt˚ u.
Export identifik´ atoru do QR k´ odu Administr´ ator˚ um a Spr´ avc˚ um rezervac´ı bude umoˇznˇen export identifik´atoru objektu do podoby QR k´ odu. V´ ystupn´ı form´at bude PDF dokument se tˇremi stejn´ ymi QR k´ ody o r˚ uzn´ ych rozmˇerech, textovou reprezentac´ı identifik´atoru objektu a n´azvem objektu.
4.3.6
Spr´ ava obl´ıben´ ych objekt˚ u
Vˇsem rol´ım bude umoˇznˇeno udrˇzovat si sv˚ uj seznam objekt˚ u, se kter´ ymi ˇcasto manipuluj´ı. Do tohoto seznamu bude moˇzn´e jeho vlastn´ıky libovolnˇe pˇrid´avat objekty, nebo je n´ aslednˇe odeb´ırat (Diagram 4.6). Seznam tˇechto objekt˚ u bude pˇr´ıstupn´ y z hlavn´ıho menu webov´eho rozhran´ı.
4.3.7
Vytv´ aˇ ren´ı rezervac´ı
Vˇsem rol´ım bude umoˇznˇeno vytv´aˇret vlastn´ı rezervace. Spr´avc˚ um rezervac´ı a Administr´ ator˚ um bude nav´ıc umoˇznˇeno vytv´aˇret rezervace za jin´e uˇzivatele (Diagram 4.7). Rezervace je definov´ ana poˇc´ ateˇcn´ım a koncov´ ym term´ınem rezervace a objektem, ke kter´emu se rezervace vztahuje. Poˇc´ateˇcn´ı ani koncov´ y term´ın nesm´ı leˇzet v minulosti (vztaˇzeno k ˇcasu vytvoˇren´ı rezervace). Pokud uˇzivatel zad´a poˇc´ateˇcn´ı term´ın leˇz´ıc´ı v minulosti, syst´em mus´ı pˇri vytv´aˇren´ı rezervace zajistit posunut´ı
42
Poˇzadavky na syst´em spr´avy rezervac´ı
Funkce webov´eho rozhran´ı
Diagram uˇzit´ı 4.6: Spr´ava obl´ıben´ ych objekt˚ u. poˇc´atku rezervace do pˇr´ıtomnosti. Syst´em mus´ı odm´ıtnout vytvoˇren´ı rezervace, kde je koncov´ y term´ın um´ıstˇen v ˇcase pˇred poˇc´ateˇcn´ım term´ınem. Rezervace objektu m˚ uˇze b´ yt vytvoˇrena pouze v pˇr´ıpadˇe, pokud neexistuje jin´a platn´a rezervace na tento objekt ve stejn´em ˇcasov´em r´amci nebo r´amci, kter´ y se s u ´sekem nov´e rezervace ˇc´ asteˇcnˇe pˇrekr´ yv´ a.
Diagram uˇzit´ı 4.7: Vytv´aˇren´ı rezervac´ı. Na centr´ aln´ım serveru bude umoˇznˇena konfigurace minim´aln´ı a maxim´aln´ı pˇr´ıpustn´e d´elky rezervace. Pokud uˇzivatel zad´a pˇri vytv´aˇren´ı rezervace kratˇs´ı ˇcasov´ y
43
Poˇzadavky na syst´em spr´avy rezervac´ı
Funkce webov´eho rozhran´ı
u ´sek neˇz je minim´ aln´ı pˇr´ıpustn´ a d´elka rezervace, syst´em mus´ı rezervaci prodlouˇzit na tuto minim´ aln´ı d´elku. Pokud uˇzivatel zad´a ˇcasov´ yu ´sek delˇs´ı neˇz je maxim´aln´ı d´elka rezerace, syst´em mus´ı vytvoˇren´ı takov´e rezervace odm´ıtnout.
Periodick´ e rezervace Rezervace objekt˚ u bude moˇzn´e po pevnˇe dan´em ˇcasov´em u ´seku opakovat. Tento u ´sek je s ohledem na potˇreby katedry stanoven na jeden t´ yden. Pˇri vytv´aˇren´ı rezervace bude moˇzn´e zadat poˇcet t´ ydn˚ u, po kter´ y bude rezervace opakov´ana (Obr´azek 4.3). Term´ın prvn´ı rezervace je ˇcas poˇc´atku rezervace, kter´ y uˇzivatel zadal do formul´ aˇre pro vytvoˇren´ı rezervace.
Rezervovat Notebook HP 6560b Od
Vysouvací kalendá
12:00
Do
Vysouvací kalendá
13:00
Periodická Po et týdn
5
Rezervovat
Obr´azek 4.3: Rozvrˇzen´ı vytvoˇren´ı periodick´e rezervace. Maxim´ aln´ı poˇcet opakov´ an´ı rezervace bude konfigurovateln´ y na centr´aln´ım serveru a syst´em nesm´ı umoˇznit pˇrekroˇcen´ı tohoto limitu. D´elka ˇcasov´eho u ´seku rezervace nesm´ı pˇrekroˇcit d´elku jednoho t´ ydne.
4.3.8
Spr´ ava rezervac´ı
Vˇsem rol´ım bude umoˇznˇeno editovat a mazat vlastn´ı rezervace. Spr´avc˚ um rezervac´ı a Administr´ ator˚ um bude nav´ıc umoˇznˇeno editovat a mazat rezervace jin´ ych uˇzivatel˚ u, nebo mˇenit uˇzivatele rezervac´ı (Diagram 4.8). Editovat bude moˇzn´e ˇcas vyzvednut´ı a ˇcas vr´acen´ı. Pro editaci tˇechto term´ın˚ u budou platit stejn´ a pravidla jako pro vytv´aˇren´ı nov´e rezervace. Editovat rezervace leˇz´ıc´ı v minulosti (oproti ˇcasu editace) nebude moˇzn´e.
44
Poˇzadavky na syst´em spr´avy rezervac´ı
Funkce webov´eho rozhran´ı
Diagram uˇzit´ı 4.8: Editace rezervac´ı. Platnost rezervac´ı Dalˇs´ı editovatelnou vlastnost´ı rezervac´ı bude tzv. platnost rezervace“. Kaˇzd´a nov´e ” vytvoˇren´ a rezervace bude automaticky vedena jako platn´a. Uˇzivat˚ um bude umoˇznˇeno zneplatnit rezervaci v r´ amci jej´ı editace. Syst´em bude interpretovat neplatn´e rezervace tak, jako by v dan´em ˇcasov´em u ´seku ˇz´adn´a rezervace nevznikla (bude tedy moˇzn´e v tomto u ´seku vytv´ aˇret jin´e rezervace). Neplatn´a rezervace bude vˇsak st´ale pro uˇzivatele viditeln´ a a bude moˇzn´e j´ı opˇet uˇcinit platnou za podm´ınky, ˇze v jejich ˇcasov´em u ´seku v okamˇziku editace neexistuje jin´a platn´a rezervace na stejn´ y objekt.
Editace periodick´ ych rezervac´ı Pˇri editaci periodick´ ych rezervac´ı mus´ı b´ yt zachov´an konstantn´ı pr˚ ubˇeh rezervace. Pokud tedy dojde ke zmˇenˇe term´ınu rezervace, tato zmˇena se mus´ı prom´ıtnout do vˇsech t´ ydenn´ıch u ´sek˚ u rezervace s v´ yjimkou tˇech u ´sek˚ u, kter´e leˇz´ı v minulosti oproti ˇcasu editace. Bude moˇzn´e zneplatˇ novat jednotliv´e u ´seky periodick´e rezervace, aniˇz by ostatn´ı u ´seky byly touto editac´ı jakkoliv zasaˇzeny. Pokud dojde k odstranˇen´ı periodick´e rezervace, budou odstranˇeny i vˇsechny jej´ı ˇcasov´e u ´seky.
45
Poˇzadavky na syst´em spr´avy rezervac´ı
4.3.9
Funkce webov´eho rozhran´ı
Vyzved´ av´ an´ı rezervac´ı
Vˇsem rol´ım bude umoˇznˇeno vyzved´avat vlastn´ı rezervace. Administr´ato˚ um a Spr´avc˚ um rezervac´ı bude umoˇznˇeno vyzved´avat rezervace za jin´e uˇzivatele (Diagram 4.9). Vyzvednut´ı rezervace bude syst´emem povoleno pouze tehdy, pokud objekt sv´azan´ y s rezervac´ı n´ aleˇz´ı tˇr´ıdˇe, kter´ a vynucuje potvrzen´ı vyzvednut´ı sv´ ych objekt˚ u. D´ale mus´ı b´ yt splnˇeny n´ asleduj´ıc´ı podm´ınky: - rezervace mus´ı b´ yt nevyzvednut´a. - rezervace mus´ı b´ yt platn´ a. - pokud ˇcas poˇc´ atku rezervace leˇz´ı v budoucnosti oproti ˇcasu pokusu o vyzvednut´ı rezervace, mus´ı b´ yt jejich rozd´ıl menˇs´ı neˇz minim´aln´ı d´elka rezervace objektu. - pokud ˇcas poˇc´ atku rezervace leˇz´ı v minulosti oproti ˇcasu pokusu o vyzvednut´ı rezervace, nesm´ı ˇcas vr´ acen´ı objektu leˇzet v minulosti (nelze vyzvednout rezervace, jejichˇz ˇcasov´ yu ´sek jiˇz skonˇcil).
Diagram uˇzit´ı 4.9: Vyzved´av´an´ı a vracen´ı rezervac´ı.
4.3.10
Vracen´ı rezervac´ı
Vˇsem rol´ım bude umoˇznˇeno vracet vlastn´ı rezervace. Administr´ator˚ um a Spr´avc˚ um rezervac´ı bude umoˇznˇeno vracet rezervace za jin´e uˇzivatele (Diagram 4.9). Vr´acen´ı rezervace bude syst´emem povoleno pouze tehdy, pokud objekt sv´azan´ y s rezervac´ı n´aleˇz´ı tˇr´ıdˇe, kter´ a vynucuje potvrzen´ı vracen´ı sv´ ych objekt˚ u. D´ale mus´ı b´ yt splnˇeny n´asleduj´ıc´ı podm´ınky:
46
Poˇzadavky na syst´em spr´avy rezervac´ı
Funkce webov´eho rozhran´ı
- pokud rezervovan´ y objekt n´aleˇz´ı tˇr´ıdˇe vynucuj´ıc´ı vyzvednut´ı, rezervace mus´ı b´ yt vyzvednut´ a. - rezervace mus´ı b´ yt platn´ a. Pokud ˇcas konce rezervace leˇz´ı v budoucnosti oproti ˇcasu vr´acen´ı rezervace, mus´ı syst´em zmˇenit ˇcas konce rezervace na tento ˇcas vr´acen´ı.
4.3.11
Expirace rezervace
Pokud rezervace vyˇzaduje potvrzen´ı vyzvednut´ı a majitel rezervace nevyzvedne rezervaci pˇred ˇcasem zaˇc´ atku t´eto rezervace, syst´em umoˇzn´ı vytvoˇren´ı jin´e platn´e rezervace ve stejn´em ˇcasov´em u ´seku nebo zmˇenu ˇcasov´eho r´amce jin´e rezervace do r´amce p˚ uvodn´ı nevyzvednut´e rezervace za pˇredpokladu, ˇze od ˇcasu zaˇc´atku doby rezervace ubˇehla doba expirace rezervace. Doba expirace bude konfigurovateln´a na centr´aln´ım serveru. Pokud dojde k pˇrekroˇcen´ı doby expirace a je vytvoˇrena nebo pˇresunuta jin´a rezervace do stejn´eho ˇcasov´eho r´ amce, mus´ı syst´em zajistit zneplatnˇen´ı p˚ uvodn´ı vyexpirovan´e rezervace.
4.3.12
Kalend´ aˇ r
Rezervace budou organizov´ any do kalend´aˇre rezervac´ı. Kalend´aˇr rezervac´ı bude moˇzn´e zobrazit jak pro objekty tak pro kaˇzd´eho uˇzivatele. Editac´ı kalend´aˇre se rozum´ı jak´ akoliv editace rezervac´ı zobrazen´ ych v kalend´aˇri. Tato editace podl´eh´a dˇr´ıve popsan´ ym pravidl˚ um pro editaci rezervace.
Kalend´ aˇ r uˇ zivatele Vˇsem rol´ım bude umoˇznˇeno zobrazit a editovat sv˚ uj kalend´aˇr a zobrazit kalend´aˇr ostatn´ıch uˇzivatel˚ u. Spr´ avci rezervac´ı a Administr´atoˇri syst´emu budou moci editovat kalend´ aˇre jin´ ych uˇzivatel˚ u (Diagram 4.10). Na kalend´aˇr aktu´alnˇe pˇrihl´aˇsen´eho uˇzivatele bude moˇzn´e se dostat pˇr´ımo z hlavn´ıho menu. Jak je naznaˇceno na Obr. 4.4, jednotliv´e rezervace se budou od sebe barevnˇe odliˇsovat v z´ avislosti na aktu´ aln´ım stavu rezervace. Sch´ema bude n´asleduj´ıc´ı: - ˇ zlutˇ e budou vybarveny vˇsechny validn´ı rezervace, jejichˇz ˇcasov´ y u ´sek leˇz´ı
47
Poˇzadavky na syst´em spr´avy rezervac´ı
Funkce webov´eho rozhran´ı
Diagram uˇzit´ı 4.10: Kalend´aˇr uˇzivatele. v budoucnosti a nevyˇzaduj´ı vyzvednut´ı, nebo prob´ıhaj´ı v aktu´aln´ım ˇcase a nevyˇzaduj´ı vr´ acen´ı (rezervace, kter´e jsou aktivn´ı a nevyˇzaduj´ı ˇz´adnou akci). - modˇ re budou oznaˇceny validn´ı rezervace, jejichˇz ˇcasov´ yu ´sek leˇz´ı v budoucnosti a vyˇzaduj´ı vyzvednut´ı (aktivn´ı rezervace, kter´e vyˇzaduj´ı akci). - jako zelen´ e budou oznaˇceny rezervace, kter´e byly vyzvednuty, vyˇzaduj´ı vr´acen´ı a jejich koncov´ y ˇcas leˇz´ı v budoucnosti (pr´avˇe prob´ıhaj´ıc´ı rezervace, kter´e budou v budoucnu vyˇzadovat akci vr´acen´ı). - ˇ cervenˇ e budou zn´ azornˇeny rezervace, kter´e vyˇzaduj´ı vyzvednut´ı a nebyly uˇzivatelem vˇcas vyzvednuty, nebo vyˇzaduj´ı vr´acen´ı a nebyly uˇzivatelem vˇcas vr´ aceny. - ˇ sed´ e rezervace jsou neplatn´e rezervace, nebo rezervace kter´e byly u ´spˇeˇsnˇe vr´ aceny nebo nevyˇzaduj´ı potvrzen´ı vr´acen´ı a jejich ˇcasov´ yu ´sek leˇz´ı v minulosti (neaktivn´ı rezervace, jiˇz nevyˇzaduj´ı ˇz´adnou dalˇs´ı akci). Kr´atk´e popisky popisuj´ıc´ı aktu´ aln´ı stav rezervace budou zobrazeny i pˇri zobrazen´ı profilu rezervace. Ten by mˇelo b´ yt moˇzn´e zobrazit pˇr´ımo z kalend´aˇre.
48
Poˇzadavky na syst´em spr´avy rezervac´ı
Po
Út
St
Funkce webov´eho rozhran´ı
Čt
Pá
So
Ne
8:00 8:30 9:00
9:00 11:00 Notebook Dell
9:30 10:00
10:0011:00 Notebook HP6560b
10:30 11:00 11:30 12:00 12:30
12:00 14:30 HP6560b
11:30 13:00 Místnost UP130
13:00
Obr´azek 4.4: Rozvrˇzen´ı kalend´aˇre uˇzivatele. Kalend´ aˇ r objektu Kalend´ aˇr objektu bude m´ıt obdobn´e rozvrˇzen´ı jako kalend´aˇr uˇzivatele. Vˇsem rol´ım bude umoˇznˇeno pˇrid´ avat a editovat sv´e rezervace. Spr´avci rezervac´ı a Administr´atoˇri syst´emu budou v kalend´ aˇri moci editovat rezervace vˇsech uˇzivatel˚ u nebo za nˇe jejich rezervace pˇrid´ avat a mazat. Barevn´e rozliˇsen´ı bude jin´e neˇz v pˇr´ıpadˇe kalend´aˇre uˇzivatele. Zelen´ e rezervace budou patˇrit uˇzivateli, kter´ y prohl´ıˇz´ı kalend´aˇr objektu. Vˇsechny ostatn´ı rezervace budou ˇ sed´ e.
Export kalend´ aˇ re Kalend´ aˇr kaˇzd´eho uˇzivatele nebo objektu bude moˇzn´e exportovat do form´atu iCal. To bude moˇzn´e bud’ jednor´ azovˇe exportem do textov´eho souboru, nebo pomoc´ı veˇrejnˇe dostupn´e URL unik´ atn´ı pro kaˇzd´eho uˇzivatele a objekt. Tyto URL budou zobrazeny v profilech uˇzivatel˚ u a objekt˚ u.
49
Poˇzadavky na syst´em spr´avy rezervac´ı
4.4
Funkce klientsk´e aplikace
Funkce klientsk´ e aplikace
Klientsk´ a aplikace narozd´ıl od webov´eho rozhran´ı nenab´ıdne ˇz´adn´e moˇznosti administrace uˇzivatel˚ u, rezervac´ı, objekt˚ u nebo tˇr´ıd objekt˚ u. Vˇsechny pˇr´ıpady uˇzit´ı syst´emu dosud definovan´e pro role Spr´avce rezervac´ı a Administr´ator nebudou v mobiln´ı aplikaci dostupn´e. Tyto dvˇe role se tedy pˇripojuj´ı k syst´emu pˇres mobiln´ı aplikaci v roli Uˇzivatele. Pˇribliˇzn´e rozvrˇzen´ı jednotliv´ ych obrazovek a diagram pr˚ uchodu mobiln´ı aplikac´ı jsou uvedeny v Pˇr´ıloze A.
4.4.1
Hlavn´ı obrazovka
Po startu aplikace a u ´spˇeˇsn´em pˇrihl´aˇsen´ı k serveru bude zobrazena hlavn´ı obrazovka s navigaˇcn´ımi tlaˇc´ıtky na obrazovky (Obr. A.2) obsahuj´ıc´ı z´akladn´ı funkce aplikace: - M˚ uj kalend´ aˇr – zobrazen´ı kalend´aˇre uˇzivatele. - Obl´ıben´e – seznam obl´ıben´ ych objekt˚ u. - Vyzvedni – funkce pro vyzvednut´ı rezervace. - Vrat’ – funkce pro vr´ acen´ı rezervace. - Prohl´ıˇzet – prohl´ıˇzeˇc objekt˚ u. - Nastaven´ı – glob´ aln´ı nastaven´ı pˇripojovac´ıch direktiv. Na rozd´ıl od webov´eho rozhran´ı bude mobiln´ı aplikace koncipov´ana pro pˇrev´aˇzn´e pouˇz´ıv´ an´ı jedn´ım uˇzivatelem. Zad´an´ı jm´ena a hesla pˇri kaˇzd´em startu aplikace nesm´ı b´ yt vyˇzadov´ ano.
4.4.2
Nastaven´ı
Aplikace bude obsahovat obrazovku s glob´aln´ım nastaven´ım pˇripojen´ı k centr´aln´ımu serveru, jehoˇz souˇc´ ast´ı budou i poloˇzky pro jm´eno a heslo uˇzivatele. Aplikace bude rozpozn´ avat zmˇeny nastaven´ı a po jejich uloˇzen´ı se pokus´ı pˇripojit na server. V pˇr´ıpadˇe ne´ uspˇeˇsn´eho pˇripojen´ı o tom mus´ı notifikovat uˇzivatele a souˇcasnˇe zak´ azat navigaci na vˇsechny obrazovky aplikace s v´ yjimkou nastaven´ı pˇripojen´ı.
50
Poˇzadavky na syst´em spr´avy rezervac´ı
4.4.3
Funkce klientsk´e aplikace
Obl´ıben´ e poloˇ zky
Aplikace poskytne obrazovku se zobrazen´ım vˇsech obl´ıben´ ych objekt˚ u uˇzivatele, obdobnˇe jako na webov´em rozhran´ı. Po vybr´an´ı jednoho z objekt˚ u dojde k automatick´emu pˇrepnut´ı na profil objektu.
4.4.4
Profil objektu
Na obrazovce s profilem objektu se budou zobrazovat vˇsechny informace vztaˇzen´e k objektu – jm´eno, identifik´ ator a popis objektu, n´azev tˇr´ıdy objektu a informace, zdali je vyˇzadov´ ano vyzvednut´ı a vracen´ı objektu. D´ale budou dostupn´e n´asleduj´ıc´ı akce: - Pˇridat do obl´ıben´ych – zobrazeno v pˇr´ıpadˇe, pokud objekt nebude v seznamu obl´ıben´ ych objekt˚ u. - Odebrat z obl´ıben´ych – zobrazeno, pokud objekt v tomto seznamu bude pˇr´ıtomen. - Kalend´ aˇr objektu – navigaˇcn´ı tlaˇc´ıtko na kalend´aˇr objektu. - Vyzvedni – funkce pro vyzvednut´ı objektu (viz d´ale).
4.4.5
Prohl´ıˇ zeˇ c objekt˚ u
Aplikace poskytne obrazovku se zobrazen´ım seznamu objekt˚ u. Bude moˇzn´e zobrazit objekty vˇsechny obl´ıben´e poloˇzky pˇrihl´aˇsen´eho uˇzivatele a objekty vyhledan´e podle textov´eho vstupu od uˇzivatele nebo podle vyfotografovan´eho QR k´odu (Obr. A.5). Po vybr´ an´ı jednoho z objekt˚ u ze seznamu bude uˇzivatel automaticky pˇresmˇerov´ an na obrazovku s profilem objektu.
Vyhled´ av´ an´ı objekt˚ u Vyhled´ av´ an´ı objekt˚ u bude moˇzn´e na z´akladˇe jm´ena objektu, popisu objektu, jm´ena tˇr´ıdy nebo vˇsech tˇechto krit´eri´ı najednou. Pokud bude nˇekter´ y objekt vyhovovat v´ıce krit´eri´ım, mus´ı se v seznamu objevit pouze jednou. Pokud uˇzivatel zvol´ı vyhled´ av´an´ı podle QR k´odu, aplikace automaticky aktivuje fotoapar´ at zaˇr´ızen´ı a spust´ı detekci QR k´odu. Po u ´spˇeˇsn´em rozpozn´an´ı se zobraz´ı objekt, kter´ y odpov´ıd´ a vyfotografovan´emu identifik´atoru.
51
Poˇzadavky na syst´em spr´avy rezervac´ı
4.4.6
Funkce klientsk´e aplikace
Kalend´ aˇ r
Aplikace bude zobrazovat obdobn´ y form´at kalend´aˇre jako v pˇr´ıpadˇe webov´eho rozhran´ı. Pˇrihl´ aˇsen´emu uˇzivateli bude pˇr´ımo z hlavn´ı obrazovky dostupn´ y jeho osobn´ı kalend´ aˇr rezervac´ı.
Rozvrˇ zen´ı kalend´ aˇ re Rozvrˇzen´ı kalend´ aˇre mus´ı b´ yt optimalizov´ano pro zobrazen´ı na mal´ ych displej´ıch a mus´ı maxim´ alnˇe vyuˇz´ıvat dotykov´eho ovl´ad´an´ı. Kalend´ aˇr bude reprezentov´ an dvˇema obrazovkami. Nejprve pˇrijde uˇzivatel do styku s mˇes´ıˇcn´ım kalend´ aˇrem (Obr. A.4). Ten mus´ı umoˇzn ˇovat pˇrechod mezi jednotliv´ ymi mˇes´ıci a zobrazovat poˇcet rezervac´ı na kaˇzd´ y den v mˇes´ıci (v pˇr´ıpadˇe, kdy nebude existovat ˇz´ adn´ a rezervace, nebude tato informace zobrazena). Aktu´aln´ı den bude zv´ yraznˇen. Pˇri rozkliku dne v mˇes´ıˇcn´ım kalend´aˇri se zobraz´ı posunovateln´ y denn´ı kalend´aˇr s jednotliv´ ymi rezervacemi (Obr. A.3). Vizualizace a barevn´a sch´emata rezervac´ı budou shodn´ a s webov´ ym rozhran´ım. Kalend´aˇr mus´ı podporovat stejn´e operace s rezervacemi, jak´e jsou dostupn´e pro roli Uˇzivatele ve webov´em rozhran´ı syst´emu.
Kalend´ aˇ r objektu Aplikace tak´e umoˇzn´ı vizualizaci kalend´aˇre objektu, opˇet se shodn´ ym barevn´ ym sch´ematem a moˇzn´ ymi akcemi a restrikcemi definovan´ ymi pro roli Uˇzivatele v r´amci webov´eho rozhran´ı syst´emu. Bude tedy moˇzn´e vytv´aˇret a mˇenit vlastn´ı rezervace a prohl´ıˇzet rezervace jin´ ych uˇzivatel˚ u. Tento kalend´aˇr bude dostupn´ y z profilu kaˇzd´eho objektu.
4.4.7
Spr´ ava rezervac´ı
Obrazovky pro vytv´ aˇren´ı a editaci rezervac´ı budou dostupn´e z kalend´aˇre uˇzivatele i objektu a nab´ıdnou stejnou sadu poloˇzek a stejnou funkcionalitu jako je definov´ana pro webov´e rozhran´ı (Obr. A.6). V obou obrazovk´ach bude maxim´alnˇe vyuˇzito prostˇredk˚ u dotykov´eho displeje a grafick´ ych uˇzivatelsk´ ych komponent. Na editaˇcn´ı obrazovce bude nab´ıdnuta moˇznost rezervaci u ´plnˇe smazat ze syst´emu. D´ale bude v pˇr´ıpadˇe editace periodick´e rezervace nab´ıdnuta moˇznost mˇenit platnost vˇsech ˇcasov´ ych u ´sek˚ u rezervace, aniˇz by je bylo nutn´e dohled´avat v kalend´aˇri. Zmˇena
52
Poˇzadavky na syst´em spr´avy rezervac´ı
Funkce klientsk´e aplikace
platnosti ˇcasov´eho u ´seku rezervace bude realizov´ana jako v´ ybˇer ze seznamu vˇsech ˇcasov´ ych u ´sek˚ u rezervace. Jak´ekoliv zmˇeny uskuteˇcnˇen´e v r´amci spr´avy rezervac´ı se mus´ı okamˇzitˇe po u ´spˇeˇsn´em odesl´ an´ı prom´ıtnout do vˇsech dotˇcen´ ych kalend´aˇr˚ u. V pˇr´ıpadˇe, ˇze nebude moˇzn´e zmˇenit rezervaci z d˚ uvodu blokace t´eto zmˇeny jinou rezervac´ı, je nutn´e zobrazit zpr´ avu se jm´enem majitele t´eto blokuj´ıc´ı rezervace.
4.4.8
Funkce Vyzvedni“ ”
Tato funkce bude zajiˇst’ovat vyzved´av´an´ı objekt˚ u na z´akladˇe existuj´ıc´ıch rezervac´ı nebo pˇr´ıpadn´e vytv´ aˇren´ı nov´ ych rezervac´ı. Navigaˇcn´ı tlaˇc´ıtka zpˇr´ıstupˇ nuj´ıc´ı tuto funkci budou dostupn´ a pˇr´ımo z hlavn´ı obrazovky a z obrazovky profilu objektu. V pˇr´ıpadˇe, ˇze uˇzivatel zvol´ı pˇr´ıstup z hlavn´ı obrazovky aplikace, mus´ı b´ yt nejprve zajiˇstˇena selekce objektu urˇcen´emu k vyzvednut´ı. Pˇr´ıstup bude obdobn´ y jako v pˇr´ıpadˇe prohl´ıˇzen´ı objekt˚ u – bude moˇzn´e vybrat objekt ze seznamu obl´ıben´ ych objekt˚ u, ze seznamu objekt˚ u vyhledan´ ych podle urˇcit´ ych krit´eri´ı nebo bude moˇzn´e objekt identifikovat skenov´ an´ım QR k´odu. V pˇr´ıpadˇe pˇr´ıstupu z profilu objektu je tento identifikov´ an samotn´ ym profilem. Tato funkce nebude dostupn´a pro objekty, kter´e nevyˇzaduj´ı potvrzen´ı pˇri vyzvednut´ı. Po identifikaci objektu mus´ı syst´em vyhledat rezervaci vytvoˇrenou na tento objekt a splˇ nuj´ıc´ı podm´ınky vyzvednutelnosti uveden´e v poˇzadavc´ıch na webov´e rozhran´ı.V pˇr´ıpadˇe nalezen´ı takov´e rezervace syst´em zajist´ı jej´ı vyzvednut´ı a informuje o tom uˇzivatele. Pokud takov´a rezervace nen´ı nalezena, bude umoˇznˇeno vytvoˇren´ı rezervace nov´e, jej´ıˇz poˇc´atek bude v aktu´aln´ım ˇcase vyzvednut´ı. Koncov´ y ˇcas bude zvolen uˇzivatelem. Rezervace bude automaticky oznaˇcena jako neperiodick´a, validn´ı a vyzvednut´ a. Pro vytvoˇren´ı t´eto rezervace budou platit stejn´e podm´ınky jako pro vytv´ aˇren´ı vˇsech ostatn´ıch rezervac´ı (minim´aln´ı a maxim´aln´ı d´elka atp.) a v pˇr´ıpadˇe nesplnˇen´ı tˇechto podm´ınek o tom mus´ı b´ yt uˇzivatel informov´an.
4.4.9
Funkce Vrat’“ ”
Tato funkce bude zajiˇst’ovat vracen´ı objekt˚ u na z´akladˇe existuj´ıc´ıch nevr´acen´ ych rezervac´ı. Bude dostupn´ a z hlavn´ı obrazovky aplikace. Uˇzivateli se bude zobrazovat seznam vˇsech nevr´acen´ ych rezervac´ı, a to jak aktu´alnˇe bˇeˇz´ıc´ıch, tak rezervac´ı nevr´acen´ ych v minulosti. Nebudou se zobrazovat rezervace, kter´e potvrzen´ı vr´ acen´ı nevyˇzaduj´ı. Po vybr´an´ı jedn´e z rezervac´ı dojde k jej´ımu vr´ acen´ı a n´ avratu na hlavn´ı obrazovku aplikace.
53
Poˇzadavky na syst´em spr´avy rezervac´ı
4.5 4.5.1
Mimofunkˇcn´ı poˇzadavky
Mimofunkˇ cn´ı poˇ zadavky Komunikace se serverem
Komunikace s centr´ aln´ım serverem bude zabezpeˇcena HTTPS certifik´atem. Bude ˇz´adouc´ı, aby autorizace uˇzivatel˚ u mobiln´ıch aplikac´ı a s t´ım souvisej´ıc´ı pˇrenos citliv´ ych u ´daj˚ u prob´ıhal co moˇzn´ a nejm´enˇe. Jak´ekoliv chyby komunikace mezi mobiln´ı aplikac´ı a serverem se mus´ı zobrazit uˇzivateli. Rychlost a odezvy komunikace mus´ı korespondovat s pohodln´ ym pouˇz´ıv´an´ım mobiln´ı aplikace a webov´eho rozhran´ı (maxim´ alnˇe jednotky vteˇrin).
4.5.2
Poˇ zadavky na mobiln´ı aplikaci
Vˇsechny obrazovky bude moˇzn´e rotovat podle uˇzivatelsk´ ych preferenc´ı. V pˇr´ıpadˇe pˇrekryt´ı jinou aplikac´ı mus´ı obrazovky korektnˇe obnovit sv˚ uj stav i za cenu opakovan´eho staˇzen´ı dat z centr´ aln´ıho serveru. Aplikace mus´ı b´ yt maxim´alnˇe ovladateln´a pomoc´ı dotykov´eho displeje a vyuˇz´ıvat komponent grafick´eho uˇzivatelsk´eho rozhran´ı, kter´e jsou jiˇz zabudov´ any v syst´emu. Nevyˇzaduje se pˇrenositelnost aplikace z Androidu na jin´e mobiln´ı platformy.
4.5.3
Poˇ zadavky na v´ ykon syst´ emu
Na centr´ aln´ım serveru mus´ı b´ yt moˇzn´e uloˇzit ˇr´adovˇe des´ıtky uˇzivatel˚ u a objekt˚ u bez ztr´ aty rychlosti pˇr´ıstupu. Server mus´ı zvl´adnout nar˚ ustaj´ıc´ı poˇcet rezervac´ı v ˇcase bez znateln´e ztr´ aty v´ ykonu. Syst´em mus´ı bez probl´em˚ u obslouˇzit souˇcasn´e pˇrihl´aˇsen´ı jednotek aˇz des´ıtek uˇzivatel˚ u.
54
5 Moˇznosti n´avrhu webov´ych aplikac´ı V t´eto kapitole budou rozebr´ any moˇznosti n´avrhu a implementace dˇr´ıve specifikovan´eho syst´emu pro spr´ avu rezervac´ı a uvedeny nˇekter´e vyuˇziteln´e technologie ˇ aˇr se sezn´am´ı s obecn´ zaloˇzen´e na platformˇe Java. Cten´ ymi architektonick´ ymi principy uplatniteln´ ymi pˇri vytv´ aˇren´ı informaˇcn´ıch syst´em˚ u a distribuovan´ ych webov´ ych aplikac´ı.
5.1
V´ıcevrstv´ a architektura
V´ıcevrstv´ a architektura je architektonick´ y vzor, ve kter´em se model aplikace skl´ad´a z v´ıce vz´ ajemnˇe spolupracuj´ıc´ıch vrstev. Soused´ıc´ı vrstvy komunikuj´ı pˇres pˇredem definovan´ a rozhran´ı a d´ıky tomu mohou b´ yt zamˇen ˇov´any, aniˇz by to mˇelo dopad na funkˇcnost cel´e aplikace nebo bylo nutn´e mˇenit ostatn´ı vrstvy. Pˇrenos dat a definov´ an´ı vz´ ajemn´eho rozhran´ı mezi vrstvami je souˇc´ast´ı n´avrhu v´ıcevrstv´e architektury. Pravdˇepodobnˇe nejzn´ amˇejˇs´ım z´astupcem uplatnˇen´ı v´ıcevrstv´e architektury je referenˇcn´ı OSI (Open Systems Interconnection) model. Jeho p˚ uvodn´ım u ´ˇcelem byla snaha o standardizaci komunikace uvnitˇr poˇc´ıtaˇcov´ ych s´ıt´ı [18], dnes se vˇsak pouˇz´ıvaj´ı jeho jednoduˇsˇs´ı odvozeniny (napˇr. protokol TCP/IP) a p˚ uvodn´ı model m´a sp´ıˇse metodick´ y v´ yznam. Je vˇsak pˇr´ıkladem, ˇze v´ıcevrstv´a architektura se nemus´ı omezovat pouze na ˇcistˇe softwarovou implementaci. Model se skl´ ad´ a ze sedmi vrstev. Nejvyˇsˇs´ı vrstva v modelu zajiˇst’uje pˇr´ıstup aplikac´ı k s´ıt’ov´emu komunikaˇcn´ımu syst´emu. Pokud klientsk´a aplikace vytvoˇr´ı poˇzadavek na pˇr´ıstup do s´ıtˇe, je tento pˇred´av´an sestupnˇe v z´asobn´ıku vstev aˇz do vrstvy nejniˇzˇs´ı, kter´ a zajiˇst’uje pˇr´ım´ y pˇr´ıstup k fyzick´emu m´ediu. Kaˇzd´a vrstva m´a pˇresnˇe vymezenou sadu u ´kol˚ u jako je ˇsifrov´an´ı, navazov´an´ı spojen´ı, synchronizace, smˇerov´ an´ı atp. a m´ a jednoznaˇcnˇe definov´ano rozhran´ı mezi sousedn´ımi vrstvami v z´asobn´ıku. Na tom lze n´ azornˇe demonstrovat v´ yhody v´ıcerstv´ ych architektur. D´ıky tomu, ˇze se kaˇzd´ a vrstva omezuje na pˇredem definovanou sadu u ´kol˚ u a kaˇzd´a pracuje s jinou u ´rovn´ı abstrakce, zb´ yv´ a jen mal´ y krok k vytvoˇren´ı standardizovan´ ych protokol˚ u pro kaˇzdou vrstvu. Jednotliv´e implementace tˇechto protokol˚ u bude pot´e moˇzn´e libovolnˇe vymˇen ˇovat bez ovlivnˇen´ı funkcionality ostatn´ıch vrstev. Pokud se uk´aˇze, ˇze souˇcasn´ a implementace je jiˇz pˇr´ıliˇs sloˇzit´a, je moˇzn´e vrstvy d´ale dˇelit.
55
Moˇznosti n´avrhu webov´ych aplikac´ı
V´ıcevrstv´a architektura
Tyto lze dokonce i sluˇcovat, jak se tak´e stalo ve v´ yˇse zm´ınˇen´e od OSI modelu odvozen´e architektuˇre TCP/IP, kter´a vyuˇz´ıv´a pouze ˇctyˇr vrstev.
5.1.1
Z´ asady pro n´ avrh v´ıcevrstv´ eho modelu
Architekt aplikace by mˇel navrhnout novou vrstvu vˇsude tam, kde je zapotˇreb´ı jin´ y stupeˇ n abstrakce. Kaˇzd´ a vrstva by mˇela zajiˇst’ovat pˇresnˇe vymezen´e funkce zvolen´e tak, aby pro jejich realizaci mohly b´ yt vytvoˇreny standardizovan´a rozhran´ı nebo protokoly. Poˇcet vrstev by mˇel b´ yt tak velk´ y, aby vz´ajemnˇe odliˇsn´e funkce nemusely b´ yt zaˇrazov´ any do stejn´e vrstvy, a souˇcasnˇe s t´ım tak mal´ y, aby cel´a architektura z˚ ustala dostateˇcnˇe pˇrehledn´a. Moˇzn´e budouc´ı komplexn´ı pˇrepracov´an´ı vrstvy nesm´ı z´ asadnˇe ovlivnit sousedn´ı vrstvy. Rozhran´ı mezi vrstvami by mˇela b´ yt zvolena tak, aby byl minimalizov´an tok dat.
5.1.2
Tˇ r´ıvrstv´ a architektura
Tˇr´ıvrstv´ a architektura je obecn´ y typ v´ıcevrstv´e architektury. Je s oblibou vyuˇz´ıv´ana v kombinaci s modelem distribuovan´e aplikace klient-server. Rozdˇeluje aplikaci do tˇr´ı separ´ atn´ıch logick´ ych vrstev, kter´e nemus´ı nutnˇe bˇeˇzet na stejn´ ych zaˇr´ızen´ıch nebo operaˇcn´ıch syst´emech. Rozdˇelen´ı architektury je zjednoduˇsenˇe zn´azornˇeno na Obr. 5.1.
Obr´azek 5.1: Z´akladn´ı sch´ema tˇr´ıvrstv´e aplikace. Prezentaˇcn´ı vrstva zajiˇstuje vizualizaci dat pro uˇzivatele a interakci s uˇzivatelem [20]. Aplikaˇcn´ı (dom´enov´ a) vrstva obsahuje samotn´e j´adro aplikace, funkce pro v´ ypoˇcty nebo zpracov´ an´ı dat. Datov´a vrstva se pot´e star´a o persistenci dat. Je nutn´e zm´ınit, ˇze v ˇcistˇe tˇr´ıvrstv´e architektuˇre se tok dat dˇeje vˇzdy jen mezi soused´ıc´ımi vrstvami, tzn. pˇri pˇr´ıstupu z prezentaˇcn´ı vrstvy nem˚ uˇze b´ yt prostˇredn´ı vrstva ´ pˇrekroˇcena a opaˇcnˇe. Ukolem tˇr´ıvrstv´e architektury nen´ı definov´an´ı rozhran´ı mezi
56
Moˇznosti n´avrhu webov´ych aplikac´ı
V´ıcevrstv´a architektura
vrstvami nebo technologick´eho z´ akladu pro tˇr´ıvrstv´e aplikace, klade si za c´ıl pouze rozvrˇzen´ı logick´eho modelu aplikace. Na Obr´ azku 5.2 je zn´ azornˇeno typick´e rozvrˇzen´ı tˇr´ıvrstv´e aplikace. Datov´a vrstva je zde reprezentov´ ana relaˇcn´ı datab´az´ı na vzd´alen´em serveru. K t´eto datab´azi se pˇripojuje aplikaˇcn´ı server, zajiˇst’uj´ıc´ı v´ ypoˇcetn´ı j´adro syst´emu. K aplikaˇcn´ımu serveru se pˇripojuj´ı jednotliv´ı klienti – na tˇechto zaˇr´ızen´ıch jsou data vizualizov´ ana a je umoˇznˇeno uˇzivatel˚ um tˇechto klient˚ u s daty pracovat. D´ıky existenci aplikaˇcn´ıho serveru tito klienti neobsahuj´ı ˇz´adnou dalˇs´ı aplikaˇcn´ı logiku a hraj´ı roli tzv. tenk´ych klient˚ u.
Obr´azek 5.2: Pˇr´ıklad tˇr´ıvrstv´e architektury (tenk´y klient). Nicm´enˇe d´ıky obecnosti tˇr´ıvrstv´e architektury je moˇzn´e si pˇredstavit celou ˇradu jin´ ych sc´en´ aˇr˚ u. Kupˇr´ıkladu relaˇcn´ı datab´aze m˚ uˇze fungovat pˇr´ımo na aplikaˇcn´ım serveru nebo m˚ uˇze u ´plnˇe chybˇet a roli datov´e vrstvy sehraje napˇr. implementace transformuj´ıc´ı data do XML soubor˚ u. Na Obr. 5.3 je pak zn´azornˇena situace, kde aplikaˇcn´ı server zcela chyb´ı. Aplikaˇcn´ı vrstva m˚ uˇze b´ yt pot´e pˇr´ıtomna jako souˇc´ast relaˇcn´ı datab´ aze v podobˇe uloˇzen´ ych procedur a tzv. trigger˚ u (viz d´ale), nebo mohou jednotliv´ı klienti s sebou n´est i aplikaˇcn´ı logiku – stanou se tzv. tlust´ymi klienty. Je moˇzn´e tyto postupy i kombinovat. Je moˇzn´e (a dnes jiˇz celkem obvykl´e), aby ˇc´ ast aplikaˇcn´ı logiky leˇzela na aplikaˇcn´ım serveru a ˇc´ast k´odu se spouˇstˇela na jednotliv´ ych klientech. Vyuˇzit´ı tˇr´ıvrstv´e architektury je tedy velice flexibiln´ı. Pˇri n´avrhu syst´emu si softwarov´ y architekt mus´ı velmi dobˇre rozmyslet celkov´e rozvrˇzen´ı jednotliv´ ych logick´ ych vrstev s ohledem na v´ ykon, bezpeˇcnost, udrˇzitelnost, technick´e vlastnosti a moˇznosti klientsk´ ych zaˇr´ızen´ı a dalˇs´ı rozˇsiˇritelnost navrhovan´eho syst´emu. Je tak´e
57
Moˇznosti n´avrhu webov´ych aplikac´ı
Aplikaˇcn´ı vrstva
Obr´azek 5.3: Pˇr´ıklad tˇr´ıvrstv´e architektury (tlust´y klient). nutn´e vˇzdy jednoznaˇcnˇe definovat komunikaˇcn´ı rozhran´ı mezi vrstvami podle z´asad n´avrhu v´ıcevrstv´ ych aplikac´ı tak, aby bylo moˇzn´e jednotliv´e vrstvy zamˇenit nebo je standardizovat. Nyn´ı si detailnˇeji rozebereme jednotliv´e ˇc´asti a dalˇs´ı architektonick´e vzory tˇr´ıvrstv´e architektury s ohledem na moˇzn´e vyuˇzit´ı pˇri implementaci distibuovan´ ych webov´ ych aplikac´ı.
5.2
Aplikaˇ cn´ı vrstva
Aplikaˇcn´ı (nebo tak´e dom´enov´ a) vrstva je takov´a vrstva, do kter´e by mˇelo b´ yt soustˇredˇeno maximum v´ ykonn´eho k´odu a vlastn´ı logiky aplikace. Existuje cel´a ˇrada obecn´ ych architektonick´ ych vzor˚ u uplatniteln´ ych pˇri n´avrhu t´eto vrstvy, nicm´enˇe zejm´ena u webov´ ych aplikac´ı se vrstva obvykle rozdˇel´ı na dom´enov´y model, ve kter´em jsou definov´ any z´ akladn´ı entity aplikace a jejich vz´ajemn´e vazby, a servisn´ı vrstvu, kter´ a s t´ımto modelem manipuluje nebo vytv´aˇr´ı jeho rozhran´ı [20].
58
Moˇznosti n´avrhu webov´ych aplikac´ı
5.2.1
Aplikaˇcn´ı vrstva
Dom´ enov´ y model
Dom´enov´ y model vytv´ aˇr´ı jakousi s´ıt’ objekt˚ u navz´ajem spojen´ ych vazbami, kde kaˇzd´ y objekt obvykle reprezentuje nˇejakou entitu v re´aln´em svˇetˇe. N´avrhem dom´enov´eho modelu by mˇel zaˇc´ınat jak´ ykoliv n´avrh implementace aplikace a jeho programov´e realizaci obvykle pˇredch´az´ı vytvoˇren´ı analytick´eho dom´enov´eho modelu za vyuˇzit´ı jazyka UML (Unified Modeling Language). Objekty dom´enov´eho modelu maj´ı sadu atribut˚ u definovanou tak, aby se co nejv´ıce pˇribl´ıˇzily sv´emu re´ aln´emu vzoru. Kaˇzd´ y objekt dom´enov´eho modelu by vˇsak mˇel b´ yt jen tak velk´ y, jak je to bezpodm´ıneˇcnˇe nutn´e. V pˇr´ıpadˇe pˇr´ıliˇs komplexn´ıho objektu je vhodn´e ho rozdˇelit na menˇs´ı objekty a tyto propojit vazbami. Kv˚ uli snadn´e rozˇsiˇritelnosti a udrˇzitelnosti je d˚ uleˇzit´e m´ıt neust´ale moˇznost bˇehem ˇzivotn´ıho cyklu aplikace snadno dom´enov´ y model mˇenit a testovat. D´ale je nutn´e udrˇzovat co nejm´enˇe vazeb modelu na ostatn´ı ˇc´asti syst´emu (coˇz je mimo jin´e c´ılem mnoha n´ avrhov´ ych vzor˚ u). Ve svˇetˇe Javy jsou obvykle jednotliv´e dom´enov´e objekty realizov´any pomoc´ı POJO (Plain Old Java Object) objekt˚ u. Definice POJO vznikla jako reakce na nepˇr´ıliˇs flexibiln´ı EJB2 (Enterprise Java Bean), kter´e se v´aˇz´ı na pouˇzit´ y framework a nesplˇ nuj´ı tak poˇzadavek na co nejniˇzˇs´ı poˇcet vazeb modelu na okoln´ı programov´e prostˇred´ı. Pro POJO neexistuje ˇz´adn´ y uchopiteln´ y standard, nicm´enˇe lze je definovat jako instance kaˇzd´e Java Beany, kter´a se snaˇz´ı minimalizovat sv´e vazby v˚ uˇci okol´ı at’ uˇz po str´ ance anotac´ı, dˇediˇcnosti nebo implementace rozhran´ı. To samozˇrejmˇe nen´ı (napˇr´ıklad v pˇr´ıpadˇe spolupr´ace aplikace s jin´ ymi frameworky) t´emˇeˇr nikdy moˇzn´e, nicm´enˇe zejm´ena podm´ınka neexistuj´ıc´ı dˇediˇcnosti od nˇejak´e komponenty uˇzit´eho frameworku by mˇela b´ yt splnˇena. Pod pojmem Java Bean se pot´e ch´ape takov´a tˇr´ıda, k jej´ımˇz ˇclensk´ ym promˇenn´ ym se pˇristupuje pouze pomoc´ı veˇrejn´ ych getter˚ u a setter˚ u a tyto dodrˇzuj´ı jist´e jmenn´e konvence. Pro pˇr´ıstup k jednotliv´ ym ˇclensk´ ym promˇenn´ ym se d´ıky jednoduchosti POJO m˚ uˇze vyuˇz´ıt pokroˇcil´ ych programovac´ıch technik, jako je aspektov´e programov´ an´ı a reflexe. Obdobn´a situace je i v jin´ ych programov´ ych prostˇred´ıch (napˇr. v .NET Frameworku), i kdyˇz syntax k´odu a uˇzit´a terminologie se samozˇrejmˇe liˇs´ı.
5.2.2
Servisn´ı vrstva
Jak ukazuje Obr. 5.4, servisn´ı vrstva je v hierarchii vrstev um´ıstˇena na vyˇsˇs´ı u ´rovni abstrakce neˇz je dom´enov´ y model a souˇcasnˇe vytv´aˇr´ı programov´e rozhran´ı (Application Programming Interface, zkratkou API) pro prezentaˇcn´ı vrstvu. Jinak neˇz skrze servisn´ı vrstvu nelze s dom´enov´ ym modelem pracovat.
59
Moˇznosti n´avrhu webov´ych aplikac´ı
Vrstva persistence dat
Obr´azek 5.4: Z´akladn´ı rozdˇelen´ı aplikaˇcn´ı vrstvy. Servisn´ı vrstva je d´ıky tomu, ˇze tvoˇr´ı u ´zk´e hrdlo“ v toku dat, dobr´ ym m´ıstem ” nejen pro um´ıstˇen´ı aplikaˇcn´ı logiky, ale i zabezpeˇcen´ı nebo kontroly dat. Podle [20] existuj´ı dva pˇr´ıstupy, jak vytvoˇrit servisn´ı vrstvu. Prvn´ı z nich je tzv. Dom´ enov´ a Fas´ ada. Ta principi´ alnˇe deleguje aplikaˇcn´ı logiku do dom´enov´eho modelu a tvoˇr´ı pouze zmiˇ novan´e rozhran´ı mezi prezentaˇcn´ı a aplikaˇcn´ı vrstvou a celou servisn´ı vrstvu tvoˇr´ı pouze mnoˇzina fas´ ad nad dom´enov´ ym modelem. Fas´ady obsahuj´ı pouze ty operace, kter´e jsou poskytnuty klientovi nad dom´enov´ ym modelem a samotn´ a servisn´ı vrstva je tak velice tenk´a. Druh´ y princip, tzv. Operation Script, funguje pˇresnˇe opaˇcnˇe. Dom´enov´ y model neimplementuje ˇz´ adnou aplikaˇcn´ı logiku a tato je cel´a implementov´ana pˇr´ımo v servisn´ı vrstvˇe. Rozhran´ı dostupn´e klientovi tedy nedeleguje pr´aci do dom´enov´eho modelu, ale s dom´enov´ ym modelem pˇr´ımo pracuj´ı. V tomto pˇr´ıpadˇe se d´a jiˇz hovoˇrit o robustn´ı servisn´ı vrstvˇe a tˇr´ıdy hraj´ıc´ı roli servis b´ yvaj´ı programovˇe velmi rozs´ ahl´e. Oba pˇr´ıstupy maj´ı sv´e klady a z´apory. V pˇr´ıpadˇe dom´enov´e fas´ady se d´a jistˇe hovoˇrit o lepˇs´ı dekompozici aplikaˇcn´ı logiky a t´ım p´adem rozˇsiˇretelnˇejˇs´ı implementaci. S t´ım se ovˇsem tak´e poj´ı netrivi´aln´ı n´avrh aplikace. Nav´ıc d´ıky tomu, ˇze je aplikaˇcn´ı logika rozeseta do mnoha m´ıst v dom´enov´em modelu, m˚ uˇze se s rostouc´ım poˇctem dom´enov´ ych objekt˚ u tvoˇrit duplicitn´ı k´od. U druh´eho pˇr´ıstupu je aplikaˇcn´ı k´od pouze na nˇekolika m´ alo m´ıstech a to umoˇzn ˇuje snaˇzˇs´ı refaktorizaci k´odu, na druhou stranu to znesnadˇ nuje budouc´ı rozˇsiˇritelnost dom´enov´eho modelu.
5.3
Vrstva persistence dat
V pˇredchoz´ım textu jsme zavedli z´akladn´ı terminologii vrstev a tˇr´ıvrstv´eho architektonick´eho vzoru. Nyn´ı je nutn´e detailnˇeji rozebrat ot´azku zachov´an´ı persistence dat a programov´eho pˇr´ıstupu k tˇemto dat˚ um (tedy nejniˇzˇs´ı vrstvy tˇr´ıvrstv´eho modelu).
60
Moˇznosti n´avrhu webov´ych aplikac´ı
5.3.1
Vrstva persistence dat
Syst´ em ˇ r´ızen´ı b´ aze dat
ˇ sen´ı probl´emu uchov´ Reˇ av´ an´ı dat spoˇc´ıv´a obvykle v nasazen´ı nˇekter´e z implemenˇ tac´ı syst´emu ˇr´ızen´ı b´ aze dat (SRBD nebo anglicky DBMS – Database management system). Jejich hlavn´ım u ´ˇcelem je poskytnut´ı ˇr´ızen´ı (vkl´ad´an´ı, editace, maz´an´ı) nad b´ az´ı dat (neboli datab´ az´ı), definovat strukturu uloˇzen´ı tˇechto dat a vytvoˇrit rozhran´ı mezi aplikaˇcn´ımi programy a uloˇzen´ ymi daty [19]. Pojmem datab´azov´ y ” ˇ syst´em“ pot´e obvykle oznaˇcuje spojen´ı SRBD se samotnou b´az´ı dat. Pouˇzit´ı nˇekter´eho z datab´ azov´ ych syst´em˚ u pˇrin´aˇs´ı celou ˇradu v´ yhod, jako je udrˇzov´ an´ı strukturovanosti dat, podpora transakc´ı, moˇznost agregace dat, ˇr´ızen´ı pˇr´ıstupov´ ych pr´ av atd. Datab´ azov´e syst´emy se obvykle snaˇz´ı maxim´alnˇe vyuˇz´ıt operaˇcn´ıho a souborov´eho syst´emu tak, aby bylo z´ısk´av´an´ı a ukl´ad´an´ı dat co nejv´ıce ˇ efektivn´ı. Pˇrev´ aˇzn´ a vˇetˇsina dnes pouˇz´ıvan´ ych SRBD pak pro strukturov´an´ı dat v datab´ azi vyuˇz´ıv´ a tzv. relaˇcn´ı model.
Relaˇ cn´ı model Relaˇcn´ı model sdruˇzuje data do tabulek, kter´e obsahuj´ı n-tice jednotliv´ ych entit (ˇr´adk˚ u). Tabulka je struktura entit s pevnˇe stanoven´ ymi atributy (sloupci). Kaˇzd´ y sloupec m´ a jasnˇe definov´ an jednoznaˇcn´ y n´azev, typ a moˇzn´ y rozsah vkl´adan´ ych dat. Pokud jsou v r˚ uzn´ ych tabulk´ach sloupce stejn´eho typu, pak tyto sloupce mohou vytv´ aˇret vazby mezi jednotliv´ ymi tabulkami. Tabulky se pot´e naplˇ nuj´ı konkr´etn´ımi daty. Kolekce v´ıce tabulek, jejich funkˇcn´ıch vztah˚ u, index˚ u a dalˇs´ıch souˇc´ast´ı tvoˇr´ı samotnou relaˇcn´ı datab´azi. Relaˇcn´ı model umoˇzn ˇuje pˇrirozenou reprezentaci zpracov´avan´ ych dat a je v nˇem moˇzn´e pˇri n´ avrhu datab´ aze snadno a pomˇernˇe intuitivnˇe definovat jednotliv´e vazby mezi tabulkami. Model tak´e klade velk´ y d˚ uraz na zachov´an´ı integrity dat. Model d´ale pracuje s term´ıny jako je referenˇcn´ı integrita, ciz´ı kl´ıˇc, prim´ arn´ı kl´ıˇc, norm´ aln´ı forma apod. Relaˇcn´ı datab´ azov´ y syst´emy obvykle pro kontrolu datab´aze a nastavov´an´ı dalˇs´ıch direktiv vyuˇz´ıvaj´ı strukturovan´ y dotazovac´ı jazyk SQL (Structured Query Language). Problematika datab´ az´ı je velmi obs´ahl´a a pro u ´ˇcely t´eto pr´ace postaˇc´ı, pokud se nad´ale budeme zab´ yvat jen nˇekter´ ymi vlastnostmi relaˇcn´ıch datab´azov´ ych syst´em˚ u uplatniteln´ ych v prostˇred´ı webov´ ych distribuovan´ ych aplikac´ı.
61
Moˇznosti n´avrhu webov´ych aplikac´ı
Vrstva persistence dat
Uloˇ zen´ e procedury a triggery Jak jiˇz bylo zm´ınˇeno v pˇredchoz´ım textu, datab´azov´e syst´emy umoˇzn ˇuj´ı ˇc´asteˇcnˇe pˇrevz´ıt roli aplikaˇcn´ı vrstvy d´ıky uloˇzen´ ym procedur´am a tzv. trigger˚ um. To jsou v podstatˇe bloky k´ odu napsan´eho v nˇekter´em programovac´ım jazyce (napˇr. PL/SQL) vytvoˇren´eho speci´ alnˇe pro u ´ˇcel bˇehu v prostˇred´ı relaˇcn´ı datab´aze. Lze je kupˇr´ıkladu vyuˇz´ıt pro zachov´ an´ı referenˇcn´ı integrity dat. V´ yhodou je zpravidla mnohem vˇetˇs´ı rychlost zpracov´ an´ı neˇz pokud by tyto bloky k´odu mˇely b´ yt ˇr´ızeny vzd´alenˇe klientskou aplikac´ı. Kromˇe velmi specifick´ ych pˇr´ıpad˚ u vˇsak nelze pouˇzit´ı procedur a trigger˚ u pˇr´ıliˇs doporuˇcit. Jsou jen velmi obt´ıˇznˇe udrˇzovateln´e, na velmi n´ızk´e u ´rovni abstrakce, nen´ı moˇzn´e je rozumnˇe debuggovat a jejich podpora se liˇs´ı v z´avislosti na pouˇzit´e implementaci datab´ azov´eho syst´emu.
Nev´ yhody relaˇ cn´ıch datab´ az´ı Aˇckoliv existuj´ı standardy pro jazyk SQL, mezi jednotliv´ ymi implementacemi relaˇcn´ıch datab´ az´ı jsou znaˇcn´e rozd´ıly v jejich podpoˇre. Obvykle nejsou implementov´any vˇsechny poˇzadavky standardu a naopak, kaˇzd´a implementace obsahuje nejr˚ uznˇejˇs´ı prvky, kter´e nejsou ve standardech obsaˇzeny. Pˇrenositelnost SQL sekvenc´ı mezi jednotliv´ ymi datab´ azemi je proto omezen´a. Souˇcasnˇe nen´ı moˇzn´e jednoduˇse pˇren´aˇset data mezi r˚ uzn´ ymi datab´azemi. Relaˇcn´ı datab´ azov´e syst´emy jsou dobr´e pro ˇr´ızen´ı velk´eho mnoˇzstv´ı dat, ale poskytuj´ı n´ızkou podporu pro manipulaci s nimi. Jsou zaloˇzeny na dvourozmˇern´ ych tabulk´ ach a vztahy mezi daty jsou vyjadˇrov´any porovn´av´an´ım hodnot v nich uloˇzen´ ych. SQL sice umoˇzn ˇuje tabulky za bˇehu propojit, nicm´enˇe tento pˇr´ıstup je velmi neintuitivn´ı a nepˇrehledn´ y. Relaˇcn´ı model datab´az´ı je sice jednoduch´ ya pˇritom velmi robustn´ı a flexibiln´ı, je ale tak´e naprosto rozd´ıln´ y od objektov´eho modelu. Relaˇcn´ı datab´ aze nejsou navrhov´any pro ukl´ad´an´ı objekt˚ u a vytvoˇren´ı rozhran´ı pro ukl´ ad´ an´ı tˇechto objekt˚ u v relaˇcn´ı datab´azi je netrivi´aln´ı u ´kol. Alespoˇ n ˇc´ asteˇcn´e ˇreˇsen´ı obou v´ yˇse nast´ınˇen´ ych probl´em˚ u tkv´ı v pouˇzit´ı bud’ objektovˇe orientovan´ ych datab´ az´ı (kter´e ovˇsem nejsou pˇr´ıliˇs vyuˇz´ıvan´e), nebo v nasazen´ı tzv. objektovˇe-relaˇcn´ıho mapov´ an´ı.
5.3.2
Objektovˇ e-relaˇ cn´ı mapov´ an´ı
Jako objektovˇe-relaˇcn´ı mapov´ an´ı (Object-Relational Mapping, zkratkou ORM) se oznaˇcuje sada programovac´ıch technik, kter´e se snaˇz´ı zajistit automatickou kon-
62
Moˇznosti n´avrhu webov´ych aplikac´ı
Vrstva persistence dat
verzi dat mezi relaˇcn´ı datab´ az´ı a dom´enov´ ym modelem a n´aslednou synchronizaci dom´enov´ ych objekt˚ u v aplikaci a jejich reprezentaci v datab´azov´em syst´emu tak, aby byla zajiˇstˇena persistence dat (Obr. 5.5). D´ıky ORM je moˇzn´e pˇrirozenˇe pracovat s dom´enov´ ymi objekty, aniˇz by se program´ator staral jak zajistit jejich perzistenci. Ve [20] jsou rozebr´ any nˇekter´e z´akladn´ı n´avrhov´e vzory, kter´e umoˇzn´ı sv´epomoc´ı implementovat ORM. Nicm´enˇe protoˇze zajiˇstˇen´ı synchronizace mezi datab´az´ı a dom´enov´ ym modelem je netrivi´aln´ı probl´em zejm´ena v kontextu paraleln´ıho pˇr´ıstupu a v´ ykonnosti cel´e aplikace, vyuˇz´ıv´a se dnes obvykle jiˇz ust´alen´ ych a standardizovan´ ych framework˚ u, kter´e ORM mapov´an´ı zajist´ı.
Obr´azek 5.5: Vyuˇzit´ı objektovˇe-relaˇcn´ıho mapov´an´ı. Nˇekter´e implementace ORM framework˚ u nav´ıc program´atora odst´ın´ı od ponˇekud nepohodln´eho SQL jazyka a poskytnou mu jin´e moˇznosti pˇr´ıstupu do datab´aze, kter´e obvykl´e implementace datab´azov´ ych syst´em˚ u nenab´ız´ı. D´ale tak´e umoˇzn ˇuj´ı ˇc´asteˇcnˇe smazat rozd´ıly mezi jednotliv´ ymi implementacemi datab´azov´ ych syst´em˚ u – je moˇzn´e konfigurovat SQL dialekt, se kter´ ym framework komunikuje s datab´az´ı a t´ım je lze pˇri zmˇenˇe datab´ azov´eho syst´emu m´ısto pˇrepisov´an´ı cel´e datov´e vrstvy pouze pˇrekonfigurovat ORM framework. I pˇres nesporn´e v´ yhody je vˇsak nasazen´ı tˇechto framework˚ u sp´ıˇse poˇc´atek cesty za bezprobl´emov´ ym mapov´ an´ım mezi dom´enov´ ym modelem a relaˇcn´ı datab´az´ı a v nˇekter´ ych pˇr´ıpadech se dokonce vyplat´ı jejich nasazen´ı u ´plnˇe vyhnout.
Java Persistence API Specifikac´ı pro ORM frameworky na platformˇe Java je tzv. Java Persistence API (zkratkou JPA). P˚ uvodnˇe existovalo nˇekolik r˚ uzn´ ych ORM framework˚ u, kter´e vznikly jako reakce na pˇr´ıliˇs komplikovan´ y tehdejˇs´ı model EJB, kter´ y se nav´ıc dal pouˇz´ıt pouze ve svˇetˇe rozs´ ahl´ ych Java EE aplikac´ı [21]. V r´amci standardizace tˇechto ORM framework˚ u pot´e dodateˇcn´e vznikla specifikace JPA, jej´ıˇz podporu
63
Moˇznosti n´avrhu webov´ych aplikac´ı
Vrstva persistence dat
n´aslednˇe st´ avaj´ıc´ı frameworky pˇrevzaly. Nejzn´amˇejˇs´ımi implementacemi JPA je Hibernate a EclipseLink. Pˇri dodrˇzen´ı konvenc´ı pˇredepsan´ ych JPA je moˇzn´e tyto dva frameworky na ORM vrstvˇe navz´ajem zamˇenit bez zmˇeny implementace. JPA mimo jin´e definuje i dotazovac´ı jazyk JPQL (Java Persistence Query Language). Ten je syntax´ı podobn´ y SQL, nicm´enˇe nam´ısto tabulek se pohybuje na u ´rovni dom´enov´ ych objekt˚ u. Nˇekter´e frameworky jazyk d´ale rozˇsiˇruj´ı, napˇr´ıklad Hibernate m´ a vlastn´ı jazyk HQL (Hibernate Query Language), jemuˇz je JPQL podmnoˇzinou.
5.3.3
Data Gateway
I v okamˇziku vyuˇzit´ı ORM framework˚ u se nelze vyhnout k´odu, kter´ y pˇr´ımo z´avis´ı na logice relaˇcn´ıch datab´ az´ı. Zejm´ena pro CRUD (Create-Read-Update-Delete) operace je st´ ale nutn´e vyuˇz´ıt at’ uˇz generick´e SQL nebo napˇr´ıklad v´ yˇse zm´ınˇen´ y jazyk JPQL. Je naprosto neˇz´ adouc´ı m´ıchat“ tento specifick´ y k´od do aplikaˇcn´ı ” vrstvy uˇz jen s ohledem na to, ˇze nˇekter´a z budouc´ıch odvozenin aplikace m˚ uˇze vyuˇz´ıvat m´ısto relaˇcn´ıch datab´ az´ı napˇr´ıklad XML soubory, s nimiˇz se ovˇsem pracuje diametr´ alnˇe odliˇsnˇe. Obvykl´ ym postupem je tedy vytvoˇren´ı programov´eho rozhran´ı pro pˇr´ıstup k persistentn´ı vrstvˇe. Implementace tohoto rozhran´ı bude pot´e obsahovat vˇsechen k´od specifick´ y pro technologii pouˇzitou pro persistenci dat. Takov´e implementace pot´e tvoˇr´ı jakousi br´ anu (gateway) mezi architektonick´ ymi vˇety aplikaˇcn´ı a persistentn´ı vrstvy (Obr. 5.6).
Obr´azek 5.6: Rozhran´ı mezi aplikaˇcn´ı a persistentn´ı vrstvou. Nen´ı ˇz´ adouc´ı do tˇechto objekt˚ u vkl´adat aplikaˇcn´ı logiku – rozhran´ı by mˇelo b´ yt co nejjednoduˇsˇs´ı a zajiˇst’ovat pouze z´akladn´ı CRUD operace. Jak´akoliv komplexn´ı logika by mˇela b´ yt souˇc´ ast´ı klienta tohoho rozhran´ı. Implementace se pot´e ˇcasto neprogramuj´ı ruˇcnˇe, ale vyuˇz´ıv´ a se sp´ıˇse r˚ uzn´ ych moˇznost´ı dˇediˇcnosti nebo gene-
64
Moˇznosti n´avrhu webov´ych aplikac´ı
Prezentaˇcn´ı vrstva
r´ator˚ u k´ odu. Je dokonce moˇzn´e vytv´aˇret implementace rozhran´ı pˇr´ımo za bˇehu aplikace pomoc´ı aspektovˇe orientovan´eho programov´ an´ı (viz d´ale).
Data Access Object Jako Data Access Object (objekt zpˇr´ıstupˇ nuj´ıc´ı data, zkratkou DAO) se tradiˇcnˇe oznaˇcuje uplatnˇen´ı n´ avrhov´eho vzoru Data Gateway v prostˇred´ı Java aplikac´ı. Rozhran´ı DAO navenek poskytuje metody pro pr´aci s dom´enov´ ymi objekty – instancemi POJO nebo EJB, a umoˇzn ˇuje jejich persistenci. Vnitˇrnˇe pot´e zajiˇst’uj´ı pˇreklad“ tˇechto objekt˚ u do tvaru, kter´emu rozum´ı relaˇcn´ı datab´aze. To m˚ uˇze b´ yt ” zajiˇstˇeno mnoha cestami – parametrizac´ı generick´ ych SQL dotaz˚ u nebo napˇr´ıklad vyuˇzit´ım jiˇz zmiˇ novan´ ych ORM framework˚ u. Sezn´ amili jsme se s obvykl´ ymi architektonick´ ymi n´avrhov´ ymi vzory pro spojen´ı datov´e a aplikaˇcn´ı vrstvy. Nyn´ı je nutn´e vyˇreˇsit posledn´ı pr´azdn´e m´ısto v rozboru tˇr´ıvrstv´e architektury – prezentaˇcn´ı vrstvu.
5.4
Prezentaˇ cn´ı vrstva
´ Ukolem t´eto kapitoly je uk´ azat obvykl´a architektonick´a ˇreˇsen´ı rozhran´ı mezi aplikaˇcn´ı a prezentaˇcn´ı vrstvou specifick´a pro webov´e aplikace a pˇredstavit nˇekter´e technologie, kter´e tyto obecn´e vzory implementuj´ı.
5.4.1
Architektura MVC (Model-View-Controller )
MVC je architektonick´ y vzor, kter´ y oddˇeluje dom´enov´ y model aplikace od uˇzivatelsk´eho rozhran´ı. Vznikl spolu s prvn´ımi n´avrhy grafick´eho uˇzivatelsk´eho rozhran´ı a dnes se uplatuje zejm´ena v r´ amci distribuovan´ ych webov´ ych aplikac´ı. Popis jednotliv´ ych komponent je n´ asleduj´ıc´ı: - Model – v klasick´em tˇr´ıvrstv´em modelu obvykle odpov´ıd´a dom´enov´emu modelu v aplikaˇcn´ı vrstvˇe. Nicm´enˇe frameworky implementuj´ıc´ı MVC obvykle tyto komponenty neum´ı navz´ajem synchronizovat a je tedy na program´atorovi, aby synchronizaci zajistil (napˇr´ıklad pˇres servisn´ı vrstvu). - Pohled (View) –pˇrev´ ad´ı data reprezentovan´a modelem do podoby vhodn´e k zobrazen´ı uˇzival˚ um.
65
Moˇznosti n´avrhu webov´ych aplikac´ı
Prezentaˇcn´ı vrstva
ˇ c (Controler) – reaguje na ud´alosti od uˇzivatele a zajiˇst’uje zmˇeny v mo- Radiˇ delu nebo v pohledu. Aˇckoliv by se mohlo zd´ at, ˇze MVC je vlastnˇe tˇr´ıvrstv´a architektura (a oba architektonick´e vzory opravdu b´ yvaj´ı ˇcasto zamˇen ˇov´any a jsou si na prvn´ı pohled podobn´e), nen´ı to v˚ ubec pravda. Topologie MVC totiˇz nen´ı line´arn´ı, ale tvoˇr´ı jak´ ysi troj´ uheln´ık. Na rozd´ıl od obecn´e tˇr´ıvrstv´e architektury tak´e definuje z´akladn´ı tok dat a pohybuje se na rozhran´ı aplikaˇcn´ı a prezentaˇcn´ı vrstvy, zp˚ usoby zajiˇstˇen´ı persistence dom´enov´eho modelu nejsou architekturou nijak pokryty a obecnˇe nelze zamˇen ˇovat datovou vrstvu s MVC Modelem. Na Obr´azku 5.7 je zobrazeno z´akladn´ı sch´ema MVC architektury.
Obr´azek 5.7: Z´akladn´ı sch´ema MVC architektury. ˇ c a Pohled z´avisej´ı na Modelu, ale Model nez´avis´ı D˚ uleˇzit´ y je zejm´ena fakt, ˇze Radiˇ ani na jedn´e z tˇechto dvou komponent. To (mimo jin´e) umoˇzn ˇuje testovat dom´enov´ y model aplikace nez´ avisle na vizu´aln´ı prezentaci dat. D´ale m˚ uˇzeme podle [20] rozdˇelit MVC architekturu na dva z´akladn´ı typy.
Pasivn´ı MVC ˇ c, kter´ V pasivn´ım modelu je to pouze Radiˇ y je opr´avnˇen manipulovat s Modelem. ˇ c modifikuje Model a pot´e informuje Pohled, ˇze se Model zmˇenil. Tento se Radiˇ pot´e pˇrekresl´ı, aby zobrazoval aktu´aln´ı data. Model je v pasivn´ım MVC naprosto nez´avisl´ y a proto nemus´ı nijak notifikovat zmˇenu s´am sebe – tuto ˇcinnost obstar´a ˇ c. Radiˇ Pˇr´ıkladem pasivn´ıho MVC m˚ uˇze b´ yt klasick´a webov´a prezentace pˇres HTTP protokol. Bez vyuˇzit´ı dalˇs´ıch technologi´ı neexistuje cesta, jak jednoduˇse pˇrij´ımat asynchronn´ı aktualizace dat ze serveru. Webov´ y prohl´ıˇzeˇc zobraz´ı Pohled a um´ı zachyt´ avat vstupy od uˇzivatele, neum´ı vˇsak detekovat ˇz´adn´e zmˇeny modelu na serveru.
66
Moˇznosti n´avrhu webov´ych aplikac´ı
Prezentaˇcn´ı vrstva
Aktivn´ı MVC ˇ ce. To V aktivn´ım MVC m˚ uˇze Model mˇenit sv˚ uj stav bez jak´ehokoliv zapojen´ı Radiˇ se m˚ uˇze st´ at v pˇr´ıpadˇe, kdy jsou data mˇenˇena z nˇejak´ ych dalˇs´ıch zdroj˚ u (napˇr´ıklad jin´ ym uˇzivatelem, pˇr´ımo v datab´azi, opakuj´ıc´ı se paraleln´ı u ´lohou atp.) a zmˇeny se mus´ı okamˇzitˇe projevit do Pohledu. Model tedy notifikuje zmˇenu sama sebe, Pohled tuto zmˇenu zachyt´ı a dojde k pˇrekreslen´ı okna grafick´eho uˇzivatelsk´eho ˇ ce se nicm´enˇe nijak nevyluˇcuje. M˚ ˇ c, rozhran´ı. Zapojen´ı Radiˇ uˇze to b´ yt pr´avˇe Radiˇ kter´ y Model zmˇen´ı, nicm´enˇe aktualizaci Pohledu nebude s´am zajiˇst’ovat a nech´a ji plnˇe v kompetenci Modelu.
Tok ud´ alost´ı v MVC Pro u ´pln´e pochopen´ı MVC architektury jsou na Obr´azku 5.8 zn´azornˇeny typick´e interakce mezi uˇzivatelem a aplikac´ı vyuˇz´ıvaj´ıc´ı MVC. Tok ud´alost´ı v aplikaci vypad´a n´ asledovnˇe: - uˇzivatel vykon´ a nˇejakou akci v uˇzivatelsk´em rozhran´ı. ˇ cem. - ud´ alost je zachycena Radiˇ ˇ c provede rozhodnut´ı o tom, jak na ud´alost zareagovat a zmˇen´ı hodnoty - Radiˇ v modelu nebo pˇr´ımo ovlivn´ı Pohled. - Pohled se aktualizuje a uˇzivateli zobraz´ı zmˇeny v Modelu (nebo se zobraz´ı zcela jin´ y Pohled ).
Obr´azek 5.8: Sc´en´aˇr interakce v MVC architektuˇre.
67
Moˇznosti n´avrhu webov´ych aplikac´ı
Prezentaˇcn´ı vrstva
ˇ c, kter´ V cel´em modelu je to tedy Radiˇ y hraje dominantn´ı u ´lohu a urˇcuje, jak se bude reagovat na ud´ alosti vznikl´e na stranˇe uˇzivatele – odtud anglick´ y n´azev Controller.
Spojen´ı MVC a servisn´ı vrstvy Nab´ız´ı se ot´ azka, jak vyˇreˇsit jiˇz dˇr´ıve zm´ınˇen´ y probl´em synchronizace Modelu s dom´enov´ ym modelem aplikace. V Kap. 5.2 jsme definovali servisn´ı vrstvu, kter´a bude vytv´aˇret programov´e rozhran´ı mezi prezentaˇcn´ı vrstvou a dom´enov´ ym modelem aplikace. Na obr´ azku 5.9 je zn´ azornˇeno jedno z moˇzn´ ych spojen´ı MVC se servisn´ı vrstvou (nˇekdy naz´ yvan´e jako MVCS - Model View Controller Service). Jak jiˇz bylo dˇr´ıve zm´ınˇeno, servisn´ı vrstva m˚ uˇze s dom´enov´ ym modelem manipulovat pˇr´ımo podle vzoru Operation Script, nebo m˚ uˇze tvoˇrit pouze dom´enovou fas´adu a delegovat logiku do dom´enov´eho modelu.
Obr´azek 5.9: MVC architektura ve spojen´ı se servisn´ı vrstvou. ˇ c tedy m˚ Radiˇ uˇze pˇr´ımo mˇenit Model a na ˇz´adost uˇzivatele m˚ uˇze prov´est napˇr´ıklad uloˇzen´ı dat z Modelu do datab´ aze prostˇrednictv´ım servisn´ı vrstvy. Servisn´ı vrstva m˚ uˇze m´ıt pˇr´ımou referenci na Model nebo m˚ uˇze b´ yt aktualizace provedena pˇres ˇ c. Radiˇ
5.4.2
MVC v prostˇ red´ı webu
ˇ cem nen´ı u desktopov´ Rozliˇsovat rozd´ıl mezi Pohledem a Radiˇ ych aplikac´ı aˇz tak d˚ uleˇzit´e a nˇekter´e frameworky explicitnˇe logick´e rozdˇelen´ı pˇr´ısluˇsn´e ˇc´asti prezentaˇcn´ı vrstvy do tˇechto MVC komponent nevyˇzaduj´ı (napˇr´ıklad st´ale ˇsiroce pouˇz´ıvan´ y Swing toolkit).
68
Moˇznosti n´avrhu webov´ych aplikac´ı
Prezentaˇcn´ı vrstva
Nicm´enˇe zejm´ena u webov´ ych aplikac´ı je situace zcela jin´a a MVC architektura je zde naprosto pˇrirozenˇe vyuˇzita pro dekompozici komponent staraj´ıc´ıch se o generov´an´ı HTML k´ odu od ˇc´ ast´ı syst´emu obsluhuj´ıc´ıch HTTP poˇzadavky: - Model je identick´ y s Modelem v desktopov´ ych technologi´ıch (obsahuje data a dom´enovou logiku). - Pohled je ta ˇc´ ast serverov´eho k´odu, kter´a se star´a o generov´an´ı HTML k´odu. M˚ uˇze vˇsak prezentovat data i jinak, napˇr´ıklad ve form´atu XML, JSON (JavaScript Object Notation), PDF (Portable Document Format) atp. ˇ c se v prostˇred´ı webu nejˇcastˇeji skl´ad´a ze dvou hlavn´ıch ˇc´ast´ı. Prvn´ı - Radiˇ je tzv. Front Controller, kter´ y zachyt´av´a vˇsechny HTTP poˇzadavky. Ty n´aˇ c˚ slednˇe zpracuje a pˇrepoˇsle dalˇs´ım Radiˇ um, kter´e jsou obvykle identifikov´any ˇ uvodnˇe poch´azepodle URI. Konkr´etn´ı Radiˇc potom typicky pˇrijme data p˚ j´ıc´ı z HTTP poˇzadavku, uloˇz´ı je do Modelu a ten prov´aˇze s konkr´etn´ım Pohledem. Situace se komplikuje v pˇr´ıpadˇe, kdy je vyuˇzito technologi´ı jako je AJAX (Asynchronous JavaScript and XML). V tˇechto situac´ıch je znaˇcn´a ˇc´ast prezentaˇcn´ı logiky (tedy Pohledu) pˇresunuta na klienta (jak velk´a ˇc´ast z´aleˇz´ı na konkr´etn´ı implementaci). Nicm´enˇe lze ˇr´ıci, ˇze i v tˇechto pˇr´ıpadech je architektura MVC vyuˇziteln´ a.
JavaServer Pages Jako nejtypiˇctˇejˇs´ıho pˇredstavitele uplatnˇen´ı MVC ve svˇetˇe webov´ ych Java aplikac´ı m˚ uˇzeme jmenovat technologii tzv. servlet˚ u a s t´ım souvisej´ıc´ı JavaServer Pages (JSP). Servlet je velmi obecnˇe ˇreˇceno tˇr´ıda odpovˇedn´a za zpracov´an´ı HTTP poˇzadavku a vytvoˇren´ı odpov´ıdaj´ıc´ı odpovˇedi [22]. Servletu b´ yv´a v pr˚ umˇern´e webov´e aplikaci cel´ a ˇrada a jejich organizaci a mapov´an´ı na jednotliv´a URL m´a na starosti tzv. servletov´e nebo tak´e webov´e kontejnery, coˇz jsou vlastnˇe obecnˇe zn´am´e Java servery“ jako je napˇr´ıklad Apache Tomcat nebo GlassFish. Tyto kontejnery ” obvykle vytvoˇr´ı jednu nebo v´ıce instanc´ı od kaˇzd´eho servletu a pokud na server pˇrijde HTTP poˇzadavek, je vyvol´ana odpov´ıdaj´ıc´ı metoda instance servletu namapovan´eho na URL tohoto poˇzadavku. JSP servlet je pot´e velmi specifick´ y typ servletu. Jeho programov´ y z´apis totiˇz nen´ı realizov´ an v Javˇe, ale ve struktuˇre velmi bl´ızk´e HTML. Je moˇzn´e do znaˇcek HTML m´ıchat“ dalˇs´ı tagy ze standardn´ıch JSP knihoven, vytvoˇrit si knihovnu ” vlastn´ı nebo d´ ale pouˇz´ıvat dalˇs´ıch ˇsablonovac´ıch n´astroj˚ u. Lze tak´e omezenˇe vyuˇz´ıt
69
Moˇznosti n´avrhu webov´ych aplikac´ı
Prezentaˇcn´ı vrstva
Java k´ od. Takto zapsan´ y servlet je pot´e internˇe v servletov´em kontejneru automaticky konvertov´ an na Java zdrojov´ y k´od a n´aslednˇe se chov´a jako kaˇzd´a jin´a tˇr´ıda. Nicm´enˇe jak ukazuje Obr. 5.10, c´ılem JSP servlet˚ u je jedin´a vˇec – form´atovat data ˇ obdrˇzen´ a ve od Radiˇce do podoby HTML k´odu (sch´ema nen´ı zcela pˇresn´e, obvykle ˇ c, ale pˇres nadˇrazen´ nejsou data do JSP servletu pˇred´ana pˇr´ımo pˇres Radiˇ y Front Controller ).
Obr´azek 5.10: Z´akladn´ı architektura JSP. ˇ c pot´e obvykle b´ Radiˇ yv´ a realizovan´ y jako klasick´ y programovˇe implementovan´ y ˇ ce m˚ servlet. V servletu Radiˇ uˇze b´ yt soustˇredˇena veˇsker´a logika souvisej´ıc´ı s pˇr´ıˇ c pravou dat k zobrazen´ı nebo vol´ an´ı niˇzˇs´ıch vrstev pro naˇcten´ı dat do Modelu. Radiˇ tak´e m˚ uˇze prov´ adˇet pˇresmˇerov´ an´ı a dalˇs´ı vˇeci, kter´e nutnˇe nesouvis´ı s aplikaˇcn´ı logikou – ta by mˇela leˇzet vˇzdy v aplikaˇcn´ı vrstvˇe. P˚ uvodn´ı ˇcist´e JSP se dnes jiˇz u d˚ uvodu velk´e pracnosti v´ yvoje moc nepouˇz´ıv´a a v praxi tuto technologii nahradily frameworky, kter´e moˇznosti JSP d´ale rozˇsiˇruj´ı. Je vˇsak nutn´e pochopit principy fungov´an´ı JSP a MVC architektury obecnˇe, protoˇze z nich vˇetˇsina modern´ıch framework˚ u pˇr´ımo vych´az´ı.
70
Moˇznosti n´avrhu webov´ych aplikac´ı
5.4.3
Prezentaˇcn´ı vrstva
Architektura MVP (Model-View-Presenter )
Architektonick´ y vzor MVP je principi´alnˇe podobn´ y MVC a oba vzory b´ yvaj´ı dost ˇcasto navz´ ajem zamˇen ˇov´ any. Nicm´enˇe jednotliv´e komponenty hraj´ı v MVP trochu jinou roli (Obr. 5.11).
Obr´azek 5.11: Sc´en´aˇr interakce v MVP achitektuˇre. Uˇzivatelsk´ y vstup a v´ ystup tentokr´at plnˇe kontroluje Pohled skrze ovl´adac´ı prvky uˇzivatelsk´eho rozhran´ı. Prim´ arn´ı motivac´ı pro oddˇelen´ı Pohledu a Presenteru (budeme nad´ ale pouˇz´ıvat anglick´e slovo presenter“, protoˇze pro nˇe nen´ı ˇz´adn´ y vhodn´ y ” ˇcesk´ y ekvivalent) uˇz nen´ı nutnost oˇsetˇren´ı ud´alost´ı od uˇzivatele a kontroly vstupu, d˚ uvody jsou ˇcistˇe architektonick´e (lepˇs´ı udrˇzovatelnost k´odu). Pohled m´a typicky pˇr´ımou vazbu na Presenter a ten obvykle pˇr´ımo pracuje s Pohledem, takˇze i tato vazba je silnˇejˇs´ı neˇz v pˇr´ıpadˇe MVC. Pohled oproti MVC nav´ıc zpracov´av´a uˇzivatelsk´ y vstup a je zde tedy dominantn´ı komponentou (typicky v reakci na ud´alost od uˇzivatele zavol´ a nˇejakou metodu v Presenteru). Presenter m˚ uˇze obsahovat prezentaˇcn´ı a aplikaˇcn´ı logiku (nebo deleguje aplikaˇcn´ı logiku do dˇr´ıve popsan´e servisn´ı vrstvy). Manipuluje s Modelem, coˇz (napˇr´ıklad pomoc´ı syst´emu posluchaˇc˚ u a notifikac´ı) zajist´ı aktualizaci Pohledu, nebo ovlivˇ nuje Pohled pˇr´ımo (z´ aleˇz´ı na implementaci a moˇznostech jazyka). Popsan´ y architektonick´ y vzor se tak´e oznaˇcuje jako Supervising Presenter. Existuj´ı dalˇs´ı modifikace MVP, napˇr´ıklad Passive View, kdy je naopak zv´ yˇsena odpovˇednost Presenteru a Pohled u ´plnˇe ztr´ac´ı vazbu na Model. Jejich popis vˇsak pˇresahuje u ´ˇcel tohoto textu. D˚ uvod, proˇc zde uv´ad´ıme tento architektonick´ y vzor je zejm´ena fakt, ˇze se MVP velice ˇcasto a zcela nespr´avnˇe zamˇen ˇuje s MVC. Pˇr´ıkladem vyuˇzit´ı MVP m˚ uˇze b´ yt toolkit WinForms, kter´ y je souˇc´ast´ı .NET Frameworku od spoleˇcnosti Microsoft.
71
Moˇznosti n´avrhu webov´ych aplikac´ı
Prezentaˇcn´ı vrstva
MVP v prostˇ red´ı webu MVC se dobˇre hod´ı pro klasick´e webov´e aplikace, kde jsou statick´e HTML str´anky generov´ any pˇr´ımo na serveru. Nicm´enˇe v pˇr´ıpadˇe modern´ıch AJAX aplikac´ı, kdy se ˇc´ast prezentaˇcn´ı vrstvy pˇresouv´a do klientsk´eho prohl´ıˇzeˇce, zaˇc´ın´a b´ yt MVC nevyhovuj´ıc´ı. Oproti tomu MVP architektura je pro tento u ´ˇcel jako stvoˇren´a. Jak je vidˇet na Obr´ azku 5.12, komponenta Pohledu (obvykle implementovan´a pomoc´ı JavaScriptu) se pˇresouv´ a do klientsk´eho prohl´ıˇzeˇce a m´ısto programov´eho rozhran´ı a vol´ an´ı metod budou tyto komunikovat napˇr´ıklad pomoc´ı HTTP protokolu. Pˇri vyplˇ nov´ an´ı formul´ aˇr˚ u je moˇzn´e validovat data pˇr´ımo na stranˇe klienta. Pokud tedy uˇzivatel klikne na tlaˇc´ıtko, kter´e m´a zobrazit nˇejak´e poloˇzky z datab´aze, je tento poˇzadavek zpracov´an na stranˇe webov´eho prohl´ıˇzeˇce a na pozad´ı se odeˇsle ˇz´ adost do Presenteru. Ten m˚ uˇze ze servisn´ı vrstvy naˇc´ıst patˇriˇcn´a data za datab´ aze a uloˇzit do Modelu. Pot´e dojde opˇet pomoc´ı HTTP protokolu k aktualizov´an´ı Pohledu tak, aby zobrazil aktu´aln´ı data. Z toho vypl´ yv´ a tak´e potenci´ al sn´ıˇzit z´atˇeˇz na servery a s´ıt’ obecnˇe. Jelikoˇz nen´ı potˇreba pˇri kaˇzd´em poˇzadavku sestavit cel´ y HTML dokument, ale pouze zobrazit aktualizovan´ y Model, je mnoˇzstv´ı vymˇen ˇovan´ ych dat v´ yraznˇe niˇzˇs´ı. Nicm´enˇe tento pˇr´ıstup naopak m˚ uˇze zv´ yˇsit poˇcet vymˇen ˇovan´ ych HTTP poˇzadavk˚ u, a tˇrebaˇze pˇren´aˇsej´ı niˇzˇs´ı mnoˇzstv´ı dat, pˇri nevhodn´e implementaci z´atˇeˇz neklesne.
Obr´azek 5.12: Sc´en´aˇr interakce ve webov´e MVP aplikaci.
5.4.4
JavaServer Faces
Jiˇz dˇr´ıve jsme si uk´ azali JSP jako jedno z uk´azkov´ ych nasazen´ı architektury MVC ve webov´e aplikaci. Nyn´ı si detailnˇeji rozebereme technologii JavaServer Faces
72
Moˇznosti n´avrhu webov´ych aplikac´ı
Prezentaˇcn´ı vrstva
(zkratkou JSF), kter´ a i pˇres to, ˇze z JSP pˇr´ımo vych´az´ı, se naopak bl´ıˇz´ı sp´ıˇse MVP architektuˇre. Myˇslenkou je opˇet oddˇelen´ı definice uˇzivatelsk´eho rozhran´ı (tzv. Faces) od vlastn´ı aplikaˇcn´ı a prezentaˇcn´ı logiky. I zde se tak dˇeje pomoc´ı soubor˚ u podobn´ ych HTML, ve kter´ ych je definov´ ano vlastn´ı uˇzivatelsk´e rozhran´ı. Pˇri psan´ı tˇechto XML soubor˚ u se pouˇz´ıvaj´ı speci´ aln´ı XML tagy, kter´e se importuj´ı z tzv. Tag Library Description (TLD) knihoven. I zde je vyuˇzito Front Controlleru a vykreslov´an´ı HTML str´ anky se odehr´ av´ a na serveru [23]. Prvn´ı rozd´ıl pˇrich´ az´ı v okamˇziku, kdy si uvˇedom´ıme, ˇze konfigurace grafick´eho rozhran´ı je komponentovˇe orientovan´a. Kaˇzd´ y tag m´a internˇe v r´amci sv´e knihovny pˇriˇrazeno nˇekolik Java tˇr´ıd. Soubor tˇechto tˇr´ıd se naz´ yv´a Komponenta. Tato programov´ a reprezentace vytv´ aˇr´ı aplikaˇcn´ı logiku tagu (jako konverzi hodnot na text, validaci a pˇr´ıpravu pro vykreslen´ı“ informace). Ke kaˇzd´e komponentˇe je vytvo” ˇren jej´ı programov´ y Renderer, kter´ y zap´ıˇse do v´ ystupu vlastn´ı HTML k´od a data z reprezentace tagu. Je tedy moˇzn´e vytvoˇrit cel´e uˇzivatelsk´e rozhran´ı aniˇz bychom pouˇzili jedin´ y HMTL tag. V JSF tak´e odpad´a nutnost vyuˇzit´ı ˇsablonovac´ıch framework˚ u (souˇc´ ast´ı je framework Facelets, kter´ y umoˇzn ˇuje ˇsablonov´an´ı). Jak je vidˇet na Obr´ azku 5.13, JSF zav´ad´ı tak´e pojem backing nebo tak´e managed beans. Pˇrestoˇze jsou tyto beany“ ˇcasto realizov´any jako POJO objekty, ” nemaj´ı v˚ ubec nic spoleˇcn´eho s dom´enov´ ym modelem aplikace. Reprezentuj´ı ty tˇr´ıdy, jejichˇz instance by mˇely b´ yt dynamicky vytv´aˇreny za bˇehu aplikace spolu s generov´ an´ım HTML str´ anek, pˇriˇcemˇz je moˇzn´e urˇcit jejich rozsah“ (scope) ne” boli kontext ve kter´em budou konkr´etn´ı instance referencovateln´e (je moˇzn´e urˇcit rozsah v r´ amci jednoho HTTP poˇzadavku, uˇzivatelsk´e relace, v r´amci cel´eho bˇehu aplikace atp.). Jednotliv´e ˇclensk´e promˇenn´e a metody tˇechto objekt˚ u jsou pot´e za pomoci tzv. bindov´ an´ı moˇzn´e referencovat pˇr´ımo z XML soubor˚ u jednotliv´ ych Pohled˚ u a na ud´ alosti vyvolan´e uˇzivatelem (napˇr´ıklad odesl´an´ı vyplnˇen´eho formul´aˇre) volat pˇr´ımo metody backing beany. Jak je tedy patrn´e, architektura JSF je v pˇr´ım´e shodˇe s architektonick´ ym ˇ vzorem MVP – dominantn´ı komponentou zde nen´ı Radiˇc ani Presenter, ale je to pr´ avˇe Pohled, kter´ y je pˇri konstrukci HTML str´anky vytvoˇren jako prvn´ı a jednotliv´e backing beany hraj´ı roli zpˇr´ıstupnˇen´ı Modelu a dodateˇcn´e prezentaˇcn´ı logiky. Backing beany tak´e mohou pˇr´ımo ovlivˇ novat Pohled, protoˇze jednotliv´e komponenty jsou referencovateln´e jako klasick´e Java objekty pˇr´ımo z aplikaˇcn´ıho k´odu, coˇz je dalˇs´ı obrovsk´ a v´ yhoda oproti JSP (i kdyˇz trochu nav´ad´ı k vytv´aˇren´ı r˚ uzn´ ych form´ atovac´ıch zkratek“ v Presenteru, coˇz je principi´alnˇe ˇspatnˇe). ” JSF nicm´enˇe zach´ az´ı jeˇstˇe d´al. Nˇekter´e TLD knihovny (napˇr. MyFaces nebo Primefaces) obsahuj´ı komponenty, kter´e mohou s backing beanou pˇr´ımo komunikovat pomoc´ı AJAXu. Renderery tˇechto komponent pˇri vytv´aˇren´ı (z principu
73
Moˇznosti n´avrhu webov´ych aplikac´ı
Prezentaˇcn´ı vrstva
Obr´azek 5.13: Z´akladn´ı architektura JSF. statick´eho) HTML k´ odu jednoduˇse pˇridaj´ı do str´anky JavaScript, kter´ y umoˇzn´ı obousmˇernou komunikaci mezi serverem a webov´ ych prohl´ıˇzeˇcem klienta. Pohled se pak ˇc´ asteˇcnˇe pˇresouv´ a do webov´eho prohl´ıˇzeˇce a program´ator˚ um je umoˇznˇeno vytv´aˇret velice rychle robustn´ı interaktivn´ı webov´e grafick´e rozhran´ı, aniˇz by napsali jedinou ˇr´ adku HTML nebo JavaScriptov´eho k´odu.
5.4.5
Shrnut´ı
V pˇredchoz´ıch kapitol´ ach jsme se sezn´amili s architektonick´ ymi postupy uplatniteln´ ymi pˇri n´ avrhu rozs´ ahl´ ych webov´ ych aplikac´ı a distribuovan´ ych informaˇcn´ıch syst´em˚ u a nejpouˇz´ıvanˇejˇs´ımi frameworky, kter´e tyto postupy implementuj´ı pro platformu postavenou na programovac´ım jazyce Java. Definovali jsme z´akladn´ı architektonick´e pojmy jako je tˇr´ıvrstv´ a architektura, dom´enov´y model a bude ˇz´adouc´ı se tˇechto term´ın˚ u a postup˚ u drˇzet i nad´ale. Nicm´enˇe dosud jsme se zab´ yvali architekturou, kter´a sledovala jedin´ y c´ıl – poskytnut´ı webov´eho rozhran´ı ˇciteln´eho a pouˇziteln´eho pro lidsk´eho uˇzivatele. Nyn´ı je tˇreba si poloˇzit ot´ azku, jak mohou s webov´ ymi aplikacemi komunikovat jin´e syst´emy nebo klienti, kteˇr´ı neumoˇzn ˇuj´ı zobrazovat webov´e str´anky nebo je z nˇejak´eho d˚ uvodu neˇz´ adouc´ı ˇci nepraktick´e tˇemto klient˚ um webov´e rozhran´ı poskytovat.
74
Moˇznosti n´avrhu webov´ych aplikac´ı
5.5
Architektura orientovan´a na sluˇzby
Architektura orientovan´ a na sluˇ zby
Architektura orientovan´ a na sluˇzby (Service-oriented architecture, zkratkou SOA) je obecn´ y architektonick´ y vzor zaloˇzen´ y na spolupr´aci navz´ajem nez´avisl´ ych sluˇzeb [24]. Motivac´ı pro vytvoˇren´ı SOA byla rostouc´ı n´aroˇcnost na udrˇzov´an´ı spolupr´ace r˚ uzn´ ych vnitropodnikov´ ych syst´em˚ u. D´ıky jejich platformn´ı z´avislosti a navz´ajem nekompatibiln´ıch programov´ ych rozhran´ı bylo jen velmi obt´ıˇznˇe zajistit vz´ajemnou komunikaci tˇechto syst´em˚ u.
5.5.1
Sluˇ zba v SOA
Sluˇzba je urˇcit´ a ˇc´ ast funkˇcnosti aplikace, kter´a je zpˇr´ıstupnˇen´a pomoc´ı definovan´eho rozhran´ı. Kaˇzd´ y jednotliv´ y informaˇcn´ı syst´em m˚ uˇze poskytovat sadu sluˇzeb sv´emu okol´ı. Za sluˇzbou v SOA stoj´ı vˇetˇsinou pomˇernˇe velk´e mnoˇzstv´ı programov´eho k´ odu a jakkoliv je princip vol´an´ı sluˇzeb podobn´ y vol´an´ı metod, prob´ıh´a zde na vyˇsˇs´ı u ´rovni granularity. Rozhran´ı sluˇzeb tak´e nen´ı z´ avisl´e na implementaci hostitelsk´eho syst´emu. Hranice syst´emu se od programov´ ych rozhran´ı posunuj´ı d´ale od klasick´eho programov´eho API k jasnˇe definovan´emu rozhran´ı, ve kter´em dan´a sluˇzba data produkuje ˇci pˇrij´ım´ a bez ohledu na to, v jak´e technologii je tato sluˇzba implementov´ana. Ve vˇetˇsinˇe pˇr´ıpad˚ u se pak pro komunikaci mezi sluˇzbami d´ıky vysok´e prostupnosti s´ıt´ı, platformn´ı nez´ avislosti a pˇrenositelnosti vyuˇz´ıv´a HTTP protokol. Pˇren´aˇsen´ y form´ at dat m˚ uˇze b´ yt v podstatˇe libovoln´ y, pokud vˇsichni akt´eˇri komunikace tento form´ at podporuj´ı. Nicm´enˇe zdaleka nejvyuˇz´ıvanˇejˇs´ı jsou form´aty postaven´e (zejm´ena z d˚ uvodu transparentnosti a multiplatformnosti) na b´azi XML. Takov´e sluˇzby se pot´e zpravidla oznaˇcuj´ı jako sluˇzby webov´e (Web Services). Takov´e sluˇzby se pak obvykle jednoznaˇcnˇe identifikuj´ı na z´akladˇe URL adresy.
5.5.2
SOA a tˇ r´ıvrstv´ a architektura
V´ıcevrstv´ a architektura se SOA spolu navz´ajem velice u ´zce souvis´ı. Jednotliv´e syst´emy jsou obvykle distribuovan´e, v´ıcevrstv´e aplikace s prezentaˇcn´ı, aplikaˇcn´ı a perzistentn´ı vrstvou. Nicm´enˇe veˇsker´a funkcionalita takov´e aplikace je vystavena prostˇrednictv´ım sluˇzeb, nebo je vytvoˇreno rozhran´ı, kter´e tyto sluˇzby navenek poskytuje. V SOA aplikac´ıch se typicky neudrˇzuje stav konverzace s klientem, komunikace obvykle prob´ıh´ a zp˚ usobem dotaz-odpovˇed’. T´ım se n´apadnˇe bl´ıˇz´ı jednodu-
75
Moˇznosti n´avrhu webov´ych aplikac´ı
Architektura orientovan´a na sluˇzby
ch´emu HTTP poˇzadavku s t´ım rozd´ılem, ˇze URL poˇzadavku tentokr´at neidentifikuje HTML str´ anku, ale pˇr´ımo konkr´etn´ı webovou sluˇzbu. Je tedy zcela jistˇe moˇzn´e (v pˇr´ıpadˇe pˇredchoz´ı dobr´e dekompozice probl´emu) rozhran´ı webov´ ych sluˇzeb implementovat za vyuˇzit´ı architektonick´eho vzoru MVC na prezentaˇcn´ı vrstvˇe, kdy jedin´ y rozd´ıl nastane v Pohledu, kter´ y m´ısto zobraziteln´eho HTML bude generovat XML dokument o pˇredem dan´em sch´ematu.
5.5.3
V´ yhody SOA
D´ıky bezstavosti a slab´emu prov´az´an´ı komponent je moˇzn´e sluˇzby skl´adat do vˇetˇs´ıch celk˚ u, coˇz ide´ alnˇe splˇ nuje potˇrebu podnik˚ u pokr´ yt a integrovat sv´e vnitropodnikov´e procesy pomoc´ı informaˇcn´ıho syst´emu. Jednotliv´e komponenty je moˇzn´e pˇri v´ ypadku velice rychle nahradit nebo zav´est centr´aln´ı registr sluˇzeb, kter´ y umoˇzn´ı vyhled´ av´ an´ı aktivn´ıch sluˇzeb a z´ısk´an´ı jejich popisu (mechanismus Universal Description, Discovery and Integration, zkratkou UDDI).
5.5.4
Protokoly komunikace v SOA
Jiˇz dˇr´ıve jsme si ˇrekli, ˇze data jsou v SOA architektuˇre obvykle pˇren´aˇseny pomoc´ı XML dokument˚ u. Tyto lze ale d´ale strukturovat podle pˇredem definovan´ ych sch´emat a pravidel a vytv´ aˇret komunikaˇcn´ı protokoly, kter´ y jsou na XML form´atu zaloˇzen´e.
Simple Object Access Protocol (SOAP) SOAP je standardizovan´ y protokol pro v´ ymˇenu dat mezi webov´ ymi sluˇzbami [25], kter´ y je obvykle pouˇzit spolu s HTTP protokolem. Zpr´avu zde reprezentuje jednoduch´ y XML dokument, kter´ y m´a koˇrenov´ y element Envelope. V t´eto ob´alce jsou pak uzavˇreny dva elementy Header (hlaviˇcka) a Body (tˇelo). Hlaviˇcka se zpravidla pouˇz´ıv´ a pro pˇrenos pomocn´ ych informac´ı pro zpracov´an´ı zpr´avy – napˇr´ıklad autorizaci klienta. V tˇele zpr´avy se pˇren´aˇs´ı identifik´ator volan´e sluˇzby a parametry zpr´ avy, resp. n´avratov´e hodnoty sluˇzby. SOAP pouˇz´ıv´a jmenn´e prostory pro identifikov´ an´ı jednotliv´ ych ˇc´ast´ı XML zpr´avy. Je tˇreba zd˚ uraznit, ˇze SOAP protokol je orientov´ an procedur´alnˇe a funguje na principu RPC (Remote Procedure Call ). Komunikace m˚ uˇze b´ yt v SOAP stavov´a.
76
Moˇznosti n´avrhu webov´ych aplikac´ı
Architektura orientovan´a na sluˇzby
Typick´ y SOAP poˇzadavek se zas´ıl´a v tˇele HTTP poˇzadavku. Pouˇz´ıv´a se pˇritom metoda POST, kter´ a podle [26] dovoluje pos´ılat data v tˇele HTTP poˇzadavku. Nicm´enˇe ten m˚ uˇze m´ıt i dalˇs´ı metody, kter´e je moˇzn´e vyuˇz´ıt. Z toho by mˇelo b´ yt patrn´e, ˇze klasick´ a SOAP komunikace vytv´aˇr´ı vlastn´ı protokol nad klasick´ ym HTTP a nesnaˇz´ı se jej nijak d´ ale vyuˇz´ıt. HTTP protokol je pˇritom dostateˇcnˇe robustn´ı na to, aby bylo moˇzn´e jej rozˇs´ıˇrit aˇz do u ´rovnˇe protokolu urˇcen´eho pro webov´e sluˇzby.
Representational State Transfer (REST) REST je architektura rozhran´ı navrˇzen´a pro distribuovan´e prostˇred´ı. REST je narozd´ıl od SOAP orientov´ an datovˇe, nikoli procedur´alnˇe: rozhran´ı webov´ ych REST sluˇzeb je pouˇziteln´e pro jednotn´ y a snadn´ y pˇr´ıstup k tzv. zdroj˚ um (dat˚ um nebo stav˚ um aplikace, pokud je lze popsat konkr´etn´ımi daty). Vˇsechny zdroje jsou jednoznaˇcnˇe identifikovateln´e pomoc´ı URI a jsou reprezentov´any (a pˇren´aˇseny) pomoc´ı r˚ uzn´ ych datov´ ych form´ at˚ u (XML, JSON nebo jin´eho form´atu, kter´ y je moˇzn´e odeslat pomoc´ı HTTP). REST definuje z´ akladn´ı CRUD(Create-Read-Update-Delete) metody pro manipulaci s tˇemito zdroji (metody mˇen´ı stav zdroje). Tyto metody jsou pot´e realizov´any pomoc´ı odpov´ıdaj´ıc´ıch HTTP metod (GET, POST, PUT, DELETE ). Je tedy patrn´e, ˇze zat´ımco SOAP pouˇz´ıval HTTP pouze jako jeden z moˇzn´ ych komunikaˇcn´ıch kan´ al˚ u, REST na architektuˇre HTTP pˇr´ımo stav´ı a d´ale ji rozˇsiˇruje. Narozd´ıl od SOAP neexistuj´ı ˇz´adn´e specifikace kladen´e na strukturu dat. REST je tak´e koncipov´ an jako bezestavov´ y. Jednotliv´e implementace REST rozhran´ı (tedy webov´e sluˇzby) se pot´e pˇri splnˇen´ı tˇechto podm´ınek obvykle oznaˇcuj´ı jako RESTful. SOAP definuje vlastn´ı zp˚ usoby autorizace, REST vyuˇz´ıv´a HTTP autorizace. Autorizaˇcn´ı tokeny ale mus´ı b´ yt odesl´any s kaˇzd´ ym poˇzadavkem, jinak nen´ı splnˇena podm´ınka bezestavosti (webov´ a sluˇzba si o klientovi nesm´ı nic pamatovat“). ”
Srovn´ an´ı REST a SOAP Uˇcinit objektivn´ı srovn´ an´ı tˇechto dvou protokol˚ u nen´ı zcela moˇzn´e uˇz jen kv˚ uli tomu, ˇze se oba od sebe odliˇsuj´ı samotnou svou koncepc´ı. Aˇc je to dnes popul´arn´ı n´azor, REST nen´ı vˇzdy tou spr´ avnou volbou. Sice je implementaˇcnˇe mnohem m´enˇe n´aroˇcn´ y a pouze rozˇsiˇruje standardn´ı HTTP protokol, d´ıky jeho datacentrismu“ ” a omezen´e mnoˇzinˇe CRUD operac´ı m˚ uˇze b´ yt implementaˇcnˇe pˇr´ıliˇs svazuj´ıc´ı. Tak´e bezestavost komunikace se m˚ uˇze uk´azat jako velk´ y probl´em. Jednoduchost REST
77
Moˇznosti n´avrhu webov´ych aplikac´ı
Technologick´e n´astroje pro v´yvoj
rozhran´ı m˚ uˇze b´ yt v´ yhoda a slabina z´aroveˇ n, vˇzdy z´aleˇz´ı na pˇr´ıpadu implementace. Obecnˇe lze ˇr´ıci ˇze REST je velmi siln´ y ve spojen´ı s technologiemi jako je AJAX nebo ke vzd´ alen´e spr´ avˇe datab´ aze (k ˇcemuˇz vyb´ız´ı uˇz jen z´akladn´ı CRUD matice operac´ı). SOAP je robustnˇejˇs´ı a d´ıky stavov´e komunikaci a procedur´aln´ı orientaci je mnohem vhodnˇejˇs´ı k realizaci komunikace mezi dvˇema netrivi´aln´ımi informaˇcn´ımi syst´emy, coˇz je ovˇsem vykoupeno potˇrebou mnohem rozs´ahlejˇs´ı implementace. Nav´ıc funguje stejnˇe dobˇre i na jin´ ych s´ıt’ov´ ych vrstv´ach a nen´ı tˇreba se omezovat na pouh´ y HTTP protokol.
5.6
Technologick´ e n´ astroje pro v´ yvoj
Vˇsechny dˇr´ıve zm´ınˇen´e architektonick´e vzory je moˇzn´e implementovat manu´alnˇe“ ” a sv´epomoc´ı spravovat a udrˇzovat jednotliv´e vazby mezi dom´enov´ ymi objekty, mezi vrstvami, komponentami ˇci uˇzit´ ymi frameworky. Nicm´enˇe takto postaven´a aplikace je jen obt´ıˇznˇe znovupouˇziteln´ a a nen´ı nutn´e vlastn´ım k´odem ˇreˇsit probl´emy, kter´e jiˇz nˇekdo vyˇreˇsil pˇred n´ ami. V t´eto kapitole si uk´aˇzeme postupy, kter´e vedou ke zjednoduˇsen´ı vlastn´ıho aplikaˇcn´ıho k´odu a pˇredstav´ıme si framework, kter´ y tyto postupy implementuje.
5.6.1
Aspektovˇ e orientovan´ e programov´ an´ı
Principem aspektovˇe orientovan´eho programov´ an´ı (zkratkou AOP) je oddˇelen´ı nˇekter´ ych ˇc´ ast´ı k´ odu, tzv. pr˚ uˇrezov´ych koncern˚ u (cross-cutting concerns), od vlastn´ı aplikaˇcn´ı logiky. Jako pr˚ uˇrezov´ y koncern m˚ uˇzeme definovat takov´ y k´od, kter´ y se dot´ yk´ a mnoha r˚ uzn´ ych ˇc´ ast´ı aplikace (pˇr´ıkladem mohou b´ yt napˇr´ıklad transakˇcn´ı a bezpeˇcnostn´ı algoritmy nebo logov´an´ı) a nen´ı jednoduch´e ho dekomponovat. AOP se snaˇz´ı tyto koncerny organizovat do tzv. aspekt˚ u. AOP nen´ı n´ ahrada jin´ ych programovac´ıch technik jako je napˇr. objektovˇe orientovan´e programov´ an´ı, slouˇz´ı sp´ıˇse jako architektonick´ y doplnˇek k jiˇz zaveden´ ym technik´ am a uplatn´ı se zejm´ena tam, kde tyto techniky ve snaze dobˇre dekomponovat k´ od jiˇz nestaˇc´ı nebo je jejich uplatnˇen´ı neˇsikovn´e. Aspekty upravuj´ı chov´ an´ı programu pˇri spouˇstˇen´ı metod, pˇr´ıstupu k atribut˚ um tˇr´ıdy nebo pˇri vyhozen´ı v´ yjimky. Tato m´ısta se oznaˇcuj´ı jako pˇr´ıpojn´e body (joinpoints). Samotn´ au ´prava chov´ an´ı aplikaˇcn´ıho k´odu (realizovan´a opˇet jako prost´ y blok k´ odu) se pot´e oznaˇcuje jako advice. V Javˇe se pak oznaˇcen´ı pˇr´ıpojn´ ych bod˚ u v aplikaˇcn´ım k´ odu obvykle ˇreˇs´ı pomoc´ı anotac´ı.
78
Moˇznosti n´avrhu webov´ych aplikac´ı
Technologick´e n´astroje pro v´yvoj
Java Anotace Anotace jsou vlastnˇe jenom textov´e znaˇcky v k´odu o urˇcit´em pˇredepsan´em form´atu (anotac´ı je i notoricky zn´ am´e @Override), jejichˇz c´ılem je nˇejak´emu programov´emu primitivu pˇriˇradit pˇr´ıznak nebo metadata. Anotace je moˇzn´e vyhodnocovat pˇri pˇrekladu nebo pˇri samotn´em bˇehu programu (to ovˇsem vyˇzaduje speci´aln´ı classloader ). Ve spojen´ı s AOP mohou identifikovat ta programov´a primitiva, kter´ ym se m´a pˇriˇradit aspekt (ten je identifikovan´ y samotnou anotac´ı). I bez vyuˇzit´ı AOP je moˇzn´e vytv´ aˇret anotace vlastn´ı pro u ´ˇcely napˇr. dokumentace, statick´eho generov´an´ı k´ odu atp. Anotac´ım je moˇzn´e vytv´ aˇret parametry a tˇem pˇri pouˇzit´ı anotace pˇred´avat hodnoty, coˇz jejich moˇznosti d´ ale rozˇsiˇruje (je moˇzn´e tyto hodnoty pˇred´avat aspekt˚ um, kter´e jsou anotacemi identifikov´ any).
5.6.2
Spring Framework
C´ılem t´eto kapitoly je pˇredstavit framework, kter´ y umoˇzn ˇuje spojit vˇetˇsinu uveden´ ych technologi´ı a postup˚ u do jednoho kompaktn´ıho celku – Spring Framework. Tento velice popul´ arn´ı modul´ arn´ı aplikaˇcn´ı framework umoˇzn ˇuje velice rychle vytv´aˇret rozs´ ahl´e aplikace za vyuˇzit´ı principu Inversion of Control, kdy je framework za bˇehu aplikace zodpovˇedn´ y za vytvoˇren´ı a prov´az´an´ı objekt˚ u implementovan´e aplikace a na program´ atorovi z´ avis´ı pouze samotn´a implementace aplikaˇcn´ı logiky [27]. To je moˇzn´e d´ıky pokroˇcil´ ym programovac´ım technik´am, jako je napˇr´ıklad reflexe. Nicm´enˇe hlavn´ı ˇc´ ast Spring Frameworku stoj´ı pr´avˇe na anotac´ıch a AOP. Jednotliv´e komponenty aplikaˇcn´ı logiky, jako jsou napˇr. POJO objekty, se doslova zaregistruj´ı“ do aplikaˇcn´ıho frameworku a tento s tˇemito komponentami ” d´ale manipuluje. Je moˇzn´e si pˇredstavit napˇr´ıklad implementaci n´avrhov´eho vzoru MVC, kdy program´ ator implementuje vˇsechny tˇri komponenty Pohledu, Modelu a ˇ ce, aniˇz by tyto na sebe mˇely navz´ajem jakoukoliv programovou vazbu nebo Radiˇ dˇedily nˇejakou generickou implementaci. Aplikaˇcn´ı framework se pak za bˇehu aplikace postar´ a o jejich vz´ ajemn´e prov´az´an´ı. Za vyuˇzit´ı reflexe a AOP Spring Framework d´ ale injektuje vlastn´ı aplikaˇcn´ı k´od (neboli aspekty) do zdrojov´eho k´odu vytv´aˇren´e aplikace, a to bud’ na z´akladˇe XML konfigurace, nebo pomoc´ı jiˇz zm´ınˇen´ ych anotac´ı. Mezi ˇc´ asti Spring Frameworku patˇr´ı komponenty pro ORM mapov´an´ı, testovac´ı n´astroje, integraci uˇzivatelsk´ ych komponent, modul´arnˇe orientovan´ y v´ yvoj, webov´e aplikace a webov´e sluˇzby, bezpeˇcnost na z´akladˇe rol´ı a ˇrada dalˇs´ıch. Podrobn´ y popis tˇechto komponent jde dalece nad r´amec t´eto pr´ace a v pˇr´ıpadˇe nutnosti budou jednotliv´e komponenty v dalˇs´ım textu struˇcnˇe pops´any.
79
Moˇznosti n´avrhu webov´ych aplikac´ı
5.7
Shrnut´ı
Shrnut´ı
Nyn´ı jiˇz m´ ame obecn´ y pˇrehled o tom, jak´e architektonick´e vzory m˚ uˇzeme vyuˇz´ıt pro programov´ an´ı rozs´ ahl´ ych distribuovan´ ych syst´em˚ u a zn´ame ˇsiroce vyuˇz´ıvan´e technologie stavˇej´ıc´ı na Java platformˇe, kter´e tyto postupy implementuj´ı. V dalˇs´ı kapitole si uk´ aˇzeme konkr´etn´ı syst´em, kter´ y byl implementov´an s c´ılem pokr´ yt poˇzadavky na syst´em spr´ avy rezervac´ı, kter´e byly uvedeny v Kapitole 4.
80
6 RAT - Reserve A Thing! V t´eto kapitole se sezn´ am´ıme s informaˇcn´ım syst´emem RAT a detailnˇeji rozebereme implementaˇcn´ı detaily vˇsech jeho ˇc´ast´ı zejm´ena s ohledem na obecn´e postupy a technologie, kter´e byly uvedeny v Kap. 5. Na z´avˇer se sezn´am´ıme s uskuteˇcnˇen´ ym testov´ an´ım a nasazen´ım tohoto syst´emu.
6.1
Informaˇ cn´ı syst´ em RAT
RAT je n´ azev informaˇcn´ıho syst´emu, kter´ y byl implementov´an za c´ılem pokr´ yt poˇzadavky na syst´em spr´ avy rezervac´ı definovan´e v Kap. 4. Sest´av´a se z centr´aln´ıho serveru RatServer a mobiln´ı aplikace RatDroid, kter´a byla implementov´ana pro mobiln´ı platformu Android. Nad r´amec specifikace byla vytvoˇrena i aplikace pro platformu Windows Phone s n´ azvem RatSharp.
6.1.1
Z´ akladn´ı rozvrˇ zen´ı syst´ emu
Jednotliv´e mobiln´ı aplikace hraj´ı roli klient˚ u centr´aln´ıho serveru. Server ve shodˇe se specifikac´ı poskytuje tak´e webov´e rozhran´ı. Jednotliv´e klientsk´e mobiln´ı aplikace vyuˇz´ıvaj´ı webov´ ych sluˇzeb, kter´e centr´aln´ı server poskytuje (Obr. 6.1).
Obr´azek 6.1: Informaˇcn´ı syst´em RAT. 81
RAT - Reserve A Thing!
6.2 6.2.1
RAT server
RAT server Z´ akladn´ı architektura serveru
Na Obr´ azku 6.2 je zn´ azornˇeno zjednoduˇsen´e sch´ema serverov´e aplikace, vˇcetnˇe rozpisu nejvˇetˇs´ıch uˇzit´ ych framework˚ u. V dalˇs´ım textu se budeme podrobnˇe vˇenovat jednotliv´ ym ˇc´ astem syst´emu, pˇriˇrazovat jim jednotliv´e Java bal´ıky z re´aln´e implementace a zaob´ırat se kontextem komponent v˚ uˇci zbytku syst´emu (rozkreslit celou serverovou aplikaci do jednoho sch´ematu nen´ı vzhledem k jej´ı obs´ahlosti dost dobˇre moˇzn´e).
Obr´azek 6.2: Architektura a pouˇzit´e technologie. Architektura serverov´e ˇc´ asti je datacentrick´a a servisovˇe orientovan´a podle vzoru Operation Script (viz Kap. 5). Dom´enov´ y model tvoˇr´ı pouze POJO objekty bez aplikaˇcn´ı logiky, kter´ a je soustˇredˇena v servisn´ı vrstvˇe. V´ yhodou tohoto pˇr´ıstupu je zejm´ena jednoduch´ a implementace SOA architektury, kter´a s vnitˇrn´ı servisn´ı vrstvou nepˇr´ımo souvis´ı.
82
RAT - Reserve A Thing!
6.2.2
RAT server
Dom´ enov´ y model
Z´aklad cel´e architektury centr´ aln´ıho serveru je sada dom´enov´ ych POJO objekt˚ u, um´ıstˇen´ ych v bal´ıku beans. Objekty jsou vˇcetnˇe vz´ajemn´ ych vazeb zn´azornˇeny na Diagramu 6.1.
Diagram 6.1: Dom´enov´ y diagram syst´emu. N´asleduje popis jednotliv´ ych dom´enov´ ych objekt˚ u a jejich vazeb.
ObjectClass POJO objekt reprezentuj´ıc´ı tˇr´ıdu objekt˚ u. Kromˇe specifikac´ı jiˇz pˇredem urˇcen´ ych atribut˚ u (name a description) pˇrid´av´a tak´e bin´arn´ı pˇr´ıznaky pickable a returnable, kter´e definuj´ı nutnost potvrzen´ı vyzvednut´ı a vr´acen´ı objekt˚ u, kter´e patˇr´ı do t´eto tˇr´ıdy.
83
RAT - Reserve A Thing!
RAT server
Object Reprezentuje pˇredmˇet rezervace a v´ yp˚ ujˇcky.
User Objekt reflektuj´ıc´ı uˇzivatele syst´emu. K atribut˚ um, kter´e pˇr´ımo vypl´ yvaj´ı z poˇzadavk˚ u na syst´em, jsou jeˇstˇe nav´ıc definov´any atributy Role a Implementor. Budeme se jimi zab´ yvat v dalˇs´ım textu.
Reservation Reprezentace rezervace objektu. Jej´ım c´ılem je sv´azat uˇzivatele, objekt a ˇcasov´e periody n´ aleˇzej´ıc´ı t´eto rezervaci do jednoho logick´eho celku.
Period ˇ Casov´ a perioda rezervace. Definuje ˇcasov´e rozpˇet´ı rezervace (atributy fromDate a toDate) a platnost rezervace (atribut valid). Za zm´ınku vˇsak stoj´ı zejm´ena atributy ud´ avac´ıc´ı ˇzivotn´ı cyklus“ periody rezervace – pickAction a returnAction. ” Datov´ y typ pickAction atributu je v´ yˇctov´ y enum PickAction se ˇcleny PICKED, NOT_PICKED a NOT_PICKABLE. Tento atribut je pˇr´ımo sv´azan´ y s objektem rezervace – pokud je objekt nastaven´ y jako nepotvrzovan´ y pˇri vyzvednut´ı, jsou vˇsechny periody takov´e rezervace automaticky nastaveny jako NOT_PICKABLE, v opaˇcn´em pˇr´ıpadˇe pak na NOT_PICKED. Syst´em tak m˚ uˇze od sebe odliˇsit jednotliv´e poˇzadovan´e akce pro rezervace a podle toho ˇr´ıdit dalˇs´ı chov´an´ı. Pˇri vyzvednut´ı se atribut pˇreklop´ı do stavu PICKED. Obdobn´a situace plat´ı i pro atribut returnAction.
6.2.3
Datov´ a vrstva
V projektu je plnˇe vyuˇzito moˇznost´ı relaˇcn´ıch datab´az´ı a ORM mapov´an´ı. Jako mapovac´ı framework byl pouˇzit Hibernate. Na Digramu 6.2 je zn´azornˇena z´akladn´ı struktura relaˇcn´ı datab´ aze, vˇcetnˇe vz´ajemn´ ych vazeb jednotliv´ ych datab´azov´ ych entit (prim´ arn´ı kl´ıˇce tabulek jsou podtrˇzeny a znaˇceny tuˇcn´ ym p´ısmem, povinnˇe vyplniteln´e poloˇzky zaˇc´ınaj´ı ˇcernˇe vybarven´ ym koleˇckem).
84
RAT - Reserve A Thing!
RAT server
Diagram 6.2: ER diagram datab´aze. Dom´enov´e POJO objekty jsou mapov´any pomoc´ı Hibernate na koresponduj´ıc´ı datab´azov´e entity. Kaˇzd´ y dom´enov´ y objekt m´a k sobˇe vytvoˇren odpov´ıdaj´ıc´ı mapovac´ı hbm.xml soubor, ve kter´em jsou mapovac´ı direktivy vˇcetnˇe vz´ajemn´ ych entitn´ıch vazeb.
Spring ORM Spring ORM je jak´ asi mezivrstva mezi frameworkem Hibernate a zbytkem aplikace. Umoˇzn ˇuje zejm´ena konfiguraci Hibernate napojit pˇr´ımo na konfiguraˇcn´ı soubory Spring Frameworku, d´ ale do nˇej zav´ad´ı nˇekter´e sv´e vlastn´ı implementace jako je sessionFactory a transakˇcn´ı manaˇzer (d´ıky tomu bude napˇr´ıklad moˇzn´e ˇr´ıdit transakce pomoc´ı anotac´ı pˇr´ımo z aplikaˇcn´ıho k´odu). Pom´ah´a tedy bezprobl´emovˇe integrovat Hibernate se zbytkem aplikace. Veˇsker´a konfigurace persistentn´ı vrstvy je v XML souboru persistence.xml a aˇz na v´ yjimky (viz d´ale) nijak nevyboˇcuje ze standardn´ı konfigurace.
GenericDAO Jiˇz dˇr´ıve jsme mluvili o n´ avrhov´em vzoru Data Gateway a DAO objektech. V RAT syst´emu je pro kaˇzd´ y dom´enov´ y objekt vytvoˇren odpov´ıdaj´ıc´ı DAO objekt, kter´ y
85
RAT - Reserve A Thing!
RAT server
oddˇeluje aplikaˇcn´ı vrstvu aplikace od k´odu z´avisl´eho na datab´azov´em syst´emu (respektive na Hibernate frameworku). Nicm´enˇe protoˇze DAO objekty obvykle zajiˇst’uj´ı pouze CRUD operace a spouˇstˇen´ı nˇekter´ ych specifick´ ych dotaz˚ u, je kv˚ uli snaze o minimalizaci k´ odu vytvoˇrena hierarchick´a struktura vyuˇz´ıvaj´ıc´ı genericity, dˇediˇcnosti a aspektov´eho programov´an´ı. Na Diagramu 6.3 je vidˇet z´ akladn´ı struktura DAO vrstvy. Rozhran´ı kaˇzd´eho DAO objektu mus´ı dˇedit od GenericDAO rozhran´ı. To definuje z´akladn´ı CRUD operace, kter´e lze prov´ adˇet s objekty. Rozhran´ı specifick´e pro dom´enov´ y objekt pot´e m˚ uˇze tyto z´ akladn´ı operace rozˇs´ıˇrit o dalˇs´ı metody (v naˇsem pˇr´ıpadˇe je to rozhran´ı ObjectClassDAO, kter´e umoˇzn ˇuje nav´ıc vyhledat tˇr´ıdu objektu podle jej´ıho jm´ena). Takov´e rozhran´ı budeme d´ale naz´ yvat jako rozˇsiˇruj´ıc´ı rozhran´ı. Konkr´etn´ı implementace generick´eho DAO rozhran´ı (GenericDAOHibernateImpl) jiˇz m´a odkaz na Hibernate sessionFactory (ta jiˇz umoˇzn ˇuje pˇr´ım´ y objektov´ y pˇr´ıstup do relaˇcn´ı datab´ aze).
Diagram 6.3: Diagram tˇr´ıd GenericDAO. Nicm´enˇe z diagramu je patrn´e, ˇze chyb´ı tˇr´ıda implementuj´ıc´ı rozˇsiˇruj´ıc´ı rozhran´ı, kter´a by tak mohla pˇrekr´ yt metodu s patˇriˇcn´ ym HQL dotazem pro z´ısk´an´ı tˇr´ıdy objektu podle jej´ıho jm´ena. Jistˇe bychom ji mohli vytvoˇrit programovˇe, nicm´enˇe pˇresnˇe tomu jsme se chtˇeli hned zpoˇc´atku vyhnout (a v programu ˇz´adn´e takov´e tˇr´ıdy skuteˇcnˇe nenajdeme). Lepˇs´ı moˇznost je vyuˇz´ıt zn´ azornˇen´ y FinderExecutor, jehoˇz implementace za pouˇzit´ı mal´e knihovny v bal´ıku genericdao umoˇzn´ı HQL dotazy naˇc´ıtat pˇr´ımo
86
RAT - Reserve A Thing!
RAT server
z Hibernate frameworku na z´ akladˇe n´azvu mapovan´e entity (to se dˇeje v v metodˇe executeFinder()). HQL dotazy n´aslednˇe staˇc´ı pojmenovat stejnˇe jako je n´azev metody rozˇsiˇruj´ıc´ıho rozhran´ı, kter´a m´a dan´ y dotaz volat, a um´ıstit je do mapovac´ıho XML souboru entity. Samotn´a implementace je pot´e d´ıky aspektov´emu programov´ an´ı doslova poskl´ ad´ ana“ pˇr´ımo za bˇehu programu. Novˇe vzniknuvˇs´ı ” proxy DAO dˇed´ı od GenericDAOHibernate a implementuje ObjectClassDAO, dotazy jsou pot´e naˇc´ıt´ any na z´ akladˇe aspektu pˇr´ımo z hbm.xml soubor˚ u. Injektov´ an´ı rozˇsiˇruj´ıc´ıch rozhran´ı na generickou DAO implementaci je souˇc´ast´ı konfiguraˇcn´ıch soubor˚ u persistence.xml a genericdao.xml. Vˇsechna DAO rozˇsiˇruj´ıc´ı rozhran´ı a generick´e implementace jsou souˇc´ast´ı bal´ıku dataaccess.dao.
Hibernate Search Jedn´ım z poˇzadavk˚ u na syst´em bylo i zajiˇstˇen´ı vyhled´av´an´ı v datech nˇekter´ ych entit na z´ akladˇe jejich atribut˚ u. To m˚ uˇze opˇet velmi jednoduˇse zajistit framework Hibernate, kter´ y implementuje nepˇr´ım´e indexovan´e vyhled´av´an´ı v datab´azi (ˇc´ımˇz se liˇs´ı od vyhled´ av´ an´ı pomoc´ı SQL nebo HQL). Nejenˇze je toto vyhled´av´an´ı mnohem rychlejˇs´ı, protoˇze funguje na principu velmi sofistikovan´e hashovac´ı tabulky a nemus´ı m´ıt pˇr´ım´ y pˇr´ıstup do datab´aze, je tak´e flexibilnˇejˇs´ı, protoˇze program´ator m´a moˇznost jeho implementaci programovˇe ovlivnit. Hibernate s´am zajist´ı spr´avu indexov´ an´ı pˇri jak´ekoliv zmˇenˇe v datab´azi (indexy jsou mimo jin´e vytvoˇreny pˇri kaˇzd´em startu aplikace). Jedin´ y poˇzadavek kladen´ y na stranu program´atora je vloˇzen´ı anotac´ı do patˇriˇcn´ ych POJO objekt˚ u. V aplikaci je pot´e vytvoˇrena SearchService, kter´a vyhled´av´an´ı zprostˇredkov´av´a. Ta sice obch´ az´ı standardn´ı DAO mechanismus a pˇristupuje pˇr´ımo k Hibernate frameworku, nicm´enˇe sv´ ym urˇcen´ım patˇr´ı do aplikaˇcn´ı vrstvy.
Nastaven´ı aplikace Jedn´ım z poˇzadavk˚ u na syst´em je i moˇznost konfigurace nˇekter´ ych ˇcasov´ ych primitiv, jako je napˇr´ıklad minim´ aln´ı a maxim´aln´ı d´elka periody rezervace atp. Tyto direktivy jsou uloˇzeny ve formˇe Java property souboru pod jm´enem rat.properties. Pro jejich naˇc´ıt´ an´ı nebylo tˇreba nic manu´alnˇe programovat, pouze staˇcilo nakonfigurovat Spring framework tak, aby tento soubor naˇcetl pˇri startu aplikace.
87
RAT - Reserve A Thing!
6.2.4
RAT server
Servisn´ı vrstva
ˇ ast oznaˇcen´a Na Obr´ azku 6.3 je zn´ azornˇeno jednoduch´e sc´ema servisn´ı vrstvy. C´ jako DataFlowServices je pˇr´ım´ ym pokraˇcov´an´ım DAO objekt˚ u a poskytuje tedy rozhran´ı do datab´ aze, nicm´enˇe tentokr´at je moˇzn´e v kaˇzd´e servisn´ı tˇr´ıdˇe referencovat jak´ ykoliv DAO objekt z datov´e vrstvy. SearchService pot´e pˇristupuje pˇr´ımo k sessionFactory ze Spring ORM.
Obr´azek 6.3: Sch´ema servisn´ı vrstvy.
DataFlowServices Na Diagramu 6.4 je moˇzn´e vidˇet z´akladn´ı architekturu t´e ˇc´asti servisn´ı vrstvy, kter´a kontroluje pˇr´ıstup do datab´ aze. Z´akladn´ı implementace GenericDataServiceImpl v´aˇze b´ azov´ y DAO objekt na servisn´ı vrstvu a implementuje z´akladn´ı rozhran´ı. Rozˇsiˇruj´ıc´ı rozhran´ı (v diagramu je to ObjectClassService) pot´e umoˇzn ˇuje definovat dalˇs´ı rozˇsiˇruj´ıc´ı metody a funkce.
Diagram 6.4: Diagram tˇr´ıd servisn´ı vrstvy.
88
RAT - Reserve A Thing!
RAT server
Servisn´ı vrstva je z ostatn´ıch ˇc´ ast´ı aplikace referencov´ana pˇres tyto rozˇsiˇruj´ıc´ı rozhran´ı. D´ıky tomu je moˇzn´e velmi jednoduˇse tzv. mockovat servisn´ı vrstvu a t´ım usnadnit testov´ an´ı nadˇrazen´ ych vrstev. Vˇsechny jednotliv´e servisn´ı implementace jsou zaregistrov´ any do Spring aplikaˇcn´ıho kontextu pˇres anotaci @Service a je moˇzn´e pouˇz´ıt pokroˇcil´e metody referencov´an´ı jako je napˇr´ıklad autowiring. Servisn´ı vrstva pak zajiˇst’uje i transakˇcn´ı ˇr´ızen´ı pˇr´ıstupu do datab´aze (pˇres anotaci metod @Transactional), poˇzadavky specifikace na odstraˇ nov´an´ı objekt˚ u z datab´ aze (to obvykle zajiˇst’uje Hibernate pˇres cascade delete, bohuˇzel tuto techniku nen´ı moˇzn´e vˇzdy pouˇz´ıt) a zejm´ena v sobˇe koncentruje veˇskerou aplikaˇcn´ı logiku souvisej´ıc´ı se spr´ avou rezervac´ı, jejich vyzved´av´an´ı, vracen´ı atd. Podrobn´ y popis je moˇzn´e naj´ıt v programov´e dokumentaci. Kompletn´ı implementace je v bal´ıku dataaccess.service.
Settings Service ´ Ukolem je zpˇr´ıstupnit konfiguraˇcn´ı direktivy spr´avy rezervac´ı pro ostatn´ı ˇc´asti syst´emu. Spring Framework s´ am injektuje pˇri vytv´aˇren´ı instance potˇrebn´e parametry pˇr´ımo z konfiguraˇcn´ıho souboru a tyto jsou pak pˇr´ıstupn´e pˇres klasick´e gettery. V t´eto servise jsou tak´e inicializov´any pˇrednastaven´e hodnoty, kter´e jsou pouˇzity v pˇr´ıpadˇe, kdy data z konfiguraˇcn´ıho souboru neodpov´ıdaj´ı oˇcek´avan´emu form´atu.
6.2.5
Spring Security
Souˇc´ast´ı specifikace jsou i poˇzadavky na uˇzivatelsk´e role syst´emu a integraci s celouniverzitn´ım kontem Orion. Uˇzivatel se m˚ uˇze autorizovat bud’ oproti intern´ı datab´azi, kde bude uloˇzeno heslo v hashovan´e podobˇe, nebo je umoˇznˇeno pˇrihl´aˇsen´ı proti celouniverzitn´ımu syst´emu IS/STAG pomoc´ı protokolu Kerberos – v tomto pˇr´ıpadˇe naopak nesm´ı b´ yt heslo v intern´ı datab´azi uloˇzeno. Pro implementaci byl pouˇzit modul Spring Security. Spring Security je souˇc´ ast Spring Frameworku, kter´a umoˇzn ˇuje pokroˇcilou spr´avu autorizace a uˇzivatelsk´ ych rol´ı. Pro kaˇzd´eho uˇzivatele, kter´ y byl u ´spˇeˇsnˇe ovˇeˇren, vytvoˇr´ı unik´ atn´ı identifik´ator (sessionID), kter´ y je klientovi uˇzivatele zasl´an jako reakce na pokus o pˇrihl´aˇsen´ı. Klienti se pot´e n´aslednˇe ovˇeˇruj´ı pomoc´ı tohoto unik´ atn´ıho kl´ıˇce, bez zad´ an´ı jm´ena a hesla. Framework tak´e ˇreˇs´ı spr´avu rol´ı (viz d´ ale) a um´ı na z´ akladˇe pˇr´ıchoz´ıho sessionID umoˇznit nebo zak´azat pˇr´ıstup do syst´emu, a to na tˇrech u ´rovn´ıch – na u ´rovni vol´an´ı metod, na u ´rovni URL poˇzadavku a na u ´rovni vykreslovan´ ych HTML str´anek pomoc´ı tzv. security tag˚ u (viz d´ale).
89
RAT - Reserve A Thing!
RAT server
´ Upln´ y popis tohoto modulu jde dalece nad r´amec t´eto pr´ace. Pro naˇse u ´ˇcely postaˇc´ı vˇedˇet, ˇze Spring Security umoˇzn ˇuje programovˇe vytvoˇrit a zaregistrovat vlastn´ı autorizaˇcn´ı mechanismy (Security Providers). Framework pot´e ovˇeˇruje pˇr´ıchoz´ı autorizaˇcn´ı data pomoc´ı zaregistrovan´ ych autorizaˇcn´ıch poskytovatel˚ u a teprve v okamˇziku, kdy nˇekter´ y z tˇechto poskytovatel˚ uu ´spˇeˇsnˇe ovˇeˇr´ı klientskou stranu, vygeneneruje framework pˇr´ısluˇsn´e sessionId a u ´spˇeˇsnˇe autorizuje uˇzivatele. Jak ukazuje Obr. 6.4, bylo tˇechto vlastnost´ı vyuˇzito pro implementaci poˇzadavk˚ u na autorizaci uˇzivatel˚ u.
Obr´azek 6.4: Z´akladn´ı sch´ema autorizace.
Security Implementor Jak jiˇz bylo zm´ınˇeno v dˇr´ıvˇejˇs´ım textu, existuj´ı dva diametr´alnˇe odliˇsn´e zp˚ usoby autorizace. Obˇe jsou pevnˇe sv´ azan´e s uˇzivatelsk´ ym u ´ˇctem (je moˇzn´e mezi nimi volit pˇri vytv´ aˇren´ı tohoto u ´ˇctu). Abychom jednotliv´e typy u ´ˇct˚ u od sebe oddˇelili, vznikl jiˇz ve f´ azi n´ avrhu pro dom´enov´ y objekt uˇzivatele nov´ y atribut – Implementor. To je vlastnˇe jen textov´ y ˇretˇezec, kter´ y umoˇzn ˇuje mapovat u ´ˇcet s autorizaˇcn´ım poskytovatelem. Kaˇzd´ y zaregistrovan´ y autorizaˇcn´ı poskytovatel poskytuje sv˚ uj unik´atn´ı Implementor idenfifik´ ator a proto je tedy oznaˇcen´ı atributu v datab´azi jako textov´ y ˇretˇezec nepˇresn´e – ve skuteˇcnosti je tento ˇretˇezec jedn´ım z dynamick´eho v´ yˇctu identifik´ ator˚ u zaregistrovan´ ych autorizaˇcn´ıch poskytovatel˚ u (viz d´ale).
90
RAT - Reserve A Thing!
RAT server
Implementace autorizaˇ cn´ıch poskytovatel˚ u Na Diagramu 6.5 je zn´ azornˇena z´akladn´ı implementace autorizaˇcn´ıch poskytovatel˚ u. Registrovat vlastn´ı autorizaˇcm´ı mechanismus do Spring Security frameworku je moˇzn´e bud’ jako AuthenticationProvider, kter´ y m´a k dispozici cel´ y autorizaˇcn´ı kontext pˇrihlaˇsov´ an´ı (jm´eno i heslo), nebo jako UserDetailsService, kter´a funguje v r´ amci zm´ınˇen´eho AuthenticationProvideru. Ta m´a k dispozici pouze jm´eno uˇzivatele a jej´ım u ´kolem je bud’ vr´atit instanci tˇr´ıdy UserDetails (kter´a reprezentuje pˇrihl´ aˇsen´eho uˇzivatele a mus´ı do n´ı b´ yt uloˇzeno vˇsechno podstatn´e vˇcetnˇe hesla a role), nebo vyhodit v´ yjimku UserNotFoundException.
Diagram 6.5: Diagram tˇr´ıd autorizaˇcn´ıch poskytovatel˚ u. Kaˇzd´ y autorizaˇcn´ı poskytovatel mus´ı implementovat metodu getImplementor(). Ta vrac´ı instanci POJO tˇr´ıdy LoginImplementor, ve kter´e jsou vˇsechny d˚ uleˇzit´e u ´daje o poskytovateli. V aplikaci existuje veˇrejn´ y statick´ y seznam vˇsech takov´ ych objekt˚ u. Do nˇej se jednotliv´ı poskytovatel´e registruj´ı hned po sv´em instancov´an´ı v r´amci metody init() (anotace @PostConstruct). Poskytovatel autorizace oproti intern´ı datab´azi implementuje rozhran´ı UserDetailsService a funguje v r´ amci pˇrednastaven´eho autorizaˇcn´ıho poskytovatele integrovan´eho ve Spring Security. Jak je vidˇet, vlastn´ı implementace m´a referenci na UserService a tak m˚ uˇze libovolnˇe komunikovat s datovou vrstvou. Jej´ım jedin´ ym u ´kolem je tedy pouze naj´ıt uˇzivatele v datab´azi podle jeho pˇrihlaˇsovac´ıho jm´ena, ovˇeˇren´ı hesla provede Spring Security.
91
RAT - Reserve A Thing!
RAT server
Zaj´ımavˇejˇs´ı situace nast´ av´ a v pˇr´ıpadˇe autorizace oproti IS/STAG. Zde je jiˇz nutn´e zn´at cel´ y pˇrihlaˇsovac´ı kontext, protoˇze jm´eno a heslo se mus´ı odeslat na vzd´alen´ y autorizaˇcn´ı server. Proto poskytovatel implementuje rozhran´ı AuthenticationProvider. Jak je patrn´e, i ten m´ a referenci na servisn´ı vrstvu zpˇr´ıstupˇ nuj´ıc´ı intern´ı seznam uˇzivatel˚ u – to je kv˚ uli mapov´an´ı mezi uloˇzen´ ym z´aznamem a autorizaˇcn´ım poskytovatelem. Kaˇzd´ y poskytovatel se nejprve pokus´ı vyhledat pˇr´ısluˇsn´eho uˇzivatele v datab´ azi, a pokud nesed´ı Implementor uˇzivatele se z´aznamem o aktu´alnˇe spuˇstˇen´em poskytovateli, je autorizace rovnou odm´ıtnuta (uˇzivatel m´a jin´eho poskytovatele autorizace). D˚ uvod, proˇc jsou ve tˇr´ıdˇe tohoto poskytovatele ˇclensk´e promˇenn´e pˇr´ıstupn´e pˇres settery je prost´ y – pˇri registraci m˚ uˇzeme zaregistrovat tohoto poskytovatele v´ıcekr´ at a injektovat mu jin´e konfiguraˇcn´ı soubory, n´azev a dalˇs´ı parametry. Tento poskytovatel je tedy obecnˇe pouˇziteln´ y pro jak´ ykoliv Kerberos ovˇeˇrovac´ı protokol a lze tedy napˇr´ıklad vytvoˇrit autorizaci uˇzivatele oproti syst´em˚ um jin´ ych univerzit pouhou registrac´ı v XML konfiguraˇcn´ım souboru, jak ukazuje tento v´ ypis:
<property name="jaasConfig" value="jaas.conf" /> <property name="krb5Config" value="krb5.conf" /> <property name="jaasContextName" value="WSKerberosAuth" /> <property name="implementor" value="ZCU-KERBEROS" /> <property name="localPasswordRequired" value="false" />
Uˇ zivatelsk´ e role V syst´emu jsou definov´ any pomoc´ı v´ yˇctov´eho typu role ADMIN, MASTER a USER. Pˇrid´ av´ an´ı nov´ ych rol´ı nen´ı bez rozs´ahl´ ych programov´ ych zmˇen moˇzn´e. Kaˇzd´ y uˇzivatel m´ a v datab´ azi uloˇzenu svoji roli v syst´emu. Tato role je pˇri u ´spˇeˇsn´e autorizaci uloˇzena do aplikaˇcn´ıho kontextu Spring Frameworku v r´amci jiˇz zmin ˇovan´e instance tˇr´ıdy UserDetails. Autorizace pˇr´ıstupu na z´akladˇe rol´ı je plnˇe automatick´ a a je ˇr´ızena pouze za pomoci anotac´ı, konfiguraˇcn´ıch soubor˚ u a security tag˚ u. Na z´ akladˇe anotac´ı je zabezpeˇcen napˇr´ıklad pˇr´ıstup k nˇekter´ ym metod´am servisn´ı vrstvy, kter´e edituj´ı datab´azov´e poloˇzky (napˇr. role USER nen´ı opr´avnˇena mazat objekty). Implementace vˇsech zm´ınˇen´ ych bezpeˇcnostn´ıch mechanism˚ u se nach´az´ı v v bal´ıku security.
92
RAT - Reserve A Thing!
6.2.6
RAT server
Prezentaˇ cn´ı vrstva
Aplikaˇcn´ı vrstva se skl´ ad´ a ze dvou velk´ ych komponent – JSF pro webov´e rozhran´ı a Spring MVC pro webov´e REST sluˇzby, kter´e budou poskytovan´e pro mobiln´ı aplikace. Jak ukazuje sch´ema zn´ azornˇen´e na Obr. 6.5, aplikace rozhoduje na z´akladˇe URL pˇr´ıchoz´ıho poˇzadavku o tom, kter´ y framework bude d´ale HTTP poˇzadavek obsluhovat.
Obr´azek 6.5: Z´akladn´ı sch´ema filtrov´an´ı poˇzadavk˚ u.
6.2.7
Webov´ e rozhran´ı
Architektura pouˇzit´ı JSF nijak nevyboˇcuje z jiˇz dˇr´ıve rozebran´ ych postup˚ u. Pro vˇetˇsinu webov´ ych komponent a celkov´eho grafick´eho rozvrˇzen´ı a stylu webov´eho rozhran´ı je vyuˇzita zejm´ena TLD knihovna PrimeFaces. V programov´em Java bal´ıku managed je veˇsker´e programov´e vybaven´ı aplikace souvisej´ıc´ı s JSF. Bal´ık se d´ ale dˇel´ı na dalˇs´ı sadu podbal´ık˚ u: - managed.bean – vˇsechny backing beany pro Faces str´anky. - managed.converter – dodateˇcn´e konvertory, kter´e transformuj´ı data z backing beans do podoby, kter´a je zobraziteln´a v TLD komponent´ach. - managed.locale – utility, kter´e zpˇr´ıstupˇ nuj´ı lokalizovan´e ˇretˇezce JSF do programov´e ˇc´ asti. - managed.validator – dodateˇcn´e valid´atory formul´aˇr˚ u, kter´e nelze kontrolovat pˇr´ımo pomoc´ı komponent TLD knihoven.
93
RAT - Reserve A Thing!
RAT server
Vyuˇz´ıv´ a se integrovan´ y ˇsablonovac´ı syst´em Facelets. Vˇsechny Faces str´anky jsou um´ıstˇeny mimo zdrojov´e k´ ody ve sloˇzce WebContent. S ohledem na mapov´an´ı Spring Security je rozdˇelen´ı n´ asleduj´ıc´ı: - */* – str´ anky, na kter´e mohou pˇristupovat uˇzivatel´e i bez autorizace (iCal rozhran´ı). - */templates/* – ˇsablony, ze kter´ ych se skl´ad´a webov´e rozhran´ı syst´emu. - */login/* – str´ anky urˇcen´e pro pˇrihl´aˇsen´ı. - */secured/* – str´ anky zobraziteln´e pro vˇsechny pˇrihl´aˇsen´e role. - */admin/* – str´ anky zobraziteln´e pouze pro roli Administr´ ator.
Integrace JSF – Spring Bohuˇzel, Spring Framework nem´a plnou podporu pro integraci s JSF (a naopak). To pˇrin´ aˇs´ı nˇekter´e probl´emy, kter´e bylo tˇreba uspokojivˇe vyˇreˇsit. Spring Security poskytuje moˇznost vytv´aˇret security tagy, kter´e vytv´aˇrej´ı restrikce na vykreslov´ an´ı jejich vnoˇren´ ych element˚ u (neboli JSF komponent) na z´akladˇe role pˇrihl´ aˇsen´eho uˇzivatele. To velmi dobˇre funguje v prostˇred´ı JSP servlet˚ u. V JSF ale nexistuje integrovan´ a Spring Security TLD knihovna, a je tedy nutn´e ji vytvoˇrit a naimportovat ruˇcnˇe. Knihovna je um´ıstˇena v WebContent/WEB-INF pod n´ azvem springsecurity.taglib.xml. Vˇetˇs´ım probl´emem je vˇsak samotn´e spojen´ı backing beans s aplikaˇcn´ım kontextem Spring Frameworku (WebApplicationContext). JFS m´a vlastn´ı programov´ y kontext (FacesContext) a vlastn´ı spr´avu komponent. Lze tedy zjednoduˇsenˇe ˇr´ıci, ˇze JSF komponenty (valid´ atory, konvertory atp.) nevid´ı“ servisn´ı vrstvu, kter´a je ” v aplikaˇcn´ım kontextu Springu. Jedno z moˇzn´ ych ˇreˇsen´ı je vyjmout vˇsechny komponenty z JSF kontextu a spravovat je Spring Frameworkem. Toto ˇreˇsen´ı funguje, ale m´a mnoho omezen´ı – nen´ı moˇzn´e pouˇz´ıvat ˇz´ adn´e JSF specifick´e anotace, tedy nelze napˇr´ıklad dost dobˇre urˇcovat scope nebo jednoduˇse injektovat parametry z URL. Spring m´a sice vlastn´ı sadu anotac´ı pro scope, ty vˇsak nejsou plnˇe kompatibiln´ı s JSF (a nˇekter´e zcela chyb´ı). Jednoduˇsˇs´ı ˇreˇsen´ı je vytvoˇrit programov´ y m˚ ustek mezi oba frameworky. V bal´ıku managed.beans je um´ıstˇena statick´a tˇr´ıda SpringBeanFactory, kter´a umoˇzn ˇuje z´ıskat reference na libovolnou instanci tˇr´ıdy z aplikaˇcn´ıho kontextu Spring Frameworku, kter´ a byla zaregistrov´ ana jako @Component, @Service nebo @Controller.
94
RAT - Reserve A Thing!
RAT server
Komponenty je moˇzn´e z´ıskat na z´akladˇe zaregistrovan´eho jm´ena nebo rozhran´ı. Spojen´ı JSF a servisn´ı vrstvy je uk´az´ano na Obr. 6.6.
Obr´azek 6.6: Spojen´ı Spring a JSF. JSF komponenty mohou b´ yt v z´avislosti na sv´em scope doˇcasnˇe serializov´any. Napˇr´ıklad kalend´ aˇre vyˇzaduj´ı AJAX komunikaci mezi klientem a serverem. Proto jsou pˇr´ısluˇsn´e managed beans anotov´any jako @ViewScoped (instance je udrˇzov´ana dokud uˇzivatel neopust´ı str´ anku), aby byl vˇzdy zachov´an jejich stav vˇcetnˇe Modelu. Je nutn´e oznaˇcit vˇsechny reference na objekty ze servisn´ı vrstvy jako transient, aby nedoˇslo k jejich serializaci spolu s drˇzitelem reference.
Tisk QR k´ od˚ u Pro tisk QR k´ od˚ u byla pouˇzita open-source knihovna itextpdf. Programov´ y k´od nez´avisl´ y na JSF je um´ıstˇen v bal´ıku qrcode. Jak jiˇz bylo zm´ınˇeno, JSF je technologie ve kter´e prim´arn´ı roli hraje Pohled, tedy konkr´etn´ı Faces str´ anka. Ty jsou nicm´enˇe prim´arnˇe orientov´any na generov´an´ı HTML k´ odu. Pro tisk QR k´odu je potˇreba zmˇenit HTTP odpovˇed’ na Content-Type na application/pdf a m´ısto HTML zapsat pˇr´ımo PDF soubor. To se vˇsak ned´ a realizovat pomoc´ı ˇz´adn´e TLD knihovny. Je tedy nutn´e celou architekturu JSF pˇreklopit“ z MVP do MVC tak, abychom ” z backing beany udˇelaly Controller, kter´ y pouˇzije v´ yˇse zm´ınˇen´eho bal´ıku qrcode a zap´ıˇse v´ ystup (PDF soubor) pˇr´ımo do HTTP odpovˇedi. Je nejprve nutn´e pˇredat odpovˇednost za vygenerov´an´ı odpovˇedi z JSF str´anky pˇr´ısluˇsn´e backing beanˇe :
Metoda render() pot´e naˇcte HTTP odpovˇed’, vyresetuje ji a n´aslednˇe ji m˚ uˇze znovu vytvoˇrit:
95
RAT - Reserve A Thing!
RAT server
HttpServletResponse response = externalContext.getResponse(); response.reset(); response.setContentType("application/pdf"); OutputStream browserStream = response.getOutputStream(); ObjectQRCodeGenerator gen = ...naˇ cti ze SpringBeanFactory... gen.createPDF(browserStream, objectId); browserStream.close(); facesContext.responseComplete(); Samotn´ y gener´ ator PDF jenom zap´ıˇse PDF dokument do v´ ystupn´ıho proudu. Je moˇzn´e tedy pouˇz´ıvat tuto tˇr´ıdu univerz´alnˇe pro jak´ ykoliv v´ ystupn´ı proud.
Export kalend´ aˇ re do iCal form´ atu Pro export kalen´ aˇre je je pouˇzita knihovna iCal4j. Programov´ y k´od nez´avisl´ y na JSF je v bal´ıku ical. Princip zmˇeny fungov´an´ı JSF pro export kalen´aˇre je totoˇzn´ y s vytv´ aˇren´ım QR k´ od˚ u.
6.2.8
REST webov´ e sluˇ zby
Pro komunikaci mezi mobiln´ı aplikac´ı a centr´aln´ım serverem byly vytvoˇreny REST sluˇzby, kter´e zajiˇst’uj´ı mobiln´ım aplikac´ım vˇsechnu potˇrebnou funkcionalitu. Sluˇzby jsou zabezpeˇceny pomoc´ı Spring Security obdobnˇe jako webov´e rozhran´ı. Po kaˇzd´e u ´spˇeˇsn´e HTTP autorizaci uˇzivatele server vloˇz´ı do odpovˇedi sessionId, kter´e je moˇzn´e pouˇz´ıvat jako autorizaˇcn´ı token v n´asledn´e komunikaci. T´ım je sice poruˇsena bezestavovost REST rozhran´ı, na druhou stranu nen´ı nutn´e klienta pˇri kaˇzd´em poˇzadavku ovˇeˇrovat proti vzd´ alen´emu serveru (pokud to uˇzivatelsk´ yu ´ˇcet klienta vyˇzaduje), coˇz pˇrin´ aˇs´ı znateln´e urychlen´ı komunikace. Nˇekter´e sluˇzby jsou tak´e orientov´ any sp´ıˇse procedur´ alnˇe neˇz datovˇe (viz d´ale). Implementace je um´ıstˇen´a v bal´ıku rest. ´ Zde budou uvedeny pouze implementaˇcn´ı detaily. Upln´ y popis REST webov´ ych sluˇzeb je moˇzn´e naj´ıt v Pˇr´ıloze B.
Serializace dat Jako pˇrenosov´ y form´ at dat byl zvolen XML. Jednotliv´e objekty jsou serializov´any a deserializov´ any pomoc´ı technologie JAXB (Java Architecture for XML Binding). Nicm´enˇe protoˇze serializace pˇr´ımo dom´enov´ ych objekt˚ u nen´ı pˇr´ıliˇs vhodn´a (sv´az´an´ı
96
RAT - Reserve A Thing!
RAT server
s Hibernate session, zan´ aˇsen´ı modelu netypick´ ymi anotacemi) a nav´ıc chceme minimalizovat pˇrenosy dat, byla vytvoˇrena nov´a sada mapovac´ıch objekt˚ u, kter´e l´epe reflektuj´ı potˇreby mobiln´ı aplikace a nav´ıc umoˇzn´ı oddˇelit serializaˇcn´ı anotace od dom´enov´eho modelu. S ohledem na struktuxu XML dokumentu lze objekty rozdˇelit d´ ale na mapovac´ı dom´enov´e objekty a mapovac´ı kontejnery. ´ Ukolem mapovac´ıch kontejner˚ u je umoˇznit pˇren´aˇsen´ı v´ıce objekt˚ u v r´amci jedn´e reference, reprezentuj´ı tedy vlastnˇe seznam instanc´ı stejn´e tˇr´ıdy. Pomoc´ı JAXB anotace @XmlRootElement je pot´e definov´an n´azev koˇrenov´eho elementu takov´eho seznamu pˇri XML serializaci. Takov´ ymi kontejnery jsou napˇr. PeriodsMapping, ReservationsMapping, atd. Mapovac´ı dom´enov´e objekty jsou pot´e reprezentace dom´enov´ ych objekt˚ u, kter´e jsou ovˇsem pˇr´ımo urˇcen´e k serializaci. Jejich atributy se pˇritom od dom´enov´ ych objekt˚ u m´ırnˇe liˇs´ı, jak ukazuje Obr. 6.7.
Obr´azek 6.7: Z´akladn´ı mapovac´ı objekty. Napˇr´ıklad ObjectMapping nahrazuje referenci na tˇr´ıdu objektu dvojic´ı atribut˚ u objectClassId a objectClassName. D´ale dˇed´ı jej´ı pickable a returnable atributy. C´ılem tˇechto zmˇen je poskytnout maximum informac´ı v jednom poˇzadavku a umoˇznit v r´ amci v dalˇs´ıch poˇzadavk˚ u jejich zpˇresnˇen´ı (mobiln´ı aplikace napˇr´ıklad v profilu rezervace zobraz´ı jm´eno objektu a pokud bude cht´ıt uˇzivatel zobrazit i dalˇs´ı informace o tomto objektu, je moˇzn´e zaslat poˇzadavek pˇr´ısluˇsn´e webov´e sluˇzbˇe na z´ akladˇe atributu objectId). Tˇr´ıdy tˇechto mapovac´ıch objekt˚ u jsou um´ıstˇeny v bal´ıku rest.beans.
97
RAT - Reserve A Thing!
RAT server
Pˇ remapov´ an´ı dom´ enov´ ych objekt˚ u Pro pˇremapov´ an´ı je vyuˇzita kask´ada factory tˇr´ıd. Ty jsou um´ıstˇen´e v bal´ıku rest.factory a jsou zaregistrov´any do Spring Frameworku jako @Component. Kaˇzd´a z nich zajiˇst’uje pˇremapov´an´ı jednoho typu objektu. V pˇr´ıpadˇe, kdy je vazba mezi dom´enov´ ymi objekty typu 1:N (napˇr´ıklad Reservation – Period), je vyuˇzito kontejnerov´ ych mapovac´ıch objekt˚ u. V pˇr´ıpadˇe pˇremapov´an´ı kolekce instanc´ı tˇr´ıdy Reservation je tedy zavol´ ana mapovac´ı metoda z ReservationsMappingFactory, ta vytvoˇr´ı novou instanci ReservationsMapping, pot´e pˇremapuje kaˇzd´ y objekt z kolekce pomoc´ı factory ReservationMappingFactory, a tak d´ale. Kaˇzd´a u ´roveˇ n zanoˇren´ı t´eto kask´ ady pak je vlastnˇe u ´roveˇ n zanoˇren´ı v´ ysledn´eho XML dokumentu, kter´ y vznikne JAXB serializac´ı vzniknuvˇs´ıho ReservationsMapping objektu (Obr. 6.8). Factory um´ı mapovat i obr´acenˇe, tj. z mapovac´ıch objekt˚ u do dom´enov´ ych.
Obr´azek 6.8: Vztah mapovac´ıch objekt˚ u a XML.
Spring MVC V´ yˇse zm´ınˇen´ ych princip˚ u je vyuˇzito k vytv´aˇren´ı XML dokument˚ u, kter´e jsou pˇrikl´ad´any k HTTP odpovˇedi nebo jsou deserializov´any z HTTP poˇzadavku. V bal´ıku ˇ ce), jejichˇz metody jsou za pomoci Spring MVC rest.controller jsou tˇr´ıdy (Radiˇ pˇr´ımo pouˇzit´e pro vytvoˇren´ı webov´ ych sluˇzeb. U kaˇzd´e metody je nutn´e pomoc´ı anotac´ı urˇcit podporovan´ y HTTP protokol a sadu URL parametr˚ u, kter´e budou injektov´ any samotn´ ym Spring Frameworkem. Metody maj´ı pˇr´ım´ y pˇr´ıstup do servisn´ı vrstvy aplikace a vyuˇz´ıvaj´ı zm´ınˇen´eho factory bal´ıku pro konvertov´an´ı pˇr´ıchoz´ıch XML soubor˚ u na dom´enov´e objekty a naopak. Roli Modelu pak hraj´ı pˇr´ıchoz´ı nebo odchoz´ı data a jako Pohled je moˇzn´e interpretovat JAXB Marshaller, kter´ y ˇ je zaregistrov´ an pro kaˇzd´ y Radiˇc v souboru applicationContext.xml.
98
RAT - Reserve A Thing!
RatDroid
REST error handling Pˇri konstruov´ an´ı odpovˇedi na HTTP poˇzadavek m˚ uˇze ve webov´e sluˇzbˇe doj´ıt k chybˇe aplikace a n´ aslednˇe m˚ uˇze b´ yt vyhozena v´ yjimka. Abychom tyto stavy oˇsetˇrili a korektnˇe namapovali do HTTP k´od˚ u, je v bal´ıku rest.errorhandling komponenta RestExceptionHandler, kter´a umoˇzn ˇuje zachyt´av´an´ı v´ yjimek z aplikaˇcn´ıho k´ odu. V´ yjimka je vˇzdy zachycena a pˇremapov´ana na XML dokument se zpr´avou o chybˇe a dalˇs´ımi konfigurovateln´ ymi u ´daji (tˇr´ıda XmlRestErrorConverter). Ten je pˇriloˇzen k HTTP odpovˇedi. D´ale bylo nutn´e v souboru RAT-servlet.xml (konfiguraˇcn´ı soubor Spring Dispatcher servletu) definovat chybov´ y k´od, kter´ y bude s v´ yjimkou sv´ az´ an: <entry key="UnknownResourceException" value="404, _exmsg" /> <entry key="UnauthorizedAccessRestException" value="403, _exmsg" /> <entry key="Throwable" value="500, error.internal" /> Jak je vidˇet, existuj´ı dvˇe namapovan´e uˇzivatelsk´e v´ yjimky pro situace, kdy je zad´an ˇspatn´ y identifik´ ator zdroje nebo se uˇzivatel snaˇz´ı pˇristoupit ke zdroj˚ u, kter´e leˇz´ı mimo jeho kompetence (napˇr´ıklad se pokouˇs´ı editovat rezervaci, kter´a nen´ı jeho). Vˇsechny ostatn´ı v´ yjimky (instance rozhran´ı Throwable) se vyhodnocuj´ı jako intern´ı chyba serveru.
6.3
RatDroid
RatDroid je n´ azev klientsk´e aplikace syst´emu RAT pro operaˇcn´ı syst´em Android. Tato aplikace se pˇripojuje k REST webov´ ych sluˇzb´am centr´aln´ıho serveru a zajiˇst’uje uˇzivatel˚ um funkˇcnost specifikovanou pro mobiln´ı zaˇr´ızen´ı v Kap. 4.
6.3.1
Z´ akladn´ı architektura aplikace
Na Obr´ azku 6.9 je zn´ azornˇeno zjednoduˇsen´e sch´ema mobiln´ı aplikace, vˇcetnˇe rozpisu nejvˇetˇs´ıch uˇzit´ ych komponent. Jak je vidˇet, i mobiln´ı aplikace sleduje z´akladn´ı
99
RAT - Reserve A Thing!
RatDroid
rozvrˇzen´ı tˇr´ıvrstv´e architektury. Klient neobsahuje ˇz´adnou aplikaˇcn´ı logiku s v´ yjimkou z´akladn´ıch validac´ı uˇzivatelsk´eho vstupu a v´ıcem´enˇe hraje roli tenk´eho klienta.
Obr´azek 6.9: Architektura a pouˇzit´e technologie.
6.3.2
Dom´ enov´ y model
Dom´enov´ y model aplikace kop´ıruje strukturu mapovac´ıch POJO objekt˚ u implementovan´ ych na serveru. Pˇri komunikaci se serverem doch´az´ı k serializaci a deserializaci tˇechto objekt˚ u. Protoˇze v aplikaˇcn´ım frameworku Androidu chyb´ı nˇekter´e standardn´ı Java knihovny, nen´ı moˇzn´e pouˇz´ıt napˇr. JAXB technologii. Proto byl pouˇzit Simple Framework, kter´ y na tˇechto knihovn´ach implmementaˇcnˇe nez´avis´ı. Tento framework poskytuje komponentu SimpleXmlHttpMessageConverter, kterou je moˇzn´e zaregistrovat pˇr´ımo do Spring REST komunikaˇcn´ıho rozhran´ı (viz d´ale). Serializace je ˇr´ızena na z´ akladˇe anotac´ı. Samotn´e dom´enov´e objekty jsou um´ıstˇeny v bal´ıku bean. Nˇekter´e pomocn´e XML konvertory nutn´e pro serializaci objekt˚ u jsou v bal´ıku xml.
6.3.3
Datov´ a vrstva
Jako datovou vrstvu je moˇzn´e interpretovat komunikaˇcn´ı rozhran´ı mezi mobiln´ım klientem a centr´ aln´ım serverem. C´ıle t´eto vrstvy vˇsak z˚ ust´avaj´ı stejn´e – bylo tˇreba oddˇelit k´ od specifick´ y pro REST komunikaci od vlastn´ıho aplikaˇcn´ıho k´odu. D´ale bylo tˇreba zohlednit asynchronn´ı povahu t´eto komunikace. Veˇsker´a implementace datov´e vrstvy se nach´ az´ı v bal´ıku service.
100
RAT - Reserve A Thing!
RatDroid
RestTemplate Pro z´ akladn´ı REST komunikaci je pouˇzita komponenta RestTemplate z knihovny Spring For Android. Spring zde jiˇz nehraje roli rozs´ahl´eho aplikaˇcn´ıho frameworku, jedn´a se sp´ıˇse o malou knihovnu poskytuj´ıc´ı uˇziteˇcnou funkcionalitu pro vzd´alenou OAuth autorizaci a REST komunikaci. Komponenta RestTemplate pot´e podporuje spoustu uˇziteˇcn´ ych funkc´ı, jako je spr´ava Cookies, HTTP autorizace, automatick´a deserializace dat pˇren´aˇsen´ ych jako XML nebo JSON atp.
RestTask Komponenta RestTask je z´ akladn´ı komunikaˇcn´ı u ´loha aplikace. Bez ohledu na pˇren´aˇsen´ a data nebo URL c´ılov´e webov´e sluˇzby jsou vˇsechny uskuteˇcnˇen´e pokusy o komunikaci ˇreˇseny jako instance objektu RestTask. Prvn´ı vlastnost´ı t´eto komponenty je realizace stavov´e komunikace na z´akladˇe serverov´e sessionId. Nad r´ amec obvykl´e REST komunikace je vystavˇen mechanismus, kter´ y umoˇzn ˇuje pˇren´ aˇset jm´eno a heslo uˇzivatele pouze pokud je to nezbytnˇe nutn´e. Samotn´ a programov´ a realizace pot´e poˇc´ıt´a se dvˇema pokusy o komunikaci s webovou sluˇzbou . Pˇri prvn´ım pokusu je do HTTP poˇzadavku vloˇzeno sessionId (pokud existuje). Pokud se po odesl´an´ı poˇzadavku ze serveru vr´at´ı odpovˇed’ s HTTP k´odem 404 - Unauthorized, znamen´a to, ˇze vyprˇsela platnost sessionId. V tˇechto situac´ıch je odesl´ an naprosto stejn´ y HTTP poˇzadavek jako v prvn´ım kroku, tentokr´at vˇsak s pˇr´ısluˇsn´ ym jm´enem a heslem. Z odpovˇedi je pot´e (pokud tato tak´e nekonˇc´ı chybov´ ym k´ odem, v tom pˇr´ıpadˇe m´a uˇzivatel ˇspatn´e jm´eno nebo heslo) vyjmuto nov´e sessionId, kter´e je pot´e pouˇz´ıv´ano v dalˇs´ı komunikaci. Dalˇs´ım u ´kolem t´eto komponenty je vytvoˇren´ı asynchronn´ı komunikace. Tˇr´ıda dˇed´ı od syst´emov´e AsyncTask a vlastn´ı v´ ykonn´ y k´od je pouˇstˇen asynchronnˇe v˚ uˇci hlavn´ımu vl´ aknu aplikace. Aby bylo moˇzn´e nˇejak notifikovat zbytek aplikace o v´ ysledku komunikace, mus´ı se kaˇzd´e instanci tˇr´ıdy RestTask pˇredat implementace rozhran´ı IRestListener.
RestTaskFactory Jak jiˇz n´ azev napov´ıd´ a, RestTaskFactory zajiˇst’uje vytv´aˇren´ı jednotliv´ ych komunikaˇcn´ıch u ´loh. D´ ale udrˇzuje referenci na sessionId a rekonfiguruje nastaven´ı
101
RAT - Reserve A Thing!
RatDroid
RestTemplate komponenty pokud uˇzivatel zmˇen´ı nastaven´ı komunikace.
RestService Tˇr´ıda RestService je implementace jiˇz zmiˇ novan´eho n´avrhov´eho vzoru Data Gateway. Obsahuje sadu metod, kter´e jsou namapov´any na jednotliv´e webov´e sluˇzby a je tedy skuteˇcn´ ym rozhran´ım mezi REST webov´ ymi sluˇzbami a dom´enov´ ym modelem aplikace.
6.3.4
Aplikaˇ cn´ı vrstva
Aplikaˇcn´ı vrstva je realizov´ ana pomoc´ı ˇrady tˇr´ıd, kter´e obvykle dˇed´ı od tˇr´ıdy SkeletonRestActivity. Tato z´ akladn´ı tˇr´ıda rozˇsiˇruje zn´amou syst´emovou tˇr´ıdu Activity a souˇcasnˇe implementuje rozhran´ı IRestListener tak, aby kaˇzd´a aktivita aplikace mohla reagovat na dokonˇcenou komunikaci se serverem a aktualizovat prezentaˇcn´ı vrstvu. Protoˇze m˚ uˇze b´ yt jak´akoliv instance aktivity kdykoliv mobiln´ım syst´emem za jist´ ych okolnost´ı uklizena“ (destroyed ), je jiˇz na u ´rovni ” SkeletonRestActivity zajiˇstˇeno podchycen´ı takov´e ud´alosti a korektn´ı ukonˇcen´ı komunikace, pokud tato zrovna prob´ıh´a. Obdobn´e tˇr´ıdy jako je SkeletonRestActivity existuj´ı i pro dalˇs´ı komponenty syst´emu – fragmenty (SkeletonRestFragmentActivity) a v´ıcepoloˇzkov´e aktivity (SkeletonRestListActivity).
6.3.5
Prezentaˇ cn´ı vrstva
Pohled prezentaˇcn´ı vrstvy je v aplikaˇcn´ım prostˇred´ı Androidu obvykle zapisov´an ve formˇe jako XML dokument˚ u. Kaˇzd´a aktivita pot´e m˚ uˇze sobˇe pˇriˇradit patˇriˇcn´ y Pohled a d´ ale s n´ım pracovat. Pohled je moˇzn´e z aktivit vytv´aˇret i programovˇe, ˇc´ımˇz se prezentaˇcn´ı vrstva pˇribliˇzuje napˇr´ıklad klasick´emu frameworku Swing. Tento pˇr´ıstup neposkytuje ˇza´dn´e moˇznosti bindov´ an´ı a dalˇs´ıch pokroˇcil´ ych programovac´ıch technik. Vˇse mus´ı b´ yt programovovˇe ˇr´ızeno z aktivit pomoc´ı posluchaˇc˚ u, vˇcetnˇe reakc´ı na ud´ alosti apod., coˇz znatelnˇe znepˇrehledˇ nuje aplikaˇcn´ı k´od. Na druhou stranu lze v XML zapsan´e (aˇc velice jednoduch´e) Pohledy pouˇz´ıvat u cel´e ˇrady aktivit, coˇz se napˇr´ıklad u technologie JSF realizuje jen velice obt´ıˇznˇe.
102
RAT - Reserve A Thing!
6.3.6
RatDroid
Shrnut´ı
Na Obr. 6.10 je uk´ azka jedn´e z obrazovek aplikace RatDroid. D´ıky napojen´ı na webov´e sluˇzby centr´ aln´ıho serveru je moˇzn´e efektivnˇe vytv´aˇret a spravovat vlastn´ı rezervace, kdy jedinou podm´ınkou je dostateˇcnˇe stabiln´ı pˇripojen´ı k s´ıti. Aplikace se maxim´ alnˇe snaˇz´ı vyuˇz´ıt moˇznosti dotykov´eho displeje a je moˇzn´e ji ovl´adat jak v horizont´ aln´ım tak ve vertik´ aln´ım m´odu pˇr´ıstroje.
Obr´azek 6.10: Uk´azka mobiln´ı aplikace RatDroid.
103
RAT - Reserve A Thing!
6.4
RatSharp
RatSharp
Nad r´ amec t´eto pr´ ace byla vytvoˇrena mobiln´ı aplikace s n´azvem RatSharp. Tato aplikace je urˇcena pro mobiln´ı operaˇcn´ı syst´em Windows Phone 7 a implementuje stejnou sadu poˇzadavk˚ u jako klient pro syst´em Android. Je tedy plnˇe pouˇziteln´a v r´amci cel´eho informaˇcn´ıho syst´emu RAT. Uk´azka jedn´e z obrazovek t´eto aplikace je na Obr. 6.11.
Obr´azek 6.11: Uk´azka mobiln´ı aplikace RatSharp.
104
RAT - Reserve A Thing!
6.5
Testov´an´ı a nasazen´ı syst´emu
Testov´ an´ı a nasazen´ı syst´ emu
Bˇehem cel´eho v´ yvoje byl dostupn´ y produkˇcn´ı server, na kter´em doch´azelo k automatick´emu staˇzen´ı aktu´ aln´ı revize zdrojov´ ych k´od˚ u ze Subversion repozit´aˇre projektu, sestaven´ı webov´e aplikace a nasazen´ı na webov´ y kontejner Tomcat. V ran´ ych f´az´ıch v´ yvoje se jednalo pouze o pom˚ ucku, jak pr˚ ubˇeˇznˇe kontrolovat sestavitelnost aplikace i na jin´ ych syst´emech neˇz je poˇc´ıtaˇc v´ yvoj´aˇre. V okamˇziku, kdy byla hlavn´ı serverov´a ˇc´ast jiˇz pouˇziteln´a spolu s mobiln´ı aplikac´ı, byl produkˇcn´ı server spuˇstˇen spolu na veˇrejn´e IP adrese a funkcionalita cel´eho syst´emu byla pr˚ ubˇeˇznˇe kontrolov´ana jak autorem syst´emu, tak zadavatelem pr´ace. Pro u ´ˇcely hl´ aˇsen´ı chyb byl nasazen bug tracking system, do kter´eho byly jednotliv´e nalezen´e chyby pr˚ ubˇeˇznˇe hl´aˇseny ve formˇe u ´loh urˇcen´ ych k vyˇreˇsen´ı. Mobiln´ı aplikace byla vyv´ıjena a testov´ana na referenˇcn´ım zaˇr´ızen´ı Nexus S, kter´e je ve vlastnicv´ı Katedry informatiky a v´ ypoˇcetn´ı techniky. Byl vytvoˇreno nˇekolik typick´ ych sc´en´ aˇr˚ u uˇzit´ı syst´emu zamˇestnanci katedry, souvisej´ıc´ıch zejm´ena se soubˇeˇzn´ ymi rezervacemi t´ehoˇz objektu r˚ uzn´ ymi uˇzivateli a schopnost´ı mobiln´ı aplikace rychle vyzvednout objekt, na kter´ y pˇredt´ım nebyla vytvoˇrena ˇz´adn´a rezervace (funkce Vyzvedni ). Sc´en´ aˇre uˇzit´ı byly pr˚ ubˇeˇznˇe ovˇeˇrov´any na v´ yˇse zm´ınˇen´em re´aln´em zaˇr´ızen´ı. D´ale byly vybr´ any nˇekter´e existuj´ıc´ı movit´e i nemovit´e objekty nal´ezaj´ıc´ı se ve vlastnictv´ı katedry. Tyto byly n´ aslednˇe oznaˇceny patˇriˇcn´ ymi QR k´ody a byly testov´any re´ aln´e moˇznosti syst´emu efektivnˇe spravovat v´ yp˚ ujˇcky tˇechto objekt˚ u. Nˇekter´e poˇzadavky byly na z´ akladˇe tohoto testov´an´ı shled´any jako nevyhovuj´ıc´ı a byly ze specifikace odstranˇeny (tyto nakonec neimplementovan´e poˇzadavky nejsou souˇc´ast´ı t´eto pr´ ace), naopak nˇekter´e vznikly bˇehem uˇzivatelsk´eho testov´an´ı jako snaha o zv´ yˇsen´ı pouˇzitelnosti syst´emu (napˇr´ıklad funkce obl´ıben´ych objekt˚ u nebo moˇznost zobrazit profil objektu pˇr´ımo z editaˇcn´ıch obrazovek rezervac´ı). D´ıky tomu je moˇzn´e ˇr´ıci, ˇze vznikl´ y syst´em plnˇe pokr´ yv´a poˇzadavky a n´aroky na nˇej kladen´e a je schopen re´ aln´eho nasazen´ı.
105
7 Z´avˇer C´ılem t´eto pr´ ace bylo zobecnit probl´em spr´avy v´ yp˚ ujˇcek a rezervac´ı objekt˚ u movit´ ych i nemovit´ ych, a to na z´ akladˇe pˇr´ıpadov´e studie st´avaj´ıc´ıho ˇreˇsen´ı na Katedˇre informatiky a v´ ypoˇcetn´ı techniky pˇri Z´apadoˇcesk´e univerzitˇe v Plzni. Nejprve byl vytvoˇren obecn´ y logick´ y model spr´avy v´ yp˚ ujˇcek a rezervac´ı a definov´any z´akladn´ı term´ıny a vazby v tomto modelu. N´aslednˇe doˇslo k vytvoˇren´ı kompletn´ı specifikace poˇzadavk˚ u na informaˇcn´ı syst´em, kter´ y se snaˇz´ı probl´em spr´avy v´ yp˚ ujˇcek a rezervaci efektivnˇe ˇreˇsit za vyuˇzit´ı unik´atn´ıch moˇznost´ı mobiln´ıch zaˇr´ızen´ı. Na z´ avˇer byla pˇredvedena konkr´etn´ı realizace tohoto informaˇcn´ıho syst´emu. Tato realizace vytv´ aˇr´ı architekturu klient-server, ve kter´e jednotliv´e klienty pˇredstavuj´ı mobiln´ı zaˇr´ızen´ı postaven´e na platformˇe Android. Tyto klienti se pˇripojuj´ı k centr´ aln´ımu serveru za u ´ˇcelem vytv´aˇren´ı a spr´avy rezervac´ı objekt˚ u, kdy kaˇzd´ y objekt je jednoznaˇcnˇe identifikov´ yn pomoc´ı QR k´odu, kter´ y je na objektu fyzicky um´ıstˇen. Server tak´e poskytuje pohodln´e webov´e rozhran´ı. Je moˇzn´e se pˇrihlaˇsovat s vyuˇzit´ım uˇzivatelsk´ ych u ´ˇct˚ u Orion celouniverzitn´ıho syst´emu IS/STAG. Pr´ aci povaˇzuji za u ´spˇeˇsnou a tato by mˇela splˇ novat vˇsechny poˇzadavky, kter´e na ni byly kladeny. Nad r´ amec p˚ uvodn´ıho zad´an´ı byla implementov´ana klientsk´a aplikace i pro mobiln´ı platformu Windows Phone. Moˇznost rozˇs´ıˇren´ı t´eto pr´ ace spoˇc´ıv´a zejm´ena v implementaci dalˇs´ıch zp˚ usob˚ u pˇrihl´aˇsen´ı, kupˇr´ıkladu za vyuˇzit´ı u ´ˇct˚ u webov´ ych sluˇzeb jako je GMail nebo Facebook a dalˇs´ı sbliˇzov´ an´ı tˇechto sluˇzeb se syst´emem. D´ale je jistˇe ˇz´adouc´ı vytvoˇrit klientsk´e aplikace i pro dalˇs´ı mobiln´ı platformy tak, aby byla pouˇzitelnost syst´emu co moˇzn´ a nejˇsirˇs´ı.
106
A Rozvrˇzen´ı mobiln´ı aplikace V t´eto pˇr´ıloze je uk´ az´ ano z´ akladn´ı sch´ema mobiln´ı aplikace a nˇekter´e n´avrhy obrazovek, kter´e vznikly v r´ amci specifikace poˇzadavk˚ u. Tˇemto n´avrh˚ um by se mˇela fin´aln´ı implementace co nejv´ıce pˇribl´ıˇzit. Obr´azek A.1 ukazuje moˇzn´e pr˚ uchody obrazovkami mobiln´ı aplikace. Ty pˇri pr˚ uchodu z hlavn´ı obrazovky vytv´aˇr´ı z´asobn´ık pˇredchoz´ıch obrazovek a je moˇzn´e se v cestˇe grafem vracet pomoc´ı tlaˇc´ıtka Zpˇet, kter´e by mˇelo at’ uˇz v hardwarov´e nebo softwarov´e podobˇe kaˇzd´e zaˇr´ızen´ı s mobiln´ı platformou Android implementovat.
Obr´azek A.1: Graf pr˚ uchodu mobiln´ı aplikac´ı.
107
Rozvrˇzen´ı mobiln´ı aplikace
Obr´azek A.2: Rozvrˇzen´ı hlavn´ı obrazovky aplikace.
108
Rozvrˇzen´ı mobiln´ı aplikace
Obr´azek A.3: Rozvrˇzen´ı mˇes´ıˇcn´ıho kalend´aˇre.
109
Rozvrˇzen´ı mobiln´ı aplikace
Obr´azek A.4: Rozvrˇzen´ı mˇes´ıcn´ıho kalend´aˇre.
110
Rozvrˇzen´ı mobiln´ı aplikace
Obr´azek A.5: Krit´eria vyhled´av´an´ı objekt˚ u.
111
Rozvrˇzen´ı mobiln´ı aplikace
Obr´azek A.6: Obrazovka pro vytv´aˇren´ı a editaci rezervac´ı.
112
B Popis webov´ych REST sluˇzeb V t´eto pˇr´ıloze je uveden v´ yˇcet vˇsech webov´ ych sluˇzeb, kter´e poskytuje centr´aln´ı server informaˇcn´ıho syst´emu RAT. Sluˇzby vyˇzaduj´ı HTTP autorizaci a po pˇrihl´aˇsen´ı je vytvoˇrena pro klienstkou stranu session, v r´amci kter´e je poskytov´an kontext pro pˇrihl´ aˇsen´eho uˇzivatele (viz d´ale). URL vˇsech sluˇzeb zaˇc´ın´a relativn´ı cestou /api/rest/*. Na pˇriloˇzen´em m´ediu jsou uloˇzeny XSD sch´emata XML reprezentace pˇren´aˇsen´ ych dat.
Seznam sluˇ zeb URI: HTTP Metoda: Atributy:
/users/user/name GET name=(String)
XSD sch´ ema:
Vr´ at´ ı uˇ zivatele podle jeho pˇ rihlaˇ sovac´ ıho jm´ ena, nebo HTTP 404 - Unknown, pokud uˇ zivatel neexistuje. user.xsd
URI: HTTP Metoda: Atributy:
/users/user GET id=(Integer)
Popis: XSD sch´ ema:
Vr´ at´ ı uˇ zivatele podle jeho identifik´ atoru nebo HTTP 404 - Unknown, pokud uˇ zivatel neexistuje. user.xsd
URI: HTTP Metoda:
/users/user/favourites GET
Popis:
Vr´ at´ ı seznam objekt˚ u obl´ ıben´ ych uˇ zivatelem, jehoˇ z session je pr´ avˇ e aktivn´ ı. objects.xsd
Popis:
XSD sch´ ema:
113
Popis webov´ych REST sluˇzeb URI: HTTP Metoda:
/users/session/properties GET
XSD sch´ ema:
Vr´ at´ ı glob´ aln´ ı nastaven´ ı serveru, souvisej´ ıc´ ı s vytv´ aˇ ren´ ım rezervac´ ı (d˚ uleˇ zit´ e pro mobiln´ ı kalend´ aˇ r). properties.xsd
URI: HTTP Metoda:
/users/session/reservations/occupation GET
Atributy:
month=(Integer) year=(Integer)
Popis:
XSD sch´ ema:
Vr´ at´ ı ty dny v mˇ es´ ıci, ve kter´ ych m´ a majitel session vytvoˇ ren´ e nˇ ejak´ e rezervace, a poˇ cet tˇ echto rezervac´ ı v kaˇ zd´ em takov´ em dni. occupations.xsd
URI: HTTP Metoda:
/users/session/reservations/notreturned GET
Popis:
XSD sch´ ema:
Vr´ at´ ı vˇ sechny nevr´ acen´ e periody rezervac´ ı, kter´ e patˇ r´ ı uˇ zivateli vlastn´ ıc´ ı session, jsou oznaˇ ceny jako nevr´ acen´ e a je moˇ zn´ e je vr´ atit. reservations.xsd
URI: HTTP Metoda: Atributy:
/users/session/favourite POST id=(Integer)
Popis:
XSD sch´ ema:
Pˇ rid´ a nov´ y objekt do seznamu obl´ ıben´ ych objekt˚ u uˇ zivatele, kter´ y je majitelem session, a vr´ at´ ı tento aktualizovan´ y objekt. Pokud objekt neexistuje, vr´ at´ ı HTTP 404 - Unknown. objects.xsd
URI: HTTP Metoda: Atributy:
/reservations/reservation GET id=(Integer)
Popis:
Vr´ at´ ı rezervaci vˇ cetnˇ e vˇ sech period na z´ akladˇ e pˇ redan´ eho identifik´ atoru. reservations.xsd
Popis:
XSD sch´ ema:
114
Popis webov´ych REST sluˇzeb URI: HTTP Metoda: Atributy:
Popis:
XSD sch´ ema: URI: HTTP Metoda: Atributy:
/users/session/reservation DELETE id=(Integer) Odstran´ ı rezervaci patˇ r´ ıc´ ı majiteli session ze syst´ emu. Pokud rezervace neexistuje, vr´ at´ ı HTTP 404 - Unknown. Pokud je rezervace vedena na jin´ eho uˇ zivatele, vr´ at´ ı 401 - Unauthorized. Jinak vr´ at´ ı odstranˇ enou rezervaci vˇ cetnˇ e vˇ sech jej´ ıch period. reservations.xsd /users/session/reservations GET since=(yyyy-MM-dd-HH-mm) to=(yyyy-MM-dd-HH-mm)
XSD sch´ ema:
Vr´ at´ ı vˇ sechny periody (vˇ cetnˇ e jejich rezervac´ ı), jejichˇ z ˇ casov´ e ´ useky se alespoˇ n ˇ c´ asteˇ cnˇ e kryj´ ı s ˇ casov´ ym ´ usekem stanoven´ ym URL atributy a jejichˇ z majitelem je majitel session. reservations.xsd
URI: HTTP Metoda:
/users/session/reservation PUT
Popis:
Popis:
XSD sch´ ema: URI: HTTP Metoda: Atributy:
Popis:
XSD sch´ ema:
Vytvoˇ r´ ı nov´ e rezervace pro majitele session. Nevrac´ ı bud’ ˇ z´ adnou rezervaci pokud se vytvoˇ ren´ ı podaˇ rilo, nebo tu rezervaci, kter´ a blokuje vytvoˇ ren´ ı rezervace nov´ e. reservations.xsd /users/session/reservation/period POST since=(yyyy-MM-dd-HH-mm) to=(yyyy-MM-dd-HH-mm) valid=(true|false) Editov´ an´ ı periody rezervace. Pokud perioda s pˇ redan´ ym identifik´ atorem neexistuje, vrac´ ı HTTP 404 - Unknown. Pokud je rezervace periody vedena na jin´ eho uˇ zivatele, vr´ at´ ı 401 - Unauthorized. Vrac´ ı bud’ editovanou periodu, nebo periodu, kter´ a editaci br´ an´ ı z d˚ uvodu kolize ˇ cas˚ u. reservations.xsd
115
Popis webov´ych REST sluˇzeb URI: HTTP Metoda: Atributy:
/objects/object/id GET id=(Integer)
XSD sch´ ema:
Vr´ at´ ı objekt podle jeho identifik´ atoru. Pokud objekt s pˇ redan´ ym identifik´ atorem neexistuje, vr´ at´ ı HTTP 404 - Unknown. objects.xsd
URI: HTTP Metoda: Atributy:
/objects/object/identifier GET identifier=(String)
Popis:
XSD sch´ ema:
Vr´ at´ ı objekt podle jeho textov´ eho identifik´ atoru. Pokud objekt s pˇ redan´ ym identifik´ atorem neexistuje, vr´ at´ ı pr´ azdn´ y seznam objekt˚ u. objects.xsd
URI: HTTP Metoda:
/objects/object/search GET
Atributy:
type=(ALL|OBJ_NAME|CLASS_NAME|OBJ_DESCRIPTION) key=(String)
Popis: XSD sch´ ema:
Vr´ at´ ı vˇ sechny nalezen´ e objekty odpov´ ıdaj´ ıc´ ı vyhled´ avac´ ım krit´ eri´ ım. objects.xsd
URI: HTTP Metoda: Atributy:
/objects/session/object/pickup POST id=(Integer)
Popis:
Popis:
XSD sch´ ema:
Pokus´ ı se o vyzvednut´ ı objektu s pˇ redan´ ym identifik´ atorem majitelem session. Vr´ at´ ı bud’ pr´ azdn´ y seznam pokud nen´ ı jak rezervaci vyzvednout, ciz´ ı blokuj´ ıc´ ı rezervaci (pokud existuje), nebo vyzvednutou rezervaci, kterou majitel pˇ redt´ ım vytvoˇ ril. reservations.xsd
116
Popis webov´ych REST sluˇzeb URI: HTTP Metoda:
/object/reservations GET
Atributy:
since=(yyyy-MM-dd-HH-mm) to=(yyyy-MM-dd-HH-mm) id=(Integer)
XSD sch´ ema:
Vr´ at´ ı vˇ sechny periody rezervac´ ı vytvoˇ ren´ ych na objekt s pˇ redan´ ym identifik´ atorem, jejichˇ z ˇ casov´ e rozmez´ ı se alespoˇ n ˇ c´ asteˇ cnˇ e kreje s ˇ casov´ ym rozpˇ et´ ım z parametr˚ u. reservations.xsd
URI: HTTP Metoda:
/objects/object/reservations/occupation GET
Atributy:
month=(Integer) year=(Integer) id=(Integer)
Popis:
Popis:
XSD sch´ ema:
Vr´ at´ ı ty dny v mˇ es´ ıci, ve kter´ ych je vytvoˇ rena nˇ ejak´ a rezervace na objekt s pˇ redan´ ym identifik´ atorem, a poˇ cet tˇ echto rezervac´ ı v kaˇ zd´ em takov´ em dni. occupations.xsd
117
C Uˇzivatelsk´a pˇr´ıruˇcka V t´eto pˇr´ıloze bude uveden struˇcn´ y manu´al k pouˇz´ıv´an´ı webov´eho rozhran´ı a mobiln´ı aplikace RatDroid informaˇcn´ıho syst´emu RAT.
C.1
Webov´ e rozhran´ı
Pro pouˇz´ıv´ an´ı webov´eho rozhran´ı je nejpre nutn´e zadat jm´eno a heslo na pˇrihlaˇsovac´ı obrazovce. Bez tohoto aktu nen´ı moˇzn´e ˇz´adn´ ym zp˚ usobem se syst´emem pracovat. Po u ´spˇeˇsn´em pˇrihl´ aˇsen´ı bude uˇzivatel vpuˇstˇen“ do syst´emu a bude mu ” umoˇznˇeno prov´ adˇet u ´kony n´ aleˇzej´ıc´ı jeho roli (Obr. C.1).
Obr´azek C.1: Pˇrihlaˇsovac´ı dialog.
C.1.1
Z´ akladn´ı navigace
Po u ´spˇeˇsn´em pˇrihl´ aˇsen´ı bude po lev´e stranˇe obrazovky dostupn´e navigaˇcn´ı menu, kter´e umoˇzn´ı uˇzivateli pˇrep´ın´ an´ı mezi jednotliv´ ymi hlavn´ımi obrazovkami (Obr. C.2). Rozvrˇzen´ı tohoto menu je n´asleduj´ıc´ı: - Spr´ ava objekt˚ u – prohl´ıˇzen´ı vˇsech objekt˚ u a tˇr´ıd objekt˚ u v syst´emu a prov´adˇen´ı akc´ı nad objekty, kter´e pˇr´ısluˇsej´ı roli pˇrihl´aˇsen´eho uˇzivatele. - Uˇzivatel´e – prohl´ıˇzen´ı vˇsech uˇzivatel˚ u v syst´emu a prov´adˇen´ı tˇech akc´ı nad uˇzivatelsk´ ymi u ´ˇcty, kter´e pˇr´ısluˇsej´ı roli pˇrihl´aˇsen´eho uˇzivatele. - Obl´ıben´e – zobrazen´ı obl´ıben´ ych objekt˚ u pˇrihl´aˇsen´eho uˇzivatele. - M˚ uj kalend´ aˇr – zobrazen´ı kalend´aˇre vˇsech rezervac´ı patˇr´ıc´ıch pˇrihl´aˇsen´emu uˇzivateli.
118
Uˇzivatelsk´a pˇr´ıruˇcka
Webov´e rozhran´ı
- M˚ uj profil – tato poloˇzka obsahuje moˇznosti spr´avy uˇzivatelsk´eho u ´ˇctu pˇrihl´ aˇsen´eho uˇzivatele, tj. editaci profilu, zmˇenu hesla a odhl´aˇsen´ı ze syst´emu. Menu je moˇzn´e kdykoliv skr´ yt tlaˇc´ıtkem um´ıstˇen´ ym v prav´em horn´ım rohu menu.
Obr´azek C.2: Navigaˇcn´ı menu webov´eho rozhran´ı.
C.1.2
V´ıcepoloˇ zkov´ e zobrazen´ı
Zobrazen´ı objekt˚ u, tˇr´ıd objekt˚ u, uˇzivatel˚ u a obl´ıben´ ych objekt˚ u m´a vˇzdy stejn´e rozvrˇzen´ı, proto jej pop´ıˇseme jako generickou komponentu v´ıcepoloˇzkov´eho zobrazen´ı. Ta je realizov´ ana jako fitrovateln´a str´ankovac´ı tabulka (Obr. C.3).
Obr´azek C.3: V´ıcepoloˇzkov´e zobrazen´ı objekt˚ u. V prvn´ıch nˇekolika sloupc´ıch jsou uvedeny nˇekter´e z´akladn´ı u ´daje o listovan´e poloˇzce (na Obr´ azku C.3 jsou to konkr´etn´ı objekty a jejich n´azvy, textov´e identifik´atory atp.). Tyto je moˇzn´e d´ ale filtrovat podle kl´ıˇce, pro jehoˇz zad´an´ı je pˇripraveno vstupn´ı textov´e pole v hlaviˇcce nˇekter´ ych sloupc˚ u. Filtraci je moˇzno kombinovat napˇr´ıˇc vˇsemi sloupci. Pokud se vˇsechny poloˇzky nevejdou na jednu str´anku, je moˇzn´e celou tabulku str´ ankovat.
119
Uˇzivatelsk´a pˇr´ıruˇcka
Webov´e rozhran´ı
V posledn´ım sloupci jsou pot´e dostupn´e akce, kter´e m˚ uˇze role pˇrihl´aˇsen´eho uˇzivatele prov´ adˇet s poloˇzkami. Typickou akc´ı je zejm´ena zobrazen´ı profilu poloˇzky (objektu, tˇr´ıdy objektu, uˇzivatele). Dalˇs´ı akce vypl´ yvaj´ı z poˇzadavk˚ u kladen´ ych na syst´em a popis tˇechto akc´ı je moˇzn´e z´ıskat z vyskakovac´ı textov´e n´apovˇedy zobrazen´e pˇri najet´ı kurzoru myˇsi na tlaˇc´ıtko akce.
C.1.3
Kalend´ aˇ r
Kalend´ aˇr je nejd˚ uleˇzitˇejˇs´ı komponentou syst´emu, protoˇze umoˇzn ˇuje prohl´ıˇzet, spravovat, vyzved´ avat a vracet rezervace. Kalend´aˇr˚ u v syst´emu existuje cel´a ˇrada (napˇr. pro konkr´etn´ı objekt, administr´ atorsk´ y kalend´aˇr atp.), nicm´enˇe jeho moˇznosti si budeme demonstrovat na jeho nejtypiˇctˇejˇs´ım uˇzit´ı – na kalend´aˇri aktu´alnˇe pˇrihl´aˇsen´eho uˇzivatele (funkce M˚ uj kalend´ aˇr ). Kalend´aˇr je zobrazen na Obr´azku C.4.
Obr´azek C.4: Mˇes´ıˇcn´ı zobrazen´ı kalend´aˇre.
120
Uˇzivatelsk´a pˇr´ıruˇcka
Webov´e rozhran´ı
Kalend´ aˇr umoˇzn ˇuje tˇri druhy pohledu – mˇes´ıˇcn´ı, t´ ydenn´ı a denn´ı. Na vˇsech tˇechto pohledech jsou pak zobrazeny vytvoˇren´e rezervace. Mezi zobrazen´ ymi ˇcasov´ ymi u ´seky je moˇzn´e se posouvat pomoc´ı posuvn´ ych tlaˇc´ıtek v prav´em horn´ım rohu kalend´ aˇre, nebo lze okamˇzitˇe zobrazit aktu´aln´ı den. Na Obr´azku C.5 je zn´azornˇen t´ ydenn´ı pohled kalend´ aˇre. Pohled je posunovateln´ y v ˇcase a jednotliv´e ud´alosti rezervac´ı (kdy je kaˇzd´ a na jin´ y objekt) se mohou pˇrekr´ yvat.
Obr´azek C.5: T´ ydenn´ı zobrazen´ı kalend´aˇre.
Vytvoˇ ren´ı rezervace Rezervaci je moˇzn´e vytvoˇrit pouh´ ym kliknut´ım na jak´ekoliv m´ısto v kalend´aˇri, ve kter´em nen´ı ˇz´ adn´ a jin´ a rezervace. N´asledn´e dialogov´e okno umoˇzn ˇuje definovat ˇcasy rezervace (jsou pˇrednastaven´e podle m´ısta kliknut´ı do kalend´aˇre) a periodicitu (Obr. C.6). D´ ale je nutn´e ze seznamu vybrat objekt, na kter´ y m´a b´ yt rezervace vytvoˇrena. V seznamu objekt˚ u je moˇzn´e vyhled´avat stejn´ ym zp˚ usobem jako v tabulce objekt˚ u a pokud si uˇzivatel nen´ı jist identitou objektu, je moˇzn´e pˇr´ımo ze seznamu otevˇr´ıt nov´e okno s profilem objektu.
121
Uˇzivatelsk´a pˇr´ıruˇcka
Webov´e rozhran´ı
Obr´azek C.6: Vytvoˇren´ı rezervace. Dialogov´e okno vytvoˇren´ı objektu se m˚ uˇze liˇsit v z´avislosti na zobrazen´em kalend´aˇri. Napˇr´ıklad role Administr´ ator mus´ı v nˇekter´ ych pˇr´ıpadech definovat i uˇzivatele rezervace. Jeho v´ ybˇer je implementov´an obdobnˇe jako v´ ybˇer objektu.
Editace rezervace Rezervaci je moˇzn´e editovat hned nˇekolika zp˚ usoby. Uˇzivatel m˚ uˇze rezervace pˇr´ımo v kalend´ aˇri za pomoci kurzoru myˇsi roztahovat“ nebo smrˇst’ovat“ a t´ım mˇenit ” ” jejich ˇcasov´e rozpˇet´ı. To je moˇzn´e ve vˇsech pohledech kalend´aˇre. Pokud chce uˇzivatel zachovat ˇcasov´e rozpˇet´ı a pouze zmˇenit pozici rezervace v kalend´aˇri, je moˇzn´e jednotliv´e rezervace pˇret´ ahnout“ mezi hodinami, dny, t´ ydny atp. Pokud dojde ke ” kolizi rezervace, nen´ı tato editace uskuteˇcnˇena. Dalˇs´ım zp˚ usobem editace je kliknut´ı na samotnou rezervaci. N´asledn´e dialogov´e okno umoˇzn ˇuje kromˇe samotn´e editace ˇcasov´eho u ´seku rezervace tak´e zmˇenu platnosti periody a dalˇs´ı ˇradu akc´ı vˇcetnˇe u ´pln´eho odstranˇen´ı rezervace, jej´ıho vyzvednut´ı a vr´ acen´ı a d´ ale tak´e informuje o stavu rezervace (Obr. C.7). Tlaˇc´ıtka tˇechto akc´ı mohou b´ yt zaˇsedivˇena, pokud je napˇr. rezervace nevyzvednuteln´ a, um´ıstˇen´ a v minulosti atp. Dostupnost akc´ı se ˇr´ıd´ı poˇzadavky kladen´ ymi na syst´em. Tak´e pro role Spr´ avce rezervac´ı a Administr´ ator nab´ız´ı toto okno dalˇs´ı moˇznosti editace, jako je napˇr´ıklad zmˇena vlastn´ıka rezervace.
122
Uˇzivatelsk´a pˇr´ıruˇcka
Webov´e rozhran´ı
Obr´azek C.7: Editace rezervace.
C.1.4
Administrace
Pokud se uˇzivatel pˇrihl´ as´ı jako Administr´ ator, syst´em zpˇr´ıstupn´ı dalˇs´ı moˇznosti spr´avy syst´emu. Zejm´ena je moˇzn´e editovat a mazat objekty, tˇr´ıdy objekt˚ u a uˇzivatelsk´e u ´ˇcty. Jak ukazuje Obr´ azek C.8, oproti bˇeˇzn´ ym uˇzivatel˚ um tak´e nar˚ ust´a poˇcet moˇzn´ ych akc´ı. Odstranˇen´ı jakkoliv poloˇzky je realizov´ano jako v´ ybˇer jedn´e nebo v´ıce poloˇzek a n´ asledn´e kliknut´ı na tlaˇc´ıtko Odstranit, kter´e je um´ıstˇeno v patiˇcce tabulky. N´ aslednˇe je nutn´e volbu jeˇstˇe jednou potvrdit v dialogov´em oknu.
Obr´azek C.8: V´ıcepoloˇzkov´e administraˇcn´ı zobrazen´ı objekt˚ u. Obdobnˇe je realizov´ ano vytv´ aˇren´ı poloˇzek. Pˇri kliknut´ı na tlaˇc´ıtko Nov´y, um´ıstˇen´eho v patiˇcce tabulky, dojde k pˇresmˇerov´an´ı na vstupn´ı formul´aˇr nov´e poloˇzky.
123
Uˇzivatelsk´a pˇr´ıruˇcka
C.2
Aplikace RatDroid
Aplikace RatDroid
Mobiln´ı aplikace RatDroid nenab´ız´ı ˇz´adn´e moˇznosti administrace syst´emu, pouze z´akladn´ı spr´ avu vlastn´ıch obl´ıben´ ych poloˇzek a rezervac´ı. Na Obr´azku C.9 je zn´azornˇena hlavn´ı obrazovka aplikace, tvoˇr´ıc´ı z´akladn´ı navigaˇcn´ı menu aplikace.
Obr´azek C.9: Hlavn´ı obrazovka aplikace.
C.2.1
Nastaven´ı
Narozd´ıl od webov´eho rozhran´ı vyˇzaduje mobiln´ı aplikace z´akladn´ı nastaven´ı direktiv pro pˇripojen´ı k centr´ aln´ımu serveru. Pokud se pˇripojen´ı k serveru nezdaˇr´ı, jsou vypnuty vˇsechny navigaˇcn´ı prvky na obrazovky, kter´e pˇripojen´ı k serveru explicitnˇe vyˇzaduj´ı. Jednotliv´e poloˇzky nastaven´ı sleduj´ı obvykl´ y sc´en´aˇr nastaven´ı pˇripojen´ı (URL, Port atp.), d´ ale je nutn´e zadat jm´ena heslo uˇzivatele. Je moˇzn´e
124
Uˇzivatelsk´a pˇr´ıruˇcka
Aplikace RatDroid
kdykoliv za bˇehu aplikace zmˇenit jm´eno a heslo uˇzivatele. Aplikace zmˇenu uˇzivatelsk´eho jm´ena rozpozn´ a a pˇrepne kontext uˇzivatele (tj. kalend´aˇre, obl´ıben´e poloˇzky atp.).
C.2.2
Funkce Prohl´ıˇ zet“ ”
Aplikace umoˇzn ˇuje prohled´ avat seznam existuj´ıc´ıch objekt˚ u. Je moˇzn´e bud’ pouˇz´ıt ˇcteˇcku QR k´ od˚ u, v´ ybˇer z obl´ıben´ ych objekt˚ u pˇrihl´aˇsen´eho uˇzivatele nebo pouˇz´ıt vyhled´ av´ an´ı. Obrazovka na Obr´azku C.10 ukazuje situaci po otevˇren´ı obrazovky s funkc´ı Prohl´ıˇzet.
Obr´azek C.10: Prohl´ıˇzen´ı objekt˚ u. V´ ybˇer z dialogov´eho menu reprezentuje akci v´ ybˇeru objekt˚ u, kter´e se po dokonˇcen´ı akce zobraz´ı v seznamu leˇz´ıc´ım pod t´ımto dialogov´ ym menu. Menu je kdykoliv moˇzn´e vyvolat znovu stisknut´ım (hardwarov´eho nebo emulovan´eho) tlaˇc´ıtka Menu,
125
Uˇzivatelsk´a pˇr´ıruˇcka
Aplikace RatDroid
a t´ım zmˇenit aktu´ aln´ı selekci objekt˚ u. V´ ybˇerem objektu ze seznamu dojde k vyvol´an´ı obrazovky s profilem objektu (viz d´ale).
C.2.3
Funkce Obl´ıben´ e“ ”
Aplikace umoˇzn ˇuje zobrazen´ı vˇsech obl´ıben´ ych objekt˚ u pˇr´ımo z hlavn´ıho menu aplikace. Pˇri dotyku na poloˇzku ze seznamu objekt˚ u dojde k zobrazen´ı profilu tohoto objektu obdobnˇe jako v pˇr´ıpadˇe obrazovky Prohl´ıˇzet.
C.2.4
Profil objektu
Profil objektu obsahuje vˇsechny d˚ uleˇzit´e informace o objektu. Souˇcasnˇe v prav´em horn´ım rohu obsahuje sadu akc´ı, kter´e je moˇzn´e nad objektem prov´est – pˇridat nebo odebrat jej ze seznamu obl´ıben´ ych poloˇzek, zobrazit jeho kalend´aˇr nebo jej vyzvednout (viz d´ ale).
Obr´azek C.11: Profil objektu. 126
Uˇzivatelsk´a pˇr´ıruˇcka
C.2.5
Aplikace RatDroid
Funkce Vrat’“ ”
Aplikace umoˇzn ˇuje vracen´ı objekt˚ u podle pravidel uveden´ ych ve specifikaci poˇzadavk˚ u. Narozd´ıl od webov´eho rozhran´ı tak ale nedˇel´a prostˇrednictv´ım kalend´aˇre, ale za pomoci seznamu vˇsech objekt˚ u, kter´e si dan´ y uˇzivatel v minulosti vyp˚ ujˇcil a nepotvrdil jejich vr´ acen´ı (pokud to objekt vyˇzaduje). Pouh´ ym dotykem poloˇzky ze seznamu dojde k jej´ımu vr´ acen´ı a n´avratu na hlavn´ı obrazovku.
C.2.6
Kalend´ aˇ r
V mobiln´ı aplikaci existuj´ı dva kalend´aˇre – v´azan´ y na pˇrihl´aˇsen´eho uˇzivatele a v´azan´ y na objekt. Uˇzivatelsk´ y kalend´aˇr je moˇzn´e zobrazit z hlavn´ıho menu navigaˇcn´ım tlaˇc´ıtkem M˚ uj kalend´ aˇr, kalend´aˇr objektu pak lze zobrazit z profilu tohoto objektu akˇcn´ım tlaˇc´ıtkem. Kalend´aˇr se skl´ad´a z mˇes´ıˇcn´ıho (Obr. C.12) a denn´ıho pohledu.
Obr´azek C.12: Mˇes´ıˇcn´ı pohled kalend´aˇre.
127
Uˇzivatelsk´a pˇr´ıruˇcka
Aplikace RatDroid
Mˇes´ıˇcn´ı pohled zobrazuje ˇcervenˇe vˇsechny dny, ve kter´ ych je vytvoˇrena nˇejak´a rezervace. Zn´ azorˇ nuje tak´e poˇcet tˇechto rezervac´ı v jednom dni. Navigace mezi jednotliv´ ymi mˇes´ıci je moˇzn´ a pomoc´ı boˇcn´ıch navigaˇcn´ıch ˇsipek. Pˇri dotyku nˇekter´eho dne z kalend´ aˇre dojde k vyvol´an´ı denn´ıho pohledu kalend´aˇre (Obr. C.13).
Obr´azek C.13: Denn´ı pohled kalend´aˇre. Denn´ı pohled vypad´ a pˇribliˇznˇe jako kalend´aˇr webov´eho rozhran´ı a tak´e se s n´ım obdobnˇe pracuje. Je moˇzn´e s n´ım dotykov´ ymi gesty libovolnˇe vertik´alnˇe posouvat. Pˇri dotyku na m´ısto, kde nen´ı ˇza´dn´a rezervace, dojde k vyvol´an´ı obrazovky urˇcen´e k vytvoˇren´ı rezervace (pokud se uˇzivatel nesnaˇz´ı vytvoˇrit rezervaci v minulosti“). ” Pˇri dotyku samotn´e rezervace se pot´e zobraz´ı editaˇcn´ı obrazovka.
C.2.7
Vytv´ aˇ ren´ı a editace rezervace
Obrazovky vytv´ aˇren´ı a editace rezervace jsou velmi podobn´e dialog˚ um na centr´aln´ım serveru. Jedin´ ym rozd´ılem je snaha maxim´alnˇe vyuˇz´ıt prostˇredky doty-
128
Uˇzivatelsk´a pˇr´ıruˇcka
Aplikace RatDroid
kov´ ych displej˚ u mobiln´ıch zaˇr´ızen´ı (Obr. C.14). Pro vytvoˇren´ı rezervace je vˇzdy nejprve nutn´e definovat rezervovan´ y objekt – z pozice kalend´aˇre objektu je jiˇz objekt vlastnˇe identifikov´ an, nicm´enˇe v kalend´aˇri uˇzivatele se pˇred samotnou obrazovkou urˇcenou k vytvoˇren´ı objektu zobraz´ı komponenta podobn´a dˇr´ıve zm´ınˇen´e obrazovce Prohl´ıˇzet, ve kter´e uˇzivatel mus´ı rezervovan´ y objekt vybrat.
Obr´azek C.14: Denn´ı pohled kalend´aˇre. Obrazovka pro editaci rezervac´ı pˇrin´aˇs´ı oproti webov´emu rozhran´ı jednu moˇznost nav´ıc – je moˇzn´e zobrazit vˇsechny ˇc´asti periodick´e rezervace v jedn´e obrazovce a pˇr´ımo nastavovat jejich platnost (Obr. C.15). Je to kompromis v˚ uˇci menˇs´ım displej˚ um mobiln´ıch zaˇr´ızen´ı, kdy nen´ı zcela jednoduch´e se zorientovat v rozs´ahl´em kalend´ aˇri. Navigaˇcn´ı tlaˇc´ıtko pro zobrazen´ı t´eto obrazovky je v prav´em horn´ım rohu editaˇcn´ı obrazovky spolu s tlaˇc´ıtkem pro odstranˇen´ı rezervace.
129
Uˇzivatelsk´a pˇr´ıruˇcka
Aplikace RatDroid
Jinak je obrazovka editace rezervace prakticky totoˇzn´a s editaˇcn´ım dialogov´ ym oknem ve webov´em formul´ aˇri, pouze nenab´ız´ı moˇznosti vyzvednut´ı a vr´acen´ı. Ty byly v mobiln´ı aplikaci implementov´any jin´ ym zp˚ usobem.
Obr´azek C.15: Editace platnosti periodick´ ych rezervac´ı.
C.2.8
Funkce Vyzvedni“ ”
Tato funkce je dostupn´ a pˇr´ımo z hlavn´ı obrazovky aplikace a funguje odliˇsnˇe neˇz je tomu u webov´eho rozhran´ı. Jej´ım c´ılem je p˚ ujˇcov´an´ı a vyzved´av´an´ı objekt˚ u co nejv´ıce urychlit. Nejprve se zobraz´ı komponenta podobn´a dˇr´ıve zm´ınˇen´e obrazovce Prohl´ıˇzet, ve kter´e mus´ı uˇzivatel urˇcit vyzved´avan´ y objekt (pokud uˇzivatel vyzved´av´a objekt pˇr´ımo z profilu objektu, tato komponenta se nezobraz´ı). Po vybr´an´ı objektu dojde k automatick´eho vyhled´an´ı nejbliˇzˇs´ı vyzvednuteln´e rezervace uˇcinˇen´e na tento objekt. Pokud takov´a rezervace existuje, je automaticky vyzvednuta a po uˇzivateli nen´ı vyˇzadov´ ana ˇz´adn´a dalˇs´ı akce. V opaˇcn´em pˇr´ıpadˇe je uˇzivatel
130
Uˇzivatelsk´a pˇr´ıruˇcka
Aplikace RatDroid
pˇresmˇerov´ an na obrazovku urˇcenou pro vytvoˇren´ı rezervace, kde si m˚ uˇze zvolit ˇcas konce novˇe vzniknuvˇs´ı rezervace. Takov´e rezervace nelze vytv´aˇret jako periodick´e a jsou automaticky vedeny jako platn´e a vyzvednut´e. Funkce Vyzvedni neumoˇzn ˇuje vytv´aˇret rezervace na objekty, kter´e nevyˇzaduj´ı potvrzen´ı vyzvednut´ı.
131
D Administr´atorsk´a dokumentace V t´eto pˇr´ıloze bude uveden struˇcn´ y manu´al k nasazen´ı vˇsech ˇc´ast´ı informaˇcn´ıho syst´emu RAT.
D.1
Nasazen´ı webov´ e aplikace
Aplikace je distribuov´ ana jako WAR (Web application ARchive) soubor. Pro bˇeh je vyˇzadov´ an webov´ y kontejner Tomcat ve verzi 7. Jin´e kontejnery nebyly testov´any a jejich pouˇzit´ı je tedy bez z´ aruky. D´ale je potˇreba nainstalovat Java bˇehov´e prostˇred´ı v minim´ aln´ı verzi 7. Pro kompilaci a sestaven´ı WAR souboru pˇr´ımo ze zdrojov´ ych k´od˚ u je dostupn´ y Maven skript. Vˇsechny z´avislosti spravuje tak´e Maven. Pˇred samotn´ ym spuˇstˇen´ım kontejneru je vˇsak nutn´e nakonfigurovat zejm´ena pˇr´ıstup do datab´ aze, zabezpeˇcen´ı pˇrenosu a dalˇs´ı nastaven´ı.
D.1.1
Pˇ r´ıstup do datab´ aze
Nejprve je nutn´e nakonfigurovat datovou vrstvu. V aplikaci nen´ı integrov´ana ˇz´adn´a relaˇcn´ı datab´ aze a je tedy na bedrech administr´atora jej´ı nasazen´ı a patˇriˇcn´e nastaven´ı aplikace. Konfiguraˇcn´ı direktivy datov´e vrstvy aplikace jsou um´ıstˇeny v souboru WEB-INF/classes/persistence.xml. Doporuˇcen´a relaˇcn´ı datab´aze pro bˇeh aplikace je H2 Database Engine. Aplikace tak´e jiˇz obsahuje patˇriˇcn´e knihovny potˇrebn´e pro pˇripojen´ı k t´eto datab´azi. Je vˇsak moˇzn´e pouˇz´ıt libovolnou implementaci, jej´ıˇz dialekt framework Hibernate podporuje. Pro vytvoˇren´ı struktury datab´aze je moˇzn´e vyuˇz´ıt mapov´an´ı frameworku Hibernate. Pˇred prvn´ım spuˇstˇen´ım je nutn´e v konfiguraˇcn´ım souboru odkomentovat“ ” n´asleduj´ıc´ı ˇr´ adek:
<prop key="hibernate.hbm2ddl.auto">update
Hibernate pot´e s´ am vytvoˇr´ı relaˇcn´ı strukturu vˇcetnˇe vˇsech vazeb (po vytvoˇren´ı struktury datab´ aze ve vˇsak nutn´e ˇr´adek znovu zakomentovat). N´aslednˇe je nutn´e se libovoln´ ym konektorem pˇripojit do datab´azov´eho syst´emu a spustit n´asleduj´ıc´ı SQL dotaz (syntaxe se m˚ uˇze liˇsit v z´avisloti na pouˇzit´em datab´azov´em syst´emu):
132
Administr´atorsk´a dokumentace
Nasazen´ı webov´e aplikace
INSERT INTO "PUBLIC"."USER" ("USERID", "FIRSTNAME", "SURNAME", "EMAIL", "NICKNAME","PASSHASH", "ROLE", "IMPLEMENTOR") VALUES(0, ’admin’,’admin’, ’’, ’admin’,’21232f297a57a5a743894a0e4a801fc3’, ’ADMIN’, ’DEFAULT’) Spuˇstˇen´ım dotazu bude vytvoˇren administr´atorsk´ y u ´ˇcet admin s heslem admin. Tento u ´ˇcet je pak moˇzn´e pouˇz´ıt pro vytvoˇren´ı dalˇs´ıch uˇzivatelsk´ ych nebo administr´atorsk´ ych u ´ˇct˚ u.
Indexov´ an´ı datab´ aze Nˇekter´e datab´ azov´e entity jsou indexov´any enginem Hibernate Search. Protoˇze jsou tyto indexy uchov´ av´ any mimo datab´azi, je nutn´e definovat cestu k jejich uloˇzen´ı. To je moˇzn´e ve v´ yˇse zm´ınˇen´em konfiguraˇcn´ım souboru v r´amci n´asleduj´ıc´ı direktivy: <prop key="hibernate.search.default.indexBase">cesta_k_indexum
D.1.2
Konfigurace REST rozhran´ı
Pokud dojde pˇri bˇehu webov´e REST sluˇzby k chybˇe, aplikace vygeneruje o t´eto ud´alosti zpr´ avu a pˇriloˇz´ı ji k HTTP odpovˇedi. Do t´eto zpr´avy je moˇzn´e vkl´adat nˇekter´ a uˇziteˇcn´ a data pro ladˇen´ı aplikace. Jedn´ım z nich je i e-mailov´a adresa (nebo URL bug-tracking syst´emu), kam m˚ uˇze klientsk´a strana hl´asit chybu serveru. Tato direktiva se nach´ az´ı v konfiguraˇcn´ım souboru WEB-INF/RAT-servlet.xml a vypad´a n´asledovnˇe: <property name="defaultMoreInfoUrl" value="mailto:email">
D.1.3
Nastaven´ı syst´ emu rezervac´ı
V souboru WEB-INF/classes/rat.properties jsou z´akladn´ı konfiguraˇcn´ı direktivy rezervac´ı. Je ˇz´ adouc´ı prov´est konfiguraci tˇechto direktiv hned pˇri nasazen´ı syst´emu. N´ asledn´e zmˇeny t´eto konfigurace nejsou podporov´any zejm´ena proto, protoˇze nastaven´ı syst´emu si vˇsichni mobiln´ı klienti st´ahnou ze serveru pˇri prvn´ım sv´em spuˇstˇen´ı. N´ asleduj´ıc´ı v´ ypis souˇcasnˇe ukazuje pˇrednastaven´e hodnoty, kter´e jsou pouˇzity v okamˇziku, kdy se nezdaˇr´ı parsov´an´ı konfiguraˇcn´ıho souboru (tato ud´alost je zalogov´ ana):
133
Administr´atorsk´a dokumentace
Nasazen´ı webov´e aplikace
reservation.duration.minimum=60 (minuty) - jedna hodina reservation.duration.maximum=10080 (minuty) - jeden t´ yden reservation.periodical.maximum=52 (t´ ydny) reservation.expiration.limit=10 (minuty)
D.1.4
Nastaven´ı jazyka aplikace
Pro webov´e rozhran´ı je podporov´ana ˇcestina a angliˇctina. Zmˇena jazyka za bˇehu aplikace nen´ı moˇzn´ a. Mezi jazyky lze programovˇe pˇrep´ınat v konfiguraˇcn´ım souboru WEB-INF/faces-config.xml:
<default-locale>cs <supported-locale>en
D.1.5
Konfigurace SSL certifik´ atu
Syst´em vyˇzaduje speci´ aln´ı konfiguraci SSL certifik´atu zejm´ena proto, ˇze Android velmi obt´ıˇznˇe pracuje s certifik´ aty, kter´e nebyly ovˇeˇreny ˇz´adnou certifikaˇcn´ı autoritou. Pro vytvoˇren´ı certifik´ atu (kter´ y bude uloˇzen´ y v tzv. keystore) je nutn´e pouˇz´ıt knihovnu Bouncy Castle: 1. Nejprve je nutn´e st´ ahnout Bouncy Castle knihovnu, napˇr´ıklad z ofici´aln´ıho Maven repozit´ aˇre (bcprov-ext-jdkxx-1.xx.jar). 2. D´ ale se tato knihovna mus´ı nakop´ırovat do sloˇzek JAVA_HOME/jre/lib/ext a (pokud existuje) JAVA_HOME/lib/ext. 3. Do vˇsech konfiguraˇcn´ıch soubor˚ u java.security v JAVA_HOME je nutn´e pˇridat n´ asleduj´ıc´ı ˇr´ adku: security.provider.7=org.bouncycastle.jce.provider.BouncyCastle Provider 4. Nyn´ı je moˇzn´e vygenerovat keystore s certifik´atem, a to n´asledovnˇe: keytool -genkey -alias RAT -keystore RAT.keystore -storepass heslo -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider
134
Administr´atorsk´a dokumentace
Nasazen´ı mobiln´ı aplikace RatDroid
Gener´ ator se bude pt´ at na nˇekter´e dalˇs´ı u ´daje, d˚ uleˇzit´ y je vˇsak pouze tzv. CN, neboli obecn´e jm´eno. Zde je nutn´e zadat dom´enu, na kter´e bude server s aplikac´ı spuˇstˇen – bez tohoto kroku se nelze k serveru pˇripojit z mobiln´ı aplikace. Je tak´e nutn´e si poznamenat pˇr´ıstupovˇe heslo k vygenerovan´emu RAT.keystore. Nyn´ı je nutn´e konfigurovat Tomcat spolu s Bouncy Castle a vygenerovan´ ym keystore, a to vloˇzen´ım n´ asleduj´ıc´ı direktivy do konfiguraˇcn´ıho souboru server.xml, kter´ y je um´ıstˇen v Tomcat distribuci:
T´ım vˇsak konfigurace nekonˇc´ı. Vygenerovan´ y keystore je nutn´e tak´e zakomponovat do mobiln´ı aplikace Ratdroid (viz d´ale).
D.1.6
Nastaven´ı Cookies
Posledn´ım krokem je nastaven´ı Cookies. Tˇemi je mimo jin´e pˇren´aˇseno sessionId a je nutn´e nastavit jejich Domain-Name. Bez t´eto konfigurace nefunguje mobiln´ı aplikace RatSharp, protoˇze Windows Phone Cookies bez dom´enov´eho jm´ena nepodporuje. Nastaven´ı je v konfiguraˇcn´ım souboru META-INF/context.xml:
D.2
Nasazen´ı mobiln´ı aplikace RatDroid
Aplikace je urˇcena pro Android 4.1.2 a vyˇsˇs´ı. Mobiln´ı aplikaci je bohuˇzel vzhledem k integraci keystore nutn´e vˇzdy sestavit ze zdrojov´eho k´odu. Pro sestaven´ı je opˇet moˇzn´e pouˇzit Maven. Aplikace vyuˇz´ıv´a knihovny Caldroid, kter´a je um´ıstˇena na pˇriloˇzen´em m´ediu. Vˇsechny ostatn´ı z´avislosti spravuje Maven.
135
Administr´atorsk´a dokumentace
D.2.1
Nasazen´ı mobiln´ı aplikace RatDroid
Integrace keystore
Projekt aplikace je nutn´e otevˇr´ıt v libovoln´em v´ yvojov´em prostˇred´ı, ve kter´em je moˇzn´e vyv´ıjet aplikace pro mobiln´ı platformu Android. N´aslednˇe je tˇreba do sloˇzky res/raw nakop´ırovat pod n´azvem rat_keystore v pˇredchoz´ım kroku vytvoˇren´ y Bouncy Castle keystore. Ve tˇr´ıdˇe MyHttpClient je pot´e statick´a konstanta RAT_KEYSTORE_PASSWORD, kterou je nutn´e inicializovat na heslo pro pˇr´ıstup do keystore. N´aslednˇe je moˇzn´e aplikaci sestavit a distribuovat ji jako APK bal´ıˇcek.
136
E Obsah pˇriloˇzen´eho m´edia Souˇc´ast´ı t´eto pr´ ace je rovnˇeˇz i pamˇet’ov´e m´edium (DVD) obsahuj´ıc´ı tyto adres´aˇre a soubory: - readme.txt – textov´ y soubor obsahuj´ıc´ı popis a v´ yznam jednotliv´ ych adres´ aˇr˚ u na m´ediu. - /bin – obsahuje WAR soubor s aplikac´ı centr´aln´ıho serveru. - /doc – obsahuje PDF verzi t´eto pr´ace. - /src – obsahuje zdrojov´e k´ody mobiln´ı aplikace RatDroid a webov´e aplikace RatServer. - /rest – obsahuje XSD sch´emata XML reprezentace dat, kter´e jsou pˇren´aˇseny v r´ amci REST komunikace.
137
Literatura [1] GALUSHA, C. Getting started with IT asset management. IT Professional [online]. vol. 3, issue 3, s. 3740 [cit. 2013-05-10]. DOI: 10.1109/6294.939973. Dostupn´e z: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=939973 [2] MANOHARAN, Sathiamoorthy. On GPS Tracking of Mobile Devices. 2009 Fifth International Conference on Networking and Services [online]. IEEE, 2009, s. 415-418 [cit. 2013-04-17]. DOI: 10.1109/ICNS.2009.103. Dostupn´e z: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=4976795 [3] SPIRITO, M.A. On the accuracy of cellular mobile station location estimation. IEEE Transactions on Vehicular Technology [online]. roˇc. 50, ˇc. 3, s. 674685 [cit. 2013-04-17]. ISSN 0018-9545. DOI: 10.1109/25.933304. Dostupn´e z: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=933304 [4] OLIVER, R. Why the BYOD boom is changing how we think about business it. Engineering & Technology. 2012, roˇc. 7, ˇc. 10, s. 28. Dostupn´e z: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6413056&isnum ber=6355539 [5] INGKHWAN, A. WI-FI Tracker: an Organization WI-FI Tracking System. 2006 Canadian Conference on Electrical and Computer Engineering [online]. IEEE, 2006, s. 231-234 [cit. 2013-04-17]. DOI: 10.1109/CCECE.2006.277387. Dostupn´e z: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=4054833 [6] YEUNG, Wilson M. a Joseph K. NG. Wireless LAN Positioning based on Received Signal Strength from Mobile device and Access Points. 13th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications (RTCSA 2007). IEEE, 2007, roˇc. 7, ˇc. 10, s. 131-137. ISSN 1533-2306. DOI: 10.1109/RTCSA.2007.73. Dostupn´e z: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=4296845 [7] AGRAWAL, Rohit a Ashesh VASALYA. Bluetooth Navigation System using Wi-Fi Access Points. 2012, 8 s. Dostupn´e z: http://arxiv.org/abs/1204.1748
138
LITERATURA
LITERATURA
[8] GOZICK, Brandon, Kalyan Pathapati SUBBU, Ram DANTU a Tomyo MAESHIRO. Magnetic Maps for Indoor Navigation. IEEE Transactions on Instrumentation and Measurement [online]. roˇc. 60, ˇc. 12, s. 3883-3891 [cit. 2013-04-18]. ISSN 0018-9456. DOI: 10.1109/TIM.2011.2147690. Dostupn´e z: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=5773083 [9] RIEHLE, T. H., S. M. ANDERSON, P. A. LICHTER, J. P. CONDON, S. I. SHEIKH a D. S. HEDIN. Indoor waypoint navigation via magnetic anomalies. 2011 Annual International Conference of the IEEE Engineering in Medicine and Biology Society [online]. IEEE, 2011, s. 53155318 [cit. 2013-04-18]. DOI: 10.1109/IEMBS.2011.6091315. Dostupn´e z: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=6091315 [10] INDOORATLAS. IndoorAtlas [online]. 2013 [cit. 2013-04-18]. Dostupn´e z: http://www.indooratlas.com [11] CHUNG, Jaewoo, Matt DONAHOE, Chris SCHMANDT, Ig-Jae KIM, Pedram RAZAVAI a Micaela WISEMAN. Indoor location sensing using geomagnetism. Proceedings of the 9th international conference on Mobile systems, applications, and services - MobiSys ’11 [online]. New York, New York, USA: ACM Press, 2011, s. 141- [cit. 2013-04-18]. DOI: 10.1145/1999995.2000010. Dostupn´e z: http://portal.acm.org/citation.cfm?doid=1999995.2000010 [12] OHBUCHI, E., H. HANAIZUMI a LIM AH HOCK. Barcode Readers using the Camera Device in Mobile Phones. 2004 International Conference on Cyberworlds [online]. IEEE, 2004, s. 260-265 [cit. 2013-04-18]. DOI: 10.1109/CW.2004.23. Dostupn´e z: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=1366183 [13] WANT, R. An Introduction to RFID Technology. IEEE Pervasive Computing [online]. roˇc. 5, ˇc. 1, s. 25-33 [cit. 2013-0418]. ISSN 1536-1268. DOI: 10.1109/MPRV.2006.2. Dostupn´e z: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=1593568 [14] NFC Phones list, all available handsets: Complete list with all mobile phones with nfc chip. List of NFC Phones, availability by country and by carrier [online]. 2013 [cit. 2013-04-18]. Dostupn´e z: http://www.nfc-phones.org/summarylist-of-all-available-nfc-phones/ [15] ABLESON, W. Android in action. 3rd ed. Greenwich, Conn.: Manning, c2012, xxviii, 632 p. ISBN 16-172-9050-5. [16] HTML 5.1 Nightly: A vocabulary and associated APIs for HTML and XHTML. World Wide Web Consortium (W3C) [online]. 2013, 29.4.2013 [cit. 2013-04-29]. Dostupn´e z: http://www.w3.org/html/wg/drafts/html/master
139
LITERATURA
LITERATURA
[17] Introduction to Mobile Development: Developing Mobile Applications using Xamarin. Xamarin: Build cross-platform iOS, Android, Mac and Windows apps with C# and .NET [online]. 2013 [cit. 2013-04-29]. Dostupn´e z: http://docs.xamarin.com/guides/crossplatform/getting started/introduction to mobile development [18] DAY, J.D. a H. ZIMMERMANN. The OSI reference model. Proceedings of the IEEE [online]. roˇc. 71, ˇc. 12, s. 1334-1340 [cit. 201304-30]. ISSN 0018-9219. DOI: 10.1109/PROC.1983.12775. Dostupn´e z: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=1457043 ¨ [19] LIU, Ling a M OZSU. Encyclopedia of database systems. New York: Springer, c2009, 5 v. (lxix, 3749 p.). ISBN 978-038-7496-160. [20] FOWLER, Martin. Patterns of enterprise application architecture. Boston: Addison-Wesley, c2003, xxiv, 533 p. ISBN 03-211-2742-0. [21] ELLIOTT, James, Ryan FOWLER a Tim O’BRIEN. Harnessing Hibernate. Sebastopol: O’Reilly, 2008, xiv, 363 s. ISBN 978-0-596-51772-4. [22] JOEL MURACH, Andrea Steelman, Ryan FOWLER a Tim O’BRIEN. Murach’s Java servlets and JSP: training. 2nd ed. Fresno, CA: Mike Murach, 2008, xiv, 363 s. ISBN 18-907-7444-8. [23] BERGSTEN, Hans, Ryan FOWLER a Tim O’BRIEN. JavaServer faces: training. 2nd ed. Sebastopol, CA: O’Reilly, c2004, xiv, 589 p. ISBN 05-960-0539-3. [24] HEWITT, Eben, Ryan FOWLER a Tim O’BRIEN. Java SOA cookbook: training. 1st ed. Sebastopol, Calif.: O’Reilly, c2009, xxiv, 714 p. ISBN 05-9652072-7. [25] SOAP Specifications. World Wide Web Consortium (W3C) [online]. 2013 [cit. 2013-05-07]. Dostupn´e z: http://www.w3.org/TR/soap [26] HTTP/1.1: Method Definitions. World Wide tium (W3C) [online]. 2013 [cit. 2013-05-05]. http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
Web ConsorDostupn´e z:
[27] WALLS, Craig. Spring in action. 3rd ed. Shelter Island: Manning, c2011, xxiii, 400 p. ISBN 19-351-8235-8.
140