Obsah Dal¹í Pøedchozí

6 Klient systému Agent

AdminAgent je samostatná klientská aplikace vytvoøená za úèelem dotazování a administrace dokumentografického informaènímu systému Agent. Hlavními kritérii pøi návrhu tohoto klienta byly:

Z dùvodu velké roz¹íøenosti a snadné implementovatelnosti byl pro spojení klient-server zvolen protokol TCP/IP. Jako programovací jazyk byla zvolena na platformì nezávislá, dynamicky se rozvíjející JAVA. Java byla zvolena mimo jiné také proto, ¾e nìkteré èásti kódu bude mo¾no v budoucnu vyu¾ít pøi tvorbì jednodu¹¹ího JAVA appletu, který bude dostupný pro libovolného u¾ivatele Internetu pomocí webovského browseru a bude obsahovat pouze nástroje pro dotazování. Jak se pozdìji ukázalo, v té dobì dostupné verze Javy (hlavnì Java Foundation Classes pou¾ívané právì pro tvorbu u¾ivatelského rozhraní) trpìly øadou chyb, které se v¹ak podaøilo obejít, odstranit nebo zanikly samy pøechodem na novìj¹í verze.  

6.1 Po¾adavky na systém:

AdminAgent bì¾í na jakékoliv platformì, která podporuje grafické u¾ivatelské rozhraní a je pro ni implementován virtuální stroj Javy, tzn. je k dispozici Java interpreter. Mù¾e být tedy spu¹tìn ve Win32 (Windows NT, kde byl odladìn, Windows 95, pøípadnì Windows 98), na systémech Unix s grafickým u¾ivatelským rozhraním (XWindows), Macintosh atd. Na systému musí být nainstalován virtuální stroj javy, tedy JRE (Java Runtime Environment), pøípadnì JDK (Java Development Kit) verze 1.2.

Dále je tøeba, aby bylo nainstalováno sí»ové rozhranní TCP/IP. Nìkde v dosahu sí»ového spojení TCP/IP by mìl bì¾et server Agent (AdminAgent je klientská aplikace a její spu¹tìní bez napojení na server nemá smysl, samozøejmì v¹ak spustitelná samostatnì je). Podrobnìj¹í informace o instalaci najdete v kapitole 9.1.2 Instalace (klient).  

6.2 Filozofie práce s AdminAgentem

AdminAgenta lze pou¾ívat jak pro administraci a správu serveru na dálku tak pro dotazování. U¾ivatel se tedy mù¾e pøihlásit jako administrátor, nebo jako obyèejný u¾ivatel (guest). U¾ivateli jsou urèeny funkce pro dotazování a parametry sezení. Administrátor smí navíc mìnit parametry systému, a dále databáze obsahující dokumenty a v¹echny jejich vlastnosti.

Po dobu, kdy má klient zøízeno sezení, mù¾e server provádìt jisté optimalizace pøi vyhodnocování dotazù se zpìtnou vazbou (server si pro ka¾dé aktivní sezení pamatuje historii dotazù a odpovìdí). Udr¾uje si navíc napø. informace o maximálním poètu dokumentù které má server vracet na dotaz atd. Dal¹í informace najdete v kapitole 6.6 Napojení na server, zøízení sezení.  

6.3 Dotazy jako základní prostøedek práce:

Dotazy, které lze pokládat serveru Agent, lze rozdìlit do následujících skupin:

Slo¾itìj¹í dotazy jsou konstruovány kombinací nìkterých (popøípadì v¹ech) tìchto elementárních dotazù.

6.3.1 Výsledky dotazù:

Výsledkem dotazu je mno¾ina dokumentù, které server vrátí jako relevantní dotazu. Hlavní parametry dokumentù, jako je jeho název, autor, URL a váha se zobrazují do tabulky. Detailnìj¹í informace o dokumentu si mù¾eme pøeèíst, pokud nìjaký dokument v tabulce vybereme. Poté se v sekci Document Details zobrazí dal¹í detaily, jako jsou knihy, do kterých je dokument zaøazen, datum, kdy byl dokument vytvoøen, jazyk, ve kterém je napsán, a podobnì. Detailnìj¹í popis práce s výsledky dotazù je popsán v kapitole 9.3 Pøíruèka u¾ivatele  

