[elvystrac] r1878 - * second part of statistics

  • From: elvys@xxxxxxxxxxxxxxxxxxxxxx
  • To: elvystrac@xxxxxxxxxxxxx
  • Date: Thu, 25 Feb 2010 17:53:36 +0100

Author: JirkaM
Date: 2010-02-25 17:53:36 +0100 (Thu, 25 Feb 2010)
New Revision: 1878

Modified:
   others/dokumentace/technicalGuide/architecture/4webapp.tex
Log:
* second part of statistics
modified   4webapp.tex




Modified: others/dokumentace/technicalGuide/architecture/4webapp.tex
===================================================================
--- others/dokumentace/technicalGuide/architecture/4webapp.tex  2010-02-25 
16:45:06 UTC (rev 1877)
+++ others/dokumentace/technicalGuide/architecture/4webapp.tex  2010-02-25 
16:53:36 UTC (rev 1878)
@@ -219,6 +219,7 @@
   \item{Typy grafů}-požadavkem bylo zobrazení tří základních typů grafů, 
čárový, sloupcový, koláčový. 
 \end{itemize}
 
+\subsection{Výběr nástroje pro generování výstupu}
 V prvotních fázích projektu jsme zvažovali implementaci vlastního nástroje 
pomocí jazyka Java, kde bychom si na serveru vygenerovali grafický výstup a u 
klienta zobrazili pomocí HTML. Vzhledem k pracnosti jsme se však poohlédli po 
již hotovém řešení.
 
 Nejdříve jsme hledali pouze open-source řešení, ale při přijatelných cenách 
placených projektů jsme do celkového výběru zahrnuli i je. Následující seznam 
uvádí hlavní nástroje, ze kterých jsme vybírali:
@@ -229,6 +230,7 @@
 \end{itemize}
 Hledali jsme samozřejmě v daleko širším spektru produktů, výše uvádíme pouze 
produkty, které nás nejvíce zaujaly. Naší volbou se stala knihovna Anychart, 
jejíž grafové výstupy jsme shodnotili jako nejdokonalejší. Kromě toho nabízí 
také velké množství typů grafů, široké možnosti nastavení samotného grafu 
prostřednictvím konfiguračního souboru a dobrou interkativnost.
 
+\subsection{Komunikace s Anychart}
 Anychart fungují jako samostatný soubor Flash, který je vložen do Html 
stránky. Konfigurace této aplikace probíhá pomocí XML dokumentu, ve kterém se 
nastavují všechny potřebné atributy. Níže uvádím přehled nejdůležitějších 
nastavení pro konfigurační soubor:
 \begin{itemize}  
   \item{chart\_settings}- skupina nastavení určující atributy jako titulek, 
barvu pozadí, popisky na jednotlivých osách, zobrazení ikon, definici legendy a 
mnoho dalších nastavení týkajících se celého výstupu.
@@ -236,15 +238,42 @@
   \item{data}- samotná data pro vygenerování průběhu grafu, případně pro 
velikost sloupců či částí koláčových grafů. Zde jsou jednotlivé čáry popisovány 
pomocí tzv. serií, kde pro každou sérii je definován její průběh v závislosti 
na časové ose. 
 \end{itemize}
 Tento konfigurační soubor je generován v závislosti na vybraném typu grafu, 
