Z´apadoˇcesk´a univerzita v Plzni Fakulta aplikovan´ych vˇed Katedra informatiky a v´ypoˇcetn´ı techniky

Diplomov´apr´ace

Rozˇs´ıˇren´ıskriptovac´ıch moˇznost´ıprogramu EasyArchiv

Plzeˇn2018 Bc. Patrik Koˇr´ınek Prohl´aˇsen´ı

Prohlaˇsuji, ˇze jsem diplomovou pr´aci vypracoval samostatnˇea v´yhradnˇes po- uˇzit´ım citovan´ych pramen˚u.

V Plzni dne 16. kvˇetna 2018 Bc. Patrik Koˇr´ınek Abstract

This work aims to enhance the EasyArchiv system in order to enable execu- tion of user generated code in client environments. The enhancement should allow improved user interaction by creating an option to add client scripts to existing programs. Client scripts should be able to interact with the system and display user dialogs. Implementation of the solution began after analy- sis of both the EasyArchiv system and all scripting languages that could be used for this enhancement. The result of this work allows the creation of JavaScript scripts that run in the environment of the client applications. Abstrakt

Tato pr´ace si klade za ´ıl rozˇs´ıˇren´ısyst´emu pro spr´avu dokument˚uEasyAr- chiv o moˇznost spouˇstˇen´ıuˇzivatelsk´eho k´odu v klientsk´ych aplikac´ıch. Toto rozˇs´ıˇren´ı by mˇelo umoˇznit lepˇs´ı interakci s uˇzivateli syst´emu pomoc´ı pˇri- d´an´ıklientsk´eho skriptov´an´ık existuj´ıc´ım program˚um syst´emu. Skriptov´an´ı by mˇelo umoˇzˇnovat interakci se syst´emem a vizualizaci uˇzivatelsk´ych dia- log˚u. Zp˚usob implementace ˇreˇsen´ıbyl vybr´an po anal´yze syst´emu EasyArchiv a skriptovac´ıch jazyk˚u, kter´eby potencion´alnˇemohly b´ytk tomuto rozˇs´ıˇren´ı pouˇzit´e.V´ysledn´eˇreˇsen´ıumoˇzˇnuje vytv´aˇren´ıJavaScript skript˚uspouˇstˇen´ych v prostˇred´ıklientsk´ych aplikac´ı. Obsah

1 Uvod´ 1

2 EasyArchiv 2 2.1 Syst´empro spr´avu dokument˚u...... 2 2.2 Spr´ava ˇzivotn´ıho cyklu produktu ...... 3 2.3 Workflow ...... 4 2.4 Funkce EasyArchiv ...... 4 2.5 Struktura syst´emu EasyArchiv ...... 5 2.6 Siln´yklient (a j´adro) ...... 6 2.6.1 J´adro a skriptov´an´ı ...... 8 2.7 Tenk´yklient...... 9 2.8 Webov´yklient...... 10 2.9 EasyBuilder...... 11 2.9.1 Pr´acese skripty ...... 12

3 Pouˇzit´etechnologie v EA 14 3.1 COM rozˇs´ıˇren´ı...... 14 3.2 C#skripty ...... 15 3.3 Wrapping COM komponenty ...... 16 3.4 WebService Tenk´eho klienta ...... 16 3.5 Tomcat ...... 17 3.6 Jacob - JAVA-COM Bridge ...... 18 3.7 XSLT ...... 18 3.7.1 XPath ...... 18 3.7.2 XQuery ...... 19 3.8 Relaˇcn´ıdatab´aze (MySql/Oracle) ...... 19 3.9 Komunikaˇcn´ıprotokol EA ...... 20

4 Skriptov´an´ı 22 4.1 Poˇzadavky...... 22 4.2 Powershell...... 24 OBSAH OBSAH

4.2.1 Zhodnocen´ı ...... 25 4.3 JavaScript...... 25 4.3.1 Technologie obohacuj´ıc´ıJavaScript ...... 26 4.3.2 C# scripting engine ...... 27 4.3.3 JavaScript.Net (Noesis) ...... 27 4.3.3.1 Common Language Infrastructure ...... 27 4.3.4 ClearScript ...... 28 4.3.4.1 Chrome V8 ...... 28 4.3.5 AJAX ...... 29 4.3.6 Zhodnocen´ı ...... 29 4.4 Visual Basic pro Aplikace (VBA) ...... 30 4.4.1 Zhodnocen´ı ...... 30 4.5 Dalˇs´ıskriptovac´ıjazyky ...... 31

5 Navrˇzen´eˇreˇsen´ı 32 5.1 EAClientScripting ...... 33 5.2 Siln´yklient + j´adro ...... 35 5.3 Tenk´yklient...... 35 5.4 Webov´yklient...... 36 5.5 EasyBuilder ...... 37 5.6 Klientsk´eskripty ...... 38

6 Implementace 39 6.1 EAClientScripting ...... 40 6.2 Rozˇs´ıˇren´ıdatab´aze ...... 41 6.3 Siln´yklient ...... 43 6.3.1 Uprava´ j´adra pro servery ...... 44 6.4 Tenk´yklient...... 45 6.5 Webov´yklient...... 45 6.6 EasyBuilder...... 46 6.7 Pˇrek´aˇzky ve v´yvoji ...... 47 6.8 Zhodnocen´ı ...... 47 6.8.1 Moˇznosti implementovan´eho ˇreˇsen´ı ...... 47 6.8.2 Omezen´ıimplementovan´eho ˇreˇsen´ı...... 48 6.8.3 Moˇznosti dalˇs´ıho rozˇs´ıˇren´ı ...... 49

7 Testov´an´ı 51 7.1 Metodika testov´an´ı ...... 51 7.1.1 EasyBuilder ...... 52 7.1.2 EasyArchiv ...... 52 7.2 Pr˚ubˇehtestov´an´ı ...... 54

5 OBSAH OBSAH

7.3 V´ysledky testov´an´ı ...... 54

8 Z´avˇer 55

9 Pˇr´ılohy 58 9.1 Slovn´ık...... 58 9.2 Pˇr´ıklad klientsk´eho skriptu ...... 59 9.3 Rozsah´uprav ...... 61 9.4 Uˇzivatelsk´adokumentace ...... 63

6 1 Uvod´

Tato diplomov´apr´ace si klade za c´ıl rozˇs´ıˇren´ıaplikac´ısyst´emu EasyArchiv o moˇznost spouˇstˇen´ıuˇzivatelsk´ych skript˚uv prostˇred´ıvˇsech klientsk´ych apli- kac´ı, ze kter´ych se syst´emskl´ad´a. Jednou z podm´ınek pr´ace je rozˇs´ıˇren´ıpro- gram˚utakov´ym zp˚usobem, kter´yminim´alnˇeovlivn´ısouˇcasn´estruktury a pro- cesy. Souˇcasn´afunkcionalita syst´emu nesm´ıb´yt v ˇz´adn´empˇr´ıpadˇenaruˇsena.

Hlavn´ım zamˇeˇren´ım tˇechto skript˚ubude uˇzivatelsk´ainterakce. Syst´emEa- syArchiv m´av souˇcasnosti moˇznost spouˇstˇetuˇzivatelsk´eskripty, ale pouze v ´amci j´adra syst´emu (spouˇst´ıse na serveru), takˇzenemohou interagovat s uˇzivatelem na klientsk´estranˇe.Klientsk´edialogy by poskytly rozˇs´ıˇrenou moˇznost interakce s uˇzivatelem za ´uˇcelem z´ısk´an´ı doplˇnuj´ıc´ıch informac´ı, ulehˇcen´ıobsluhy a ˇsirˇs´ımoˇznosti personalizace zp˚usobu vyuˇz´ıv´an´ısyst´emu. Poskytly by tak´ejednoduch´yzp˚usob, jak uˇzivatel˚um umoˇznit vytv´aˇren´ıˇsa- blon, podle kter´ych by bylo moˇzn´epˇredvyplnit opakuj´ıc´ıse nebo tˇeˇzko do- stupn´einformace.

Obsah jednotliv´ych kapitol je n´asleduj´ıc´ı: • EasyArchiv – popisuje syst´em, jeho ´uˇcela strukturu. Tak´ese zaob´ır´a rozborem jednotliv´ych program˚u, ze kter´ych se syst´emskl´ad´a.

• Pouˇzit´etechnologie – kapitola obsahuje v´yˇcet a popis nˇekter´ych d˚ule- ˇzit´ych technologi´ıpouˇzit´ych v syst´emu EasyArchiv.

• Skriptov´an´ı– souhrn poˇzadavk˚una skriptovac´ıˇc´ast rozˇs´ıˇren´ıa v´yˇcet zvaˇzovan´ych technologi´ıspolu s jejich siln´ymi a slab´ymi str´ankami.

• Navrˇzen´eˇreˇsen´ı– popisuje n´avrh ´uprav pro jednotliv´eˇc´asti syst´emu a omezen´ı, s kter´ymi budou implementov´any.

• Implementace – popis pr˚ubˇehu implementace pro jednotliv´ekompo- nenty syst´emu.

• Testov´an´ı– kapitola zab´yvaj´ıc´ıse ovˇeˇrov´an´ım funkˇcnosti ˇreˇsen´ı.

• Z´avˇer– zhodnocen´ıv´ysledk˚ut´eto pr´ace.

1 2 EasyArchiv

EasyArchiv/EasyPLM R [je] nejen kom- ” plexn´ı syst´em spr´avy dokumentace (Do- kument Management Syst´em, DMS) zalo- ˇzen´yna WORKFLOW, ale rovnˇeˇzsyst´em spr´avy ˇzivotn´ıho cyklu v´yrobk˚u(Produkt Lifecycle management, PLM). Pˇres sv˚uj n´a- zev se ve skuteˇcnosti jedn´a o sofistiko- Obr´azek 2.1: Logo EasyArchiv van´yprodukt, umoˇzˇnuj´ıc´ı snadn´eovl´ad´an´ı a implementaci.“[1]

Syst´em EasyArchiv je certifikov´andle normy ISO 16363:12 - D˚uvˇery- hodn´a(Digit´aln´ı) Uloˇziˇstˇe.´

2.1 Syst´empro spr´avu dokument˚u

Syst´em pro spr´avu dokument˚u(Document Management System, DMS) je poˇc´ıtaˇcov´ysyst´emurˇcen´yke sledov´an´ı, spr´avˇea uchov´an´ıelektronick´ych do- kument˚u. Obvykle umoˇzˇnuje uchovat dokumenty v centr´aln´ım uzlu a poskyt- nout k nim pˇr´ıstup vˇsem uˇzivatel˚um s pˇr´ısluˇsn´ym opr´avnˇen´ım. Jedn´ase tedy o syst´emsd´ılen´ı dokument˚us rozˇs´ıˇrenou funkcionalitou. D´ıky centralizaci umoˇzˇnuje z´alohu vˇsech firemn´ıch dokument˚u. Spoleˇcnost tak m˚uˇzejedno- duˇseovl´adat pˇr´ıstup k ´uˇcetnictv´ı, digit´aln´ım z´aloh´am tiskopis˚ua jak´ymkoli elektronick´ym dat˚um, se kter´ymi pracuje, a zajistit, ˇze nebudou ztraceny, poˇskozeny nebo upraveny neopr´avnˇenou osobou.

Kromˇez´alohov´an´ıje dalˇs´ım bezpeˇcnostn´ım prvkem verzov´an´ıdokument˚u. DMS udrˇzuje z´aznamy o zmˇen´ach dokumentu a o tom, kteˇr´ıuˇzivatel´ek nim pˇristoupili. Lze tak identifikovat ˇclovˇeka zodpovˇedn´eho za vˇsechny zmˇeny a pˇr´ıpadnˇedokument navr´atit do dˇr´ıvˇejˇs´ıpodoby.

Nˇekter´espoleˇcnosti a organizace maj´ı st´atem naˇr´ızenou elektronickou spr´avu dokument˚u, aby bylo moˇzn´eudrˇzovat dohled nad jejich ˇcinnost´ı. Jedn´ase napˇr´ıklad o spoleˇcnosti zab´yvaj´ıc´ıse ´uˇcetnictv´ım, v´yrobou medic´ın- sk´ych materi´al˚unebo pracuj´ıc´ıs citliv´ymi informacemi. DMS se vˇsak hod´ı jak´ekoli firmˇe,kter´achce zlepˇsit spr´avu dokument˚unapˇr´ıˇcsv´ym informaˇcn´ım

2 EasyArchiv Spr´avaˇzivotn´ıhocyklu produktu syst´emem, zv´yˇsit bezpeˇcnost a zlehˇcit komunikaci mezi zamˇestnanci.

Nˇekter´eDMS (napˇr´ıklad EasyArchiv) mohou b´yt nav´ıc integrovan´edo jin´ych softwar˚upomoc´ır˚uzn´ych rozˇs´ıˇren´ınebo add-on˚u. DMS tak m˚uˇzez´ıskat v´ıce informac´ıo dokumentu a pˇridat je jako souˇc´ast metadat dokumentu. N´aroky na uˇzivatele se nad´ale sn´ıˇz´ıt´ım, ˇzeDMS je souˇc´ast´ıprogramu, kter´y pr´avˇepouˇz´ıv´a.

Obvykl´eschopnosti DMS: • Zaˇcleˇnov´an´ıdokument˚u– vkl´ad´an´ısoubor˚ua spr´ava metadat doku- mentu.

• Integrace – propojen´ıs programem, ve kter´em se dokumentace vytv´aˇr´ı nebo zpracov´av´a.

• Verzov´an´ıdokumentu – spr´ava zmˇen.

• Pˇr´ıstupov´apr´ava – zajiˇstˇen´ı, ˇze s dokumentem operuj´ıjen opr´avnˇen´e osoby.

• Dostupnost – pˇr´ıstup k dokumentu z jak´ekoli stanice s DMS.