6.4 Vzhled AdminAgenta a filozofie ovládání:

Vzhled aplikace je podøízen snaze vytvoøit co nejjednodu¹¹í a pøitom maximálnì efektivní (tzn. co nejrychlej¹í a nejpøehlednìj¹í) ovládání. U¾ivatelské rozhraní se skládá z mno¾iny formuláøù. Ka¾dý formuláø vizualizuje urèitou funkcionalitu systému. To znamená, ¾e existují formuláøe pro zaindexování dokumentu, pro pokládání dotazù, zobrazování odpovìdi atd. Formuláøe jsou dále zaøazeny jako uzly stromové struktury zohledòující logickou hierarchii tìchto formuláøù.

Tento návrh je potom implementován následovnì. Aplikace má z dùvodu pøehlednosti jen jedno okno,které je vertikálnì rozdìleno na dvì èásti. V jeho levé èásti je strom (podobný jako napø. ve Windows Exploreru), jeho¾ uzly reprezentují jednotlivé formuláøe, v pravé èásti okna je umístìn formuláø odpovídající zvýraznìnému uzlu stromu v levé èásti. Na obrázku 6.4-1 je okno AdminAgenta zobrazující výsledky dotazu. Po kliknutí na urèitý uzel stromu se v pravé èásti okna objeví odpovídající formuláø, který ji¾ potom zpøístupòuje samotnou funkcionalitu. Pro svou pøehlednost byla tímto zpùsobem navr¾ena i nápovìda. Popis práce s jednotlivými formuláøi lze v podstromu Help najít pod stejným názvem nebo kliknutím na tlaèítko Help na samotném formuláøi. Vlastní nápovìda je realizována v jazyce HTML, co¾ umo¾òuje její snadnou modifikaci bez rekompilace aplikace. Strom formuláøù je dynamický, tzn. ¾e zpøístupòuje v¾dy jen ty formuláøe, které lze v daný moment pou¾ít, napø. nelze pokládat dotazy, pokud dosub nebylo navázáno spojení se serverem a podobnì.

Tento u¾ivatelský model, tj. strom s formuláøi byl zvolen hlavnì z dùvodu pøehlednosti a jednoduchosti ovládání. Jednotlivé funkce systému jsou pøehlednì zaøazeny do hierarchie stromu, podobnì jako v menu, ale u¾ivatel mù¾e v jeden okam¾ik vidìt obsah celého stromu a tak i ve¹kerou funkènost systému a práce se tím stává rychlej¹í. Mù¾e si ponechat otevøené jen nìkteré vìtve stromu a velmi rychle a pru¾nì jedním kliknutím my¹i pak pøepínat mezi formuláøi,  které právì pou¾ívá (nìkteré formuláøe se mezi sebou dokonce pøepínají automaticky, napø. po spu¹tìní dotazu se formuláø s dotazem vymìní za formuláø s výsledky ...). Pou¾ití menu by tedy bylo pomalej¹í a pro u¾ivatele ménì pohodlné.

Obrázek 6.4-1 - Okno AdminAgenta zobrazující výsledky dotazu

Obrázek 6.4-1 - Okno AdminAgenta zobrazující výsledky dotazu

6.4.1 Struktura stromu:

Struktura stromu je èásteènì závislá na tom, zda ji¾ klient navázal spojení se serverem a zda se pøihla¹uje jako administrátor. Pokud je¹tì nebylo navázáno spojení, jsou u¾ivateli k dispozici pouze základní funkce nezbytné pro navázání spojení, konzole, help ... Pokud je ji¾ spojení navázáno (tj. nové sezení), zále¾í na tom, zda se u¾ivatel napojil jako administrátor nebo anonymnì (volba guest). V kladném pøípadì je mu k dispozici kompletní strom tak, jak je naznaèeno ní¾e, v opaèném pøípadì ve stromu chybí vìtve urèené k administraci databáze a správì serveru. Anonymní u¾ivatel tak není zbyteènì rozptylován vìtvemi stromu a formuláøi, které by pro nìj stejnì nemohly být pøístupné, a ovládání programu se pro nìj stává snadnìj¹í a pochopitelnìj¹í.

Popis úplné struktury stromu najdete v pøíloze 10.2.5 Struktura stromu AdminAgenta.  

6.5 Konfiguraèní soubory