časovém období a typu zobrazení ( seznam kiosků společnosti, seznam dokumentů 
na kiosku, seznam kiosků pro daný dokument).
+Vygenerování výstupu statistik probíhá v následujících krocích:
+\begin{itemize}
+  \item{Získání dat dle parametrů} - v závislosti na zvolených parametrech 
jsou z databáze načteny data pro výstup.
+  \item{Převod dat do konfiguračního souboru} - pomocí třídy 
AnyChartXMLHandler jsou data z databáze převedena na formát pro vstupní soubor.
+  \item{Předání dat Flash objektu} - výsledný výstup z předchozího bodu je 
předán objektu Anychart flash, který zajistí korektní zobrazení. Implementace 
tohoto objektu nebyla součástí projektu. Při předávání výstupu jsme zvažovali 
ukládání dat do strukturovaně pojmenovaného souboru, abychom pracně získaná 
data nemuseli generovat znovu. Cachování výsledků jsme zavrhli z následujících 
důvodů:
+  \begin{itemize}
+    \item Uživatel si nevolí stejná časová období, téměř vždy dochází k tomu, 
že časové období je jiné.      
+    \item Vygenerovaný výsledek nemusí být vždy aktuální a může se měnit, 
pokud se zajímáme o data v posledních okamžicích.
+  \end{itemize}
+\end{itemize}
 
+\subsection{Optimalizace a rozvoj}
+Data získaná z jednotlivých kiosků se nyní ukládají do jedné tabulky v 
databázi MySQL. V budoucnu, kdy počet kiosků bude v řádech stovek, může dojít k 
tomu, že rychlost dotazů na výpis statistik začne klesat. Zrychlení bychom 
mohli dosáhnout následujícími způsoby:
+\begin{itemize}
+  \item Rozdělit data, např. pro každou společnost, případně kiosek vytvořit 
samostatnou databázi, nad kterou bych dotazy vykonávali rychleji.
+  \item Použít jiný typ databáze. MySQL není primárně určeno pro vyhledávání v 
obsáhlých datech. Např. použitím PostreSQL databáze.              
+\end{itemize} 
 
-
 %%%%%%%%%%%%%%%%%%%%%%%%%%
 %%  Reporty
 %%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{WebServer2 - Reporty}
+Reporty slouží uživateli k zobrazení intervalů vyvěšení dokumentů na 
konkrétním kiosku. Hlavním požadavkem reportů bylo korektní a vizuálně 
přehledné zobrazení daných intervalů. 
+\subsection{Výběr vhodného nástroje}
+Před začátkem samotné implementace jsme se poukoušeli nalézt podobné nástroje, 
jak pro možnost použití, tak pro motivaci při tvorbě. 
+Co nás nejvíce zaujalo, byl produkt ze stejné série jako nástroj Anychart a to 
produkt AnyGantt. Nabízí stejnou funkcionalitu, jakou jsme požadovali od 
výstupu reportů, spolu s velkým množstvím dalších funkcí.
 
+Konečným rozhodnutím při analýze ostatních nástrojů bylo vytvořit vlastní 
jednoduchý a hlavně přehledný výstup pomocí základních HTML prvků, který bude 
lehce upravitelný dle aktuálních požadavků.
 
+\subsection{Implementace výstupu}
+Hlavní problém, který jsme řešili při generování výstupů, bylo jejich korektní 
zobrazení v případě tisku. Požadovali jsme barevné odlišení jednotlivých 
intervalů v rámci časové osy, čehož se nám pomocí stylování elementů, resp. 
nastavení barvy pozadí, nepodařilo dosáhnout, jelikož pro tisk stránky včetně 
barvy pozadí pomocí prohlížeče je třeba dalšího nastavení, které by uživatele 
mohlo odradit. Jako řešení jsme zvažovali následující možnosti:
+\begin{itemize}
+  \item{Generovaní obrázku na straně serveru} - obrázek bude vygenerován přímo 
ve webové aplikaci pomocí knihovny javy na straně serveru a předán stránce jako 
hotový výstup.
+  \item{Sestavení intervalů z html elementů} - stránce budou předány parametry 
pro vykreslení intervalů v rámci časové osy. Tyto intervali budou zobrazeny 
jako obrázek, kterému je nastavena délka dle délky intervalu.             
+\end{itemize}
+Kvůli požadavku na javascriptovou interakci bylo zvoleno druhé řešení, díky 
kterému bylo možno označit intervaly a napojit na ně javascriptové chování.
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%                   
 %%  Plánování


Other related posts:

  • » [elvystrac] r1878 - * second part of statistics - elvys