• Vyhledatelnost – vyhled´av´an´ıdokumentu podle metadat (kter´amohou obsahovat identifik´ator, informace o/z dokumentu nebo jak´akoli jin´a data relevantn´ık dokumentu).

2.2 Spr´ava ˇzivotn´ıho cyklu produktu

Spr´ava ˇzivotn´ıho cyklu produktu (Product Lifecycle Management, PLM) je syst´emproces˚uzamˇeˇren´ych na sn´ıˇzen´ıceny nasazen´ıproduktu na trh, vytvo- ˇren´ıpopt´avky, prodlouˇzen´ıdoby, po kterou je produkt ve f´azi zralosti a udr- ˇzen´ıco nejvyˇsˇs´ıch zisk˚ubˇehem obdob´ı, kdy prodeje zaˇcnou klesat. Efektivn´ı PLM z´aleˇz´ına efektivn´ıspolupr´aci mezi dodavateli a umoˇzˇnuje sd´ılen´ıdat napˇr´ıˇcsyst´emy n´avrhu, zajiˇstˇen´ıkvality, v´yroby a prodeje produktu.

PLM se tedy star´ao spr´avu veˇsker´ych podklad˚upro n´avrh produktu, jeho v´yrobu a ´udrˇzbu a slouˇz´ıjako ´uloˇziˇstˇevˇsech dokument˚u, pozn´amek, reakc´ı, katalog˚ua informac´ıo nˇem.

3 EasyArchiv Workflow

2.3 Workflow

Workflow (pracovn´ıpostup, technologick´ypostup) je pl´anovan´ya opakova- teln´ypostup rozloˇzen´yna jednotliv´ekroky a sekvenˇcn´ıvazby. Jedn´ase o or- ganizovan´yˇretˇezecoperac´ıvedouc´ık c´ıli. M˚uˇzej´ıt o vytv´aˇren´ıdokumentu, poskytov´an´ısluˇzby nebo v´yrobu produktu, popsanou krok po kroku v pˇre- hledn´ema jednoduˇsepochopiteln´emform´atu.

Workflow ˇcasto existuje jako souˇc´ast existuj´ıc´ıch syst´em˚uDMS, ve kte- r´em je obˇehdokument˚uˇr´ızen definic´ıpracovn´ıho postupu. S dokumentem je spˇraˇzeno, kdo m´avykonat jak´epodprocesy a jak hl´ıdat jejich splnˇen´ı, jak se m´adokument chovat po jejich splnˇen´ıa c´ıl cel´eho procesu.

K ˇr´ızen´ıpracovn´ıho postupu je zapotˇreb´ınadefinovat pravidla ˇr´ıd´ıc´ıpro- cesy, dokumenty, se kter´ymi se pˇred´avaj´ı, a metriky, slouˇz´ıc´ık posuzov´an´ı jejich splnˇen´ı.

2.4 Funkce EasyArchiv

EasyArchiv je syst´emumoˇzˇnuj´ıc´ısledov´an´ı, spr´avu a uchov´an´ıobecn´ea tech- nick´edokumentace v r´amci firemn´ıho prostˇred´ı. Jeho silnou str´ankou je moˇz- nost definice vlastn´ıch typ˚udokumentace v souladu s firemn´ımi normami a ustanoven´ımi. Dokumentace vytvoˇren´apodle t´eto vlastn´ıdefinice pak po- skytuje mnoho funkc´ı, kter´ejsou uˇzivatel´ezvykl´ıvyuˇz´ıvat v r´amci operaˇcn´ıho syst´emu, jako napˇr´ıklad ˇr´ızen´ıpˇr´ıstupu k soubor˚um pˇridˇelov´an´ım pˇr´ıstupo- v´ych pr´av, ´upravy vlastnost´ıdokumentu nebo prohl´ıˇzen´ısoubor˚uasociova- n´ych s dokumentem. EasyArchiv nad´ale poskytuje dalˇs´ıfunkce, kter´eumoˇz- ˇnuj´ıpr´aci s dokumentem:

• Rozˇs´ıˇren´evyhled´av´an´ıdle libovoln´eho atributu v definici dokumentace a fulltextov´evyhled´av´an´ı.

• Organizov´an´ıdokument˚udo sloˇzekpodle uˇzivatelsk´eho v´yrazu (SQL pˇr´ıkaz).

• Uzamyk´an´ıdokument˚u, aby se zabr´anilo soubˇeˇzn´eeditaci dvˇema r˚uz- n´ymi uˇzivateli najednou.

• Moˇznost manu´aln´ıho Check In/Check Out (viz n´ıˇze).

4 EasyArchiv Struktura syst´emuEasyArchiv

• Kompletn´ıhistorie ´uprav dokumentu.

• Import a Export do r˚uzn´ych form´at˚u.

• Spr´ava zmˇenov´eho a schvalovac´ıho ˇr´ızen´ı.

• Dostupn´ejsou i mnoh´eintegrace pro jin´eprogramy. EasyArchiv tak m˚uˇzepˇr´ımo pˇristoupit k dokument˚um z program˚ujako napˇr´ıklad MS Office, Inventor, SolidWorks nebo e-mailov´yklient a spravovat je jako dokumentaci.

Souˇc´ast´ı EasyArchivu je tak´emoˇznost vytv´aˇren´ı uˇzivatelsk´ych skript˚u v jazyce C#, kter´epak lze propojit s mnoha r˚uzn´ymi prvky a ud´alostmi v syst´emu. Jako reakce na uˇzivatelsk´eakce se pak tyto skripty spust´ıa po- skytuj´ıtak rozˇs´ıˇrenou funkcionalitu, kter´aumoˇzˇnuje upravit syst´emuˇzivateli na m´ıru.

Tyto skripty umoˇzˇnuj´ınapˇr´ıklad z´ısk´av´an´ıaktu´aln´ıch dat ze serveru, mo- hou uˇzivatele informovat o typech dokument˚u, ke kter´ym m´apˇr´ıstup, o uˇzi- vatel´ıch, se kter´ymi m˚uˇzesd´ılet dokumenty, nebo formovat SQL dotazy pro filtrov´an´ıdokument˚udle uˇzivatelsk´ych parametr˚u.

Souˇcasn´eskriptovac´ıˇreˇsen´ıje vˇsak souˇc´ast´ıj´adra (v´ıce v kapitole 2.6). Tato skuteˇcnost umoˇzˇnuje jednoduch´ypˇr´ıstup k prakticky vˇsemfunkc´ım a informac´ım v j´adˇre, ke kter´ymm´akonkr´etn´ıuˇzivatel pˇr´ıstup, ale zabraˇnuje uˇzivatelsk´einterakci. Veˇsker´edialogy se otev´ıraj´ına serveru, takˇzeuˇzivatel m˚uˇzeinteragovat pouze s ovl´adac´ımi prvky, kter´ebyly vytvoˇreny jako souˇc´ast prostˇred´ıEasyArchivu nebo souˇc´ast formul´aˇre dokumentu.

C´ılem t´eto pr´ace je proto navrhnout ˇreˇsen´ı, kter´eby umoˇzˇnovalo vytv´a- ˇren´ıa spouˇstˇen´ıskript˚uv klientsk´emprostˇred´ıza ´uˇcelem interakce s uˇziva- telem. Klientsk´eskripty by mˇely m´ıt schopnost vytv´aˇret dialogy, reagovat na uˇzivatelsk´eakce a interagovat s formul´aˇria prvky, kter´eje vyvolaly.

2.5 Struktura syst´emu EasyArchiv

Syst´em se skl´ad´az nˇekolika program˚u. Tˇri z nich (siln´y, tenk´ya webov´y klient) jsou klienti poskytuj´ıc´ıstejnou funkcionalitu s r˚uzn´ym zp˚usobem pˇr´ı- stupu. EasyBuilder je administrativn´ın´astroj pro pr´acise syst´emem.

5 EasyArchiv Siln´yklient (a j´adro)

Databáze Datový server

EasyBuilder Jádro

Tenký server Silný klient Webový klient

Tenký klient EAScripting

Obr´azek 2.2: Vztahy jednotliv´ych prvk˚usyst´emu EasyArchiv

• J´adro je program EasyCom.

• Siln´yklient je program CGExplorer.

• Tenk´yserver je program EAWebServices.

• Tenk´yklient je program EALightClient.

• Webov´yklient je program EAWebClient.

• EAScripting je skriptovac´ıknihovna EAScripting.

• EasyBuilder je program EasyBuilder.

2.6 Siln´yklient (a j´adro)

Siln´yklient je program vytvoˇren´yv jazyce C++, kter´yumoˇzˇnuje uˇzivatelsk´y pˇr´ıstup ke vˇsemfunkc´ım syst´emu EasyArchiv, jak jsou popsan´ev kapitole

6 EasyArchiv Siln´yklient (a j´adro)

2.4. Na rozd´ıl od tenk´eho a webov´eho klienta (kteˇr´ıjsou pops´ani v kapitol´ach 2.7 a 2.8) nen´ısiln´yklient aplikace typu klient + server. Skl´ad´ase z ´uzce propojen´eho j´adra syst´emu a uˇzivatelsk´eho rozhran´ı.

V´yhodou tohoto ˇreˇsen´ıje vyˇsˇs´ırychlost aplikace v pˇr´ıpadˇe,kdy je datov´y server a datab´aze syst´emu EasyArchiv rychle dostupn´a– napˇr´ıklad na lok´aln´ı firemn´ıs´ıti. Siln´yklient je vytvoˇren v jazyce C++ a je tak v´ykonnˇejˇs´ıneˇz jeho tenk´ya webov´yprotˇejˇsci. D´ıky tomu, ˇze m´apˇr´ım´ypˇr´ıstup k datab´azi a nemus´ıˇcekat na odpovˇed’ serveru, kter´yby mu musel informace zdlouhavˇe zpracov´avat a pˇred´avat, je siln´yklient ve vˇetˇsinˇesituac´ıschopn´yrychlejˇs´ı reakce neˇzostatn´ıklienti.

Nˇekter´euˇzivatelsky v´yznamn´efunkce: • Pˇrihl´aˇsen´ıuˇzivatel˚u– ovˇeˇr´ıuˇzivatelsk´e´udaje oproti ´udaj˚um v datab´azi.

• Vytv´aˇren´ıa spr´ava dokument˚u– uˇzivatel vypln´ıpˇreddefinovan´yformu- l´aˇra poskytne soubor, kter´ybude uloˇzenjako dokument. Informace ve formul´aˇri se st´avaj´ımetadaty a umoˇzˇnuj´ıtak pokroˇcilou pr´acise sou- borem v r´amci syst´emu. Po uloˇzen´ıse soubor nahraje na souborov´y server a do datab´aze.

• CheckIn dokumentu – pokud si uˇzivatel pˇreje pracovat s dokumentem, ke kter´emu m´apˇr´ıstup, provede tzv. CheckIn. Soubor se uloˇz´ıdo pra- covn´ıho adres´aˇre a uˇzivatel s n´ım nad´ale m˚uˇzepracovat, jak si pˇreje.

• CheckOut dokumentu – kdyˇzuˇzivatel dokonˇc´ı svou pr´aci na doku- mentu, provede CheckOut. Dokument se nahraje zpˇetna datov´yserver, ale s vyˇsˇs´ım ˇc´ıslem verze. Detaily o zmˇen´ach v dokumentu se uloˇz´ıdo datab´aze.

• Prohl´ıˇzen´ıdokument˚u– uˇzivatel m˚uˇzeprohl´ıˇzet, vyhled´avat a filtrovat dokumenty, ke kter´ym m´apˇr´ıstup.

Z hlediska t´eto pr´ace je nejd˚uleˇzitˇejˇs´ıfunkce vytv´aˇren´ıa spr´ava doku- ment˚u. Uˇzivatelem definovan´eformul´aˇre, do kter´ych se vyplˇnuj´ımetadata dokumentu, jsou funkc´ı, kter´anejv´ıce z´ısk´az obohacen´ıskriptovac´ıch moˇz- nost´ıo uˇzivatelskou interaktivitu.

7 EasyArchiv Siln´yklient (a j´adro)

Obr´azek 2.3: Vytv´aˇren´ıdokumentu v syst´emu EasyArchiv

2.6.1 J´adro a skriptov´an´ı

J´adro EasyCom obstar´av´avˇsechny funkce, kter´ejsou spoleˇcn´epro tˇri klienty. Od pˇrihlaˇsov´an´ıuˇzivatel˚u, ovˇeˇrov´an´ıjejich identit a udrˇzov´an´ıjejich relace (session), aˇzpo z´ısk´av´an´ı dat z datab´aze, jejich form´atov´an´ı a pˇred´av´an´ı implementaci serveru.

Skriptov´an´ı v j´adˇreje implementov´ano pomoc´ı C# knihovny, kter´aje obalena C++ knihovnou (v´ıce v kapitole 3.3). J´adro tak z´ısk´aod klienta podrobnosti o potencion´aln´ım vol´an´ıskriptu, data o tom, jak´eskripty lze z aktivn´ıho formul´aˇre volat, ovˇeˇr´ı, zda prvek, se kter´ymuˇzivatel interagoval, je propojen se skriptem a pokud ano, tak k´od skriptu z´ısk´az datab´azea pˇred´a ho pomoc´ıobalov´eknihovny skriptovac´ıknihovnˇe.Ta k´od pˇreloˇz´ı, pokud je to zapotˇreb´ı, a spust´ıho. Vˇetˇs´ıpodrobnosti o technologii lze naj´ıt v kapitole 3.3.

D´ıky tomu, ˇze jsou vˇsechny skripty spouˇstˇeny pˇr´ımo z j´adra, maj´ıpˇr´ıstup k prakticky jak´ekoli funkci, kter´ase v j´adˇre nach´az´ı. Z bezpeˇcnostn´ıch d˚u- vod˚ujsou jejich moˇznosti omezen´e,ale st´ale maj´ıhodnˇesvobody, co se t´yk´a z´ısk´av´an´ı dat z datab´aze, informac´ı o uˇzivatel´ıch a o ostatn´ıch dokumen- tech. V´ıce o moˇznostech a omezen´ıskriptov´an´ıv j´adˇre EasyCom se lze doˇc´ıst

