Author: DavidK Date: 2010-02-10 00:42:42 +0100 (Wed, 10 Feb 2010) New Revision: 1692 Modified: others/dokumentace/technicalGuide/architecture/0architecture.tex others/dokumentace/technicalGuide/architecture/4webapp.tex others/dokumentace/technicalGuide/architecture/7communication.tex others/dokumentace/technicalGuide/architecture/8deployment.tex Log: Modified: others/dokumentace/technicalGuide/architecture/0architecture.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/0architecture.tex 2010-02-09 20:25:57 UTC (rev 1691) +++ others/dokumentace/technicalGuide/architecture/0architecture.tex 2010-02-09 23:42:42 UTC (rev 1692) @@ -9,7 +9,7 @@ \usepackage{multirow} \usepackage{threeparttable} \usepackage{longtable} -\usepackage[czech]{babel} +%\usepackage[czech]{babel} \usepackage[left=2cm]{geometry} \pagestyle{fancy} % with this we ensure that the chapter and section Modified: others/dokumentace/technicalGuide/architecture/4webapp.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/4webapp.tex 2010-02-09 20:25:57 UTC (rev 1691) +++ others/dokumentace/technicalGuide/architecture/4webapp.tex 2010-02-09 23:42:42 UTC (rev 1692) @@ -9,7 +9,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%% \section{Architektura webové části} -Webová část řešení sestává ze 2 hlavních projektů, které obsahují, či využívají další části.\textit{Obrázek \ref{webapp_img_components}} ukazuje vstah projektů vyvíjených v rámci řešení ELVYS. +Webová část řešení sestává ze 2 hlavních projektů, které obsahují, či využívají další části.\textit{Obrázek \ref{webapp_img_components}} ukazuje vztah projektů vyvíjených v rámci řešení ELVYS. \begin{figure} \label{webapp_img_components} @@ -19,7 +19,7 @@ \caption{Schéma projektů řešení ELVYS} \end{figure} - \subsection{webServer2}\label{webapp_architecture_webServer2} + \subsection{Projekt webServer2}\label{webapp_architecture_webServer2} WebServer2 je stěžejní částí webové strany řešení. Je to webová aplikace umožňující uživatelům provádět veškeré činnosti spojené s agendou plánování dokumentů, správy společností, uživatelů, zobrazování reportů a všech dalších věcí, které by měl systém ELVYS umět podle \textit{dokumentu analýzy}. \\ @@ -29,30 +29,30 @@ Ukládání session\-state na serveru - \subsection{dispatcher}\label{webapp_architecture_dispatcher} + \subsection{Projekt dispatcher}\label{webapp_architecture_dispatcher} Tato aplikace umožňuje kioskům získávat od serveru informace o plánování. - \subsection{XML, XSD, HTTP, JAXB} - [DO KAP.4 mozna] + \subsubsection{XML, XSD, HTTP, JAXB} Tělo většiny zpráv posílaných přes internet je tvořeno XML dokumentem nesoucím určitá data. Všechny komplexnější XML\footnote{Extensible Markup Language (XML), \url{http://www.w3.org/XML/}} dokumenty (např. jakýkoliv XXXConfig přenášený ze serveru na kiosek) mají definován formát pomocí jazyka XML Schema\footnote{XML Schema language, \url{http://www.w3.org/XML/Schema}} - \subsubsection{JAXB} + \subparagraph{JAXB} JAXB generuje \\ Při změně XSD souboru je nutné znovu vygenerovat třídy pomocí ANT skriptu [DOPLNIT] - \subsection{Technologie Java Servlet} - [DO KAP.4 mozna] - K vytváření bodů vzdáleně přístupných přes HTTP protokol je v systému ELVYS použita technologie Java Servlet. Tato technologie - umožňuje namapování java třídy implementující určité rozhraní na nějaké URL. Java třída poté na daném URL poslouchá a zpracovává HTTP požadavky.\\ - Pomocí této technologie jsou vytvořeny všechny přístupové body do aplikace \textbf{dispatcher}. + \subsubsection{Technologie Java Servlet} + K vytváření bodů vzdáleně přístupných přes HTTP protokol je v systému ELVYS použita technologie Java Servlet. Tato technologie + umožňuje namapování java třídy implementující určité rozhraní na nějaké URL. Java třída poté na daném URL poslouchá a zpracovává HTTP požadavky.\\ + Pomocí této technologie jsou vytvořeny všechny přístupové body do aplikace \textbf{dispatcher}. - \subsection{elvysCommons}\label{webapp_architecture_elvysCommons} + \subsection{Projekt elvysCommons}\label{webapp_architecture_elvysCommons} V tomto modulu se nachází sdílený kód a sdílené zdroje, které používá jak projekt webServer2, tak projekt dispatcher. - \subsection{LayoutDesigner} Jedná se o java applet, grafický editor, který je součástí webové + + \subsection{Projekt LayoutDesigner}\label{webapp_architecture_LayoutDesigner} + Jedná se o java applet, grafický editor, který je součástí webové aplikace (konkrétně tedy aplikace webServer2) a umožňuje uživateli navrhovat rozvržení obrazovek pro kiosky. Podobněji se architekturou tohoto editoru zabývá \textit{kapitola \ref{LD} (str. \pageref{LD})}. Komunikaci mezi webovým serverem a editorem LayoutDesigner potom popisuje \textit{kapitola \ref{interface_web_and_LD} (str. \pageref{interface_web_and_LD})}. @@ -73,8 +73,8 @@ \item textbf{MySQL 5.1, community edition}\footnote{MySQL, \url{http://dev.mysql.com/doc/refman/5.1/en/}} TODO \end{itemize} Jako databázový stroj byl pro serverovou část řešení ELVYS zvolen MySQL server a to z důvodu, že s ním mají autoři bohaté - zkušenosti, je relativně výkonná a spolehlivá. Pro vývoj je tato databáze plně postačující a díky použití Hibernate ORM nástroje - je možné elegantně přejít na jinou databázovou technologii v případě potřeby. + zkušenosti, je relativně výkonná a spolehlivá. Pro vývoj je tato databáze plně postačující a díky použití Hibernate ORM nástroje + (viz. dále) je možné s relativně malým úsilím přejít na jinou databázovou technologii v případě potřeby. \subsection{Popis datového modelu} @@ -88,7 +88,9 @@ \subsection{Popis 'ORM' frameworku Hibernate}\label{hibernate_popis} - \subsection{Nastavení hibernate} + \subsection{Konfigurace hibernate} + Konfigurace hibernate se provádí v hibernate + \subsubsection{C3P0 connection pool} \subsection{Získání hibernate tříd} \begin{itemize} @@ -98,8 +100,8 @@ \item používání .java souborů \end{itemize} - \subsection{popis provádění změn v DB modelu} - Existuje více prostředí, na kterých běží webová aplikace a vzhledem k používání tohoto řešení již v průběhu vývoje + \subsection{Popis provádění změn v DB modelu} + Existuje více prostředí určených pro běh webové aplikace a vzhledem k používání tohoto řešení již v průběhu vývoje je kladen důraz na zachování starých dat (v co největším rozsahu) při přechodu na novou verzi systému. Tím pádem je potřeba po každé změně datového modelu nutno přemigrovat starý datový model a data v něm uložená @@ -111,35 +113,24 @@ \subsubsection{Soulad čisté a migrované DB (koherence?)} do migrované se jednoduše může zanést chyba, migrace se musí kontrolovat oproti čisté DB. =popsat tady postup - \subsection{Používání Hibernate Session v kódu} - + \subsection{Používání Hibernate Session v kódu} -%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Security -%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{bezpečnost} - - \subsection{Autentizace uživatelů} - - - \subsection{Automatická expirace session} - - - \subsection{Ukládání session na serveru} - \subsubsection{webServer2} - ten SSL zatim nema - \subsubsection{dispatcher} - tenhle taky ne - \subsection{Podpora SSL} - \subsection{Popis komunikace serveru} - \subsubsection{webServer2} - FF, IE8, nutnost JRE pro applet - \subsubsection{webAPI??} - viz. dale - \subsubsection{dispatcher} - komunikace mezi kiosky a serverem - + \subsection{Archivace starých dat na serveru} + Aby na serveru jednoho dne nedošlo místo, je nutné zanalyzovat potřebu uvolňovat nepotřebná data ze systému. + \begin{itemize} + \item \textbf{Plánování} + - planovani- casem jich bude hodne + - pri odebrani kategorie - zahodit planovani? + - pri zmene kategorie + \item \textbf{Dokumenty} + - pro každý dokument v historii musí zůstávat v tabulce záznam o tomto dokumentu (kvůli statistikám, reportům) + \item \textbf{Uživatelé} + \item \textbf{Společnosti} + \end{itemize} + %%%%%%%%%%%%%%%%%%%%%%%%%% %% libraries %%%%%%%%%%%%%%%%%%%%%%%%%% @@ -153,7 +144,6 @@ \begin{itemize} \item \textbf{c3pO} \end{itemize} - \item[] \end{description} \subsection{JAR knihovny aplikace dispatcher} @@ -161,28 +151,48 @@ \subsection{JAR knihovny aplikace LayoutDesigner} - - + %%%%%%%%%%%%%%%%%%%%%%%%%% %% packages %%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Napsat něco o rozdělení do balíčků (ang. packages)} - \subsection{Rozdělení do modulů, sdílená aplikační logika} - - na to taky navazuje připravenost na napsání dalšího modulu- pro WS-API, přesunout k sobě. Odkaz na sekci, kde je popsáno, jak tu aplikacni logiku mame vlastne oddelenou...\\ +\section{Rozdělení do balíčků a složek} + \subsection{Rozdělení do projektů, sdílená aplikační logika} + Odkaz na sekci, kde je popsáno, jak tu aplikacni logiku mame vlastne oddelenou...\\ Build je prováděn pomocí ANT-skriptů, které jsou popsány v \ref{build_ant}\\ + \subsection{Balíčky v projektech} + Nezrušit tuhle sekci a nedat balicky do 4.1 do odpovidajicich podsekci? +%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Security +%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{WebServer2 - bezpečnost} + Nemá tohle být v kapitole 7.5? + \subsection{Autentizace uživatelů} + + + \subsection{Automatická expirace session} + + + \subsection{Ukládání session na serveru} + \subsubsection{WebServer2} - ten SSL zatim nema + \subsubsection{Dispatcher} - tenhle taky ne + \subsection{Podpora SSL} + \subsection{Popis komunikace serveru} + \subsubsection{webServer2} + FF, IE8, nutnost JRE pro applet + \subsubsection{webAPI??} + viz. dale + \subsubsection{dispatcher} + komunikace mezi kiosky a serverem - - %%%%%%%%%%%%%%%%%%%%%%%%%% %% GUI %%%%%%%%%%%%%%%%%%%%%%%%%% -\section{GUI- JSF, Richfaces,..} - \subsection{lokalizace} - \paragraph{lokalizace labelu} - \paragraph{lokalizace chybových hlášek} - \subsection{vlastní zobrazovací komponenty} - \subsection{lokalizace} +\section{WebServer2 - GUI} + \subsection{JSF} + \subsection{Richfaces} + \subsection{Vlastní zobrazovací komponenty} + \subsection{Lokalizace} Aplikace webServer2 podporuje lokalizaci popisků na webu do mnoha jazyků. Tato lokalizace může být užitečná, pokud se systémem pracují lidé mluvící jinou řečí. Každý uživatel (ať už o tom ví, či ne), má ve svém internetovém prohlížeči nastaven světový jazyk, pomocí kterého se prohlížeč identifikuje webovému serveru. Server tak může nabídnout anglické popisky člověku, který má v prohlížeči nastaven anglický jazyk komunikace a na druhé straně české popisky člověku, který má nastaveno české prostředí prohlížeče. @@ -190,15 +200,31 @@ Modul webServer2 podporuje vícejazyčnou komunikaci založenou na výše zmíněném principu, nicméně lokalizace webové aplikace byla zatím napsána jenom pro český jazyk. Použití se zatím předpokládá v česky hovořícím prostředí, v případě požadavku je možné lokalizaci pro jiný jazyk vytvořit. - Pro lokalizované popisky jsou umístěny v souboru {\em labels\_xx.properties}, kde {\it xx} značí zkratku jazyka, kterým se identifikuje webový prohlížeč serveru (cs pro češtinu, en pro angličtinu,..). - Systém potom vyhledá požadovaný soubor labels\_xx.properties a použije ho pro vypisování popisek. + \subsubsection{Lokalizace popisků} + Lokalizované popisky jsou umístěny v souboru {\em labels\_xx.properties}, kde {\it xx} značí zkratku jazyka, kterým se identifikuje webový prohlížeč serveru (cs pro češtinu, en pro angličtinu,..). + Systém potom vyhledá požadovaný soubor labels\_xx.properties a použije ho pro vypisování popisek. + \subsubsection{Lokalizace chybových hlášek} + Systém je velice podobný, ... TODO +%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Statistiky +%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{WebServer2 - Statistiky} + +%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Reporty +%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{WebServer2 - Reporty} + + + %%%%%%%%%%%%%%%%%%%%%%%%%% %% Plánování %%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Plánování obsahu kiosku} - tady popisu planovaci komponentu. zminim casti, ktere jsou zavisle na typu planovani (ikdyz to sem zdanlive nepatri, ulehcim ctenari vyznani se v plugovatelnosti typu) +\section{WebServer2 - Plánování obsahu kiosku} + \subsection{Plánovací komponenta} + tady popisu planovaci komponentu. zminim casti, ktere jsou zavisle na typu planovani (ikdyz to sem zdanlive nepatri, ulehcim ctenari vyznani se v plugovatelnosti typu) zavisle casti jsou:\\ tooltip\\ @@ -213,16 +239,60 @@ \item{3.krok} Uživatel potvrdí plánování. Systém provede potřebné validace zadaných údajů a případně uživatele vybídne k opravě. \end{itemize} + \subsection{Plánování na kategorie} + \subsubsection{sdílené kategorie} + \subsection{Plánování na panely} + \subsubsection{Skrývání panelů u plánování} + + \subsection{Použití TextMeteru na měření textu} + Při plánování static a dynamic textu + %%%%%%%%%%%%%%%%%%%%%%%%%% +%% Upload +%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{WebServer2 - nahrávání souborů na server} + \subsection{Komponenta pro nahrávání dat} + \subsection{Rozpoznání typu nahrávaných dat} + + \subsection{Použití pageCounter} + Počítá počet stránek nahrávaného PDF dokuementu. ref todo + \subsection{Použití videoMeter} + Počítá délku videa nahrávaného videa. ref todo + + + \subsection{Mazání starých dočasných dat} + autodelete=true/ false + + \subsection{Znovupoužitelnost nahrávání dat} + Aplikační logika (rozpoznávání typu souborů, kopírování, ukládání do DB, ..) nahrávání souborů je + umístěna v projektu ElvysCommons, tudíž ji lze převzít a vytvořit nástroj pro hromadné nahrávání souborů na server. + Více info o této myšlence \textit{viz. kapitola \ref{communication_future_FTP} (str. \pageref{communication_future_FTP})} + + +%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Novy typ souboru +%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Rozšiřitelnost systému o nový typ souboru} + + \subsection{Nový záznam v DB} + \subsection{Nová třída pro správu nového typu souboru} + \subsubsection{metoda} + \subsubsection{metoda} + + +%%%%%%%%%%%%%%%%%%%%%%%%%% %% Plugovatelnost typů %%%%%%%%%%%%%%%%%%%%%%%%%% - \subsection{Rozšiřitelnost systému o nový typ plánovaných dat} +\section{Rozšiřitelnost systému o nový typ plánovaných dat} +POZNÁMKA - tato kapitola se bude přepisovat, nobsahuje aktuální informace + + pred touto kapitolou urcite popsat: planovaci komponenta Jelikož bude systém umožňovat plánovat na obrazovku kiosku různé typy dat, je kladen důraz na navržení systému tak, aby mohla být podpora pro další typ zobrazovaných dat (např. videa) jednoduchou cestou doprogramována. - \subsubsection{Nový typ plánovaných dat v databázi} + \subsection{Nový typ plánovaných dat v databázi} Úprava databáze je shrnuta v následujících krocích: \begin{itemize} \item{} \textbf{content\_type} @@ -234,7 +304,7 @@ - toto je buď možno udělat ručně, nebo z UC \end{itemize} - \subsubsection{Nový typ dat k uploadu} + \subsection{Nový typ dat k uploadu} tohle zpusobuje problemy, nemuze byt asi reseno automaticky Kdyz se pridavalo video, tak muselo byt: \begin{itemize} @@ -249,11 +319,11 @@ \end{itemize} - \subsubsection{Nový typ dat při plánováni rozvržení obrazovky} + \subsection{Nový typ dat při plánováni rozvržení obrazovky} V aplikaci LayoutDesigner není potřeba nic měnit, možnost vytváření pozic, na kterých bude povoleno plánování nového typu je dáno pouze informací v datovém modelu webové aplikace (comp\_permitted\_type) - \subsubsection{Nový typ dat v plánovací komponentě} + \subsection{Nový typ dat v plánovací komponentě} Základními typy plánování, které bude možno provádět budou: \textit{statický text}, \textit{dynamický text}, \textit{pdf dokument}, \textit{webová stránka}. @@ -318,68 +388,11 @@ odesílání DocumentConfigu není plugovatelné -> todo \end{itemize} - \subsubsection{Nový typ dat na kiosku} - Tady také popsat komunikaci s kioskem. - - - ta by mohla byt taky plugovatelna :O - - - \subsection{nahrávání dat na kiosek} - - \begin{itemize} - - \item{} - \item{Mazání starých dočasných dat} - autodelete=true/ false - - \end{itemize} - - - \subsection{komunikace s kioskem} - - \subsection{Archivace starých dat na serveru} - \begin{itemize} - \item{Společnosti} - - \item{Uživatelé} - - \item{Plánování} - - planovani- casem jich bude hodne - - pri odebrani kategorie - zahodit planovani, ci ne? - - pri zmene kategorie - \item{Dokumenty} - - pro každý dokument v historii musí zůstávat v tabulce záznam o tomto dokumentu - \end{itemize} - - - - - - - - -%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Plánování -%%%%%%%%%%%%%%%%%%%%%%%%%% - \subsubsection{Skrývání panelů u plánování} - Tohle je celkem složitá věc, ještě nemáme ujasněno, jak konkrétně to budeme dělat. - - - - \subsection{Použití JH supa-dupa toolu na měření textu} - \subsubsection{Deployment, závislosti} - spis tady popsat jenom zavislosti a udelat dalsi "vetsi" include - deployment - - + %%%%%%%%%%%%%%%%%%%%%%%%%% %% spatne zkusenosti %%%%%%%%%%%%%%%%%%%%%%%%%% \section{Špatné zkušenosti z vývoje} \subsubsection{varchar foreign key} - - - - - Modified: others/dokumentace/technicalGuide/architecture/7communication.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/7communication.tex 2010-02-09 20:25:57 UTC (rev 1691) +++ others/dokumentace/technicalGuide/architecture/7communication.tex 2010-02-09 23:42:42 UTC (rev 1692) @@ -36,7 +36,7 @@ jeho použití pro tak jednoduchou komunikaci je příliš složité a robustní. \item \textbf{Message-oriented middleware} \\ Použití middlewaru pracujícího na principu přenosu zpráv (např. ActiveMQ\footnote{ActiveMQ, \url{http://activemq.apache.org/}}) by bylo pro systém ELVYS vhodnější, - bohužel složitost realizace takového řešení by byla příliš složitá. + bohužel složitost realizace takového řešení by byla příliš velká. \item \textbf{Proprietární řešení pomocí TCP/UDP}\\ Implementace vlastního komunikačního protokolu postaveného na TCP/UDP zcela neodpovídá požadavkům kladeným na komunikační infrastrukturu. @@ -73,8 +73,9 @@ \subsection{VPN} Serverová část i kiosky jsou propojeny pomocí VPN\footnote{virtual private network (VPN), \url{http://www.vpnc.org/}} - a v rámci této virtuální sítě spolu komunikují pomocí zabezpečeného SSL spojení. - Více informací o použití VPN v řešení ELVYS je možno nalézt v \textit{kapitole \ref{deployment_VPN} (\pageref{deployment_VPN})} + a v rámci této virtuální sítě spolu komunikují pomocí zabezpečeného Blowfish spojení. + Více informací o VPN v řešení ELVYS je možno nalézt v \textit{kapitole \ref{management} (\pageref{management})}. Nastavení + VPN je potom uvedeno v \textit{kapitole \ref{deployment_VPN} (\pageref{deployment_VPN})}. \subsection{Komunikační metody} V této části textu je uveden seznam metod, neboli HTTP přístupových bodů, které je možno na straně serveru kontaktovat. Všechny přijímají @@ -202,7 +203,7 @@ Realizace tohoto rozhraní by byla jistě časově náročnou operací a nebyla zamýšlena jako součást základní implementace řešení ELVYS. -\subsection{FTP nahrávání dokumentů} +\subsection{FTP nahrávání dokumentů} \label{communication_future_FTP} Další možností, kde lze využít znovupoužitelnou aplikační logiku je nahrávání dokumentů pomocí FTP serveru. Tyto soubory by na straně serveru mohla automaticky zpracovávat obslužná aplikace. Tím by se urychlilo a zpříjemnilo nahrávání většího množství dokumentů na server. Modified: others/dokumentace/technicalGuide/architecture/8deployment.tex =================================================================== --- others/dokumentace/technicalGuide/architecture/8deployment.tex 2010-02-09 20:25:57 UTC (rev 1691) +++ others/dokumentace/technicalGuide/architecture/8deployment.tex 2010-02-09 23:42:42 UTC (rev 1692) @@ -26,7 +26,18 @@ \item hibernate tools \end{itemize} + + \subsection{Vývojové/integrační/produkční prostředí}\label{deployment_environments} + Systém ELVYS byl v průběhu vývoje provozován na více typech prostředí. \\ + TODO napsat o continuous integration, produkční prostředí pro kiosek u zákazníka,.. + \subsubsection{Vývojové prostředí} + \subsubsection{Integrační prostředí} + \subsubsection{Produkční prostředí prostředí} + \subsubsection{Konfigurace podle typu prostředí} + Všechny ANT skripty určené k sestavování a nasazování umožňovali parametrizovat, pro jaké prostředí se skript vykonává. + Existují 3 sady konfiguračních souborů a ... + \subsection{Konfigurace řešení} Oba moduly(webServer2 i dispatcher) \subsection{Aplikační server}