AdminAgent pou¾ívá tyto dva konfiguraèní soubory:

Soubor hostbook.aag obsahuje informace o serverech (jméno, parametr host, parametr port), soubor browser.aag obsahuje specifikaci externího webovského prohlí¾eèe (absolutní cestu). Za normálních okolností není potøeba je ruènì mìnit, oba jsou editovatelné prostøednictvím klienta.  

6.6 Napojení na server, zøízení sezení:

Po pøíkazu Connect (pøípadnì ihned po spu¹tìní) si klient poprvé vytvoøí TCP/IP socket a získá tak èíslo sezení, které pou¾ívá pozdìji pøi dotazování a administraci. Poté socket zru¹í. Nový socket vytvoøí a¾ pro ka¾dý dal¹í pøíkaz nebo dotaz a po obdr¾ení odpovìdi jej opìt zru¹í. Tento pøístup dynamického vytváøení a ru¹ení socketù  pro ka¾dý pøíkaz nebo dotaz byl zvolen z tìchto hlavních dùvodù:

  1. Server má po dobu trvání sezení pouze informace týkající se daného sezení (tj. napø. historii dotazù), fyzicky není s klientem propojen, není tedy nutné, aby bì¾elo separátní vlákno, které by vìt¹inu èasu jen èekalo na dotaz u¾ivatele a zbyteènì tak server zatì¾ovalo.
  2. Pøi velkém poètu klientù by mohl být velký poèet navázaných spojení neúnosný ji¾ pro samotný operaèní systém
  3. Zjednodu¹í se tak problém rozpoznání toho, která odpovìï serveru odpovídá kterému dotazu klienta, proto¾e pro ka¾dý dotaz vytváøí klient nový socket a není tedy nutné oznaèovat dotazy a odpovìdi explicitnì identifikátory.

6.7 Vytváøení vláken pro komunikaci se serverem

AdminAgent pøedpokládá vysokou interaktivitu se serverem. Vlivem tohoto pøedpokladu byl zpùsob komunikace se serverem rozdìlen do dvou typù:

6.8 Popis implementace AdminAgenta

Zdrojový kód je rozdìlen (jak je tomu v jazyce Java dobrým zvykem) do nìkolika balíkù (package). Konkrétnì jsou to balíky:

BalĂ­k Agent.main

Tento balík zapouzdøuje hlavní funkcionalitu klienta a ve¹keré datové struktury, které pou¾ívá. Balík také obsahuje v hlavní spustitelnou tøídu AdminAgent a její hlavní datovou strukturu AdminAgentData. AdminAgent je pøedev¹ím grafickým rozhraním, nepou¾ívá ¾ádné speciální algoritmy nebo datové struktury.

BalĂ­k Agent.thread

Obsahuje tøídy zdìdìné od tøídy java.lang.Thread. Pou¾ívají se pro zøizování spojení se serverem, která trvají dlouho - typicky se jedná o indexace dokumentù, reorganizace databází, ale i dotazování.

BalĂ­k Agent.gui

Obsahuje tøídy grafického u¾ivatelského rozhraní. Jako hlavní tøídu tohoto balíku mù¾eme pova¾ovat tøídu GUI, která volá v¹echny ostatní grafické komponenty. Obsahuje objekt strom a metody pro jeho zmìny. Nejvìt¹í podíl balíku tvoøí podtøídy tøídy Form jen¾ reprezentuje formuláø.

BalĂ­k Agent.id

AdminAgent byl navrhován tak, aby v pøípadì potøeby zmìny národní podpory (aplikace komunikuje s u¾ivatelem anglicky), nebyly nutné velké zásahy do zdrojového kódu a bylo mo¾no co nejjednodu¹¹ím zpùsobem aplikaci upravit pro jiný jazyk. Tøídy v tomto balíku obsahují ve¹keré statické texty a dialogy zobrazované na obrazovku jako konstanty. Komponenty GUI pøitom pou¾ívají výhradnì tyto konstanty. Pøeklad do jiného jazyka tedy vlastnì znamená pouhou zmìnu konstant v tìchto tøídách (a opìtovný pøeklad tìchto tøíd do byte kódu). Navíc tøída Paths obsahuje cesty ke konfiguraèním souborùm AdminAgenta a k souborùm nápovìdy.


1999-03-05 Robert Machacek