8 EasyArchiv Tenk´yklient v kapitole 3.2.

2.7 Tenk´yklient

Tenk´yklient je novˇejˇs´ı verze EasyArchiv klienta vytvoˇren´av jazyce C#. Je postaven na architektuˇre klient + server, takˇzese praktiky vzato jedn´a o dva programy: klient a server. Ke komunikaci mezi nimi vyuˇz´ıv´atechnologii WebService v´ıce popsanou v kapitole 3.4

Tento typ klienta m´anejvˇetˇs´ıv´yhodu v prostˇred´ı, kde datab´aze a datov´y server nejsou rychle dostupn´e.Serverov´aaplikace m´arozˇs´ıˇren´emoˇznosti ca- chov´an´ıoproti siln´emu klientovi. V moment, kdy jak´ykoli uˇzivatel poˇzaduje pˇr´ıstup k dokumentu, server si dokument a jeho metadata st´ahne a aˇzpot´e jej distribuuje uˇzivateli. Tato schopnost se net´yk´ajen dokument˚u, ale tak´e skript˚u. Aplikace tak nemus´ızdlouhavˇekontaktovat datab´azi a datov´yserver vˇzdy, kdyˇzchce otevˇr´ıt soubor nebo spustit skript.

Serverov´aaplikace tenk´eho klienta vyuˇz´ıv´astejn´ej´adro jako siln´yklient. C++ knihovna EasyCom se spouˇst´ıspolu se serverem pomoc´ıCOM rozhran´ı (v´ıce v kapitole 3.9). J´adro samotn´eobstar´av´aveˇskerou komunikaci s data- b´az´ıa datov´ym serverem, pr´aci s daty a cachov´an´ı. Server tenk´eho klienta prim´arnˇeobstar´av´akomunikaci mezi sebou a klientem.

Zobrazen´ıformul´aˇre pro vytvoˇren´ıdokumentu prob´ıh´atak, ˇzese na poˇza- davek serveru formul´aˇrinicializuje v j´adˇre EasyCOM v ˇcistˇedatov´epodobˇe (alokovan´eobjekty, ale ˇz´adn´eprvky, s kter´ymi by bylo moˇzn´einteragovat). Tento formul´aˇrse pˇrevede do XML podoby, kter´ase pˇred´aserveru. Ten ji pˇrepoˇsle klientovi, kter´yXML dokument zpracuje a vytvoˇr´ıpodle nˇejformu- l´aˇrpomoc´ıovl´adac´ıch prvk˚uz knihovny System.Windows.Forms. Uˇzivatelsk´e akce jako stisknut´ıtlaˇc´ıtka ve formul´aˇri nebo zmˇena hodnoty textov´eho pole jsou pˇres server posl´any do j´adra, kter´eodpov´ıXML dokumentem popisuj´ı- c´ım zmˇenu ve formul´aˇri.

Na rozd´ıl od siln´eho klienta, tenk´yklient nen´ıjakkoli pˇripraven na spouˇs- tˇen´ıskript˚uv klientsk´emprostˇred´ı. Souˇcasn´eˇreˇsen´ıpoˇsle informaci o uˇziva- telsk´eakci, napˇr´ıklad o stisknut´ıtlaˇc´ıtka, j´adru, kter´evykon´askripty, kter´e jsou s tlaˇc´ıtkem sv´azan´ea poˇsle klientovi informaci, jak se m´aformul´aˇrzmˇe- nit. Na vˇsechny prvky formul´aˇre, kter´ejsou schopn´espouˇstˇen´ısouˇcasn´ych skript˚ujsou vˇsak navˇeˇseny funkce, kter´ereaguj´ına uˇzivatelsk´eakce a infor-

9 EasyArchiv Webov´yklient muj´ıo nich j´adro. Za pˇredpokladu, ˇzetenk´yklient dostane pˇri inicializaci formul´aˇre tak´einformace o klientsk´ych skriptech a prvc´ıch, na kter´ejsou na- v´az´any, bylo by moˇzn´erozˇs´ıˇrit souˇcasn´ysyst´emreaguj´ıc´ına uˇzivatelsk´eakce o obsluhu uˇzivatelsk´ych skript˚u.

Tenk´yklient definuje prvn´ıomezen´ıklientsk´eho skriptov´an´ı. Jelikoˇzkli- ent samotn´ynem´apˇr´ıstup k j´adru syst´emu, skripty spuˇstˇen´ev jeho prostˇred´ı k nˇemu tak´epˇr´ıstup m´ıt nebudou. Z tohoto d˚uvodu pˇrijdou o moˇznost pˇri- stupovat k jak´ymkoli dat˚um, kter´anejsou souˇc´ast´ıformul´aˇre v moment, kdy je odesl´an z j´adra. Klientsk´eskripty budou potˇrebovat moˇznost dynamick´eho z´ısk´av´an´ıdat, schopnost doruˇcit poˇzadovan´adata na klientskou aplikaci spolu se skriptem, nebo se budou muset sm´ıˇrit pouze s daty, kter´ejsou statickou souˇc´ast´ıskriptu nebo byla vyplnˇena ve formul´aˇri.

2.8 Webov´yklient

Webov´yklient je zaloˇzenna technologii Apache Tomcat (v´ıce v kapitole 3.5) v jazyce Java. Stejnˇejako u tenk´eho klienta se jedn´ao architekturu klient + server. V tomto pˇr´ıpadˇese vˇsak vyv´ıj´ıpouze serverov´aˇc´astp´aru a jako klient slouˇz´ıwebov´yprohl´ıˇzeˇc.

Vytv´aˇren´ıformul´aˇre pro spr´avu dokumentu prob´ıh´apodobnˇejako u ten- k´eho klienta, ale samotn´ezpracov´an´ıXML definice formul´aˇre prob´ıh´ajinak. Pot´e,co server od j´adra obdrˇz´ıXML definici, transformuje ji pomoc´ıXSLT (v´ıce o XSLT v kapitole 3.7) na HTML dokument, kter´yje n´aslednˇeposl´an na klienta (prohl´ıˇzeˇci) k zobrazen´ı. HTML dokument se skl´ad´aze standard- n´ıch HTML prvk˚ua JavaScript k´odu (v´ıce o JavaScript v kapitole 4.3).

Webov´eprohl´ıˇzeˇcemaj´ız d˚uvodu bezpeˇcnosti mnoho omezen´ına to, jak´y obsah jsou ochotn´espustit. Toto klade velk´eomezen´ına mnoˇzstv´ıskripto- vac´ıch jazyk˚u, kter´ebude moˇzn´eve webov´emklientovi implementovat. Jak je pops´ano v kapitole 4, r˚uzn´eskriptovac´ıjazyky maj´ıv prostˇred´ıprohl´ıˇzeˇce r˚uzn´aomezen´ı. Nˇekter´alze obej´ıt a nˇekter´aby implementaci neovlivnila, ale i tak je webov´yklient nejv´ıce limituj´ıc´ım prvkem pˇri volbˇebudouc´ıimplemen- tace, nebot’ zvolen´eˇreˇsen´ımus´ıb´yt funkˇcn´ıpro vˇsechny klientsk´eaplikace.

10 EasyArchiv Easy Builder

2.9 Easy Builder

EasyBuilder je administrativn´ın´astroj pro spr´avu syst´emu EasyArchiv. Ne- jedn´ase vˇsak o spr´avu dokument˚uv syst´emu. Ta prob´ıh´apˇr´ımo v klientsk´ych aplikac´ıch. EasyBuilder upravuje z´aznamy v datab´azi t´ykaj´ıc´ıse podporo- van´ych typ˚udokument˚u, vytv´aˇr´ıse v nˇemformul´aˇre pro definici metadat dokument˚u, v´aˇzou se atributy na kontroln´ıprvky, vytv´aˇr´ıse skripty, spra- vuj´ıse akce, kter´eje spouˇst´ıa spravuj´ıse mnoh´edalˇs´ıkonfigurovateln´eˇc´asti ovlivˇnuj´ıc´ıcelkov´echov´an´ısyst´emu. EasyBuilder tedy obstar´av´a´upravy sys- t´emu EasyArchiv tak, aby byl na m´ıru pˇrizp˚usoben z´akazn´ık˚um a umoˇzˇnuje, aby jak´ekoli dalˇs´ımohly b´yt rychle provedeny.

Tvorba uˇzivatelsk´ych formul´aˇr˚upro pr´acis metadaty dokumentu je ˇre- ˇsena rozhran´ım, ve kter´emsi lze vytvoˇrit t´emˇeˇrlibovoln´yformul´aˇrpomoc´ı jednoduch´eho drag&drop rozhran´ı. K takto vytvoˇren´ym prvk˚um je moˇzn´e pˇriˇradit atributy, kter´ese tak stanou metadaty dokument˚uvytvoˇren´ych po- moc´ıtohoto formul´aˇre. K prvk˚um lze tak´epˇridat skripty spouˇstˇen´ev j´adˇre.

Obr´azek 2.4: Definov´an´ıformul´aˇre v syst´emu EasyArchiv

11 EasyArchiv Easy Builder

Vytv´aˇren´ıspustiteln´ych skript˚uv souˇcasnosti prob´ıh´anahr´an´ım cel´eho C# projektu Visual Studia do datab´aze. EasyBuilder nem´aschopnost upra- vovat skripty, ale umoˇzˇnuje jejich nahr´av´an´ıdo datab´azea z datab´aze pro pˇr´ıpadn´e´upravy. Po nahr´an´ıprojektu je moˇzn´elibovolnou statickou metodu v nˇem zaregistrovat jako pouˇziteln´eskripty, kter´elze propojit s ovl´adac´ımi prvky. V´ıce o server-side skriptov´an´ısyst´emu EasyArchiv lze naj´ıt v kapitole 2.6.1.

EasyBuilder je naprogramovan´yv jazyce C# 2.0 a dok´aˇze pracovat s MySQL i Oracle datab´azemi.

Mezi jeho funkce patˇr´ı: • Vytv´aˇren´ıa ´uprava formul´aˇr˚umetadat,

• vytv´aˇren´ıatribut˚udokumentu,

• vytv´aˇren´ıskript˚u,

• spr´ava uˇzivatel˚u, uˇzivatelsk´ych skupin a jejich pr´av,

• spr´ava konstant v datab´azi,

• nastaven´ıkonstant syst´emu,

• vytv´aˇren´ıpoloˇzek v menu syst´emu,

• prohl´ıˇzen´ıhistorie zmˇenv datab´azi

• a dalˇs´ı...

2.9.1 Pr´ace se skripty

Skripty jsou v datab´azi uloˇzen´ecelkem ve tˇrech tabulk´ach: • EASCRIPTPROJECTS – tabulka, ve kter´eje uloˇzen projekt a refe- rence, kter´epotˇrebuje.

• EASCRIPTFILES – tabulka, ve kter´ejsou uloˇzeny jednotliv´esoubory jako text.

• EASCRIPTS – tabulka s jednotliv´ymi voliteln´ymi skripty (statick´eme- tody projektu).

12 EasyArchiv Easy Builder

Program EasyBuilder tak dok´aˇzenahr´avat do datab´azet´emˇeˇrlibovoln´y C# projekt Visual Studia a pozdˇejiho opˇetexportovat pro moˇzn´e´upravy.

Propojen´ıskriptu a ovl´adac´ıho prvku se prov´ad´ıve vlastnostech konkr´et- n´ıho prvku. Nastav´ıse zde akce, pˇri kter´ese m´askript spustit (Message) a kter´yskript se m´aspustit (Parameter). Tyto hodnoty se pot´euloˇz´ıdo ta- bulky GPBinding, podle kter´ese j´adro rozhoduje, zda na uˇzivatelskou akci reagovat a jak.

13 3 Pouˇzit´etechnologie v EA

Syst´em EasyArchiv vyuˇz´ıv´ake sv´efunkci mnoˇzstv´ır˚uzn´ych technologi´ı. V t´eto kapitole jsou pops´any ty d˚uleˇzitˇejˇs´ıa ty, kter´eovlivn´ıpr˚ubˇeht´eto pr´ace.

3.1 COM rozˇs´ıˇren´ı

COM (Component Object Model) je platformnˇenez´avisl´y,distribuovan´y, ” objektovˇeorientovan´ysyst´em pro vytv´aˇren´ıbin´arn´ıch softwarov´ych kompo- nent kter´emohou interagovat.“ [2] (pˇreloˇzeno z angliˇctiny)

COM urˇcuje standardizovan´yobjektov´ymodel a programov´epoˇzadavky, kter´eumoˇzˇnuj´ıCOM objekt˚um a komponent´aminteragovat mezi sebou. Ne- jedn´ase tedy o programovac´ı jazyk a neurˇcuje ani implementaˇcn´ı detaily aplikace. COM objekty mohou b´ytuvnitˇrjedin´eho procesu, ve v´ıce proce- sech nebo i na r˚uzn´ych poˇc´ıtaˇc´ıch. Nemus´ıb´yt vytvoˇren´eve stejn´ych progra- movac´ıch jazyc´ıch, a proto se COM naz´yv´abin´arn´ıstandard. Jedn´ase totiˇz o standard, kter´yse aplikuje aˇzpot´e,co byl program pˇreloˇzen do bin´arn´ıho strojov´eho k´odu.

Pouˇz´ıv´ase pˇredevˇs´ım k umoˇznˇen´ımezi-procesov´ekomunikace mezi ob- jekty v r˚uzn´ych programovac´ıch jazyc´ıch. To je hlavn´ıvlastnost´ıCOM rozˇs´ı- ˇren´ı, vytv´aˇren´ıobjekt˚ujazykovˇeneutr´aln´ım zp˚usobem pouˇziteln´ych i v pro- stˇred´ıch, pro kter´enebyly stvoˇreny.

