Úvod
Cieľom by malo byť (a aj je) vyprodukovanie webového rozhrania k celému projektu, ktoré by malo byť do istej miery schopné kooperácie s ďalšími časťami a rovnako tak by malo byť schopné brať ohľad na schopnosti a požiadavky používateľa (JOE vs. administrátor).
Analýza
Očakávaným výstupom práce by malo byť web rozhranie k celému projektu vo forme modulárnej web aplikácie ako aj modul pre získavanie informácií z databázy. Vytvorený modul by mal okrem iného slúžiť aj ako ukážka a návod ako vytvoriť a integorvať ďalšie moduly, ktoré by rozširovali funkčnosť celej aplikácie.
Analýza sa bude skladať z týchto častí:
- Analýza architektúry
- Analýza možností návrhu
- Analýza súčastného stavu
- Analýza použitej technológie
Analýza archutektúry
//Zatial iba navrh toho co by tu malo byt - prediskutovat s Durom!!!
//Momentalne citam vsetky dostupne bakalarky (11.1.2008) tak snad zajtra to tu uz bude.
1. Opis vsetkych vrstiev
2. Miesto prace v ramci architektury
3. Slovnik pomjov
Analýza možností návrhu
Cieľom práce je vytvoriť aplikáciu, ktorá implementuje funkčnosť pomocou modulov a sama o sebe slúži iba ako jadro poskytujúce prostredie pre jednotlivé moduly. Toto je možné dosiahnúť objektovým prístupom a rozhraniami, ktoré budú jednotlivé moduly implementovať. Vhodne navrhnuté a implementované "jadro" aplikácie by mohlo umožniť využiť aj funkčnosť už existujúcich častí, ktoré nemusia byť implementované pomocou rovnakej technológie ako samotná aplikácia.
Analýza súčastného stavu
V súčastnosti v rámci projektu neexistuje rozhranie, ktoré by plnilo požadované funkcie. Preto bude jeho návrh a implementácia pre projekt prínosom a umožní zastrešenie ako nových tak aj existujúcich súšastí pod jediný kontrolný bod.
Analýza použitej technológie
Pre implementačnú fázu som sa rozhodol využiť technológiu Java od spoločnosti Sun Microsystems. Hlavným dôvodom bola možnosť prenositeľnosť výstupu medzi rôznymi platformami ako aj existencie viacerých súčastí projektu, ktoré využívajú rovnakú technológiu čo bude viesť k vyššej kompatibilite. Technológia Java v sebe zahŕňa viacero súčastí, ktoré sa využívajú v konkrétnych situáciách a na špecifické úlohy. Pre tento prípad je najvhodnejším technológie J2EE (Java 2 Enterprise Edition), ktorá obsahuje nástroje pre tvorbu efektívnych webových aplikácií.
Na ukladanie dát je využívaná databáza
PostgreSQL?, ktorá v čase tvorby aplikácie už existovala a preto bolo jej využitie veľmi praktické.
Pri štúdiu podobných existujúcich aplikácií som narazil na návrhový vzor, ktorý rieši problematiku návrhu webových aplikácií. Jedná sa o návrhový vzor MVC alebo Model View Controller.
Návrhový vzor MVC
Tento návrhový vzor (môže byť chápaný aj ako agregačný návrhový vzor alebo architektonický vzor) rozdeľuje aplikáciu na 3 funkčné celky:
- Dátový model
- Používateľské rozhranie
- Riadiacujednotku
Dátový model reprezentuje statické dáta uložené pokope napríklad vo forme databázy.
Používateľské rozhranie už podľa názvu reprezentuje grafické rozhranie aplikácie teda časť, ktorá zabezpečuje interakciu s používateľom.
Riadiaca logika je kód (aplikácia), korá zabezpečuje presun a kontrolu informácií, ktoré prúdia medzi dvoma predošlími časťami. Jej hlavnou úlohou je riadenie komunikácie medzi dátami a rozhraním.
Jedná sa teda o "rozvrstvenie" aplikácie na prezentčnú, doménovú a dátovú vrstvu. Tento návrhový vzor môže byť implementovaný viacerými spôsobmi vo všeobecnosti však funguje na nasledujúcom princpe:
1. Používateľ vykoná akciu využitím GUI rozhrania (napr. stlačenie tlačidla)
2. Riadiaca jednotka obdrží informácie o tejto akcie od objektu používateľského rozhrania
3. Potom táto pristúpi k doménovej vrstve a podľa potreby ju aktualizuje (príkladom môže byť aktualizácia nákupného košíka v elektronickom obchode).
4. Využitím doménovej logiky sa vykonajú všetky potrebné úkony (napr. prepočet celkovej ceny), tieto však nie sú priamo súčasťou návrhového vzoru a sú závislé od konkrétnej aplikácie a jej zamerania.
5. Prezentačná vrstva pristúpi k doménovej a aktualizuje údaje (pohľad - z ang.
view) podľa toho ako sa doménová vrstva zmenila. Je nutné podotknúť, že doménová vrstva nepotrebuje prístup k prezentačnej vrstve a to kedy sa má pohľad aktualizovať má na starosti riadiaca jednotka.
6. Prezentačná vrstva (GUI rozhranie) opäť čaká na akciu od používateľa.
V súčastnosti je k dispozícií viacero frameworkov, ktoré implementujú tento návrhový vzor. V mojom prípade výber padol na framework
Wicket od nadácie Apache. Výber bol robený na základe komunikácie s viacerými programátormi, ktorí pôsobia v tejto oblasti a ich odporúčaniach. Táto technológia je novšia a implementovala pozitívne hodnotené časti ostatných frameworkov, pričom vynechala veci, ktoré používatelia nemali v obľube. Ďalším kladom je kvalitná dokumentácia celého projektu ako aj existencia pluginov do vývojového prostredia.
Návrh
Cieľom návrhu je vytvoriť rozhranie k celému projektu s dôrazom na komfort ako pre používateľov tak aj pre programátorov, ktorí by sa v budúcnosti rozhodli rozšíriť funkčnosť riešenia doplnkami. Na základe analýzy som dospel k záveru, že najjednoduchšie bude použiť framework implementujúci návrhový vzor MVC.
Súčasťou analýzy bolo aj vybrať konkrétny framework a naštudovať jeho možnosti. Vybraný bol
Wicket a v súčastnosti stále študujem dostupnú literatúru (som hotový na cca 80 percent).
Návrh hlavnej aplikácie
Cieľom je implementovať do hlavnej aplikácie aboslútne minimum aby funkčnosť aplikácie nezávisela priamo od jadra ale iba od modulov. To ušetrí mnohé problémy, ktoré by sa vyskytli pri nemodulárnej aplikácii. Okrem toho sa aplikácia stane znovupoužiteľná a bude možné ju použiť aj na iné účely jednoduchou zmenou doplnkov.
Aplikáciu bude tvoriť rozhranie vytvorené jazykom HTML. Hlavnou súčasťou rozhrania budú framy, ktoré rozdelia hlavné okno na niekoľko častí. Stred obrazovky bude vyhradený pre zobrazovanie funkčnej náplne aplikácie - napr. pluginov.
//Nechcem tu ešte dávať, konkrétne zdrojáky ani grafy lebo už som začal aj implementovať a narážam na veci, ktoré vyžadujú zmenu takže to tu hodím keď budem //mať väčšiu časť uzavretú.
Návrh komunikácie medzi hlavnou aplikáciou a modulmi (API)
Pluginy budú s aplikáciou komunikovať prostredníctvom rozhrania (API), ktoré implementujú priamo pri objektovom návrhu.
//Opäť mením to každú hodinu počas toho ako to robím a nechcem to tu prepisovať po každej zmene
//Zatiaľ mám jasné to, že každý modul bude môcť mať nastavenia - settings, čiže súčasťou rozhrania bude aj metóda, ktorá vykreslí stránku s nastaveniami modulu
//pričomtúto implementuje pogramátor podľa svojich potrieb. Ak modul nepotrebuje nastavenia tak tam iba vypíše hlášku alebo informácie o sebe...
Návrh modulov
Pri návrhu modulov je potrebné naštudovať dokumentáciu priloženú k aplikácii a pochopiť spôsom komunikácie medzi jednotlivými frejmami. Pri tvorbe modulu je navyše potrebné použiť priložené rozhranie a implementovať metódy v ňom zahrnuté!
//Inštalácia modulu ešte nie je poriešená - buď to bude cez deploy (čo by som nechcel) alebo ho bude stačiť nakopírovať (zabaelný/rozbalený???) do priečinku a //aplikácia ho nájde sama (to by som chcel)
Odkaz
Chcel by som týmto odkázať všetkým, ktorých moje rozhodnutie používať JSP ovplyvnilo tak, že ho používajú aj oni, že najjednoduchšie ako to rozbehať na PC je nainštalovať:
1.) JDK
2.) Netbeans + Web (Je to ten 139 mb balík)
Potom nainštalovať JDK a pri inštalácii je Netbeans je voľba nainštalovať 2 servre (Tomcat a
GlassFish?). Ja preferujem ten druhý ale ak chcete môžte si nainštalovať aj Tomcat. Po inštalácii a spustení Netbeans sú v ľavom hornom rohu (pod hlavnou ponukou) 3 voľby -
Projects, Files a Services. Kliknite na Services a úplne dole nájdete server
GlassFish?. Potom už iba pravý klik a Start.
K ovládaniu servera sa pristupuje cez
http://localhost:4848 a k samotnej stráke, ktorú naprogramujete a pridáte na server (voľba Deploy) cez
http://localhost:8080.
Ešte jedno info: Ak ste pri inštalácii nič nemenili tak prihlasovacie meno na server je
admin a heslo
adminadmin.
Požiadavky
- JDK
- GlassFish? V2 alebo TomCat? (GlassFish? je preferovaný)
- PostgreSQL?
Ciele
Modularita - Stránka by mala fungovať na základe "holej aplikácie", ktorá by podporovala pridávanie modulov (napr. samostatných .war archívov). Pre každý modul by vytvorila vlastný link a ten by už fungoval samostatne
MVC Prístup - Využiť jeden z existujúcich frameworkov aby som úspešne implementoval MVC design pattern (čiže oddelenie interfejsu od funkčnej časti aplikácie). Vyýber frameworkov:
-
Struts2 - Neexistuje uspokojivý NetBeans? plugin, resp. nie je implementovaná plná funkčnosť
-
JSF - Stále prliš veľa XML
- Wicket
-
Spring - Toto je pre XML masochistov
TO-DO
-
Dať dokopy Wiki stránku
- Vymyslieť ako stránku vytvoriť tak aby podporovala moduly
-
Vyplniť zadávací list
- Dať dokopy požiadavky na server kde bude aplikácia bežať
-
Vybrať framework pre MVC
- Naštudovať Wicket
Odkazy na webe