Proces, kter´yvyuˇz´ıv´aCOM komponentu, nemus´ıb´yt znovu zkompilov´an pot´e,co se implementace komponenty zmˇen´ı. V tomto ohledu je komponenta rozdˇelena na interface a implementaci. Pˇri jak´ekoli zmˇenˇe, kter´anemˇen´ıin- terface se mˇen´ıpouze implementace. [12]

V mnoha oblastech byl COM do urˇcit´em´ıry nahrazen .NET framewor- kem a podporou webov´ych sluˇzeb skrz WCF (O Windows Communication Foundation v´ıce v kapitole 3.4). COM objekty vˇsakmohou b´yt st´ale pouˇzity vˇsemi .NET jazyky pomoc´ı.NET COM Interop.

Vˇsechny COM komponenty jsou zaregistrov´any do operaˇcn´ıho syst´emu pˇrijejich instalaci. Kdyˇzje chce program´ator pouˇz´ıt, mus´ı vˇedˇet, kde je komponenta uloˇzena a zn´atjej´ıGUID (Globally Unique IDentifier). GUID

14 Pouˇzit´etechnologie v EA C# skripty je unik´atn´ıidentifik´ator, pomoc´ıkter´eho m˚uˇzeklient poˇz´adat syst´emo ini- cializaci komponenty. Registrovan´eCOM komponenty lze standardnˇenaj´ıt v registrech na adrese HKEY CLASSES ROOT//CLSID.

Tenk´ya webov´yklienti pˇristupuj´ık j´adru syst´emu (EasyCom) pomoc´ı technologie COM.

3.2 C# skripty

Skripty, kter´em˚uˇzej´adro syst´emu spustit, jsou uloˇzeny spolu s cel´ym sv´ym C# projektem, kter´yje uloˇzen´yv datab´azi. Kdyˇzho uˇzivatel chce spustit, EasyCOM ho st´ahne do lok´aln´ıho ´uloˇziˇstˇe,pokud je potˇreba, tak ho sestav´ı (build), lok´alnˇespust´ıa vr´at´ıuˇzivateli v´ysledek.

Projekt obsahuj´ıc´ıskripty je pˇreloˇzen uvnitˇrskriptovac´ıknihovny EAScrip- ting vytvoˇren´ev jazyce C#. K pˇreloˇzen´ı projektu vyuˇz´ıv´aknihovnu Sys- tem.CodeDom.Compiler od spoleˇcnosti .

Jmenn´yprostor System.CodeDom.Compiler obsahuje typy pro spr´avu vy- ” tv´aˇren´ıa kompilov´an´ızdrojov´eho k´odu v podporovan´ych jazyc´ıch. Gener´a- tory k´odu mohou kaˇzd´yprodukovat zdrojov´yk´od v konkr´etn´ım programo- vac´ım jazyce podle struktury objektov´eho model dokumentu s k´odem (Code Document Object Model - CodeDOM), kter´yse skl´ad´az element˚uposkyt- nut´ych jmenn´ym prostorem System.CodeDom.“ [5] (pˇreloˇzeno z angliˇctiny)

Jazyky, kter´elze zkompilovat pomoc´ı System.CodeDom.Compiler, jsou C#, Visual Basic, C++ a JScript. Implementac´ırozhran´ı ICodeGenerator a ICode- Compiler lze vytvoˇrit CodeDomProvider, kter´yrozˇsiˇruje podporu CodeDOM i na jin´eprogramovac´ıjazyky.

J´adro syst´emu EasyArchiv v sobˇeobsahuje skriptovac´ıknihovnu EAScrip- ting, kter´am´areferenci na Interop.EasyCom, ˇc´ımˇzz´ısk´av´apˇr´ıstup k rozhran´ım j´adra. Je tedy moˇzn´eC# skript˚um pˇredat reference na objekty j´adra a umoˇz- nit skript˚um pˇr´ıstup k jeho funkc´ım bez potˇreby implementace wrapperu (viz. kapitola 3.3).

Nejvˇetˇs´ınev´yhodou a z´aroveˇnd˚uvodem pro vznik t´eto pr´ace je skuteˇc- nost, ˇze se C# skripty spouˇst´ı v j´adˇre. Jedn´ase tedy ˇcistˇeo server-side operace. Siln´yklient je klientsk´aaplikace postaven´akolem j´adra, a tak se j´ı toto omezen´ınet´yk´aa skripty s grafick´ym rozhran´ım se na nˇemspouˇst´ıv kli-

15 Pouˇzit´etechnologie v EA Wrapping COM komponenty entsk´emprostˇred´ı, kter´eje z´aroveˇni prostˇred´ım serveru. Tenk´ya webov´y klient standardnˇemaj´ıklienta a j´adro na r˚uzn´ych stroj´ıch, takˇzeotevˇren´ıdi- alogu pomoc´ıskriptu vede k zamrznut´ıklientsk´eaplikace, kter´aˇcek´ana to, aˇzskript dobˇehne; aˇzuˇzivatel zavˇre dialog, kter´yse otevˇrel na serveru, kter´y ani nemus´ım´ıt grafick´yv´ystup.

3.3 Wrapping COM komponenty

Obalen´ı(wrapping) COM komponenty prob´ıh´aza ´uˇcelem poskytnut´ıvrstvy mezi klientem COM komponenty a komponentou samotnou. Umoˇzˇnuje vy- tv´aˇren´ıobjekt˚ua vol´an´ımetod komponenty pomoc´ıpromˇenn´ych a struktur kter´efunguj´ı v jazyce klientsk´eho programu. Obalovac´ı tˇr´ıda pak pˇrevede promˇenn´ena takov´e,kter´evyhovuj´ırozhran´ıCOM komponenty a spust´ıpo- ˇzadovanou metodu.

Ke spouˇstˇen´ı skript˚uv j´adˇre slouˇz´ı C# knihovna (EAScripting), kter´a je obalen´ac++ knihovnou (ScriptingWrapper), kter´apˇrekl´ad´aexistuj´ıc´ıroz- hran´ıC# knihovny na rozhran´ıkompatibiln´ıs C++ k´odem.

3.4 WebService Tenk´eho klienta

Webov´asluˇzba, kterou tenk´yklient vyuˇz´ıv´apro komunikaci mezi serverem a klientem, je souˇc´ast´ıWindows Communication Foundation (WCF).

WCF je framework, slouˇz´ıc´ık tvorbˇeservisnˇeorientovan´ych aplikac´ı, vy- ” v´ıjen´yspoleˇcnost´ıMicrosoft. Jeho pouˇz´ıv´an´ıumoˇzˇnuje asynchronn´ıpos´ıl´an´ı zpr´avz jednoho koncov´eho bodu (endpoint) sluˇzby na jin´y. Koncov´ybod sluˇzby m˚uˇzeb´yt souˇc´ast´ıkontinu´alnˇedostupn´esluˇzby hostovan´epomoc´ıIIS (Internet Information Services), nebo hostov´an jako souˇc´ast aplikace. Zpr´avy pos´ılan´emezi koncov´ymi body mohou b´ytjednoduch´ejako napˇr´ıklad jeden znak nebo slovo poslan´ejako XML dokument, nebo m˚uˇzej´ıt o komplexn´ı proud bin´arn´ıch dat.“ [8] (pˇreloˇzeno z angliˇctiny)

JelikoˇzWCF n´asleduje principy servisnˇeorientovan´earchitektury, lze po- moc´ınˇejimplementovat syst´emy s distribuovan´ymi v´ypoˇcty a syst´emy ob- sluhuj´ıc´ı vzd´alen´euˇzivatele. Klienti mohou pˇristupovat k mnoha sluˇzb´am a sluˇzba m˚uˇzeb´yt vyuˇz´ıv´ana v´ıce klienty.

16 Pouˇzit´etechnologie v EA Tomcat

Sluˇzby obvykle poskytuj´ı Web Services Description Language rozhran´ı (WSDL) umoˇzˇnuj´ıc´ı jak´emukoli WCF klientovi vyuˇz´ıvat sluˇzby nez´avisle na platformˇe,na kter´ejsou spuˇstˇeny.

V´yhodou sluˇzeb je, ˇze jsou obvykle tvoˇren´ejako univerz´aln´ıpˇr´ıstupov´y bod k dat˚um a funkc´ım, m´ısto toho, aby vznikala jedna sluˇzba pro kaˇzd´y konkr´etn´ı´uˇcel nebo klienta. WCF SOA spol´eh´ana webov´esluˇzby na pˇrij´ı- m´an´ıa doruˇcov´an´ıdat. Tyto dvˇevlastnosti ruˇc´ı, ˇze se ke sluˇzbˇem˚uˇzepˇripojit jak´ykoli klient splˇnuj´ıc´ıpotˇrebn´ekontrakty. Klient je nez´avisl´yna .NET plat- formˇenebo jak´ychkoliv propriet´arn´ıch komunikaˇcn´ıch protokolech. [12]

3.5 Tomcat

Apache Tomcat, ˇcasto naz´yvan´y ” jako Tomcat Server, je open-source Java Servlet kontejner vyv´ıjen´yspo- leˇcnost´ı Apache Software Foun- dation.“ [6] (pˇreloˇzeno z angliˇctiny) Obr´azek 3.1: Logo Apache Tomcat Tomcat poskytuje jednoduchou, transparentn´ı, hardwarovˇenen´aroˇc- nou (oproti alternativn´ım ˇreˇsen´ım) metodu v´yvoje Java Servlet˚ua Java- Server Pages (JSP). Tomcat vˇsak neposkytuje v´yvojov´eprostˇred´ıpro v´yvoj webov´ych str´anek.

Velkou v´yhodou tohoto syst´emu je jednoduchost jeho pouˇzit´ı. I starˇs´ı verze 7.0 vyuˇz´ıvan´awebov´ym klientem byla pˇripravena bˇehem nˇekolika mi- nut. Po staˇzen´ıarchivu z ofici´aln´ıstr´anky [6] ho pouze staˇcilo rozbalit, poskyt- nout war“ archive s klientem a spustit Tomcat. Program samotn´yse o vˇse ” ostatn´ıpostar´aautomaticky a publikuje webovou str´anku na lok´aln´ıdom´enu. Hned po spuˇstˇen´ıposkytuje domovskou str´anku, na kter´elze nastavit, jak´e webov´estr´anky by mˇely b´yt aktivn´ı. Tak´eumoˇzˇnuje nahr´atwebov´estr´anky skrz webov´erozhran´ı.

Cel´ywebov´yklient je postaven na technologii Apache Tomcat a komuni- kuje s j´adrem EasyCom pomoc´ıprogramu Jacob.

17 Pouˇzit´etechnologie v EA Jacob - JAVA-COM Bridge

3.6 Jacob - JAVA-COM Bridge

”Jacob je JAVA-COM pˇremostˇen´ıumoˇzˇnuj´ıc´ıvol´an´ıCOM komponent z Javy. Vyuˇz´ıv´aJNI k prov´adˇen´ınativn´ıch vol´an´ıCOM a Win32 knihoven. Projekt zapoˇcal v roce 1999 a je aktivnˇeudrˇzov´an a vyuˇz´ıv´an tis´ıci v´yvoj´aˇri po ce- l´emsvˇetˇe.Jako open-source projekt benefitoval ze zkuˇsenost´ısv´ych uˇzivatel˚u, mnoz´ız nichˇzpˇrispˇeli s ´upravou k´odu nebo poskytli zpˇetnou vazbu.”[7] (Pˇre- loˇzeno z angliˇctiny. Cit´at z roku 2004. Prohl´aˇsen´ıo aktivn´ı´udrˇzbˇeprojektu jiˇznejsou aktu´aln´ıa projekt se zd´aneaktivn´ıod roku 2015. Je vˇsak st´ale vyuˇz´ıv´an v r´amci webov´eho klienta.)

Jacob je aktu´alnˇevyuˇz´ıv´anv r´amci webov´eho klienta a umoˇzˇnuje vol´an´ı j´adra jako COM komponenty serverem Tomcatu, kter´yje ps´an v Javˇe.

3.7 XSLT

Extensible Stylesheet Language Transformations (XSLT) je jazyk pro trans- formaci XML dokument˚una jin´eXML dokumenty, HTML dokumenty, text, XSL form´atovac´ıobjekty a dalˇs´ıform´aty. Castoˇ se pouˇz´ıv´aspolu s XSL for- m´atovac´ımi objekty, kter´elze d´ale transformovat do form´at˚ujako je PDF, PostScript nebo SVG.

Zpracov´avan´ydokument nen´ızmˇenˇen, nov´ydokument z nˇejpouze vy- ch´az´ı. Standardn´ım vstupn´ım dokumentem je XML soubor, ale jak´akoli data, ze kter´ych dok´aˇzeprocesor vygenerovat XQuery a XPath model lze pouˇz´ıt jako vstup transformace. Pˇr´ıkladem takov´eho vstupu je relaˇcn´ıdatab´aze.

Webov´yklient vyuˇz´ıv´aXSLT k transformaci XML dokumentu, kter´yre- prezentuje formul´aˇrpro definici metadat dokumentu. Tento XML dokument je posl´ezeupraven na HTML a posl´anklientovi.

3.7.1 XPath

XPath lze vyuˇz´ıt k navigaci mezi elementy a atributy XML dokumentu a je d˚uleˇzitou souˇc´ast´ıXSLT standardu.

K navigaci dokumentem XPath vyuˇz´ıv´asyntax podobn´ynavigaci adres´a-

18 Pouˇzit´etechnologie v EA Relaˇcn´ıdatab´aze(MySql/Oracle)

ˇrovou strukturou operaˇcn´ıch syst´em˚u. XPath d´ale obsahuje pˇres 200 funkc´ı slouˇz´ıc´ıch k pr´aci s daty, porovn´av´an´ıhodnot, zpracov´an´ıdat, manipulaci s poˇrad´ım a pˇresnˇejˇs´ınavigaci dokumentem.

3.7.2 XQuery

XQuery je dotazovac´ıjazyk nad XML daty. Slouˇz´ık vyhled´av´an´ıa z´ısk´av´an´ı element˚ua atribut˚uz XML dokument˚u.

Pˇr´ıklad pouˇzit´ıXQuery: doc("dialog.xml")/gpform/gpcontrols/gpcontrol[type=5]

Pˇr´ıklad vybere vˇsechny ovl´adac´ıprvky ze XML souboru dialog.xml, kter´e maj´ıelement type“, kter´yobsahuje ˇc´ıselnou hodnotu rovnou 5ti (nejedn´a ” se o atribut type“, ale vnitˇrn´ıuzel). GPControls typu 5 jsou tlaˇc´ıtka. ”

3.8 Relaˇcn´ıdatab´aze (MySql/Oracle)

Relaˇcn´ıdatab´aze je sada datov´ych poloˇzek zorganizovan´ych do podoby pˇre- dem definovan´ych tabulek, kter´emohou b´ytnavz´ajem propojeny r˚uzn´ymi typy kl´ıˇc˚u. V tˇechto tabulk´ach lze pˇristupovat k dat˚um, vyhled´avat v nich a extrahovat je v r˚uzn´ych form´ach bez nutnosti ´upravy datab´azov´etabulky.

K vyhled´av´an´ıv relaˇcn´ıch datab´az´ıch slouˇz´ıstrukturalizovan´ydotazovac´ı jazyk Structured Query Language (SQL). Pomoc´ıSQL lze nejen vyhled´avat v datab´azi, ale tak´eaktualizovat a mazat z´aznamy, vytv´aˇret a upravovat tabulky, pˇrid´avat omezen´ına data a dalˇs´ı.

Velkou v´yhodou relaˇcn´ıch datab´az´ıje jednoduchost pochopen´ıkonceptu, z kter´eho vych´az´ı. To umoˇzˇnuje relativn´ıjednoduchost vytv´aˇren´ıa pˇr´ıstupu k nim. Jsou tak´ejednoduˇserozˇsiˇriteln´ebez potˇreby ´upravy existuj´ıc´ıch dat a aplikac´ı, kter´es nimi pracuj´ı.

Syst´em EasyArchiv dok´aˇze fungovat s MySql i Oracle datab´az´ı. Obecnˇe ˇreˇceno Oracle datab´aze m´av´ıce funkc´ıa je vhodnˇejˇs´ıpro rozs´ahle projekty a datov´esklady, zat´ımco MySql je uˇzivatelsk´ypˇr´ıvˇetivˇejˇs´ı, v mnoha pˇr´ıpadech rychlejˇs´ıa zadarmo. V kontextu tohoto projektu lze vˇsak ˇr´ıct, ˇzejsou si oba

19 Pouˇzit´etechnologie v EA Komunikaˇcn´ıprotokol EA

syst´emy v´ıce m´enˇerovn´e. Jedin´ym rozd´ılem, kter´ytento projekt ovlivˇnuje, jsou drobn´erozd´ıly v datov´ych typech a syntaxi SQL pˇr´ıkaz˚u.

3.9 Komunikaˇcn´ıprotokol EA

Data pos´ılan´amezi j´adrem a r˚uzn´ymi servery jsou ve formˇeXML dokumentu. Tento dokument obsahuje vˇsechny informace ke konstrukci formul´aˇrepro vy- tv´aˇren´ıa spr´avu metadat dokumentu. Spolu s n´azvy, rozmˇery, rozm´ıstˇen´ımi a typy jednotliv´ych ovl´adac´ıch prvk˚uformul´aˇre tak´eobsahuje identifik´atory prvk˚u, kter´eumoˇzn´ıj´adru v pˇr´ıpadˇeuˇzivatelsk´eakce rozpoznat, kter´ypr- vek formul´aˇre vyˇzaduje reakci j´adra a jak tuto reakci vygenerovat (napˇr´ıklad spuˇstˇen´ım skriptu, poskytnut´ım dat nebo spuˇstˇen´ım vnitˇrn´ıakce j´adra).

XML dokument nesouc´ıdata o formul´aˇri m˚uˇzevypadat napˇr´ıklad takto: 1 796 278 CID1003 2m TYPEID = 16: cgdocument.owner = ’none ’;

60 115 733 160

Query 9

20 Pouˇzit´etechnologie v EA Komunikaˇcn´ıprotokol EA

CID1008 5 Add

687 90 104 20

Add

21 4 Skriptov´an´ı

Skript je program napsan´ypro prostˇred´ıaplikace, kter´yautomatizuje nebo ulehˇcuje proveden´ı ´ukol˚u, kter´eby jinak musel ruˇcnˇevykon´avat uˇzivatel. Castoˇ se vytv´aˇr´ıpro situace, kde lze automatizovat ˇc´asti procesu, kter´ene- bylo moˇzn´epˇredpokl´adat pˇri n´avrhu aplikace nebo kter´evznikly jako souˇc´ast jin´eho procesu v r´amci spoleˇcnosti. Mohou prov´adˇetjednoduch´eakce jako pˇredvyplˇnov´an´ıhodnot, kontrolovat, zda uˇzivatel spr´avnˇevyplnil formul´aˇre nebo mohou vytv´aˇret cel´edatab´azov´etabulky a spouˇstˇetdalˇs´ıaplikace vy- kon´avaj´ıc´ıvlastn´ıc´ıle.

V r´amci syst´emu EasyArchiv skripty slouˇz´ıdvˇema hlavn´ım funkc´ım: • Usnadnˇen´ıpr´ace uˇzivatel˚um – kontroluj´ınapˇr´ıklad, zda jsou jm´ena do- kument˚upodle firemn´ınormy nebo z poskytnut´ych dat generuj´ıSQL pˇr´ıkaz. • Zpˇr´ıstupnˇen´ırozˇs´ıˇren´efunkcionality – lze pomoc´ınich pˇristupovat k fun- kc´ım j´adra. Umoˇzˇnuj´ıtak napˇr´ıklad z´ıskat dodateˇcn´einformace o jin´ych dokumentech, uˇzivatel´ıch nebo pˇr´ıstupov´ych pr´avech.

Klientsk´eskriptov´an´ı, kter´eje zamˇeˇren´ım t´eto pr´ace, by se sp´ıˇsemˇelo soustˇredit na uˇzivatelskou ˇc´ast syst´emu. Jelikoˇznebude m´ıt pˇr´ıstup k funkc´ım j´adra, budou se muset uˇzivatelsk´eskripty spokojit s pˇredem pˇripraven´ymi daty a s uˇzivatelsk´ym rozhran´ım, kter´esouˇcasn´eskriptov´an´ıpostr´ad´a.

V t´eto kapitole jsou analyzov´any nˇekter´eskriptovac´ı jazyky a metody jejich spuˇstˇen´ı. Jsou zhodnoceny jejich siln´ea slab´estr´anky a je navrˇzen skriptovac´ıjazyk, kter´ybude vyuˇzit k implementaci rozˇs´ıˇren´ı.

4.1 Poˇzadavky

Na klientsk´eskriptov´an´ı se vztahuje nˇekolik poˇzadavk˚u, kter´evych´az´ı ze zad´an´ıa je potˇreba je br´at v potaz. D´ale existuje nˇekolik poˇzadavk˚u, kter´ym by bylo vhodn´evyhovˇet, aby bylo moˇzn´ebudouc´ırozˇs´ıˇren´ıˇreˇsen´ı.

Z´akladn´ım poˇzadavkem je bezprobl´emov´aintegrace do souˇcasn´eho sys- t´emu EasyArchiv. Klientsk´eskripty budou muset b´yt spustiteln´ena vˇsech tˇrech klientsk´ych aplikac´ıch a bude moˇzn´eje vytv´aˇret a upravovat v r´amci

22 Skriptov´an´ı Poˇzadavky programu EasyBuilder. Zde vznik´aasi nejvˇetˇs´ıomezen´ı. Webov´yklient poˇza- duje, aby bylo moˇzn´ezvolen´eˇreˇsen´ıspustit ve webov´emprohl´ıˇzeˇci. Skripty tak´emus´ıb´yt moˇzn´euchov´avat v obou typech relaˇcn´ıch datab´az´ı(Oracle a MySql) a mus´ıje b´yt moˇzn´epˇred´avat mezi aplikacemi uvnitˇrXML doku- mentu.

Reˇsen´ıˇ mus´ı z´aroveˇnslouˇzit pouze jako rozˇs´ıˇren´ı existuj´ıc´ıho syst´emu. Nesm´ıjak´ymkoli zp˚usobem omezit existuj´ıc´ıfunkcionalitu. Uˇzivatel by mˇel b´ytschopen pˇrej´ıt na verzi EasyArchivu s klientsk´ymi skripty, aniˇzby jak- koli zaznamenal zmˇenu. Datov´a´uloˇziˇstˇeby tak´enemˇela podstoupit ˇz´adnou zmˇenu, snad s v´yjimkou pˇrid´an´ıdatab´azov´ych tabulek pro uloˇzen´ınov´ych dat potˇrebn´ych ke spuˇstˇen´ıklientsk´ych skript˚u.

Hlavn´ım zamˇeˇren´ım tohoto rozˇs´ıˇren´ısouˇcasn´efunkcionality je poskytnut´ı vˇetˇs´ıch moˇznost´ıuˇzivatelsk´einterakce. Zvolen´yskriptovac´ıjazyk mus´ıb´yt schopen vytv´aˇret uˇzivatelsk´edialogy nebo b´yt schopen spolupracovat s jinou technologi´ı, kter´aby obstar´avala grafick´erozhran´ı.

V pˇr´ıpadˇeskriptovac´ıho jazyka, kter´yby neposkytoval moˇznost vytvoˇren´ı uˇzivatelsk´eho rozhran´ı, by bylo moˇzn´erozˇs´ıˇrit souˇcasn´ysyst´em EasyArchivu pro vytv´aˇren´ıa zobrazov´an´ıdialog˚uo moˇznost pouˇz´ıt ho tak, aby ˇselvy- uˇz´ıt spolu s klientsk´ymi skripty. Pokud by se takov´erozˇs´ıˇren´ızobrazov´an´ı dialog˚uuk´azalo jako provediteln´e,bylo by tak´emoˇzn´em´ısto pˇrid´av´an´ıdal- ˇs´ıho skriptovac´ıho ˇreˇsen´ıpouze rozˇs´ıˇrit grafick´erozhran´ıa pouˇzit´ım ho spolu se souˇcasn´ym skriptovac´ım syst´emem. Spoluprac´ıtˇechto dvou komponent by bylo moˇzn´edos´ahnout stejn´eho v´ysledku jako implementac´ıdalˇs´ıho skripto- vac´ıho rozˇs´ıˇren´ı.

D˚uleˇzit´ym prvkem ˇreˇsen´ıje nen´aroˇcnost na uˇzivatelsk´estranˇei co se t´yˇce nasazen´ı. Bylo by tedy velkou v´yhodou ˇreˇsen´ı, kter´enevyˇzaduje instalaci do- dateˇcn´eho softwaru, kter´yby potˇrebovaly nˇekter´ejazyky spouˇstˇen´ena virtu- ´aln´ım stroji. Z´aroveˇnby byla v´yhodou implementace ˇreˇsen´ı, kter´enevyˇzaduje n´akup dodateˇcn´eho softwaru.

Dalˇs´ı z nefunkˇcn´ıch poˇzadavk˚u, nebo sp´ıˇsepreferenc´ı, je jednoduchost vyuˇzit´eho skriptovac´ıho jazyka nebo vyuˇzit´ıtakov´eho jazyka, kter´yje obecnˇe zn´am. Od uˇzivatel˚uprogramu EasyBuilder, kter´ybude pracovat s k´odem skript˚u, lze oˇcek´avat urˇcitou ´uroveˇnpoˇc´ıtaˇcov´ea programovac´ıgramotnosti, ale jednoduch´ynebo zn´am´yjazyk sn´ıˇz´ın´aroky na znalosti z´akazn´ık˚ua umoˇzn´ı jim tak rozˇs´ıˇren´ıfunkcionality cel´eho syst´emu.

23 Skriptov´an´ı Powershell

4.2 Powershell

PowerShell je textov´y interpretr pˇr´ı- ” kaz˚u a skriptovac´ı jazyk postaven´y na .NET Frameworku od spoleˇcnosti Microsoft. Je navrˇzen, aby umoˇznil zku- ˇsen´ym uˇzivatel˚um a administr´ator˚um jednoduˇse automatizovat administraci operaˇcn´ıch syst´em˚u (, macOS, Unix, and Windows), proces˚ua apli- kac´ı.“ [3] (pˇreloˇzeno z angliˇctiny) Obr´azek 4.1: Logo Microsoft Jelikoˇz je PowerShell postaven´y PowerShell na .NET Frameworku, poskytuje vˇsechny funkce, kter´ejsou v nˇemdostupn´ea to prostˇrednictv´ım cmdlet˚u, coˇzjsou specializovan´etˇr´ıdy implementuj´ıc´ıkon- kr´etn´ıfunkce. Cmdlety lze seskupovat do skript˚us pˇr´ıponou .ps1, kter´epak poskytuj´ırozˇs´ıˇren´emoˇznosti vyuˇzit´ılogick´ych operac´ı.

PowerShell byl zam´yˇslen jako n´ahrada pˇr´ıkazov´eˇr´adky operaˇcn´ıho sys- t´emu Windows. Dok´aˇzetedy pracovat s klasick´ymi Windows aplikacemi, ale tak´evytv´aˇret instance .NET tˇr´ıd a COM objekt˚u. Um´ınejen pracovat v sou- borov´em syst´emu, ale m´atak´epˇr´ıstup k registr˚um a certifik´at˚um.

Jako skriptovac´ıjazyk s dynamick´ym typov´an´ım dok´aˇzePowerShell im- plementovat komplexn´ıoperace. Podporuje vytv´aˇren´ıpromˇenn´ych, funkc´ı, podm´ınek, cykl˚u, vyvol´av´an´ıv´yjimek a pouˇz´ıv´an´ılambda v´yraz˚u.

Velkou v´yhodou PowerShellu v r´amci t´eto pr´ace je jeho schopnost spus- tit libovoln´y.NET k´odbez potˇreby ho nejdˇr´ıve zkompilovat v r´amci v´y- vojov´eho prostˇred´ı. Powershell dok´aˇzelibovoln´y.NET k´od pˇreloˇzit za bˇehu na CIL (Common Intermediate Language, jazyk spouˇstˇen´yvirtu´aln´ım stro- jem), kter´yje uchov´anv pamˇeti po dobu bˇehu skriptu. PowerShell tak´edo- k´aˇzepˇrevz´ıt objekty a funkce .NET knihoven. Je tedy moˇzn´evyuˇz´ıt napˇr´ıklad System.Windows.Forms knihovnu k vytvoˇren´ıt´emˇeˇrlibovoln´eho uˇzivatelsk´eho dialogu.

PowerShell skripty lze spustit na jak´emkoli poˇc´ıtaˇcis nainstalovan´ym operaˇcn´ım syst´emem Windows 7 nebo novˇejˇs´ım nebo nainstalovan´ym progra- mem PowerShell. Pokud jsou skripty spustiteln´ena dan´emzaˇr´ızen´ı, jak´akoli aplikace s pˇr´ıstupem k pˇr´ıkazov´eˇr´adce je dok´aˇzespustit. Webov´eprohl´ıˇzeˇce

24 Skriptov´an´ı JavaScript standardnˇenemaj´ıpˇr´ıstup k pˇr´ıkazov´eˇr´adce z d˚uvodu bezpeˇcnosti.

Ve snaze spustit PowerShell skript z webov´eho klienta byl r´amci t´eto pr´ace vyvinut prototyp add-onu pro prohl´ıˇzeˇcMozila FireFox. Aˇckoli se povedlo spustit pˇr´ısluˇsn´yskript z prostˇred´ıwebov´eho prohl´ıˇzeˇce,probl´emy spojen´e s v´yvojem a instalac´ıadd-on˚upro v´ıce prohl´ıˇzeˇc˚upˇrev´aˇzily v´yhody, kter´e PowerShell poskytuje.

4.2.1 Zhodnocen´ı

PowerShell jako skriptovac´ıjazyk m´amnoho v´yhod. Skripty by bylo moˇzn´e ps´atv jak´emkoli jazyce, kter´yje souˇc´ast´ı .NET, vˇcetnˇe C#, ve kter´em se v syst´emu EasyArchiv p´ıˇs´ıserver-side skripty, a lze v r´amci skript˚uvyuˇz´ıt libovoln´eknihovny pouˇziteln´ev jazyc´ıch .NET. V´yhodou je tak´e,ˇze funguj´ı prakticky na vˇsech modernˇejˇs´ıch syst´emech a lze je spustit z pˇr´ıkazov´eˇr´adky, aniˇzby uˇzivatel potˇreboval cokoli kromˇek´odu skriptu.

Kritick´ym probl´emem je komplikovan´yzp˚usob spouˇstˇen´ıPowerShell skrip- t˚uz webov´eho klienta. Kv˚uli tomuto probl´emu je vyuˇzit´ıPowerShell skript˚u v t´eto pr´aci velmi nepraktick´e.

4.3 JavaScript

JavaScript je ˇsiroce rozˇs´ıˇren´y interpretovan´y programovac´ı jazyk, kter´y poh´an´ı dynamick´e chov´an´ı vˇetˇsiny webov´ych str´anek. Spolu s HTML a CSS je JavaScript jednou ze tˇr´ıkl´ı- ˇcov´ych technologi´ı webov´ych str´anek. Lze po- moc´ınich vytv´aˇret grafick´erozhran´ıinteraguj´ıc´ı s uˇzivatelem. Lze jej pouˇz´ıt pro tvorbu formu- l´aˇr˚u, webov´ych str´anek nebo i her. JavaScript je tak rozˇs´ıˇren´y, ˇze existuje mnoho JavaScripto- v´ych engin˚ua snad vˇsechny souˇcasn´ewebov´e Obr´azek 4.2: Logo Ja- prohl´ıˇzeˇce dok´aˇz´ı JavaScript spustit bez nut- vaScriptu nosti doinstalov´avat plug-iny.

JavaScript m´adynamick´etypov´an´ı, coˇzznamen´a, ˇzepromˇenn´anem´aod

25 Skriptov´an´ı JavaScript zaˇc´atku vykon´av´an´ıprogramu pevnˇedan´ytyp. Lze j´ıtak za bˇehu pˇriˇradit r˚uzn´etypy dat. Aˇckoli se JavaScript naz´yv´aobjektovˇeorientovan´ym jazy- kem, nevyuˇz´ıv´akoncept tˇr´ıda-instance stejnˇejako typick´eobjektovˇeoriento- van´ejazyky. M´ısto toho disponuje prototypov´an´ım. Dok´aˇze tak napodobovat objektovˇeorientovan´eprincipy jako tˇreba dˇediˇcnost.

JavaScriptov´eprogramy se nejˇcastˇeji spouˇstˇej´ıv r´amci webov´ych str´a- nek a d˚uleˇzitou vlastnost´ıje, ˇzese spouˇst´ına stranˇeklienta. Z toho d˚uvodu se vˇsak pot´yk´as urˇcit´ymi bezpeˇcnostn´ımi omezen´ımi, kter´azabraˇnuj´ıspouˇs- tˇen´ıˇskodliv´eho k´odu. JavaScript spuˇstˇen´yve webov´emprohl´ıˇzeˇcinapˇr´ıklad standardnˇenem´apˇr´ıstup k dat˚um na disku nebo k informac´ım o identitˇe uˇzivatele.

4.3.1 Technologie obohacuj´ıc´ıJavaScript

D´ıky sv´epopularitˇese JavaScript doˇckal kniho- ven, kter´eho rozˇsiˇruj´ıo potˇrebn´efunkce nebo upravuj´ı jeho funkcionalitu ke specifick´emu ´uˇcelu. Mezi tyto technologie patˇr´ınapˇr´ıklad Bo- otstrap nebo Node.js.

Bootstrap je open-source front-endov´akniho- vna zamˇeˇren´a na v´yvoj webov´ych str´anek a webov´ych aplikac´ı. Obsahuje JavaScript roz- Obr´azek 4.3: Logo Boot- ˇs´ıˇren´ı, HTML a CSS ˇsablony, p´ısma, vzhledy, strapu ovl´adac´ıprvky a dalˇs´ıelementy slouˇz´ıc´ık umoˇz- nˇen´ı, zpˇr´ıjemnˇen´ıa usnadnˇen´ıuˇzivatelsk´einter- akce s webovou str´ankou.

Na druhou stranu Node.js je open-source syst´emvytvoˇren´yv jazyce JavaScript a slouˇz´ı k tvorbˇepˇredevˇs´ım serverov´ych aplikac´ı. Jeho silnou str´ankou je dobr´aˇsk´alovatelnost a jeho snaha o minimalizaci hardwarov´ych n´arok˚upˇre- devˇs´ım vyuˇz´ıv´an´ım asynchronn´ıch I/O operac´ı. Obr´azek 4.4: Logo Node.js Na rozd´ıl od obvykl´eho pouˇzit´ıJavaScriptu, Node.js umoˇzˇnuje vytv´aˇret obsah dynamick´e webov´estr´anky pˇred t´ım, neˇzje odesl´ana webo- v´emu prohl´ıˇzeˇci. Node.js tedy umoˇzˇnuje vytv´aˇret webov´estr´anky bez vy-

26 Skriptov´an´ı JavaScript uˇz´ıv´an´ı zbyteˇcnˇevelk´eho mnoˇzstv´ı r˚uzn´ych programovac´ıch jazyk˚u. M´ısto pouˇz´ıv´an´ıPHP nebo ASP na stranˇeserveru a JavaScript na stranˇeklienta, s Node.js lze pouˇz´ıt pouze JavaScript.

4.3.2 C# scripting engine

Skriptovac´ıengine, kter´yje souˇc´ast´ı.NET Frameworku, se nach´az´ıve jmen- ” n´emprostoru MSSciptControl. Jedn´ase o pomˇernˇeˇspatnˇedokumentovanou a zastaralou knihovnu.“ [4] (pˇreloˇzeno z angliˇctiny)

Umoˇzˇnuje pˇred´av´an´ıCOM komponenty skriptu, takˇzeJavaScript skript by tak mˇelpˇr´ıstup ke stejn´ym tˇr´ıd´am jako maj´ıskripty spouˇstˇen´ev j´adˇre. Nen´ıvˇsak jednoduch´yzp˚usob, jak zpˇr´ıstupnit data v tˇechto tˇr´ıd´ach klient- sk´emu programu nebo webov´emu prohl´ıˇzeˇci.

MSSciptControl je menˇs´ı, jednoduˇsepouˇziteln´yJavaScript engine.

4.3.3 JavaScript.Net (Noesis)

”Knihovna JavaScript.net integruje V8 JavaScript engine (v´ıce v kapitole 4.3.4.1) a vystavuje ho CLI (Common Language Infrastructure). Kompiluje v runtimu a spouˇst´ıskripty pˇr´ımo z .NET k´odu. Umoˇzˇnuje CLI objekt˚um, aby byly manipulov´any JavaScript skriptem.”[9] (pˇreloˇzeno z angliˇctiny)

Noesis je open-source knihovna dostupn´ana GitHubu a NuGetu. Je mo- dernˇejˇs´ıneˇzMSScirptControl, jednoduˇseji se pouˇz´ıv´aa d´ıky tomu, ˇzese jedn´a o pomˇernˇevyˇz´ıvanou knihovnu, je vˇetˇs´ıˇsance, ˇzese v pˇr´ıpadˇenalezen´ıpro- bl´emu p˚ujde na nˇekoho obr´atit.

4.3.3.1 Common Language Infrastructure

Common Language Infrastructure (CLI) je otevˇren´ytechnick´ystandard vy- ” v´ıjen´yspoleˇcnost´ıMicrosoft a standardizovan´yISO a EMCA. Popisuje spus- titeln´yk´oda runtime prostˇred´ı, kter´epopisuje pouˇzit´ıvysoko-´urovˇnov´ych ja- zyk˚una r˚uzn´ych poˇc´ıtaˇcov´ych platform´ach bez potˇreby ´upravy pro r˚uzn´ear- chitektury. Mezi implementace CLI patˇr´ınapˇr´ıklad .NET Framework, .NET Core, DotGNU nebo Portable.NET.“ [5] (pˇreloˇzeno z angliˇctiny)

27 Skriptov´an´ı JavaScript

D´ıky integraci s CLI je moˇzn´epro aplikace a knihovny sd´ılet mezi sebou funkce, vlastnosti, pole, ud´alosti, objekty, typy, metody a dalˇs´ıprvky .NET aplikac´ı, i kdyˇznejsou vytvoˇreny ve stejn´emprogramovac´ım jazyce.

4.3.4 ClearScript

”ClearScript je knihovna, kter´aumoˇzˇnuje jednoduch´epˇrid´an´ıskriptov´an´ıdo .NET aplikac´ı. V souˇcasnosti podporuje JavaScript (pomoc´ı V8 a JScript engin˚u) a VBScript.”[10] (pˇreloˇzeno z angliˇctiny)

Silnou str´ankou ClearScriptu je jednoduchost vyuˇzit´ıa integrace s CLI. Skripty mohou volat metody hostuj´ıc´ıho programu s v´ystupn´ımi parametry, voliteln´ymi parametry a poli parametr˚u. Aplikace tak´em˚uˇzepˇr´ımo volat funkce skriptu a pˇristupovat k jeho objekt˚um. Disponuje tak´eplnou podporou debugov´an´ıa podporuje tˇri r˚uzn´eskriptovac´ıenginy (Google V8, Microsoft JScript a VBScript).

ClearScript je modern´ı, aktivnˇevyv´ıjen´aknihovna, kter´aje velice jedno- duch´ana pouˇzit´ı. Je d´ıky V8 enginu vysoce v´ykonn´aa optimalizovan´apro v´ıce-vl´aknov´evyuˇzit´ı.

4.3.4.1 Chrome V8

Chrome V8 je vysoce v´ykonn´yopen-source JavaScript engine od spoleˇcnosti ” Google. Je naps´an v C++ a vyuˇz´ıv´aho napˇr´ıklad Google Chrome, Node.js a dalˇs´ı.“ [11] (pˇreloˇzeno z angliˇctiny)

V8 kompiluje JavaScript pˇr´ımo do strojov´eho k´odu a pot´eho spouˇst´ı. Zkompilovan´yk´od je d´ale optimalizov´an za bˇehu pomoc´ıheuristik profilu bˇehu programu. Mezi optimalizaˇcn´ıtechniky patˇr´ıInline expansion, Copy elision a Inline caching.

Jako garbage collector vyuˇz´ıv´astop-the-world precizn´ıgeneraˇcn´ıgarbage collector. Google ud´av´a, ˇzepr´avˇeten je jedn´ım z kl´ıˇc˚uk v´ykonu V8.

V8 tak´eumoˇzˇnuje jak´ekoli C++ aplikaci odhalit sv´eobjekty a funkce JavaScript k´odu.

28 Skriptov´an´ı JavaScript

4.3.5 AJAX

AJAX (Asynchron´ı JavaScript a XML) je pˇr´ıstup k mnoˇzinˇetechnologi´ı (HTML or XHTML, CSS, JavaScript, DOM, XML, XSLT a XMLHttp- Request), kter´yumoˇzˇnuje webov´ym aplikac´ım prov´adˇetrychl´einkremen- t´aln´ı´upravy uˇzivatelsk´eho rozhran´ıbez potˇreby znovu nahr´at celou webovou str´anku. St´avaj´ıse tak rychlejˇs´ıa v´ıce responsivn´ı.

Aˇckoli se nejedn´ao metodu spouˇstˇen´ıskript˚u, jedn´ase o uˇziteˇcnou moˇz- nost, jak obohatit JavaScript skripty, kter´aby mohla zlepˇsit flexibilitu v´y- sledn´eho ˇreˇsen´ıt´eto pr´ace.

Pomoc´ıAJAXu lze: • Upravovat webovou str´anku, aniˇzby musela b´yt cel´aznovu nahran´a.

• Dotazovat se o data na serveru pot´e,co byla str´anka nahran´a.

• Pˇrij´ımat data ze serveru pot´e, co byla str´anka nahran´a.

• na pozad´ıodes´ılat data na server.

V r´amci klientsk´eho skriptov´an´ı by bylo moˇzn´epomoc´ı AJAXu dyna- micky z´ısk´avat data z j´adra syst´emu EasyArchiv i pˇres to, ˇzeskript bˇeˇz´ı na klientsk´estranˇea aniˇzby bylo nutn´eimplementovat tˇrir˚uzn´ezp˚usoby pro pˇr´ıstup k j´adru (jeden pˇr´ıstup pro kaˇzd´eho klienta).

4.3.6 Zhodnocen´ı

JavaScript je ˇsiroce rozˇs´ıˇren´yskriptovac´ıjazyk, kter´ylze d´ıky mnoˇzstv´ıen- gin˚uspustit na r˚uzn´ych platform´ach. Je nejˇcastˇejivyuˇz´ıv´anpro spouˇstˇen´ı skript˚una klientsk´estranˇe, ale pomoc´ıNode.js v nˇemlze implementovat i ser- ver. D´ıky knihovn´am, kter´epoˇc´ıtaj´ıs vyuˇz´ıv´an´ım CLI objekt˚u, lze skriptu zpˇr´ıstupnit objekty a metody aplikace, ve kter´eje spuˇstˇen.

D˚uleˇzitou vlastnost´ıv r´amci t´eto pr´ace je, ˇzeJavaScript skripty je moˇzn´e spustit na vˇsech klientech bez vˇetˇs´ıch pot´ıˇz´ıch, protoˇzewebov´eprohl´ıˇzeˇce obvykle poˇc´ıtaj´ıse spouˇstˇen´ım JavaScriptu.

JavaScript je d´ale pomˇernˇerozˇsiˇriteln´y. Jelikoˇzse jedn´ao ˇsiroce vyuˇz´ı- van´yskriptovac´ıjazyk, bylo pro nˇejvytvoˇreno mnoˇzstv´ıknihoven jako napˇr´ı-

29 Skriptov´an´ı Visual Basic pro Aplikace (VBA) klad Bootstrap nebo jQuery. Spolu s moˇznost´ıprov´adˇetasynchronn´ıvol´an´ı je JavaScript siln´ym kandid´atem pro tuto pr´aci.

Jednou z nev´yhod JavaScriptu je, ˇzes´am o sobˇeneposkytuje grafick´e uˇzivatelsk´erozhran´ı(s v´yjimkou vol´an´ımetody alert()). JavaScript je navrˇzen tak, aby byl vyuˇz´ıv´an z´aroveˇns technologiemi jako HTML a CSS. Toto ˇreˇsen´ı by tedy vyˇzadovalo spojen´ıs dalˇs´ıtechnologi´ı, kter´aby obstar´avala vizu´aln´ı ˇc´ast skriptov´an´ı.

4.4 Visual Basic pro Aplikace (VBA)

VBA je implementace jazyka Visual Basic 6, jehoˇzv´yvoj byl ukonˇcenv roce 2008. Umoˇzˇnuje vytv´aˇren´ı uˇzivatelsk´ych skript˚uslouˇz´ıc´ıch k automatizaci proces˚uv r´amci aplikac´ıa operaˇcn´ıho syst´emu. VBA m´apˇr´ıstup k Windows API a jelikoˇzje souˇc´ast´ı.NET Frameworku, lze jej jednoduˇsezakomponovat do jin´ych .NET aplikac´ı. Castoˇ je souˇc´ast´ısady aplikac´ıMicrosoft Office ve kter´ych umoˇzˇnuje tvorbu skript˚uk automatizaci pr´ace, ale lze jej naj´ıt tak´e napˇr´ıklad v programech spoleˇcnosti Autodesk. VBA je propriet´arn´ısoftware spoleˇcnosti Microsoft a nen´ıtedy open-source.

VBA k´od se kompiluje do mezijazyka (Microsoft P-Code), kter´yje pak spuˇstˇen virtu´aln´ım strojem spuˇstˇen´ym hostuj´ıc´ıaplikac´ı.

D´ıky pˇr´ıstupu k Windows API lze v r´amci VBA skript˚uvytv´aˇret gra- fick´euˇzivatelsk´erozhran´ı, ale tak tomu nen´ıv kontextu webov´eho prohl´ı- ˇzeˇce.Existuj´ıale komerˇcn´ıˇreˇsen´ı, kter´epomoc´ıprotokolu vzd´alen´eplochy (Remote Desktop Protocol, RDP) a technologie HTML5 dok´aˇz´ıspustit libo- volnou aplikace uvnitˇrprohl´ıˇzeˇce.

4.4.1 Zhodnocen´ı

Aˇckoli je VBA popul´arn´ım skriptovac´ım jazykem obzvl´aˇst’ pro kancel´aˇrsk´y software, kter´ymEasyArchiv je, se spouˇstˇen´ım na webov´em klientu si ele- gantnˇeneporad´ı. Reˇsen´ı,ˇ kter´aby to umoˇznila, jsou nejen komerˇcn´ı, ale tak´e nepomˇernˇekomplexn´ıa rozs´ahl´ana ´ulohu, kterou by splˇnovaly v r´amci t´eto pr´ace.

30 Skriptov´an´ı Dalˇs´ıskriptovac´ıjazyky

4.5 Dalˇs´ıskriptovac´ıjazyky

Mezi dalˇs´ırozˇs´ıˇrenˇejˇs´ıskriptovac´ıjazyky patˇr´ınapˇr´ıklad PHP, Ruby, Lua, JCL, Tcl/Tk a Perl. Aˇckoli maj´ıtyto jazyky sv´evlastn´ıkladn´ea z´aporn´e str´anky, jedno maj´ıspoleˇcn´e. Bylo by obt´ıˇzn´enebo nemoˇzn´espustit je na kli- entsk´estranˇewebov´eho klienta. Webov´eprohl´ıˇzeˇcejsou navrhovan´etak, aby zajistily co nejvˇetˇs´ıbezpeˇcnost a zabraˇnuj´ıtedy webov´ym str´ank´am cokoli spouˇstˇetna hostuj´ıc´ım zaˇr´ızen´ı. Z toho vypl´yv´a, ˇzejedin´yjazyk, kter´ybude moˇzn´epouˇzit pro klientsk´eskriptov´an´ıv r´amci t´eto pr´ace je takov´y, jehoˇz engine je souˇc´ast´ıwebov´eho prohl´ıˇzeˇce.

Jedn´ım ze skriptovac´ıch jazyk˚uspustiteln´ych ve webov´emprohl´ıˇzeˇcije ActionScript, kter´yvych´az´ıze standardizovan´everze jazyka JavaScript, na- zvan´e ECMAScript, a byl po dlouhou dobu pouˇz´ıv´an spoleˇcnˇes technologi´ı Adobe Flash. Pr´avˇejeho z´avislost na technologii Flash je nev´yhodou, nebot’ ta je od vyd´an´ıHTML5 na ´ustupu. Na rozd´ıl od JavaScriptu nav´ıc nedo- k´aˇzepˇristupovat k ˇc´astem webov´estr´anky, kter´enejsou souˇc´ast´ıtechnologie Flash. Takˇzenejen, ˇzeje ActionScript z velk´eˇc´asti podobn´yJavaScriptu, m´a oproti nˇemu tak´ez´asadn´ınev´yhody.

Dalˇs´ı technologi´ı pro skriptov´an´ı ve webov´ych prohl´ıˇzeˇc´ıch je ActiveX od spoleˇcnosti Microsoft. Disponuje alespoˇnˇc´asteˇcnou kompatibilitou s fra- meworkem .NET, coˇzje dobrou vlastnost´ıpro integraci s tenk´ym a siln´ym klientem. Bohuˇzel je ActiveX v souˇcasnosti defaultnˇepodporov´ana pouze v prohl´ıˇzeˇciInternet Explorer 11 od spoleˇcnost Miscrosoft (ActiveX nen´ıpˇr´ı- tomn´yani v jejich posledn´ım prohl´ıˇzeˇci Microsoft Edge).

31 5 Navrˇzen´eˇreˇsen´ı

Prozkoum´an´ım r˚uzn´ych moˇznost´ıimplementace klientsk´eho skriptov´an´ıv ka- pitole 4 se uk´azalo, ˇzezˇrejmˇenejlepˇs´ım skriptovac´ım jazykem pro ´uˇcely t´eto pr´ace je JavaScript. Jedn´ase o ˇsiroce rozˇs´ıˇren´yjazyk, kter´ym˚uˇzepomoc´ı CLI interagovat s objekty a metodami aplikace, ze kter´eje spouˇstˇen. Jeho nejvˇetˇs´ıv´yhodou je vˇsakspustitelnost v r´amci webov´eho klienta.

JavaScript s´am o sobˇeneposkytuje grafick´euˇzivatelsk´erozhran´ı(s v´yjim- kou metody alert()), takˇzespolu s obstar´av´an´ıspouˇstˇen´ıJavaScript skript˚u je potˇreba zajistit tvorbu uˇzivatelsk´eho dialogu. K tomuto ´uˇcelu dobˇre po- slouˇz´ıHTML. Detaily k tomuto ˇreˇsen´ıjsou bl´ıˇze popsan´ev kapitol´ach 5.1 a 5.4.

Kv˚uli velk´ym rozd´ıl˚um mezi technologiemi klient˚uje zapotˇreb´ı vytvo- ˇrit dvˇer˚uzn´aˇreˇsen´ı. Siln´ya tenk´yklienti mohou spouˇstˇetskripty za po- moci knihovny, kter´abude obstar´avat komunikaci mezi klientem a skriptem podobn´ym zp˚usobem, kter´ym je v souˇcasnosti implementov´ano skriptov´an´ı na stranˇeserveru. Webov´yklient tuto knihovnu vyuˇz´ıvat nebude, protoˇzeji nebude moˇzn´ezpˇr´ıstupnit na klientsk´estranˇe.M´ısto knihovny bude webov´y klient ke spuˇstˇen´ıskript˚uvyuˇz´ıvat funkcionalitu pˇr´ıtomnou ve webov´em pro- hl´ıˇzeˇcia komunikace mezi skriptem a klientem bude obstar´av´ana pomoc´ı JavaScriptu.

Syst´em EasyArchiv m´amnoho r˚uzn´ych trigger˚uslouˇz´ıc´ıch ke spouˇstˇen´ı skript˚u. Tato pr´ace se prim´arnˇezamˇeˇruje na uˇzivatelskou interakci, takˇze prioritnˇebudou implementov´any dva konkr´etn´ı:

• onInit – trigger spouˇst´ıskript pˇri kaˇzd´emotevˇren´ıformul´aˇre metadat dokumentu. M˚uˇzeslouˇzit napˇr´ıklad k pˇredvyplnˇen´ı´udaj˚u.

• onClick – trigger spouˇst´ıskript pˇri kliknut´ına tlaˇc´ıtko. Takov´yskript m˚uˇzeslouˇzit napˇr´ıklad k validaci vloˇzen´ych ´udaj˚u, aktualizaci dat, nebo zobrazen´ın´apovˇedy.

V syst´emu existuje v´ıce ud´alost´ı, se kter´ymi lze skriptov´an´ıspojit, ale tyto dvˇepatˇr´ımezi z´akladn´ı. Reˇsen´ım˚uˇzeb´ytˇ v budoucnosti rozˇs´ıˇren´eo zb´yvaj´ıc´ı triggery.

32 Navrˇzen´eˇreˇsen´ı EAClientScripting

5.1 EAClientScripting

EAClientScripting je n´azev knihovny, kter´abude obstar´avat spouˇstˇen´ıskript˚u pro siln´eho a tenk´eho klienta. Knihovna bude vytvoˇrena v jazyce C# a bude tak m´ıt pˇr´ıstup ke knihovnˇe System.Windows.Forms.WebBrowser. WebBrow- ser komponenta poskytuje prostˇred´ı, kter´edok´aˇzeinterpretovat validn´ıHTML k´od a zobrazit grafick´erozhran´ı stejnˇejako by to udˇelal webov´yprohl´ı- ˇzeˇc.Obsahuje tak´eJavaScript engine umoˇzˇnuj´ıc´ıspouˇstˇen´ıskript˚u. Vyuˇzi- t´ım knihovny System.Windows.Forms.WebBrowser nebude zapotˇreb´ıpˇrid´avat knihovny tˇret´ıch stran k projekt˚um EasyArchiv. A jelikoˇzse jedn´ao kni- hovnu spoleˇcnosti Microsoft, kter´avyv´ıj´ı.NET Framework, lze se spolehnout na pokraˇcov´an´ıjej´ı´udrˇzby a aktualizace.

Knihovna pro spouˇstˇen´ıuˇzivatelsk´ych skript˚ubude do jist´em´ıry podobn´a knihovnˇe EAScripting, kter´av j´adˇre obstar´av´apr´aci se skripty. Bude se skl´a- dat z n´asleduj´ıc´ıch ˇc´ast´ı:

• Spouˇstˇen´ı skript˚u– tato ˇc´ast knihovny bude obstar´avat zpracov´an´ı skriptu a spuˇstˇen´ı skriptu. Obstar´apˇred´av´an´ı argument˚u, vytv´aˇren´ı dialogu, ve kter´em bude um´ıstˇena komponenta WebBrowser, a obnov´ı bˇehklienta pot´e,co skript dokonˇc´ısvou ˇcinnost. • Argumentu skript˚u– skriptu se budou pˇred´avat hodnoty formul´aˇre ze kter´eho bude skript spuˇstˇen. Tˇr´ıdy reprezentuj´ıc´ıargumenty budou vytvoˇreny, aby se ovl´adaly stejnˇejako argumenty skript˚uspouˇstˇen´ych v j´adˇre. Velk´aˇc´ast promˇenn´ych a metod v tˇechto tˇr´ıd´ach nebude zpo- ˇc´atku vyuˇz´ıvan´a, ale z uˇzivatelsk´eho hlediska bude mezi pouˇz´ıv´an´ım dvou r˚uzn´ych zp˚usob˚uskriptov´an´ımenˇs´ırozd´ıl.

Tato knihovna bude slouˇzit pouze pro spouˇstˇen´ıklientsk´ych skript˚uv sil- n´ema tenk´em klientovi, jak je vidˇetna diagramu 5.1. Webov´yklient bude spouˇstˇetskripty ve webov´emprohl´ıˇzeˇci.

Promˇenn´epˇred´avan´eskriptu jsou hodnoty formul´aˇre, ze kter´eho je skript spuˇstˇen. V okamˇzik, kdy uˇzivatel vytvoˇr´ıskript (v programu EasyBuilder), nebude jeˇstˇezn´amo, z jak´eho formul´aˇre bude skript spouˇstˇen, bude moˇzn´e spouˇstˇetho i z v´ıce r˚uzn´ych formul´aˇr˚u, a pˇr´ıstup k promˇenn´ym bude tedy ˇcistˇena uˇzivateli. Bude to tedy uˇzivatel, kter´ysi bude muset zajistit, ˇzepˇri- stupuje pouze k existuj´ıc´ım promˇenn´ym formul´aˇre. Vytv´aˇren´ınov´ych pro- mˇenn´ych v kontextu argument˚uje moˇzn´e,ale klientsk´aaplikace nebude vˇe- dˇet, jak s nimi pracovat a bude je tedy ignorovat.

33 Navrˇzen´eˇreˇsen´ı EAClientScripting

Jelikoˇzse pro grafick´erozhran´ıvytv´aˇr´ıvlastn´ıdialog, ve kter´emje vloˇzena komponenta WebBrowser, jsou zapotˇreb´ıdva typy skript˚u:

• Skript s dialogem – do komponenty WebBrowser se nahraje skript (HTML i JavaScript), zobraz´ıse dialog a v nˇemse vykresl´ıgrafick´e rozhran´ıdefinovan´epomoc´ıHTML.

• Skript bez dialogu – ze skriptu se vyextrahuje jm´eno metody, kter´a se m´aspustit, skript se vloˇz´ıdo WebBrowser komponenty a metoda se manu´alnˇespust´ıpomoc´ıfunkce InvokeScript().

Databáze Datový server

EasyBuilder Jádro

Tenký server Silný klient Webový klient

Tenký klient EAScripting

EAClientScripting

Obr´azek 5.1: Navrhovan´a´uprava struktury syst´emu EasyArchiv

34 Navrˇzen´eˇreˇsen´ı Siln´yklient + j´adro

5.2 Siln´yklient + j´adro

Zp˚usob integrace knihovny EAClientScripting do j´adra klienta je prakticky identick´azp˚usobu, kter´ym je integrov´ana knihovna EAScripting. V j´adˇresys- t´emu jsou metody, kter´espouˇst´ıstar´eskripty. Pro ´uˇcely klientsk´eho skrip- tov´an´ıje staˇc´ıdo jist´em´ıry zreplikovat. Jednalo by se o n´asleduj´ıc´ımetody j´adra:

• LoadScript – metoda z datab´aze naˇcte skript a vloˇz´ıho do pˇr´ısluˇsn´e struktury.

• RunScript – vytvoˇr´ıobjekty pro pˇred´av´an´ıargument˚uskriptu, napln´ı je daty a spust´ıskript. Pot´e,co skript dokonˇc´ısv˚uj ´ukol, z´ısk´azpˇet argumenty a aktualizuje podle nich dialog.

EAClientScripting se nemus´ınal´ezat v j´adˇre syst´emu, ale d´ıky pˇr´ıtomnosti knihovny EAScripting je pˇrid´an´ıknihovny pˇr´ımo do j´adra z´asadnˇerychlejˇs´ı a neˇskodn´e, nebot’ novˇepˇridan´efunkce nelze volat z jin´ych klientsk´ych apli- kac´ı.

5.3 Tenk´yklient

Tenk´yklient z´ısk´av´avˇsechny informace o formul´aˇri, kter´ychce zobrazit ve formˇeXML dokumentu (pops´an v kapitole 3.9). V tomto dokumentu jsou popsan´evˇsechny komponenty formul´aˇre, jejich vlastnosti, hodnoty a zda maj´ı spouˇstˇetjak´ekoli skripty. V tomto dokumentu tedy tenk´yklient od serveru obdrˇz´ık´od klientsk´eho skriptu.

Metoda j´adra vytv´aˇrej´ıc´ıXML dokument formul´aˇre bude muset b´yt upra- vena tak, aby v XML dokumentu vznikaly dva nov´euzly:

• onInitScript – element v uzlu GBForm (viz kapitola 3.9). Obsahuje n´azev skriptu a k´od skriptu. Vznikne pouze pokud formul´aˇrobsahuje klientsk´yskript, kter´yse m´aspustit pˇri inicializaci.

• onClickClient – element v uzlu Action, kter´yse s´amnach´az´ıv GBEle- ment. Obsahuje n´azev skriptu a k´od skriptu. Vznikne pouze pokud je akce stisknut´ıtlaˇc´ıtka spojena se spuˇstˇen´ım klientsk´eho skriptu.

35 Navrˇzen´eˇreˇsen´ı Webov´yklient

Po inicializaci formul´aˇre, ale pˇred t´ım, neˇzse zobraz´ı, se klient ujist´ı, zda je s n´ım sv´az´anskript, kter´yse m´aspustit po jeho inicializaci. Pokud tomu tak je, poˇsle se skript knihovnˇe EAClientScripting, kter´aho spust´ı.

Akci stisknut´ıtlaˇc´ıtka ve formul´aˇri jiˇzposlouch´ametoda, kter´azajiˇst’uje, ˇzeserver spust´ıskripty v j´adˇre. Nen´ıprobl´emrozˇs´ıˇrit tuto metodu o schop- nost rozpozn´avat, zda se m´aspustit klientsk´yskript nebo skript j´adra. Pokud je s tlaˇc´ıtkem sv´az´anklientsk´yskript, pˇred´ase knihovnˇe EAClientScripting a ta ho pak vykon´a.

5.4 Webov´yklient

Webov´yklient nem˚uˇzena klientsk´estranˇevyuˇz´ıt knihovnu EAClientScripting. Jej´ıfunkcionalita je nahrazena odpov´ıdaj´ıc´ımi JavaScript metodami. Mezi tyto funkce patˇr´ıprim´arnˇegettery a settery pracuj´ıc´ıs daty otevˇren´eho for- mul´aˇre. Kv˚uli neobvykl´emu zp˚usobu pr´ace s checkBoxy a comboBoxy bude tak´ezapotˇreb´ıvytvoˇrit funkce pracuj´ıc´ıs nimi.

Vˇsechny klientsk´eskripty mus´ı b´yt v HTML dokumentu pˇr´ıtomn´ejiˇz v moment, kdy doraz´ıke klientovi. Skript, kter´yse m´aspustit pˇri inicializaci formul´aˇre, je vloˇzendo

9.3 Rozsah ´uprav

V r´amci t´eto pr´ace byla vytvoˇrena knihovna EAClientScripting a byly prove- deny ´upravy v n´ıˇzevyjmenovan´ych tˇr´ıd´ach a projektech.

Zmˇeny v r´amci siln´eho klienta a j´adra jsou n´asleduj´ıc´ı: • pˇrid´ana tˇr´ıda EAClientScriptingWrapper

• a upraveny tˇr´ıdy EAScriptingEngineImpl,

• EAScriptingEngine,

61 Pˇr´ılohy Rozsah ´uprav

• GenericPropWebPage,

• GenericPropPageClient,

• baseConfig,

• ControlItems,

• ControlItemsClient,

• ControlItemWeb,

• ControlItemWebButton

• a ControlsInterface.

Zmˇeny v r´amci tenk´eho klienta jsou n´asleduj´ıc´ı: • upraveny tˇr´ıdy frmEADocument

• a EACommons.

Zmˇeny v r´amci webov´eho klienta jsou n´asleduj´ıc´ı: • upravena tˇr´ıda EADocGenPageTag

• a upraven soubor genpage.xsl.

Zmˇeny v r´amci programu EasyBuilder jsou n´asleduj´ıc´ı: • pˇrid´any tˇr´ıdy AddClientScriptForm,

• ClientScript

• a SqlEaClientScripting

• a upraveny tˇr´ıdy GPBindings,

• GPBindingsEditor,

• GPBindingsSetForm,

• Scripting

• a SqlGPBind.

62 Pˇr´ılohy Uˇzivatelsk´adokumentace

Obr´azek 9.2: Diagram tˇr´ıd knihovny EAClientScripting

9.4 Uˇzivatelsk´adokumentace

Uˇzivatelsk´adokumentace se zaob´ır´apouze vytv´aˇren´ım klientsk´ych skript˚u, nikoli jejich spouˇstˇen´ım, nebo obecnˇepouˇz´ıv´an´ım syst´emu EasyArchiv.

Po spuˇstˇen´ınakonfigurovan´eho programu EasyBuilder a nahr´an´ıdat z da- tab´aze (kl´avesa F3) uˇzivatel zvol´ız´aloˇzku Scripting“ a pod-z´aloˇzku Client ” ” scripting“. Zde jsou v seznamu vyps´any vˇsechny klientsk´eskripty nez´avisle na tom zda jsou pouˇzit´e,nebo ne.

Obr´azek 9.3: Seznam klientsk´ych skript˚u.

63 Pˇr´ılohy Uˇzivatelsk´adokumentace

Pot´e,co uˇzivatel klikne prav´ym tlaˇc´ıtkem myˇsi do seznamu (na skript, nebo do pr´azdn´eho prostoru), objev´ıse nab´ıdka na obr´azku 9.4. Tato na- b´ıdka umoˇzˇnuje uˇzivateli skript upravit ( Edit“) nebo vytvoˇrit nov´y( Add“). ” ” Moˇznost Properties“ zobraz´ıdialog se vˇsemi hodnotami skriptu a umoˇzn´ıje ” upravit.

Obr´azek 9.4: Kontextov´emenu seznamu klientsk´ych skript˚u.

Kdyˇzuˇzivatel zvol´ıvytvoˇren´ınov´eho skriptu, zobraz´ıse dialog na obr´azku 9.4. Zde doch´az´ık pojmenov´an´ıskriptu ( Name“), vytvoˇren´ıpopisku skriptu ” ( Description“) a volba ˇsablony ( Template“) pˇredvypln´ıobsah skriptu, aby ” ” uˇzivatel nemusel s´amvytv´aˇret nˇekter´ez´akladn´ı, nezbytn´emetody.

Na obr´azku 9.4 je vidˇeteditor vytvoˇre- n´eho klientsk´eho skriptu. Jedn´ase o jedno- duch´ytextov´yeditor a od uˇzivatele se oˇce- k´av´a, ˇzeskript vytvoˇr´ıv libovoln´em v´yvojo- v´em prostˇred´ıa pot´eho pouze zkop´ıruje do editoru EasyBuilderu.

Po vytvoˇren´ıklientsk´eho skriptu se uˇzi- vatel pˇrepne do z´aloˇzky Document“, zvol´ı ” ze seznamu formul´aˇr, ke kter´emu chce skript pˇripojit a dvojklikem ho otevˇre. Zobraz´ı se editaˇcn´ıprostˇred´ıformul´aˇre. Uˇzivatel pra- Obr´azek 9.5: Dialog vytv´aˇren´ı v´ym tlaˇc´ıtkem klikne na prvek formul´aˇre, klientsk´eho skriptu. nebo formul´aˇrsamotn´y, a zvol´ı Properties“. ” V menu, kter´ese objev´ı je poloˇzka Bin- ” dings“, kter´apo otevˇren´ı zobrazuje vˇsechny skripty spojen´ese zvolen´ym prvkem. Obsahuje tak´etlaˇc´ıtka Add“ pro pˇrid´an´ıskriptu k prvku a Re- ” ” move“ pro jeho odstranˇen´ı. Uˇzivatel stiskne tlaˇc´ıtko Add“ a otevˇre se dialog ” pro vytvoˇren´ıvztahu mezi prvkem a skriptem ( GpBindingsEditor“). Hod- ” nota Message“ znaˇc´ıtyp akce, na kterou se jako reakce m´aspustit skript. ” Hodnota Parameter“ je konkr´etn´ıskript, kter´yse m´aspustit. ” 64 Pˇr´ılohy Uˇzivatelsk´adokumentace

Obr´azek 9.6: Editor k´odu klientsk´eho skriptu.

Pot´e,co uˇzivatel tyto hodnoty zvol´ı, m˚uˇzesvou volbu potvrdit tlaˇc´ıtkem OK“. Dialog se seznamem skript˚uzavˇre stejn´ym zp˚usobem. Dialogy pouˇzit´e ” v tomto odstavci lze vidˇetna obr´azku 9.4.

Obr´azek 9.7: Dialogy Jednotliv´ych krok˚upropojov´an´ıskriptu a prvku for- mul´aˇre.

V tomto st´adiu vytv´aˇren´ıa propojen´ıskriptu s prvkem formul´aˇre jiˇzstaˇc´ı jen uloˇzit zmˇeny (napˇr. stiskem kl´avesy F2).

65