MASARYKOVA UNIVERZITA F}w¡¢£¤¥¦§¨  AKULTA INFORMATIKY !"#$%&'()+,-./012345

Zpracov´an´ıdokument ˚u v distribuovan´emprostˇred´ı

DIPLOMOVAPR´ ACE´

Bc. Jan Mudr´ak

Brno, 2010 Prohl´aˇsen´ı

Prohlasuji,ˇ zeˇ tato diplomova´ prace´ je mym´ puvodn˚ ´ım autorskym´ d´ılem, ktere´ jsem vypra- coval samostatne.ˇ Vsechnyˇ zdroje, prameny a literaturu, ktere´ jsem priˇ vypracovan´ ´ı pouzˇ´ıval nebo z nich cerpal,ˇ v praci´ rˇadn´ eˇ cituji s uveden´ım upln´ eho´ odkazu na prˇ´ıslusnˇ y´ zdroj.

Vedouc´ıpr´ace: doc. RNDr. Toma´sˇ Pitner, Ph.D.

ii Shrnut´ı

Tato prace´ se zameˇrujeˇ na spravu´ dokumentu˚ v distribuovanem´ prostredˇ ´ı podnikovych´ system´ u.˚ Cˇ aste´ cnˇ eˇ navazuje na autorovu predchozˇ ´ı praci´ [3] a doplnujeˇ take´ poznatky [2]. Prostor je venovˇ an´ predevˇ sˇ´ım architekturam´ podnikovych´ system´ u˚ pro spravu´ informac´ı, ktere´ prestˇ avaj´ ´ı vyhovovat naro´ cnˇ ym´ pozadavkˇ um˚ na integraci. V ramci´ prace´ je navrzenoˇ zlepsenˇ ´ı jejich struktury za pomoci konceptu ESB. Zivotaschopnostˇ tohoto reˇ senˇ ´ı je oveˇrenaˇ na implementaci systemu´ ASCMS. Cˇ ast´ teto´ prace´ se take´ zabyv´ a´ moznostmiˇ vyteˇzovˇ an´ ´ı dat z dokumentu˚ a jejich nasledn´ ym´ zpracovan´ ´ım. Venujeˇ se transformaci format´ u˚ zalozenˇ ych´ na aplikaci OpenOffice.org a take´ XML databaz´ ´ım. Vysledkem´ je dvojice knihoven pro praci´ s temitoˇ nastroji.´

iii Podˇekov´an´ı

Dekujiˇ doc. RNDr. Toma´siˇ Pitnerovi, Ph.D. za pripomˇ ´ınky k teto´ praci´ a cenne´ rady. Dale´ dekujiˇ kazdˇ emu,´ kdo se pod´ılel na korektureˇ prace.´

iv Kl´ıˇcov´aslova dokument, sprava,´ transformace, OpenOffice.org, databaze,´ proces, BPEL, ECM, ESB, JBI, SOA, FileNet, Documentum

v Obsah

Uvod´ ...... 3 1 Enterprise Content Management (ECM) ...... 4 1.1 Vlastnosti ECM ...... 4 1.1.1 Vyteˇzovˇ an´ ´ı obsahu (Capture) ...... 5 1.1.2 Ulozenˇ ´ı obsahu (Store) ...... 5 1.1.3 Uchovan´ ´ı obsahu (Preserve) ...... 5 1.1.4 Distribuce (Delivery, Output Management) ...... 6 1.1.5 Sprava´ (Manage) ...... 6 1.2 ECMS a integrace ...... 7 1.3 Architektury soucasnˇ ych´ ECMS ...... 8 1.4 Pozadavkyˇ na soucasnˇ e´ ECMS ...... 10 2 Technologie pro vybudov´an´ıinfrastruktury ...... 13 2.1 Servisneˇ orientovana´ architektura ...... 13 2.2 Java Business Integration ...... 14 2.2.1 Komponenty systemu´ ...... 16 2.2.2 Rozhran´ı sluzebˇ ...... 17 2.2.3 Smerovˇ an´ ´ı zprav´ ...... 17 2.2.4 Komunikacnˇ ´ı sberniceˇ a podoba zprav´ ...... 18 2.3 Apache ServiceMix ...... 19 2.3.1 Nevyhody´ ASM ...... 19 2.3.2 Orchestrace sluzebˇ v ASM ...... 20 3 XML datab´aze ...... 24 3.1 Zpusoby˚ ulozenˇ ´ı XML ...... 25 3.2 Rozhran´ı ...... 25 3.3 Dotazovac´ı jazyky ...... 26 3.4 Shrnut´ı vlastnost´ı ...... 27 4 ASCMS a n´astrojepro pr´acis dokumenty ...... 28 4.1 OpenOffice a knihovna OO2ASCMS ...... 28 4.1.1 Transformace format´ u˚ kancela´rskˇ ych´ dokumentu˚ ...... 28 4.1.2 ASCMS2OO ...... 28 4.2 Knihovna dbXMLTL (Database XML Tag Library) ...... 30 4.3 ASCMS ...... 32 4.3.1 Analyza´ pozadavkˇ u˚ a navrh´ systemu´ ...... 32 4.3.2 Implementace ...... 37 5 Z´avˇer ...... 42 Literatura ...... 42 A Instalace ASCMS ...... 45 A.1 Pozadavkyˇ na extern´ı prostredˇ ´ı ...... 45 A.1.1 OpenOffice.org 3.0 ...... 45

1 A.1.2 Tomcat ...... 46 A.1.3 Apache ODE 2.0Beta ...... 46 A.1.4 Knihovny ...... 47 A.1.5 Kompilace projektu ...... 47 B dbXMLTL ...... 48 C Obsah pˇrilozen´ehoCDˇ ...... 53 D Uzivatelsk´apˇr´ıruˇckaˇ ...... 54

2 Uvod´

Efektivn´ı sprava´ informac´ı je obecnym´ tematem,´ ktere´ se objevuje v mnoha oblastech IT. At’ uzˇ se jedna´ o e-learningove´ systemy´ ciˇ systemy´ pro spravu´ informac´ı, vsudeˇ je nutne´ zajistit, aby usil´ ´ı vynalozenˇ e´ priˇ tvorbeˇ obsahu nepriˇ sloˇ vnivec,ˇ a informace tak splnila svuj˚ u´ cel.ˇ Toto tema´ je moznˇ e´ povazovatˇ za aktualn´ ´ı vzhledem k tomu, zeˇ v roce 2009 mohli obcanˇ e´ Ceskˇ e´ republiky postrehnoutˇ celou raduˇ zmenˇ ve zpusobu˚ komunikace s u´ rady.ˇ Objevily se takove´ pojmy jako Czech POINT (Ceskˇ y´ Podac´ı Oveˇrovacˇ ´ı Informacnˇ ´ı Narodn´ ´ı Terminal)´ nebo datova´ schranka.´ D´ıky zaveden´ı autorizovane´ konverze dosloˇ ke zrovnopravn´ enˇ ´ı elek- tronicke´ a pap´ırove´ podoby dokumentu,˚ cˇ´ımzˇ vznikla nova´ vlna pozadavkˇ u˚ na podnikove´ systemy.´ S postupnym´ rustem˚ poctuˇ technologi´ı, ktere´ zasahuj´ı do podnikovych´ procesu,˚ prestˇ avaj´ ´ı architektury soucasnˇ ych´ system´ u˚ vyhovovat naro´ cnˇ ym´ pozadavkˇ um˚ na integraci. To se tyk´ a´ predevˇ sˇ´ım system´ u˚ pro spravu´ podnikovych´ informac´ı, u nichzˇ je integrace jednou ze zakladn´ ´ıch funkc´ı. Prav´ eˇ podnikove´ systemy´ pro spravu´ informac´ı predstavujˇ ´ı hlavn´ı tema´ teto´ prace.´ Je popsana´ jejich funkce i struktura. To vseˇ za u´ celemˇ splnenˇ ´ı hlavn´ıho c´ıle – nalezen´ı archi- tektury, ktera´ by obstala´ v novych´ podm´ınkach.´ Tato architektura je nasledn´ eˇ uplatnenaˇ priˇ navrhu´ a implementaci jednoducheho´ systemu´ pro spravu´ informac´ı. Spolu s t´ımto tematem´ je nastoleno i tema´ obecneho´ zpracovan´ ´ı dokumentu.˚ Predevˇ sˇ´ım jsou zm´ınenyˇ XML databaze´ jako prirozenˇ a´ ulo´ ziˇ stˇ eˇ dokumentu˚ a aplikace OpenOffice.org jako open source nastroj´ pro transformaci proprietarn´ ´ıch format´ u.˚ Vysledkem´ teto´ cˇasti´ prace´ je dvojice knihoven ASCMS2OO a dbXMTL.

Rozdˇelen´ıkapitol

Prvn´ı kapitola se zabyv´ a´ samotnym´ pojmem ECM i systemy,´ ktere´ se na tuto oblast IT zameˇrujˇ ´ı. Je zde popsana´ predevˇ sˇ´ım jejich architektura a moznostiˇ pro jej´ı zlepsenˇ ´ı. Druh´akapitola se venujeˇ tematu´ servisneˇ orientovanych´ architektur, technologii JBI a zpusob˚ um˚ integrace podnikovych´ aplikac´ı. Tˇret´ıkapitola popisuje problematiku nativn´ıch XML databaz´ ´ı jako prirozenˇ ych´ ulo´ ziˇ stˇ ’ pro dokumenty. Ctvrt´akapitolaˇ predstavujeˇ nastroje´ vyvinute´ pro praci´ s dokumenty. Dale´ je zde uveden navrh´ a zpusob˚ implementace systemu´ ASCMS zalozenˇ eho´ na uvedenych´ nastroj´ ´ıch. Z´avˇereˇcn´ap´at´akapitola shrnuje uvedene´ poznatky a zamy´slˇ ´ı se nad dalsˇ´ım vyuzitˇ ´ım systemu´ ASCMS. Pˇr´ılohaA popisuje instalaci systemu´ ASCMS. Pˇr´ılohaB uvad´ ´ı soupis tagu˚ pouzitelnˇ ych´ v ramci´ knihovny dbXMLTL pro komunikaci s nativn´ımi XML databazemi.´ V pˇr´ılozeC lze naleznout popis obsahu priloˇ zenˇ eho´ CD. Pˇr´ılohaD obsahuje uzivatelskouˇ prˇ´ıruckuˇ k systemu´ ASCMS.

3 Kapitola 1 Enterprise Content Management (ECM)

Jak uzˇ nazev´ kapitoly napov´ıda,´ je venovˇ ana´ sprav´ eˇ informac´ı v podnikovem´ prostredˇ ´ı. Je- likozˇ ECM je castoˇ vyuzˇ´ıvany´ pojem, ktery´ mu˚ zeˇ m´ıt v ruzn˚ ych´ kontextech ruznou˚ seman-´ tiku, je vhodne´ jej nejdrˇ´ıve definovat. Nejcastˇ ejiˇ je citovana´ definice komunity AIIM (Asso- ciation for Information and Image Management) [17]:

ECM zahrnuje strategie, metody a n´astroje pouˇzit´ek z´ısk´an´ı,uloˇzen´ı,uchov´an´ı,spr´avˇe obsahu a dokument˚uspjat´ychs procesy spoleˇcnosti.ECM strategie a n´astroje umoˇzˇnuj´ı spr´avunestrukturovan´ehoobsahu, at’ uˇzje uloˇzenkdekoliv.

Nestrukturovanym´ obsahem se v teto´ definici m´ın´ı dokumentoveˇ orientovana´ data, ktera´ nen´ı moznˇ e´ ulozitˇ v relacnˇ ´ı databazi.´ Jedna´ se o nepresnˇ y,´ avsakˇ castoˇ vyuzˇ´ıvany´ term´ın. Rozlisovatˇ strukturovana´ data od nestrukturovanych“´ je dule˚ zitˇ e,´ protozeˇ narozd´ıl od struk- ” turovanych´ dat, roste nestrukturovany´ obsah exponencialn´ ´ı rychlost´ı (podle [13]).

1.1 Vlastnosti ECM

Uvedena´ definice v sobeˇ zahrnuje petˇ oblast´ı, ktere´ je moznˇ e´ u ECMS hodnotit: vyteˇzovˇ an´ ´ı, ulozenˇ ´ı, uchovan´ ´ı, spravu´ a distribuci obsahu. Model zalozenˇ y´ na techtoˇ komponentach“´ 1 ” je moznˇ e´ videtˇ na obrazku´ 1.1.

Store

Deliver Manage Capture

Preserve

Obrazek´ 1.1: Funkce ECM

Kromeˇ pojmu ECM se v souvislosti se spravou´ obsahu vyskytuje mnoho dalsˇ´ıch term´ınu:˚

1. Nejedna´ se o komponenty systemu´ v pravem´ slova smyslu, ale sp´ıseˇ o kategorie poskytovanych´ funkc´ı. Realn´ eˇ mu˚ zeˇ byt´ kazdˇ a´ z oblast´ı rozprostrenaˇ do celeho´ systemu.´

4 1. ENTERPRISE CONTENT MANAGEMENT (ECM)

Content Management System (CMS) – softwarovy´ nastroj´ pro tvorbu, editaci a spravu´ ob- sahu. Obecneˇ se nemus´ı jednat o podnikovy´ system,´ ackolivˇ tak v prostredˇ ´ı malych´ a strednˇ eˇ velkych´ organizac´ı mu˚ zeˇ vystupovat.

Enterprise Content Management System (ECMS) – Podnikovy´ system´ pro spravu´ infor- mac´ı je softwarovy´ produkt vyvinuty´ za u´ celemˇ spravy´ informac´ı v prostredˇ ´ı vetˇ sˇ´ı spolecnostiˇ a dosazenˇ ´ı c´ıle ECM.

Document Management System (DMS) – CMS specializuj´ıc´ı se na spravu´ dokumentu˚ jako jednotky informace, ktera´ mu˚ zeˇ m´ıt sva´ metadata a zivotnˇ ´ı cyklus.

Web Content Management System (WCMS) – CMS pouzˇ´ıvaj´ıc´ı jako zakladn´ ´ı platformu web.

1.1.1 Vytˇezov´an´ıobsahuˇ (Capture)

Vyteˇzovˇ an´ ´ım obsahu se obvykle rozum´ı prevodˇ klasickych´ dokumentu˚ v pap´ırove´ podobeˇ do elektronicke´ formy. Do teto´ cˇasti´ tedy patrˇ´ı ruzn˚ e´ OCR (optical character recognition) nastroje´ a nastroje´ pro zpracovan´ ´ı cˇarov´ ych´ kod´ u.˚ S postupuj´ıc´ım mnozstvˇ ´ım zdroju˚ infor- mac´ı (email, instant messaging, WWW) se do teto´ kategorie zaclenilyˇ i komponenty pro vyteˇzovˇ an´ ´ı informac´ı, ktere´ se uzˇ v elektronicke´ podobeˇ nachazej´ ´ı.

1.1.2 Ulozen´ıobsahuˇ (Store)

Komponenty ECMS pro ulozenˇ ´ı maj´ı za ukol´ ulozitˇ obsah tak, aby s n´ım ostatn´ı cˇasti´ mohly pracovat. Ackolivˇ se v nich dokument uklad´ a´ trvale (tzn. neexistuje pouze v pameti,ˇ ale napr.ˇ jako zaznam´ na magnetickem´ disku), nen´ı zarucenaˇ jeho dlouhodoba´ existence. Nelze tak uchovavat´ napr.ˇ leka´ rskˇ e´ zaznamy´ nebo jine´ informace, ktere´ mus´ı pretrvatˇ nekolikˇ de- setilet´ı. Komponenty pro ulozenˇ ´ı jsou charakterizovany´ tremiˇ cˇastmi:´

1. Zp ˚usobemulozen´ıdatˇ (system´ souboru,˚ databaze´ nebo datovy´ sklad)

2. Pouzitouˇ technologi´ı (magneticka´ paska´ nebo disk, opticky´ disk, Cloud computing)

3. Rozhran´ım (castoˇ oznacovanˇ ym´ jako knihovn´ı sluzby)ˇ – tj. zpusobem,˚ jakym´ je pri-ˇ stupovano´ k ulozenˇ ym´ informac´ım

1.1.3 Uchov´an´ıobsahu (Preserve)

V prˇ´ıpade,ˇ zeˇ je urcitˇ y´ dokument prohla´senˇ za dokoncenˇ y´ a je nutne´ provest´ jeho dlouho- dobou archivaci (at’ uzˇ se jedna´ o pozadavekˇ legislativy nebo veden´ı spolecnosti),ˇ nastu- puje v ECMS komponenta pro uchovan´ ´ı obsahu. Ta ma´ za ukol´ zajistit, aby se dokument v prub˚ ehuˇ nasleduj´ ´ıc´ıch let nemenil,ˇ a ulozenouˇ informaci tak bylo moznˇ e´ zpracovat i po nekolikaˇ desetilet´ıch. K dosazenˇ ´ı tohoto c´ıle se pouzˇ´ıvaj´ı dveˇ odlisnˇ e´ strategie: migrace – s postupnym´ vyvojem´ formatu´ je dokument prevˇ ad´ enˇ do nove´ podoby. emulace – dokument je ponechan´ v puvodn˚ ´ı podobe,ˇ je vsakˇ nutne´ zajistit, aby software pro praci´ s jeho formatem´ bylo moznˇ e´ vyuzˇ´ıt i v novych´ prostredˇ ´ıch.

5 1. ENTERPRISE CONTENT MANAGEMENT (ECM)

Kategorie uchovan´ ´ı obsahu je prirozenˇ eˇ spojena s problematikou zabezpecenˇ ´ı. U elektro- nickeho´ dokumentu nelze rozlisovatˇ mezi kopi´ı a originalem´ a je nutne´ dokazat,´ zeˇ behemˇ archivace nebylo moznˇ e´ dokumenty jakkoli pozmenit.ˇ Nastav´ a´ vsakˇ problem´ podobny´ star-´ nut´ı format´ u˚ dokumentu.˚ Tak, jak se zvysujeˇ vykonnost´ pocˇ´ıtacˇu,˚ klesaj´ı i hardwarove´ naroky´ na prolomen´ı zabezpecenˇ ´ı. Z tohoto duvodu˚ se komponenta pro uchovan´ ´ı obsahu mus´ı sta- rat i o udrzovˇ an´ ´ı adekvatn´ ´ıho zabezpecenˇ ´ı. Jelikozˇ tvorba popsaneho´ digitaln´ ´ı archivu je i bez implementace bezpecnostnˇ ´ıch prvku˚ slozitˇ ym´ problemem,´ vetˇ sinaˇ ECMS tuto kategorii bud’ upln´ eˇ vynechav´ a,´ nebo se omezuje na kratkodobou´ archivaci.

1.1.4 Distribuce (Delivery, Output Management)

Informace ulozenˇ e´ v ECMS je nutne´ patriˇ cnˇ ym´ zpusobem˚ predˇ avat.´ Naprˇ´ıklad odchoz´ı ko- respondence mus´ı byt´ prevedenaˇ do spravn´ eho´ formatu´ a predˇ ana´ frankovac´ımu stroji. Nekterˇ e´ dokumenty zase mus´ı byt´ zaslany´ faxem nebo emailem. Tato kategorie tedy obsahuje schopnosti podnikovych´ system´ u˚ pro spravu´ informac´ı transformovat existuj´ıc´ı dokumenty do pozadovanˇ eho´ formatu´ a predatˇ je do extern´ıho prostredˇ ´ı.

1.1.5 Spr´ava(Manage)

Zat´ımco predeˇ slˇ e´ kategorie tvorˇ´ı podpurnou˚ funkcionalitu ECMS a davaj´ ´ı odpovedˇ ’ na o- tazku´ Co?“, sprava´ tvorˇ´ı jeho jadro´ a odpov´ıda´ na otazky´ Komu?“, Jak?“ a Kdy?“. U- ” ” ” ” mozˇnujeˇ tak organizaci informac´ı do podoby, ve ktere´ jsou vyuzitelnˇ e´ jako znalosti. To je podporovano´ v´ıce funkcemi.

Sprava´ dokumentu˚ (Document Management)

Funkcionalita spravy´ dokumentu˚ se zameˇrujeˇ na dokument jako na objekt uvnitrˇ ECMS. Rˇ ´ıd´ı jeho zivotnˇ ´ı cyklus od vlozenˇ ´ı do systemu´ azˇ po archivaci ciˇ skartaci, umozˇnujeˇ jeho verzovan´ ´ı a zarucuje,ˇ zeˇ kazdˇ a´ provedena´ zmenaˇ je atomicka.´ Rozhran´ı teto´ komponenty se obvykle jev´ı jako virtualn´ ´ı system´ souboru,˚ kde kazdˇ y´ soubor predstavujeˇ dokument ciˇ posloupnost jeho verz´ı a je doplnenˇ metadaty, ktera´ jsou urcenaˇ pro kategorizaci a spravu´ zivotnˇ ´ıho cyklu. Sprava´ dokumentu˚ predstavujeˇ centraln´ ´ı prvek kazdˇ eho´ ECMS. Obvykle se jedna´ o sa- mostatnou komponentu, ktera´ je uzce´ svaz´ ana´ s funkcionalitou ulozenˇ ´ı obsahu. Castoˇ vy- stupuje pod pojmem repozita´rˇ ciˇ knihovn´ı sluzba.ˇ

Spisova´ sluzbaˇ (Records Management)

U´ celˇ spisove´ sluzbyˇ je moznˇ e´ charakterizovat vy´natkemˇ ze zakona´ 343/1992 Sb. [18]:

St´atn´ıorg´any, obce, jin´epr´avnick´eosoby, jakoˇzi fyzick´eosoby pˇriprovozov´an´ıpodnika- telsk´eˇcinnosti(. . . ) jsou povinny zajiˇst’ovat odbornou spr´avup´ısemnost´ıvzeˇsl´ychz je- jich ˇcinnost´ı,pˇr´ıpadnˇez ˇcinnostijejich pˇredch˚udc˚u(vˇcetnˇep´ısemnost´ıdoˇsl´ych),dbaj´ı pˇritom o ˇr´adnouspisovou evidenci, o ´uˇceln´ea bezpeˇcn´euloˇzen´ıp´ısemnost´ıa o jejich ˇr´adn´evyˇrazov´an´ıpˇriskartaˇcn´ımˇr´ızen´ı.

6 1. ENTERPRISE CONTENT MANAGEMENT (ECM)

Tato cˇast´ ECM se tedy zabyv´ a´ zpracovan´ ´ım informac´ı o samotnych´ dokumentech: jaky´ je jejich puvod˚ (kdo je odes´ılatelem), kde se nachaz´ ´ı jejich original´ (pokud se nejedna´ o cistˇ eˇ elektronicky´ dokument), kdo je adresatem´ atp. U´ celemˇ je nejenom splnenˇ ´ı dane´ legislativy nebo z´ıskan´ ´ı pozadovanˇ e´ certifikace, ale predevˇ sˇ´ım zlepsenˇ ´ı komunikace s partnery, organy´ verejnˇ e´ moci i se zakazn´ ´ıky. Spravn´ a´ spisova´ sluzbaˇ mu˚ zeˇ organizaci usetˇ ritˇ mnoho pot´ızˇ´ı. Napr.ˇ v roce 2005 byla spolecnostˇ Morgan Stanley poskytuj´ıc´ı finacnˇ ´ı sluzbyˇ obvinenaˇ z podvodu, ktereho´ se melaˇ dopustit na miliarda´riˇ Ronaldu Perelmanovi, kdyzˇ mu neposkytla potrebnˇ e´ dokumenty tykaj´ ´ıc´ı se akvizice spolecnostiˇ Coleman. V tem´ zˇ roku byla zalovˇ ana´ pro chybejˇ ´ıc´ı emailove´ zpravy´ tykaj´ ´ıc´ı se jineho´ prˇ´ıpadu [6].

Rˇ ´ızen´ı spoluprace´ (Collaboration)

Nastroje´ pro spolupraci´ umozˇnujˇ ´ı sd´ılet znalosti ruzn˚ ych´ specialistu˚ v ramci´ organizace a vytva´retˇ docasnˇ e´ tymy,´ ktere´ nejsou omezovany´ vzdalenost´ ´ı mezi pracovisti.ˇ Zakladn´ ´ı funkce pro podporu spoluprace´ jsou obsazenyˇ v tem´ eˇrˇ kazdˇ em´ uzivatelskˇ em´ rozhran´ı vsechˇ ECMS. Od zacˇatku´ sveho´ vzniku se vsakˇ ECMS snazˇ´ı do sveho´ prostredˇ ´ı integrovat dalsˇ´ı aplikace – napr.ˇ pro porˇad´ an´ ´ı videokonferenc´ı, instant messaging a CMS pro tvorbu blogu˚ a wiki.

Sprava´ weboveho´ obsahu (Web Content Management)

S postupnym´ vyvojem´ WWW zacalyˇ spolecnostiˇ zjistˇ ’ovat, zeˇ web nemus´ı slouzitˇ jenom nahodn´ ym´ nav´ stˇ evnˇ ´ıkum,˚ kterˇ´ı se chtejˇ ´ı dozvedˇ etˇ zakladn´ ´ı udaje,´ ale mu˚ zeˇ take´ slouzitˇ pod- nikovym´ procesum˚ – prodavat´ produkty, poskytovat informace dodavatelum˚ nebo sd´ılet financnˇ ´ı udaje´ s akciona´ri.ˇ Za t´ımto u´ celemˇ zacalyˇ vznikat prvn´ı WCMS, ktere´ melyˇ za ukol´ zjednodusitˇ publikovan´ ´ı informac´ı a predevˇ sˇ´ım odstranit prekˇ a´zkuˇ v tomto procesu – pozadavekˇ na technicke´ znalosti priˇ tvorbeˇ obsahu. Jedny z prvn´ıch WCMS byly zahy´ integrovany´ do ECMS a v soucasnˇ e´ dobeˇ poskytuje tuto funkcionalitu kazdˇ y´ z nich (samozrejmˇ eˇ v ruzn˚ e´ kvalite,ˇ ktera´ je meˇritelnˇ a´ m´ırou inte- grace webu s ostatn´ımi poskytovanymi´ nastroji).´

Business Process Management (BPM)

Jak je patrne´ z popisu spisove´ sluzby,ˇ dokumenty jsou nezbytnou soucˇast´ ´ı procesu˚ orga- nizace. Tyto procesy vsakˇ mohou podlehat´ castˇ e´ zmenˇ e.ˇ Proto vetˇ sinaˇ ECMS poskytuje nastroje´ pro jejich modelovan´ ´ı a spravu.´ Urove´ nˇ techtoˇ nastroj´ u˚ se vsakˇ ruzn˚ ´ı. Vetˇ sinouˇ je moznˇ e´ provad´ etˇ kompozici procesu˚ pouze za pomoci zakladn´ ´ıch sluzebˇ vystavenych´ kom- ponentou pro spravu´ dokumentu˚ a zbyle´ sluzbyˇ je nutne´ dotvorit.ˇ

1.2 ECMS a integrace

V predchozˇ ´ım textu byl popsan´ pojem ECM a u´ celˇ ECMS. Nebyla vsakˇ zm´ınenaˇ jejich archi- tektura. To je dule˚ zitˇ e´ tema´ predevˇ sˇ´ım z duvodu˚ integrace.

7 1. ENTERPRISE CONTENT MANAGEMENT (ECM)

Integrace novych´ n´astroj˚u V uplynulem´ desetilet´ı se ECMS rozv´ıjely predevˇ sˇ´ım po strance´ poskytovane´ funkciona- lity. Byly integrovany´ nastroje´ pro podporu spoluprace,´ spravu´ weboveho´ obsahu a pod- nikovych´ procesu.˚ Vetˇ sinaˇ z nich pritomˇ puvodn˚ eˇ nebyla vyvinuta prˇ´ımo pro ECMS, ale vznikla samostatneˇ a byla zaclenˇ enaˇ azˇ pozdeji,ˇ vetˇ sinouˇ za pomoci akvizice jejich materskˇ e´ spolecnosti.ˇ Takovyto´ zpusob˚ vyvoje´ vsakˇ mu˚ zeˇ priˇ spatnˇ em´ planov´ an´ ´ı vest´ k neprehlednˇ e´ architekture,ˇ kterou nedoka´zˇ´ı obsahnout´ ani jej´ı tvurci.˚ Pokud se system´ dostane do tohoto stavu, jeho dalsˇ´ı vyvoj´ uzˇ byv´ a´ provazen´ radouˇ chyb a postupneˇ se snizujeˇ i tempo integrace s novymi´ nastroji.´

Integrace jinych´ syst´em˚u Jednou z podstatnych´ funkc´ı ECMS je schopnost integrace s ostatn´ımi podnikovymi´ systemy.´ Zˇ adn´ y´ ECMS totizˇ nemu˚ zeˇ organizac´ım poskytovat vsechnyˇ potrebnˇ e´ funkce. Stara´ se pouze o spravu´ dokumentu˚ a nezameˇrujeˇ se na takove´ oblasti jako rˇ´ızen´ı zdroju,˚ vztahu˚ se zakazn´ ´ı- ky anebo dodavateli, ktere´ jsou domenou´ jinych´ system´ u˚ (napr.ˇ SAPu). Architektura ECMS by melaˇ takovou integraci umozˇnovat.ˇ

Integrace jinych´ syst´em˚u Priˇ sloucenˇ ´ı v´ıce podniku˚ je obvykle nutne´ zajistit integraci jejich stavaj´ ´ıc´ıch IS. To se tyk´ a´ i je- jich ECMS. Jedn´ım z reˇ senˇ ´ı tohoto problemu´ je migrace existuj´ıc´ıch dokumentu˚ do jedineho´ systemu.´ Tento proces je vsakˇ nejen nakladn´ y,´ ale take´ je castoˇ provazen´ znacnouˇ chybovost´ı. V nekterˇ ych´ prˇ´ıpadech, kdy by bylo potrebaˇ migrovat dokumenty ze zastaralych´ system´ u,˚ je dokonce neproveditelny.´ Proto je nutne,´ aby architektura ECMS umoznovalaˇ i zaclenˇ enˇ ´ı existuj´ıc´ıho obsahu.

1.3 Architektury souˇcasnych´ ECMS

FileNet (IBM) System´ FileNet tvorˇ´ı vlajkovou lod’ spolecnostiˇ IBM na poli ECM. Jedna´ se o jeden z nej- starsˇ´ıch produktu˚ tohoto druhu – jeho pocˇatky´ mu˚ zemeˇ naleznout uzˇ v 80. letech minuleho´ stolet´ı, kdy pro implementaci takto rozsahl´ eho´ systemu´ bylo nutne´ vytvoritˇ vlastn´ı operacnˇ ´ı system´ vcetnˇ eˇ systemu´ souboru.˚ FileNet se take´ mu˚ zeˇ pochlubit t´ım, zeˇ jako prvn´ı ECMS ob- sahoval nastroj´ pro podporu BPM (jednalo se o aplikaci Workflo, ktera´ melaˇ podobu shellu). Vedouc´ı pozici si na tomto poli uchoval dosud a v soucasnostiˇ se zameˇrujeˇ na z´ıskan´ ´ı certi- fikace pro Moreq22. Architektura FileNetu je postavena na nekolikaˇ zakladn´ ´ıch komponentach:´

Content Engine – Zastav´ a´ funkci ulo´ ziˇ stˇ eˇ a spravce´ dokumentu,˚ ktere´ mohou byt´ fyzicky ulozenyˇ v jedne´ z podporovanych´ databaz´ ´ı nebo na sd´ılenem´ disku.

Application Engine – Reprezentuje prostredˇ ´ı pro klientske´ aplikace systemu.´ Jeho hlavn´ı cˇast´ ´ı je tzv. Workplace – webova´ aplikace pro zakladn´ ´ı manipulaci s FileNetem.

2. Model Requirements for the management of electronic record - standard pro spisove´ sluzbyˇ vydany´ v roce 2008 Evropskou komis´ı

8 1. ENTERPRISE CONTENT MANAGEMENT (ECM)

Process Engine – Process Engine predstavujeˇ komponentu pro spravu´ podnikovych´ pro- cesu.˚ Procesy jsou modelovany´ pomoc´ı vlastn´ıho nastroje.´ Nevyuzˇ´ıva´ se pritomˇ zˇadn´ y´ standardn´ı jazyk pro definici procesu˚ jako napr.ˇ BPEL. K dispozici je i BAM (Business Activity Monitor), ktery´ mu˚ zeˇ poskytovat informace o u´ celnostiˇ a vykonnosti´ jednot- livych´ procesu.˚

Record Manager – spisova´ sluzbaˇ

Workplace Record Manager

Application Engine (farm)

Process Engine (farm) Content Engine (farm)

RDBMS Systém Active RDBMS souborů directory (Process)

Obrazek´ 1.2: Architektura ECMS Filenet

Z obrazku´ 1.2 je patrna´ uzk´ a´ vazba mezi jednotlivymi´ komponentami. Jedina´ cˇast,´ ktera´ mu˚ zeˇ byt´ instalovana´ samostatne,ˇ je Content Engine, ktery´ tvorˇ´ı centraln´ ´ı prvek celeho´ sys- temu.´ Ostatn´ı cˇasti´ jsou na nemˇ zavisl´ e´ a nemohou byt´ vyuzityˇ v jinem´ prostredˇ ´ı. Doposud FileNet podporoval integraci s nekolikaˇ malo´ systemy:´ SAP, Lotus Quickr a Microsoft Share- Point. Ve vsechˇ prˇ´ıpadech se jedna´ pouze o integraci na urovni´ Content Enginu – praci´ s pod- nikovymi´ procesy a spisovou sluzbouˇ je nutne´ v integrovanych´ systemech´ zajistit vlastn´ımi prostredky.ˇ Jednou ze zaj´ımavych´ vlastnost´ı FileNetu je moznostˇ pripojenˇ ´ı vlastn´ıho systemu´ jako repozita´reˇ Content Enginu (za pomoci nastroje´ IBM WebSphere Information Integrator Con- tent Edition). Ackolivˇ je vyuzitˇ ´ı teto´ vlastnosti implementacnˇ eˇ naro´ cnˇ e,´ je to prvn´ı krok ke zlepsenˇ ´ı architektury ECMS.

Documentum (EMC)

Dalsˇ´ım produktem, ktery´ si na trhu ECM z´ıskal vedouc´ı postaven´ı je system´ Documen- tum dodavan´ y´ spolecnostˇ ´ı EMC. Jak je patrne´ z obrazku´ 1.3, Documentum se vyznacujeˇ podobnou stavbou jako FileNet. I zde najdeme centraln´ ´ı repozita´rˇ (v Documentum nese nazev´ Content Server), ktery´ je ust´ rednˇ ´ım bodem celeho´ systemu´ a jehozˇ podpory vyuzˇ´ıvaj´ı vsechnyˇ dalsˇ´ı cˇasti´ systemu.´ Narozd´ıl od FileNetu se vsakˇ Documentum snazˇ´ı o vytvorenˇ ´ı hierarchie sluzebˇ – tzv. Document Foundation Services, ktera´ umozˇnujeˇ klientskym´ aplikac´ım pristupovatˇ k repo-

9 1. ENTERPRISE CONTENT MANAGEMENT (ECM) zita´riˇ vzdyˇ na patriˇ cnˇ e´ urovni.´ Tento prvek je castoˇ povazovˇ an´ za nejvetˇ sˇ´ı moznˇ e´ priblˇ ´ızenˇ ´ı k SOA3 v ECMS.

Media Services Web Webtop ... server publisher

Content Server

Process services

Content services

Compliance services

Security services Repository services

File Native Active RDBMS system XML directory database

Obrazek´ 1.3: Architektura ECMS Documentum

1.4 Pozadavkyˇ na souˇcasn´eECMS

Ackolivˇ byly uvedeny pouze dva z prednˇ ´ıch produktu˚ na poli ECM, situace u ostatn´ıch system´ u˚ (napr.ˇ OpenText, Alfresco) je takrkaˇ identicka.´ Lisˇ´ı se pouze podporovanou funk- cionalitou, pouzitˇ ymi´ technologiemi a aplikacnˇ ´ım rozhran´ım. Lze tak z´ıskat obecnou pred-ˇ stavu o soucasnˇ em´ zpusobu˚ budovan´ ´ı ECMS: jedna´ se o klasickou trˇ´ıvrstvou architekturu slozenouˇ z datove,´ aplikacnˇ ´ı a klientske´ vrstvy. Datovou vrstvu obvykle reprezentuje jeden centraln´ ´ı repozita´r,ˇ ve kterem´ jsou um´ıstenyˇ nejen veskerˇ e´ dokumenty, ale take´ dalsˇ´ı udaje´ tykaj´ ´ıc´ı se napr.ˇ uzivatelskˇ ych´ u´ ctˇ u.˚ Jelikozˇ na nemˇ zavis´ ´ı zbytek systemu,´ jedna´ se castoˇ o skˇ alovatelnou´ komponentu, ktera´ slucujeˇ relacnˇ ´ı a nativn´ı XML databaze´ s adresa´rovˇ ymi´ sluzbami.ˇ Ostatn´ı komponenty (sprava´ procesu,˚ uzivatelˇ u˚ apod.) do datove´ vrstvy zasahuj´ı minimaln´ eˇ a vetˇ sinouˇ data z´ıskavaj´ ´ı prostrednic-ˇ tv´ım repozita´re.ˇ Prav´ eˇ tato silna´ zavislost´ na jedinem´ repozita´riˇ je pro ECMS nevyhodn´ a.´ Vetˇ sinaˇ ma- terial´ u˚ uvad´ ´ı integraci informac´ı jako jednu ze zakladn´ ´ıch vlastnost´ı tohoto druhu system´ u.˚ S jedinym´ repozita´remˇ ovsemˇ nelze data sloucitˇ jinak, nezˇ za pomoci migrace, ktera´ ma´ znacnˇ e´ nevyhody:´ zvyˇsen´en´akladya´ chybovost – Dokument je obvykle svaz´ an´ s celou radouˇ udaj´ u˚ – nekterˇ e´ mohou byt´ dany´ platnou legislativou (spisova´ znacka,ˇ evidencnˇ ´ı cˇ´ıslo), nekterˇ e´ jsou spojeny s zivotnˇ ´ım cyklem dokumentu. Dokument mu˚ zeˇ byt´ nav´ıc verzovan´ a odka- zovat se na extern´ı systemy´ (napr.ˇ SAP nebo datovou schranku).´ Migraci proto lze chapat´ jako samostatny´ projekt, ktery´ mu˚ zeˇ byt´ financnˇ eˇ naro´ cnˇ y´ a nemus´ı byt´ zcela usp´ eˇsnˇ y.´

3. Servisneˇ orientovana´ architektura – viz nasleduj´ ´ıc´ı kapitola.

10 1. ENTERPRISE CONTENT MANAGEMENT (ECM)

RDBMS RDBMS

Business Process Klient1 KlientN Spisová služba ... Management System

Repozitář

RDBMS LDAP server NXD

Obrazek´ 1.4: Architektura soucasnˇ ych´ ECMS nadbyteˇcnost – V prˇ´ıpade,ˇ zeˇ existuj´ıc´ı system´ plneˇ vyhovuje svemu´ puvodn˚ ´ımu u´ celuˇ a chyb´ı mu pouze integrace s okol´ım, stav´ a´ se migrace zbytecnouˇ zat´ eˇzˇ´ı.

Existence v´ıce datovych´ zdroju˚ pritomˇ nen´ı neobvyklym´ jevem. Rozsahl´ e´ podnikove´ systemy´ nevznikaj´ı na zelene´ louce“, ale sp´ıseˇ se postupneˇ vyv´ıjej´ı. Tento vyvoj´ pritomˇ nen´ı ” moznˇ e´ dopreduˇ predvˇ ´ıdat. Podnik se mu˚ zeˇ akvizicemi jinych´ spolecnostˇ ´ı rozrustat˚ nebo na- opak z duvodu˚ neusp´ echuˇ nekterˇ e´ sve´ divize rusit.ˇ V realn´ em´ prostredˇ ´ı proto mu˚ zeˇ v ramci´ podniku existovat v´ıce nezavisl´ ych´ system´ u˚ pro spravu´ obsahu, kazdˇ y´ se svym´ specifickym´ u´ celem.ˇ Proto je vhodne´ zalozitˇ ECMS na architekture,ˇ ktera´ by s existenc´ı v´ıce datovych´ zdroju˚ pocˇ´ıtala. Prav´ eˇ takova´ architektura je zobrazena na obrazku´ 1.5. Nejdule˚ zitˇ ejˇ sˇ´ı cˇast´ zde pred-ˇ stavuje radiˇ cˇ, ktery´ sdruzujeˇ existuj´ıc´ı repozita´reˇ a provad´ ´ı spravu´ jejich obsahu. Pro ostatn´ı cˇasti´ systemu´ tak sam´ vystupuje jako virtualn´ ´ı repozita´rˇ obsahuj´ıc´ı veskerˇ e´ dokumenty spo- lecnosti.ˇ Dosazenˇ ´ı teto´ role vsakˇ nen´ı jednoduchou zale´ zitostˇ ´ı a implementace radiˇ ceˇ mus´ı reˇ sitˇ celou raduˇ problem´ u.˚ Za vsechnyˇ lze jmenovat rˇ´ızen´ı transakc´ı a vyhledav´ an´ ´ı nad v´ıce datovymi´ zdroji. Do jiste´ m´ıry se mus´ı prizpˇ usobit˚ i repozita´re,ˇ ktere´ mus´ı radiˇ ciˇ poskytovat svou funkcionalitu jednotnym´ zpusobem.˚ Dalsˇ´ı dule˚ zitouˇ soucˇast´ ´ı architektury je komunikacnˇ ´ı kanal´ , prostrednictvˇ ´ım ktereho´ mo- hou spolupracovat vsechnyˇ entity systemu:´ radiˇ c,ˇ pripojenˇ e´ repozita´re,ˇ extern´ı systemy´ i kli- entstke´ aplikace. Kanal´ by tedy melˇ umozˇnovatˇ co nejjednodusˇsˇ´ı integraci komponent, at’ uzˇ jsou um´ıstenyˇ kdekoliv a pouzˇ´ıvaj´ı jakoukoliv technologii. Mu˚ zeˇ byt´ implementovan´ za po- moci ruzn˚ ych´ protokolu˚ ciˇ existuj´ıc´ıho middlewaru. Komunikacnˇ ´ı kanal´ vsakˇ neslouzˇ´ı pouze pro integraci komponent, ale take´ pro spravn´ y´ rust˚ systemu.´ Stejneˇ tak jako se v organizaci mohou objevovat nove´ zdroje informac´ı, mo- hou pribˇ yvat´ pozadavkyˇ na propojen´ı s extern´ımi systemy.´ Zvla´stˇ eˇ po zaveden´ı autorizo-

11 1. ENTERPRISE CONTENT MANAGEMENT (ECM)

Spisová služba BPMS Klient 1 ... KlientN

Komunikační Řadič kanál

Klient Klient Repozitář1 RepozitářN k repozitiáři č. 1 Repozitář2 ... k repozitáři č. N

RDBMS LDAP server NXD Systém souborů RDBMS

Obrazek´ 1.5: Architektura ECMS zalozenˇ a´ na integraci datovych´ zdroju˚ vane´ konverze v roce 2009, ktera´ zrovnoprav´ nujeˇ elektronicke´ dokumenty s pap´ırovymi,´ lze ocekˇ avat´ zvy´senouˇ poptavku´ po systemech´ zpracovavaj´ ´ıc´ıch dokumenty (zabezpecenˇ a´ ulo´ ziˇ stˇ e,ˇ archivacnˇ ´ı sluzby,ˇ systemy´ certifikacnˇ ´ıch autorit a dalsˇ´ı). Bez potrebnˇ e´ infrastruktury, kterou v tomto prˇ´ıpadeˇ komunikacnˇ ´ı kanal´ zastupuje, vsakˇ kazdˇ a´ komponenta reˇ sˇ´ı pripojenˇ ´ı k ostatn´ım cˇastem´ samostatne.ˇ Tato point-to-point“ ko- ” munikace je pak znacnˇ eˇ naro´ cnˇ a´ na vyvoj,´ dokumentaci i udr´ zbuˇ a vede k neprehlednˇ emu´ systemu,´ ktery´ nen´ı moznˇ e´ dale´ rozsiˇ rovat.ˇ V nasleduj´ ´ıc´ı kapitole bude uveden pojem ESB a technologie JBI, ktera´ je pro vybudovan´ ´ı pozadovanˇ e´ infrastruktury vhodna.´ Jednou z vlastnost´ı systemu,´ ktera´ na obrazku´ 1.5 nen´ı prˇ´ılisˇ zretelnˇ a,´ je nezavislost´ kom- ponent. Kazdˇ y´ z repozita´rˇu˚ mu˚ zeˇ nadale´ vystupovat jako samostatny´ system,´ bez znalosti nadrazenˇ eho´ radiˇ ceˇ a aplikac´ı, ktere´ k nemuˇ pristupujˇ ´ı. V prˇ´ıpade,ˇ zeˇ dosavadn´ı nastroje´ pro prˇ´ıstup k repozita´riˇ vyhovuj´ı svemu´ u´ celu,ˇ mohou byt´ nadale´ pouzˇ´ıvany,´ anizˇ by bylo nutne´ provad´ etˇ nadbytecnˇ e´ skolenˇ ´ı pracovn´ıku.˚ Budoucnost popsane´ architektury do jiste´ m´ıry zarucujeˇ i vyvoj´ standardu CMIS (Con- tent Management Interoperability Services). Ten za pomoci jazyka WSDL definuje obecne´ rozhran´ı repozita´re.ˇ Popisuje akce klasicke´ spravy´ dokumentu˚ – pridˇ an´ ´ı a odstranenˇ ´ı doku- mentu, verzovan´ ´ı, vyhledav´ an´ ´ı, praci´ s ACL 4 atd. Mezi ECMS, jejichzˇ repozita´reˇ budou toto rozhran´ı podporovat, patrˇ´ı napr.ˇ systemy´ OpenText, Documentum, Alfresco a FileNet. Standard CMIS v dobeˇ vzniku teto´ prace´ (konec roku 2009) prochaz´ ´ı stadiem Public Review.Vyrobci´ si od jednotneho´ rozhran´ı slibuj´ı predevˇ sˇ´ım jednodusˇsˇ´ı vyvoj´ a integraci nastroj´ u˚ (podle [12]). Je vsakˇ v´ıce nezˇ pravdepodobnˇ e,´ zeˇ prav´ eˇ toto jednotne´ rozhran´ı do budoucna zpusob˚ ´ı zmenuˇ ve vyvoji´ ECMS.

4. access control list – seznam prˇ´ıstupovych´ prav;´ slouzˇ´ı k rˇ´ızen´ı prˇ´ıstupu uzivatelˇ u˚ ke zdrojum˚

12 Kapitola 2 Technologie pro vybudov´an´ıinfrastruktury

2.1 Servisnˇeorientovan´aarchitektura

V soucasnˇ ych´ podm´ınkach´ nelze podnikove´ systemy´ pro spravu´ informac´ı budovat na zaklad´ eˇ klasicke´ architektury, ve ktere´ jsou jednotlive´ komponenty tesnˇ eˇ propojeny. Tem´ eˇrˇ v kazdˇ e´ fazi´ zivotnˇ ´ıho cyklu dokumentu se mu˚ zeˇ vyskytovat pozadavekˇ na propojen´ı s jinym´ systemem.´ Za vsechnyˇ lze jmenovat alesponˇ nekterˇ e´ prˇ´ıklady:

• system´ certifikacnˇ ´ı autority (oveˇrenˇ ´ı certifikatu,´ z´ıskan´ ´ı casovˇ ych´ raz´ıtek apod.)

• vyteˇzovˇ an´ ´ı dat OCR systemy´

• zpracovan´ ´ı odchoz´ıch dokumentu˚ v extern´ıch zarˇ´ızen´ıch (tiskarny,´ frankovac´ı stroje)

• prace´ s SMTP serverem

Tyto extern´ı systemy´ se nav´ıc castoˇ menˇ ´ı. Veden´ı organizace se mu˚ zeˇ rozhodnout pro zmenuˇ konkretn´ ´ıho systemu´ z duvodu˚ nepodporovane´ funkcionality nebo vysoke´ ceny udr´ zby.ˇ Zmenuˇ mu˚ zeˇ vyvolat take´ platna´ legislativa. Jako prˇ´ıklad lze uvest´ novelizaci zakona´ 499/2004 Sb. (zakon´ o archivnictv´ı a spisove´ sluzbˇ e).ˇ Schvalen´ ´ı teto´ novelizace 28. kvetnaˇ 2009 zpusobilo˚ zmenuˇ v rozhran´ı systemu´ datovych´ schranek´ 1, ktery´ v te´ dobeˇ ukoncovalˇ svou testovac´ı fazi´ a melˇ byt´ pripravenˇ pro ostry´ provoz. Prirozenouˇ volbou proto tento druh system´ u˚ se stav´ a´ servisneˇ orientovana´ architektura (SOA). Jednu z mnoha jej´ıch definic uvedl Malte Poppensieker z Trev´ırske´ univerzity [8]:

Servisnˇeorientovan´aarchitektura je zaloˇzenana samostatn´ych,volnˇev´azan´ych,hru- bozrnn´ychsluˇzb´achs dobˇredefinovan´ymirozhran´ımi,kter´ejsou vystaveny za pomoci podp˚urn´einfranstruktury. To umoˇzˇnujeintegraci vnitˇrn´ıchi extern´ıchsyst´em˚u,stejnˇe tak jako nov´evyuˇzit´ıexistuj´ıc´ıaplikaˇcn´ılogiky skrze kompozici sluˇzeb.

Stejneˇ jako ostatn´ı definice SOA, ani tuto definici nelze povazovatˇ za zcela spravnou.´ Je sp´ıseˇ technicky orientovana´ a opom´ıj´ı hlavn´ı c´ıl SOA: vytvorenˇ ´ı softwaroveho´ prostredˇ ´ı, ktere´ by dokazalo´ rychle reagovat na obchodn´ı pozadavky.ˇ Pro nasleduj´ ´ıc´ı text vsakˇ zcela postacuje.ˇ Podle [15] se SOA snazˇ´ı odstranit predevˇ sˇ´ım nasleduj´ ´ıc´ı nedostatky: nestandardn´ırozhran´ı – Kazdˇ a´ sluzbaˇ v systemu´ postavenem´ na zaklad´ eˇ SOA je vybavena dobreˇ definovanym´ rozhran´ım.

1. Datove´ schranky´ predstavujˇ ´ı novy´ zpusob˚ komunikace s organy´ verejnˇ e´ moci elektronickou formou.

13 2. TECHNOLOGIEPROVYBUDOVAN´ ´IINFRASTRUKTURY

Datová schránka Účetní systém konektor2

webová služba konektor1 databáze

J2EE Webový portál Výpravna

systém souborů systém souborů

LDAP Active directory Frankovací stroj

Obrazek´ 2.1: Spaghetti“ architektura ” duplicitn´ıfunkcionalitu – Jelikozˇ ke kazdˇ e´ sluzbˇ eˇ lze pristupovatˇ jednotnym´ zpusobem,˚ nen´ı nutne´ duplikovat funkcionalitu z duvodu˚ neprenositelnostiˇ kodu,´ nebo nekom- patibiln´ıho formatu´ dat.

spaghetti“ architektura (komunikace prob´ıha´ metodou kazdˇ y´ s kazdˇ ym)´ – SOA pozadujeˇ ” existenci jednotne´ infrastruktury zprˇ´ıstupnujˇ ´ıc´ı jednotlive´ sluzby.ˇ

´udrzbaˇ aplikac´ı – Kazdˇ a´ sluzbaˇ je uzavrenˇ a´ a nezavis´ ´ı na stavu, um´ıstenˇ ´ı nebo zpusobu˚ implementace ostatn´ıch sluzeb,ˇ pokud dodrzujˇ ´ı kontrakt dany´ rozhran´ım.

Obrazek´ 2.1 zaznamenav´ a´ kazdˇ y´ z techtoˇ problem´ u.˚ Webovy´ portal´ i komponenta vy-´ pravny reˇ sˇ´ı pripojenˇ ´ı na datovou schranku,´ frankovac´ı stroj a u´ cetnˇ ´ı system´ samostatne.ˇ Cely´ system´ obsahuje ruzn˚ e´ druhy rozhran´ı (databaze,´ J2EE, system´ souboru,˚ webove´ sluzby)ˇ a jednotlive´ komponenty vzajemn´ eˇ zavis´ ´ı na platformeˇ i um´ıstenˇ ´ı. Vysledn´ a´ architektura je neprehlednˇ a´ a vyzadujeˇ vetˇ sˇ´ı usil´ ´ı jak priˇ implementaci dalsˇ´ı funkcionality, tak priˇ udr´ zbˇ e,ˇ dokumentaci a testovan´ ´ı. Naprˇ´ıklad pro veden´ı zaznam´ u˚ o prˇ´ıstupech k datove´ schrance´ je nutne´ upravit oba konektory tak, aby kazdouˇ operaci nad datovou schrankou´ zazna- menavaly´ v jednotnem´ formatu´ na spolecnˇ e´ ulo´ ziˇ stˇ e.ˇ T´ım se cela´ architektura stale´ v´ıce a v´ıce svazuje. Je vsakˇ moznˇ e´ predstavitˇ si system,´ kde jsou tyto nedostatky odstranenyˇ (viz obr. 2.2). Kazdˇ y´ subsystem´ je pripojenˇ ke spolecnˇ e´ sbernici,ˇ vzdyˇ za pomoci sveho´ specifickeho´ pro- tokolu nebo technologie. Sberniceˇ doka´zeˇ za pomoci serie´ konektoru˚ prevˇ ad´ etˇ prob´ıhaj´ıc´ı komunikaci na zpravy´ o jednotnem´ formatu´ a tyto zpravy´ pak smerovatˇ na m´ısto urcenˇ ´ı. Tento koncept je znam´ y´ jako Enterprise Service Bus (ESB) a jedna´ se o jeden z nejcastˇ ejiˇ zminovanˇ ych´ zpusob˚ u˚ jak zavad´ etˇ SOA.

2.2 Java Business Integration

ESB je obecna´ myslenka,ˇ kterou je moznˇ e´ implementovat ruzn˚ ymi´ zpusoby.˚ V prostredˇ ´ı ja- zyka Java pro tento u´ celˇ vznikla v ramci´ Java Community Process specifikace Java Business

14 2. TECHNOLOGIEPROVYBUDOVAN´ ´IINFRASTRUKTURY

Datová Frankovací Webový schránka stroj portál Konektor NTFS J2EE Komunikační kanál LDAP SOAP J2EE Active Účetní Výpravna directory systém

Obrazek´ 2.2: Zlepsenˇ ´ı struktury systemu´

Integration (JBI). Jej´ı prvn´ı verze nese oznacenˇ ´ı JSR-208 a jej´ım hlavn´ım obsahem je definice tzv. integracnˇ ´ıho kontejneru, ktery´ tvorˇ´ı zakladn´ ´ı stavebn´ı prvek vsechˇ ESB. V JSR-208 lze nalezt´ definici:

• komponent

• rozhran´ı sluzebˇ

• komunikacnˇ ´ı sberniceˇ

• formatu´ zprav´

• zpusob˚ u˚ smerovˇ an´ ´ı

• podpurn˚ e´ infrastruktury

JBI container

Service ... Service Engine 1 Engine N DC DC Normalized Message Router DC DC Binding ... Binding Component 1 Component N

Obrazek´ 2.3: Architektura JBI

15 2. TECHNOLOGIEPROVYBUDOVAN´ ´IINFRASTRUKTURY

2.2.1 Komponenty syst´emu Zakladn´ ´ım prvkem JBI jsou komponenty. Jedna´ se zasuvn´ e´ moduly podobne´ naprˇ´ıklad EJB2 modulum˚ v prostredˇ ´ı J2EE. Je specifikovano´ rozhran´ı, ktere´ mus´ı podporovat, faze´ zivotnˇ ´ıho cyklu a zpusob˚ instalace. JBI komponenty slouzˇ´ı ke dvemaˇ u´ celˇ um,˚ ktere´ urcujˇ ´ı jejich roli: poskytovatel sluzebˇ – vystavuje sluzbyˇ v ramci´ sberniceˇ konzument sluzebˇ – vyuzˇ´ıva´ vystavenych´ sluzebˇ

Obeˇ dveˇ role se vzajemn´ eˇ nevylucujˇ ´ı, kazdˇ a´ ma´ vsakˇ rozd´ılny´ kontrakt. Naprˇ´ıklad po- skytovatel odpov´ıda´ za vystaven´ı rozhran´ı a provad´ enˇ ´ı operac´ı svych´ sluzeb.ˇ Jakmile je komponenta v JBI kontejneru nainstalovana´ a uvedena do spravn´ eho´ stavu zivotnˇ ´ıho cyklu, mu˚ zeˇ do n´ı JBI kontejner umist’ovat tzv. servisn´ı jednotky (dale´ jen SU – service unit). SU je ZIP archiv, s jehozˇ obsahem mu˚ zeˇ konkretn´ ´ı komponenta pracovat. Po- skytovatel sluzebˇ v nemˇ mu˚ zeˇ naj´ıt prostredkyˇ pro vybudovan´ ´ı sluzbyˇ (napr.ˇ Java trˇ´ıdy), zat´ımco konzument mu˚ zeˇ ocekˇ avat´ navod´ pro volan´ ´ı vystavenych´ sluzeb.ˇ Obsah servisn´ı jednotky je specificky´ vzdyˇ pro danou komponentu a roli a nen´ı vecˇ ´ı JBI specifikace (ta urcujeˇ pouze format´ ZIP archivu). SU se neinstaluje jednotlive,ˇ ale vzdyˇ v ramci´ celeho´ bal´ıku – tzv. service assembly (SA). Tento bal´ık ma´ opetˇ formu ZIP archivu, ve kterem´ jsou ulozenyˇ servisn´ı jednotky. Informace nutne´ pro zpracovan´ ´ı SA se nachazej´ ´ı v souboru META-INF/jbi.xml uvnitrˇ archivu. Jsou v nemˇ popsany´ napr.ˇ nazvy´ instalovanych,´ ciˇ volanych´ sluzeb,ˇ um´ıstenˇ ´ı odpov´ıdaj´ıc´ıch SU a druhy c´ılovych´ komponent (viz prˇ´ıklad). Na zaklad´ eˇ tohoto XML dokumentu pak JBI kon- tejner provad´ ´ı instalaci jednotlivych´ SU.

MySA Example service assembly FileWSBinding Binding of file SU to external WS endpoint Counter.zip servicemix-cxf-bc

2. Enterprise Java Bean

16 2. TECHNOLOGIEPROVYBUDOVAN´ ´IINFRASTRUKTURY

FileSender Destination of web service invocation File.zip servicemix-file

Komponenty se dale´ delˇ ´ı na zaklad´ eˇ toho, zda priˇ komunikaci pouzˇ´ıvaj´ı pouze sbernici,ˇ nebo pristupujˇ ´ı i k extern´ımu prostredˇ ´ı:

Service Engine (SE) – Komunikuje pouze v ramci´ sbernice.ˇ Vyuzˇ´ıva´ se predevˇ sˇ´ım pro in- stalaci SU, ktere´ do systemu´ pridˇ avaj´ ´ı dalsˇ´ı funkcionalitu.

Binding Component (BC) – Slouzˇ´ı pro komunikaci s okol´ım JBI kontejneru. Vystupuj´ı tak jako prekladaˇ ceˇ prevˇ ad´ ejˇ ´ıc´ı zpravy´ sberniceˇ na komunikaci s extern´ımi entitami (we- bovymi´ sluzbami,ˇ databazemi,´ SMTP servery apod.).

Toto rozdelenˇ ´ı je sp´ıseˇ vecnˇ eho´ charakteru, oba druhy totizˇ mus´ı splnovatˇ tenty´zˇ kontrakt a JBI kontejner je rozlisujeˇ pouze specialn´ ´ım prˇ´ıznakem.

2.2.2 Rozhran´ısluzebˇ

Pote,´ co JBI kontejner provede instalaci servisn´ı jednotky do komponenty v roli poskyto- vatele sluzeb,ˇ pokus´ı se rovneˇzˇ o aktivaci noveˇ vznikle´ sluzby.ˇ Pokud instalovana´ servisn´ı jednotka odpov´ıda´ pozadavkˇ um˚ komponenty a proces aktivace probehneˇ v porˇadku,´ vznik- nou na sberniciˇ nove´ komunikacnˇ ´ı body (tzv. endpointy), jejichzˇ prostrednictvˇ ´ım je moznˇ e´ vyuzˇ´ıvat funkcionalitu sluzby.ˇ Kazdˇ y´ endpoint aktivn´ı sluzbyˇ mus´ı zarove´ nˇ poskytovat jej´ı rozhran´ı. To je v JBI de- finovano´ prostrednictvˇ ´ım jazyka WSDL 2.0 (Web Service Description Language), presnˇ ejiˇ jeho abstraktn´ı cˇast´ ´ı nesvazanou´ s konkretn´ ´ım komunikacnˇ ´ım protokolem. Popis rozhran´ı sluzbyˇ zahrnuje:

• zpravy´ pouzitˇ e´ v prob´ıhaj´ıc´ı komunikaci a jejich strukturu

• operace tvorˇ´ıc´ı dane´ rozhran´ı a jim prˇ´ıslusejˇ ´ıc´ı vstupn´ı, vystupn´ ´ı a chybove´ zpravy´

2.2.3 Smˇerov´an´ızpr´av

Vystavene´ rozhran´ı neslouzˇ´ı pouze ke konzumaci“ sluzby,ˇ ale take´ naprˇ´ıklad pro smerovˇ an´ ´ı. ” Specifikace JSR-208 stanovuje, zeˇ c´ılovou sluzbuˇ je moznˇ e´ zadat tremiˇ zpusoby:˚

17 2. TECHNOLOGIEPROVYBUDOVAN´ ´IINFRASTRUKTURY

• kvalifikovanym´ jmenem´ 3 sluzbyˇ

• kvalifikovanym´ jmenem´ rozhran´ı

• nazvem´ endpointu

2.2.4 Komunikaˇcn´ısbˇernicea podoba zpr´av

Komunikacnˇ ´ı sberniceˇ se v JBI nazyv´ a´ Normalized Message Router (NMR). Splnujeˇ to, co bylo pro sberniciˇ prozat´ım uvedeno – prenˇ a´sˇ´ı mezi jednotlivymi´ komponentami systemu´ zpravy,´ jejichzˇ format´ nen´ı zavisl´ y´ na protokolu. Tyto normalizovane´ zpravy´ se skladaj´ ´ı ze trˇ´ı cˇast´ ´ı:

• hlavicekˇ obsahuj´ıc´ıch pomocne´ informace (napr.ˇ pro transakce nebo zabezpecenˇ ´ı)

• XML obsahu definovaneho´ v rozhran´ı

• prˇ´ıloh ukladaj´ ´ıc´ıch jakykoliv´ binarn´ ´ı obsah

V souvislosti se systemem´ ASCMS, ktery´ je popsan´ ve ctvrtˇ e´ kapitole je nutne´ zm´ınit prenosˇ binarn´ ´ıho obsahu. Opetˇ je vyuzitoˇ zavedenych´ technologi´ı webovych´ sluzeb,ˇ ten- tokrat´ standardu˚ WS-I Attachments Profile 1.0 a W3C XML-binary Optimized Packaging. V normalizovanych´ zprav´ ach´ je tedy moznˇ e´ nahradit primitivn´ı datove´ typy base64Binary nebo hexBinary elemety swaRef (priˇ vyuzitˇ ´ı WS-I Attachments Profile 1.0) ciˇ xop:Incude (pro XML-binary Optimized Packaging). Z obsahu elementu˚ je moznˇ e´ urcitˇ odpov´ıdaj´ıc´ı prˇ´ılohu. Kazdˇ a´ komponenta je k NMR pripojenaˇ vlastn´ım dorucovacˇ ´ım kanalem,´ ktery´ j´ı umoz-ˇ nujeˇ zas´ılat zpravy´ bud’ synchronne,ˇ nebo asynchronne.ˇ I v tomto smeruˇ JSR-208 vyuzˇ´ıva´ jazyka WSDL a prebˇ ´ıra´ pojem message exchange pattern (MEP). Komunikace tak prob´ıha´ vzdyˇ podle jednoho z nasleduj´ ´ıc´ıch schemat:´

In-Only – Konzument vyvola´ operaci dane´ sluzbyˇ bez cekˇ an´ ´ı na odpovedˇ ’ nebo na chybo- vou zpravu.´

Robust In-Only – Konzument vyvola´ operaci dane´ sluzbyˇ a ta prˇ´ıpadneˇ mu˚ zeˇ odpovedˇ etˇ chybovou zpravou.´

In-Out – Konzument vyvola´ operaci dane´ sluzbyˇ a ta mu vrat´ ´ı bud’ vysledek´ operace nebo chybovou zpravu.´

In Optional-Out – Konzument vyvola´ operaci dane´ sluzbyˇ a ta mu mu˚ zeˇ vratit´ vysledek´ operace, chybovou zpravu´ nebo pouze stavovou zpravu´ o ukoncenˇ ´ı operace.

Na specifikaci JSR-208 se sneslo od jej´ı publikace velke´ mnozstvˇ ´ı kritiky. Vetˇ sinaˇ z n´ı je ovsemˇ zalozenaˇ na neznalosti faktu, zeˇ JBI nen´ı ESB, ale pouze specifikac´ı integracnˇ ´ıho kontejneru. Tento standard se skutecnˇ eˇ neprosadil podle ocekˇ av´ an´ ´ı. Obvykle je vytyk´ an´ predpoklad,ˇ zeˇ vsechnyˇ integrovane´ komponenty doka´zˇ´ı pracovat s jednotnym´ formatem´ dat:

3. Kvalifikovane´ jmeno´ ma´ v tomto kontextu stejny´ vyznam´ jako v XML – jedna´ se o spojen´ı jmenneho´ prostoru a identifikatoru.´ Napr.ˇ retˇ ezecˇ {http://fi.muni.cz/˜xmudrak2}service lze povazovatˇ za kvalifikovane´ jmeno.´

18 2. TECHNOLOGIEPROVYBUDOVAN´ ´IINFRASTRUKTURY

• Hlavn´ım nositelem dat je XML. Vetˇ sinaˇ system´ u˚ sice doka´zeˇ transformovat sve´ udaje´ do XML, v nekterˇ ych´ to vsakˇ nen´ı z principu moznˇ e.´ Jedna´ se predevˇ sˇ´ım o legacy systemy´ pouzˇ´ıvaj´ıc´ı proprietarn´ ´ı formaty,´ u kterych´ by takova´ transformace byla ob- t´ıznˇ a,´ nebo prˇ´ımo nemoznˇ a´ (naprˇ´ıklad z duvodu˚ zabezpecenˇ ´ı dat v podobeˇ podpisu nebo sifrovˇ an´ ´ı). • K definici rozhran´ı je moznˇ e´ pouzˇ´ıt pouze WSDL. • Neexistuje jednotna´ podpora pro streamovany´ prenosˇ dat.

2.3 Apache ServiceMix

Jedn´ım ze soucasnˇ ych´ castoˇ vyuzˇ´ıvanych´ ESB (vedle OpenESB a PEtALS) zalozenˇ ych´ na JBI technologii je Apache ServiceMix (dale´ jen ASM). Je vydan´ pod licenc´ı 2.0 a sirokouˇ podporu si z´ıskal predevˇ sˇ´ım nezavislost´ ´ı na konkretn´ ´ım J2EE serveru. Mu˚ zeˇ pracovat v ramci´ serveru˚ Geronimo, JBoss, JonAS, Websphere a dalsˇ´ıch. Dokonce mu˚ zeˇ byt´ instalovan´ jako aplikace do weboveho´ kontejneru nebo pracovat zcela samostatne.ˇ D´ıky snadnemu´ vyvoji,´ ktery´ je zalozenˇ na nastroji´ Maven a jeho artefaktech, se mohl ASM donedavna´ pochlubit nejvetˇ sˇ´ım mnozstvˇ ´ım komponent (v tomto smeruˇ predˇ cilˇ i refe- rencnˇ ´ı implementaci JBI OpenESB od Sun Microsystems). Netrebaˇ pripomˇ ´ınat, zeˇ se jedna´ o skutecnˇ e´ ESB a ne pouhou implementaci specifikace JSR-208. ASM je totizˇ postaven nad dorucovacˇ ´ım systemem´ ActiveMQ, ktery´ podporuje tvorbu clusteru.˚ Za pomoci ActiveMQ je tedy moznˇ e´ propojit v´ıce instanc´ı ASM, ktere´ se mohou vzajemn´ eˇ nahrazovat a umozˇnujˇ ´ı tak rozkladat´ zat´ eˇz.ˇ Take´ je moznˇ e´ jednotlive´ in- stance ASM spojovat a vytva´retˇ tak sberniciˇ rozp´ınaj´ıc´ı se presˇ v´ıce stanic. Jelikozˇ je ASM nenaro´ cnˇ y´ na hardwarovou podporu a vyvoj´ sluzebˇ a komponent je v nemˇ snadny,´ byl vybran´ i jako ESB pro budovany´ system´ ASCMS (Apache ServiceMix Content Management System). Jak vsakˇ bude patrne´ z nasleduj´ ´ıc´ıho textu, nebyla to vzhle- dem k soucasnˇ emu´ stavu projektu Apache ServiceMix stˇ ’astna´ volba.

2.3.1 Nevyhody´ ASM Jednou z nevyhod´ ASM je jeho ponekudˇ volny´ prˇ´ıstup ke specifikaci JBI. To se tyk´ a´ rozdelenˇ ´ı rol´ı priˇ normalizaci zpravy.´ Za tu by melaˇ odpov´ıdat vzdyˇ prˇ´ıslusnˇ a´ BC. Nekterˇ e´ BC4 vsakˇ ve svych´ SU dovoluj´ı definovat vlastn´ı trˇ´ıdu, na kterou se tento problem´ deleguje. Nemuselo by se jednat o vyrazn´ y´ prohreˇ sek,ˇ pokud by tato funkcionalita byla moznˇ a´ pouze v ramci´ BC komponent v roli poskytovatelu˚ sluzeb.ˇ Takova´ vlastnost mu˚ zeˇ byt´ uzi-ˇ tecnˇ a´ v prˇ´ıpadech, kdy je potrebaˇ logovat prob´ıhaj´ıc´ı komunikaci nestandardn´ım zpusobem,˚ nebo upravovat odchoz´ı format´ dat. Jakmile je ovsemˇ dovoleno, aby tuto funkcionalitu po- skytovaly ostatn´ı druhy komponent, mu˚ zeˇ doj´ıt ke stavbeˇ babylonsk´ e´ veˇze“ˇ a ke zmaten´ı ” ” jazyku“˚ – normalizovanych´ zprav´ v JBI. Takovyto´ stav v ASM skutecnˇ eˇ nastal. Naprˇ´ıklad komponenta servicemix-http-bc nedoka´zeˇ komunikovat s komponentou ser- vicemix-cxf-se. Opravdu odstrasujˇ ´ıc´ım prˇ´ıkladem, ktery´ pop´ıra´ u´ celˇ JBI, je naprˇ´ıklad SE pro orchestraci sluzebˇ Apache ODE. Tomu je moznˇ e´ priˇ instalaci nastavit jeden ze trˇ´ı moznˇ ych´ zpusob˚ u˚ komunikace a t´ım zarucit,ˇ zeˇ bude schopen komunikovat s konkretn´ ´ı skupinou komponent.

4. Jedna´ se o komponenty servicemix-file, servicemix-mail, servicemix-bean.

19 2. TECHNOLOGIEPROVYBUDOVAN´ ´IINFRASTRUKTURY

Stejneˇ tak problematicka´ je i moznostˇ SU vstupovat prˇ´ımo do prob´ıhaj´ıc´ı komunikace. V SU komponent servicemix-cxf-se a servicemix-jsr-181 je moznˇ e´ z´ıskat prˇ´ıstup k instanci trˇ´ıdy javax.jbi.component.ComponentContext, d´ıky ktere´ je moznˇ e´ ovlivnovatˇ kom- ponentu (vytva´retˇ nebo deaktivovat endpointy, zas´ılat zpravy´ prˇ´ımo do NMR atp.). Rovneˇzˇ dalsˇ´ı nevyhoda´ vychaz´ ´ı z volneho´ prˇ´ıstupu ke specifikaci. JSR-208 vyslovn´ eˇ uvad´ ´ı ([5], 5.5.2.2), zeˇ jakykoliv´ endpoint, pro ktery´ neexistuje rozhran´ı, je povazovˇ an´ za neaktivn´ı. Rozhran´ı, pokud existuje, ma´ byt´ navraceno´ ve formeˇ dokumentu WSDL 1.1 nebo WSDL 2.0. V ASM je vsakˇ velke´ mnozstvˇ ´ı komponent neupln´ ych;´ priˇ aktivaci endpointu konkretn´ ´ı sluzbyˇ nedojde k vytvorenˇ ´ı rozhran´ı a m´ısto dokumentu se tak vrac´ı pouze nevalidn´ı obsah:

To mu˚ zeˇ m´ıt fataln´ ´ı nasledky´ pro konzumenty sluzeb,ˇ kterˇ´ı definuj´ı vyuzitˇ e´ sluzbyˇ dy- namicky. Tento fakt je moznˇ e´ oveˇritˇ i ve webove´ konzoli ASM, kde chybejˇ ´ıc´ı rozhran´ı castoˇ zpusobuj˚ ´ı chyby v provad´ enˇ ych´ operac´ıch. Nebezpecnostˇ vsechˇ techtoˇ chyb spocˇ´ıva´ predevˇ sˇ´ım v tom, zeˇ jsou skryte,´ nedokumento- vane´ a vyvoj´ a´rˇ je priˇ vyuzitˇ ´ı pouze omezene´ skupiny vzajemn´ eˇ kompatibiln´ıch komponent nemus´ı vubec˚ postrehnout.ˇ To se stalo i priˇ vyvoji´ systemu´ ASCMS popsanem´ ve ctvrtˇ e´ ka- pitole.

2.3.2 Orchestrace sluzebˇ v ASM Jednou z dule˚ zitˇ ych´ vlastnost´ı JBI, ESB a principu SOA vubec,˚ je kompozice sluzebˇ do nad- razenˇ ych´ celku.˚ Obzvla´stˇ eˇ pro ECMS, jehozˇ architektura byla popsana´ v prvn´ı kapitole, se jedna´ o kl´ıcovˇ y´ prvek. Kompozici sluzebˇ je obecneˇ moznˇ e´ implementovat dvemaˇ zakladn´ ´ımi zpusoby:˚ choreografie – Jednotlive´ sluzbyˇ znaj´ı svou roli ve slozenˇ em´ procesu a doka´zˇ´ı podle toho na vnejˇ sˇ´ı volan´ ´ı reagovat. T´ım je vsakˇ porusenaˇ jedna ze zakladn´ ´ıch myslenekˇ SOA, jehozˇ zaklad´ maj´ı tvoritˇ volneˇ vazan´ e,´ samostatne´ sluzby.ˇ Rovneˇzˇ pro implementaci popsaneho´ ECMS je tento zpusob˚ kompozice nepouzitelnˇ y.´ orchestrace – Definice komponovaneho´ procesu je ulozenaˇ v jedinem,´ centraln´ ´ım prvku, ktery´ s jej´ı pomoc´ı rˇ´ıd´ı ostatn´ı sluzby.ˇ ASM uvad´ ´ı triˇ prostredkyˇ pro orchestraci sluzeb:ˇ • komponentu servicemix-jsr181 • implementaci Enterprise Integration Patterns prostrednictvˇ ´ım komponenty servicemix- camel • kompozici sluzebˇ za pomoci BPEL SE Apache ODE

Anotace JSR-181 Jako prvn´ı prostredekˇ pro orchestraci sluzebˇ uvad´ ´ı dokumentace ASM [10] komponentu servicemix-jsr181. Nazev´ teto´ komponenty odkazuje na znamou´ specifikaci pro tvorbu we- bovych´ sluzebˇ z POJO (Plain Old Java Object) za pomoci anotac´ı. Servisn´ı jednotky kompo- nenty servicemix-jsr181 se tedy skladaj´ ´ı prevˇ a´znˇ eˇ z anotovanych´ Java trˇ´ıd, jejichzˇ metody pristupujˇ ´ı k NMR a zpracovavaj´ ´ı prˇ´ıchoz´ı zpravy.´

20 2. TECHNOLOGIEPROVYBUDOVAN´ ´IINFRASTRUKTURY

Tento prˇ´ıstup ma´ vsakˇ charakter vynalezu´ kola – je nutne´ znovu implementovat celou raduˇ prvku,˚ jako napr.ˇ zpracovan´ ´ı a validaci zprav,´ komunikaci se sbernicˇ ´ı, spravu´ chy- bovych´ stavu,˚ perzistenci dlouho beˇzˇ´ıc´ıch procesu˚ atp. Z techtoˇ duvod˚ u˚ lze povazovatˇ kom- pozici sluzebˇ na zaklad´ eˇ anotovanych´ Java trˇ´ıd za nevhodnou.

Apache Camel a Enterprise Integration Patterns (EIP)

Pro dalsˇ´ı zpusob˚ orchestrace nab´ız´ı ASM komponentu zalozenouˇ na projektu Apache Ca- mel. Ten je zameˇrenˇ na tzv. Enterprise Integration Patterns (EIP). Jedna´ se o navrhov´ e´ vzory, ktere´ byly popsany´ v roce 2003 (predchˇ azeli´ JBI specifikaci o 2 roky) v knize Enterprise In- tegration Patterns : Designing, building, and deploying messaging solutions [1] a ktere´ definuj´ı spravn´ e´ postupy pro smerovˇ an´ ´ı a prenosˇ dat mezi podnikovymi´ systemy.´ Tato kniha shr- nuje tehdejsˇ´ı zkusenostiˇ s integrac´ı system´ u˚ a do urcitˇ e´ m´ıry predjˇ ´ımala budouc´ı vyvoj.´ Jed- notlive´ navrhov´ e´ vzory mu˚ zemeˇ rozeznat v konceptu ESB i v JBI specifikaci. Kniha pritomˇ pojednav´ a´ o integraci velmi obecne,ˇ snazˇ´ı se predevˇ sˇ´ım stanovit standardn´ı mechanismy, na zaklad´ eˇ kterych´ lze systemy´ propojovat. Projekt se snazˇ´ı o implementaci zm´ınenˇ ych´ navrhov´ ych´ vzoru.˚ S jeho po- moc´ı lze vytvoritˇ komunikacnˇ ´ı vrstvu, ktera´ je stejneˇ jako JBI kontejner zalozenaˇ na zas´ılan´ ´ı zprav.´ I v Apache Camel nalezneme pojmy jako hlavickaˇ a teloˇ zpravy´ nebo endpoint. T´ım vsakˇ podobnost s JBI koncˇ´ı. Prostredˇ ´ı Apache Camel totizˇ nen´ı reprezentovano´ sbernicˇ ´ı, ale mu˚ zeˇ utva´retˇ tem´ eˇrˇ libovolnou topologii komunikacnˇ ´ıch kanal´ u.˚ V ramci´ teto´ s´ıteˇ je moznˇ e´ umist’ovat ruzn˚ e´ komunikacnˇ ´ı prvky odpov´ıdaj´ıc´ı EIP, jako naprˇ´ıklad smerovaˇ ceˇ nebo prekladaˇ ceˇ zprav.´ Takto zbudovana´ vrstva ma´ slouzitˇ predevˇ sˇ´ım pro integraci kom- ponent, nicmen´ eˇ v ASM mu˚ zeˇ zastupovat i orchestracnˇ ´ı nastroj.´ Vyhodou´ Apache Camel je jeho odstup od technologie JBI. S jeho pomoc´ı lze lehce imple- mentovat nekterˇ e´ funkce, ktere´ JBI kontejner postrad´ a´ (napr.ˇ zas´ılan´ ´ı zprav´ v´ıce odberatelˇ um˚ nebo implicitn´ı transformace zprav).´ Tato komponenta ma´ vsakˇ i sve´ nevyhody.´ V ramci´ ESB Apache ServiceMix se stav´ a´ silnym´ nastrojem.´ Moznˇ a´ azˇ prˇ´ılisˇ silnym.´ Nad- bytecnˇ a´ komunikacnˇ ´ı s´ıt’, jej´ımzˇ prostrednictvˇ ´ım mohou proudit i nenormalizovane´ zpravy´ (napr.ˇ obycejnˇ y´ text nebo JSON) predstavujeˇ problem.´ Takovyto´ parazit“ pripojenˇ y´ ke sber-ˇ ” nici totizˇ narusujeˇ cely´ koncept ESB. Nekterˇ e´ komunikacnˇ ´ı body spolu nemohou komuniko- vat prˇ´ımo, bud’ z duvodu˚ vy´seˇ zm´ınenˇ e´ nekompatibility zprav,´ nebo jejich um´ıstenˇ ´ı. Zpusob˚ vyuzitˇ ´ı Apache Camel je proto trebaˇ volit opatrneˇ a omezit se prav´ eˇ na kompozici sluzeb.ˇ Podobneˇ jako orchestrace za pomoci komponenty servicemix-jsr181 vsakˇ mu˚ zeˇ byt´ kom- pozice sluzebˇ pod Apache Camel obt´ıznˇ a.´ Kniha Open-Source ESBs in Action ([7], str.130) naprˇ´ıklad definuje proces vyhledan´ ´ı knihy v systemu´ knihkupce za pomoci dev´ıti navrho-´ vych´ vzoru.˚ Implementace navrhov´ ych´ vzoru˚ je v Apache Camel obecna,´ takzeˇ tem´ eˇrˇ kazdˇ y´ prvek smerovˇ an´ ´ı ciˇ transformace mus´ı byt´ upraven za pomoci Java kodu,´ nebo jednoho z podporovanych´ skriptovac´ıch jazyku.˚ Vetˇ sinaˇ prace´ tak opetˇ dopada´ na vyvoj´ a´re.ˇ Jedna´ se vsakˇ o znacnˇ e´ zlepsenˇ ´ı oproti predchozˇ ´ımu zpusobu.˚

Apache Orchestration Director Engine (AODE)

V soucasnˇ e´ dobeˇ je vedouc´ım standardem na poli kompozice sluzebˇ jazyk BPEL (Business Process Execution Language). Jak uzˇ jeho nazev´ napov´ıda,´ je urcenˇ predevˇ sˇ´ım pro tvorbu podnikovych´ procesu,˚ nicmen´ eˇ s jeho pomoc´ı lze provad´ etˇ i kompozici sluzebˇ na nizˇsˇ´ıch vrstvach.´ BPEL ma´ pomernˇ eˇ dlouhou historii. Vznikl kombinac´ı jazyku˚ WSFL a XLANG

21 2. TECHNOLOGIEPROVYBUDOVAN´ ´IINFRASTRUKTURY spolecnostˇ ´ı IBM a Microsoft. Jeho prvn´ı verze byly popsany´ ve standardech BPEL4WS 1.0 a BPEL4WS 1.1 a v soucasnˇ e´ dobeˇ lze jeho posledn´ı podobu nalezt´ ve standardu WS-BPEL 2.0. Jelikozˇ je tento jazyk dobreˇ popsan´ v jinych´ prac´ıch (napr.ˇ [14]), omez´ı se tento text pouze na vyuzitˇ ´ı BPEL v ramci´ ASM. Jazyku BPEL je castoˇ vytyk´ ano´ to, zeˇ je postaven nad XML. To ma´ totizˇ byt´ predevˇ sˇ´ım zdrojem dat a rˇ´ıdce se vyskytuj´ıc´ı procesn´ı informace maj´ı byt´ obsazenyˇ pouze v jeho prova-´ decˇ ´ıch instrukc´ıch. I presˇ tuto kritiku ma´ BPEL velmi silnou pozici – tem´ eˇrˇ kazdˇ a´ implemen- tace ESB postavena´ nad JBI obsahuje SE pro jeho podporu. V ASM se pro zpracovan´ ´ı jazyka BPEL vyuzˇ´ıva´ komponenta zalozenˇ a´ na projektu Apache ODE, kterou lze rovneˇzˇ vyuzˇ´ıt jako samostatnou webovou aplikaci. Jako webova´ aplikace pracuje AODE podle ocekˇ av´ an´ ´ı, ovsemˇ v prostredˇ ´ı JBI kontejneru nastavaj´ ´ı pot´ıze.ˇ Jejich hlavn´ı prˇ´ıcinouˇ je obecna´ nekompatibilita zprav´ v ASM: do NMR mo- hou nekterˇ e´ komponenty zas´ılat zpravy,´ ktere´ zachovavaj´ ´ı SOAP obalku´ nebo neprovad´ ejˇ ´ı konverzi z WSDL 1.1 do WSDL 2.0. Apache ODE se snazˇ´ı tuto situaci vyreˇ sitˇ tzv. mappery. Ty jsou odpovednˇ e´ za prevzetˇ ´ı ruzn˚ ych´ zprav´ ze sbernice.ˇ Vyskytuj´ı se ve trechˇ implemen- tac´ıch:

JbiWsdl11WrapperMapper – zpracovav´ a´ WSDL 1.1 zpravy´ transformovane´ za pomoci JBI wrapperu

ServiceMixMapper – mapper urcenˇ y´ pro WSDL 2.0 zpravy´

DocLitMapper – zajistˇ ’uje propojen´ı s extern´ımi webovymi´ sluzbamiˇ

Kazdˇ emu´ mapperu pritomˇ odpov´ıda´ urcitˇ a´ skupina komponent. Moznost,ˇ jak provad´ etˇ kompozici sluzebˇ mezi temitoˇ skupinami, v AODE neexistuje. Dalsˇ´ı nevyhodou´ AODE je jeho neschopnost zpracovavat´ binarn´ ´ı data. Nedoka´zeˇ totizˇ vyuzˇ´ıvat mechanismu popsaneho´ ve specifikaci JSR-208. Priˇ zpracovan´ ´ı zprav´ s nekompri- movanymi´ datovymi´ typy base64Binary a hexBinary pak dochaz´ ´ı k velkym´ pozadav-ˇ kum˚ na operacnˇ ´ı pametˇ ’ a cely´ proces zacneˇ vykazovat znacnouˇ chybovost (priˇ zapnutem´ logovan´ ´ı se system´ zhrout´ı upln´ e).ˇ Tento nedostatek je snad docasnˇ y,´ protozeˇ ke zpracovan´ ´ı zprav´ pouzˇ´ıva´ AODE projekt Axis, ktery´ podporuje oba standardy – WS-I Attachments Pro- file 1.0 i W3C XML-binary Optimized Packaging.

Vyb´ erˇ zpusobu˚ orchestrace pro budovany´ system´ Jak je patrne´ z predchozˇ ´ıho textu, orchestrace v Apache ServiceMix (zvla´stˇ eˇ priˇ nutnosti zpracovavat´ binarn´ ´ı data) je ponekudˇ problematicka.´ Komponenta servicemix-jsr181 nen´ı vybavena potrebnouˇ funkcionalitou a vyuzitˇ ´ı Apache Camel by zase vyustilo´ ve vytvorenˇ ´ı komplexn´ı komunikacnˇ ´ı s´ıte,ˇ ktera´ by byla naro´ cnˇ a´ na spravu.´ Nejflexibilnejˇ sˇ´ı je proto vyuzitˇ ´ı jazyka BPEL. V tom prˇ´ıpadeˇ se ovsemˇ mus´ı kompozice sluzebˇ vyrovnat s nemoznostˇ ´ı pre-ˇ nosu binarn´ ´ıch dat v Apache ODE. Zust˚ av´ a´ otazkou,´ procˇ nenahradit komponetu Apache ODE jinym´ BPEL SE, ktery´ by prenosˇ binarn´ ´ıch dat umozˇnoval.ˇ Podle specifikace JSR-208 by totizˇ kazdˇ a´ JBI komponenta melaˇ byt´ instalovatelna´ v libovolnem´ JBI konejneru. Teoreticky by tedy meloˇ byt´ moznˇ e´ vyuzˇ´ıt napr.ˇ BPEL SE z OpenESB. Integrace teto´ komponenty do ASM skutecnˇ eˇ nen´ı ne- moznˇ a,´ nicmen´ eˇ z duvodu˚ ruzn˚ eho´ formatu´ normalizovanych´ zprav´ je jej´ı vyuzitelnostˇ mi- nimaln´ ´ı.

22 2. TECHNOLOGIEPROVYBUDOVAN´ ´IINFRASTRUKTURY

Proto je nutne´ zustat˚ u Apache ODE a pouze dodat funkcionalitu pro prenosˇ binarn´ ´ıch dat. To je moznˇ e´ zajistit napr.ˇ jednoduchou prenosovouˇ sluzbou.ˇ Pokud v komponovanych´ procesech nejsou binarn´ ´ı data vyuzitaˇ k rˇ´ızen´ı toku, je moznˇ e´ je vytknout“ z celeho´ procesu ” a nahradit unikatn´ ´ım identifikatorem.´ V systemu´ je pak vystavena sluzba,ˇ ktera´ spojuje tento identifikator´ s binarn´ ´ım obsahem. Mu˚ zeˇ se zdat,´ zeˇ takova´ sluzbaˇ porusujeˇ zasadu´ SOA o volne´ vazbeˇ sluzeb.ˇ Jelikozˇ se vsakˇ jedna´ o docasnˇ e´ reˇ senˇ ´ı, ktere´ sp´ıseˇ upravuje chovan´ ´ı JBI, byl tento zpusob˚ nakonec vyuzitˇ i priˇ implementaci systemu´ ASCMS.

23 Kapitola 3 XML datab´aze

XML predstavujeˇ prirozenˇ y´ metajazyk pro zachycen´ı nestrukturovaneho´ obsahu. Je snadno zpracovatelne,´ nezavisl´ e´ na prostredˇ ´ı a je take´ rozsiˇ ritelnˇ e,´ takzeˇ mu˚ zeˇ zachycovat libo- volnou informaci. D´ıky XSLT transformac´ım mu˚ zeˇ byt´ nav´ıc ulozenˇ y´ obsah prezentovan´ ruzn˚ ym´ zpusobem.˚ Vyhody´ tohoto formatu´ proto ocenujeˇ i mnoho ECMS (napr.ˇ system´ Do- cumentum – viz 1.3). Rovneˇzˇ system´ ASCMS (popsany´ v nasleduj´ ´ıc´ı kapitole) vyzadujeˇ pro praci´ s dokumenty podporu XML databaz´ ´ı. Vetˇ sˇ´ı objem dat zachyceny´ prostrednictvˇ ´ım XML vsakˇ vyzadujeˇ specificky´ prˇ´ıstup. Pre-ˇ devsˇ´ım nelze vyuzˇ´ıt relacnˇ ´ıch databaz´ ´ı, ktere´ jsou urcenyˇ pouze pro strukturovana´ data. Proto se brzy po rozvoji XML zacalyˇ objevovat i databaze´ specializuj´ıc´ı se na uchovan´ ´ı tohoto formatu.´ V soucasnostiˇ je moznˇ e´ XML databaze´ povazovatˇ za ustalenou´ technologii, ktera´ se delˇ ´ı do dvou kategori´ı:

• XML-enabled (relacnˇ ´ı databaze´ s podporou XML)

• nativn´ıXML datab´aze (dale´ jen NXD)

Do prvn´ı kategorie spada´ velke´ mnozstvˇ ´ı beˇznˇ eˇ pouzˇ´ıvanych´ relacnˇ ´ıch databaz´ ´ı (napr.ˇ Oracle, MySQL, SQL 2005). Jedna´ se o databaze,´ ktere´ mohou prevˇ ad´ etˇ mezi svou vlastn´ı reprezentac´ı dat (tabulkami a rˇadky)´ a XML dokumenty. XML-enabled databaze´ ve svych´ datovych´ typech nepodporuj´ı tvorbu modelu doku- mentu a vetˇ sinouˇ pouzˇ´ıvaj´ı jednu z nasleduj´ ´ıc´ıch reprezentac´ı XML:

1. XML dokument se ulozˇ´ı jako text (obvykle jako typ Character Large Object – CLOB). Tento zpusob˚ ulozenˇ ´ı ma´ jedinou vyhodu´ – rychle´ ctenˇ ´ı a uklad´ an´ ´ı celeho´ dokumentu. Priˇ ostatn´ıch operac´ıch je nutne´ zrekonstruovat DOM, cozˇ je pro vetˇ sˇ´ı dokumenty nakladn´ a´ operace.

2. Na zaklad´ eˇ predemˇ zadaneho´ schematu´ dokumentu se aplikuje objektove-relaˇ cnˇ ´ı ma- povan´ ´ı. To vyuzˇ´ıva´ stejneho´ principu jako technologie JAXB1.Priˇ tomto zpusobu˚ re- prezentace se komplexn´ı datove´ typy namapuj´ı jako svazan´ e´ tabulky, kde jednoduche´ datove´ typy a atributy vystupuj´ı v roli sloupcu.˚ Objektove-relaˇ cnˇ ´ı mapovan´ ´ı ma´ vsakˇ raduˇ uskal´ ´ı. Pro komplexn´ı schemata´ mu˚ zeˇ vyustit´ v neefektivn´ı s´ıt’ tabulek, v nichzˇ vetˇ sinuˇ sloupcu˚ vyplnujˇ ´ı prazdn´ e´ hodnoty. Rovneˇzˇ postupny´ vyvoj´ schematu´ mu˚ zeˇ priˇ tomto zpusobu˚ ulozenˇ ´ı zpusobit˚ pot´ıze.ˇ Tyto prekˇ a´zkyˇ vedou k tomu, zeˇ se objek- tove-relaˇ cnˇ ´ıho mapovan´ ´ı vyuzˇ´ıva´ pouze v prˇ´ıpadech, kdy je schema´ pevneˇ dano´ a ma´ pravidelnou strukturu (priˇ ulozenˇ ´ı tzv. datoveˇ orientovanych´ XML dokumentu).˚

1. Java Architecture for XML Binding – viz http://java.sun.com/developer/ technicalArticles/WebServices/jaxb/.

24 3. XML DATABAZE´

XML-enabled databaze´ postacujˇ ´ı tem´ eˇrˇ pro veskerouˇ praci´ s XML dokumenty. Existuj´ı vsakˇ situace, ve kterych´ jsou jejich moznostiˇ omezuj´ıc´ı. Naprˇ´ıklad zpracovan´ ´ı rozsahl´ ych´ XML dokumentu˚ nebo provad´ enˇ ´ı velkeho´ mnozstvˇ ´ı lokaln´ ´ıch zmenˇ vyzadujeˇ odlisnˇ e´ reˇ senˇ ´ı. Jak uzˇ uvod´ kapitoly naznacil,ˇ jsou t´ımto reˇ senˇ ´ım nativn´ı XML databaze´ (NXD). Jejich za-´ kladn´ı charakteristiky by uvedeny v [4]:

• NXD pracuje nad modelem XML dokumentu, sp´ıˇseneˇznad jeho obsahem. Tento model mus´ızahrnovat z´akladn´ıstavebn´ıprvky XML: elementy, atributy a text. Pˇr´ıklademtakov´ehomodelu m˚uˇzeb´ytdatov´ymodel XML Infoset, modely odvo- zen´ez DOM a ud´alost´ıv SAX. NXD zpracov´av´adokumenty na z´akladˇetohoto modelu. • NXD definuje XML dokument jako z´akladn´ı´uloˇznoujednotku, podobnˇejako relaˇcn´ı datab´azedefinuje ˇr´adekv tabulce. • NXD m˚uˇzepouˇz´ıvat libovoln´yzp˚usobfyzick´ehouloˇzen´ı XML dokumentu, tj. m˚uˇzeb´ytpostavena nad relaˇcn´ınebo objektovˇe-orientovanoudatab´az´ınebo po- uˇz´ıvatsoubory s vlastn´ımpropriet´arn´ımform´atem.

V souhrnu tedy jde o databaze,´ ktere´ poskytuj´ı nesrovnatelneˇ lepsˇ´ı podporu pro zpra- covan´ ´ı XML dokumentu˚ nezˇ XML-enabled databaze.´ Doka´zˇ´ı pracovat nad jednotlivymi´ uzly dokumentu a maj´ı zdokonalene´ vyhodnocovan´ ´ı vyraz´ u.˚ To vseˇ bez predchozˇ ´ı znalosti schematu´ dokumentu.

3.1 Zp ˚usobyulozen´ıXMLˇ

Nativn´ı XML databaze´ lze rozdelitˇ podle zpusobu˚ organizace dat:

Textovˇeorientovan´e (resp. dokumentoveˇ orientovane)´ – Priˇ tomto zpusobu˚ je XML doku- ment ulozenˇ jako text. Narozd´ıl od XML-enabled databaz´ ´ı vyuzˇ´ıvaj´ıc´ıch stejneho´ prin- cipu je vsakˇ zarove´ nˇ vytva´renˇ postrann´ı index obsahuj´ıc´ı strom dokumentu, takzeˇ operace nad touto strukturou jsou efektivnejˇ sˇ´ı.

Modelovˇeorientovan´e (resp. uzloveˇ orientovane)´ – V techtoˇ NXD se dokument uklad´ a´ v hierarchicke´ struktureˇ (obvykle B-stromu). T´ım je moznˇ e´ zlepsitˇ indexaci doku- mentu a rychlost provad´ enˇ ych´ operac´ı.

Pro uzivateleˇ se tyto druhy odlisujˇ ´ı predevˇ sˇ´ım ve vykonu.´ Textoveˇ orientovane´ NXD jsou vhodne´ v prˇ´ıpadech, kdy se ulozenˇ y´ dokument upravuje zrˇ´ıdka a je nutne´ zvy´sitˇ rych- lost jeho ctenˇ ´ı. Naproti tomu modeloveˇ orientovane´ NXD poskytuj´ı bohatsˇ´ı funkcionalitu a doka´zˇ´ı rychle zpracovavat´ slozitˇ ejˇ sˇ´ı dotazy a transformace.

3.2 Rozhran´ı

Priˇ srovnan´ ´ı jednotlivych´ NXD lze postrehnoutˇ znacnouˇ nejednotnost v prˇ´ıstupu k jejich funkcionalite.ˇ Vyjimku´ tvorˇ´ı oblasti, ktere´ jsou pokryty obecnymi´ XML standardy – pre-ˇ devsˇ´ım jazyky XPath a XQuery. Organizace dokumentu,˚ zpusob˚ provad´ enˇ ´ı dotazu,˚ rˇ´ızen´ı prˇ´ıstupu a transakcnˇ ´ı zpracovan´ ´ı vsakˇ vzdyˇ zust˚ avaj´ ´ı specificke´ pro jednotlive´ databaze.´ Iniciativa XML:DB se pokusila o odstranenˇ ´ı tohoto nedostatku vytvorenˇ ´ım obecneho´ roz- hran´ı, ktere´ nese nazev´ XML:DB API. Jedna´ se o rozhran´ı zalozenˇ e´ na podobnych´ principech

25 3. XML DATABAZE´ jako JDBC – pro kazdouˇ nativn´ı XML databazi´ existuje implementace rozhran´ı radiˇ ce,ˇ na jehozˇ zaklad´ eˇ je moznˇ e´ z´ıskat prˇ´ıstup k databazi´ a dale´ pracovat jednotnym´ zpusobem:˚

String driver = "org.exist.xmldb.DatabaseImpl"; try { Class cl = Class.forName(driver); Database database = (Database) cl.newInstance(); DatabaseManager.registerDatabase(database); } catch (Exception ex) { ex.printStackTrace(); System.exit(1); }

Collection collection = DatabaseManager.getCollection(collectionURI);

XML:DB API pracuje s nasleduj´ ´ıc´ım modelem:

DatabaseManager – vstupn´ı bod API.

Resource – predstavujeˇ zdroj dat v databazi.´ Obvykle se jedna´ o XML dokument nebo jeho fragment, mu˚ zeˇ vsakˇ m´ıt i binarn´ ´ı obsah.

Collection – logicke´ seskupen´ı zdroju,˚ ktere´ mu˚ zeˇ m´ıt hierarchickou strukturu.

Service – funkcionalita vystavena´ v ramci´ kolekc´ı. Mezi zakladn´ ´ı sluzbyˇ patrˇ´ı podpora transakc´ı, XPath vyraz´ u˚ a sprava´ kolekc´ı.

Je nutne´ podotknout, zeˇ rozhran´ı XML:DB API netvorˇ´ı de facto standard. Existuje cela´ radaˇ databaz´ ´ı, ktere´ XML:DB API nepodporuj´ı. Predevˇ sˇ´ım jde o systemy,´ ktere´ nebyly vyvi- nuty v jazyce Java: Berkeley DB XML, dbXML nebo Natix.

3.3 Dotazovac´ıjazyky

Nepostradatelnou cˇast´ ´ı API vsechˇ databaz´ ´ı jsou dotazovac´ı jazyky (napr.ˇ pro relacnˇ ´ı da- tabaze´ je to jazyk SQL). Funkcionalitu, kterou takovy´ jazyk mus´ı zprˇ´ıstupnovat,ˇ je moznˇ e´ rozdelitˇ do ctyˇ rˇ kategori´ı:

• manipulace s daty

• definice dat

• rˇ´ızen´ı prˇ´ıstupovych´ prav´

• rˇ´ızen´ı transakc´ı

Pro NXD existuje cela´ radaˇ dotazovac´ıch jazyku.˚ Vetˇ sinaˇ z nich je proprietarn´ ´ıch, tj. urcenˇ ych´ pouze pro danou databazi.´ Existuj´ı vsakˇ i jazyky, ktere´ z´ıskali mezi XML da- tabazemi´ pozici de facto standardu. Mezi neˇ patrˇ´ı zm´ınenˇ a´ dvojice jazyku˚ XPath a XQuery. Tato dvojice je obdobou konstrukce SELECT u relacnˇ ´ıch databaz´ ´ı – umozˇnujeˇ vyb´ erˇ doku- mentu˚ nebo jejich cˇast´ ´ı a take´ vyhodnocovan´ ´ı vyraz´ u.˚ Oba jazyky tedy spadaj´ı do kategorie pro manipulaci s daty.

26 3. XML DATABAZE´

Soucˇast´ ´ı teto´ kategorie je ovsemˇ i zmenaˇ dat. V tomto smeruˇ se uzˇ jednotlive´ NXD rozchazej´ ´ı. Velmi castˇ a´ je vlastn´ı implementace XPath funkc´ı pro upravu´ dokumentu a take´ podpora standardu XUpdate. Ten patrˇ´ı mezi starsˇ´ı standardy – byl navrhnut iniciativou XML:DB uzˇ v roce 2000. Od te´ doby ho implementovala cela´ radaˇ NXD – mezi jinymi´ napr.ˇ Apache Xindice nebo eXist. Jedna´ se o XML jazyk, kterym´ je moznˇ e´ zaznacitˇ pozadovanouˇ zmenuˇ dokumentu:

• vytvorenˇ ´ı/odstranenˇ ´ı uzlu (resp. uzlu)˚

• pripojenˇ ´ı uzlu na zadane´ m´ısto v dokumentu

• ulozenˇ ´ı docasnˇ ych´ promennˇ ych´

Tomuto standardu lze vytknout snad jen jedinou vec.ˇ Nedefinuje totizˇ operaci presunutˇ ´ı uzlu. Takovato´ operace nad DOM je totizˇ men´ eˇ naro´ cnˇ a´ nezˇ odebran´ ´ı uzlu a jeho zpetnˇ e´ rekonstruovan´ ´ı v novem´ um´ıstenˇ ´ı. Co se ty´ceˇ definice dat, je beˇznˇ eˇ vyuzˇ´ıvano´ standardn´ı trojice: DTD, XML Schema a Relax NG (Schematron obvykle nen´ı podporovan).´ Jak bylo uvedeno vy´se,ˇ NXD pro ulozenˇ ´ı do- kumentu definici schematu´ nepotrebujˇ ´ı. Ta pouze poskytuje opernˇ y´ bod pro tvorbu indexu˚ a dodrzenˇ ´ı integritn´ıch omezen´ı. Posledn´ı dveˇ kategorie, tedy rˇ´ızen´ı prˇ´ıstupovych´ prav´ a rˇ´ızen´ı transakc´ı, se vymykaj´ı jakymkoliv´ standardum.˚ Pokud je funkcionalita transakc´ı ciˇ prˇ´ıstupovych´ prav´ vubec˚ pod- porovana,´ je obvykle soucˇast´ ´ı vlastn´ıho, nestandardn´ıho reˇ senˇ ´ı. XML:DB API sice definuje sluzbuˇ pro podporu transakc´ı, jej´ı kontrakt je vsakˇ ponekudˇ strucnˇ y,´ takzeˇ jej jednotlive´ da- tabaze´ splnujˇ ´ı ruzn˚ ym´ zpusobem.˚ Napr.ˇ databaze´ eXist omezuje zdroje dosazitelnˇ e´ v jedne´ transakci na jedinou kolekci.

3.4 Shrnut´ıvlastnost´ı

Nativn´ı XML databaze´ predstavujˇ ´ı idealn´ ´ı nastroj´ pro zpracovan´ ´ı nestrukturovaneho´ ob- sahu. Jejich aplikacnˇ ´ı rozhran´ı je vsakˇ nejednotne´ a obvykle nevhodne´ pro prostredˇ ´ı JBI kon- tejneru nebo webovych´ sluzeb.ˇ Predevˇ sˇ´ım jim chyb´ı univerzaln´ ´ı dotazovac´ı jazyk, ktery´ by umozˇnovalˇ nejen vyhodnocovan´ ´ı vyraz´ u˚ nad XML dokumenty, ale take´ zpracovan´ ´ı promen-ˇ nych,´ opakovane´ provad´ enˇ ´ı operac´ı a dalsˇ´ı funkce, ktere´ lze naj´ıt napr.ˇ u jazyka relacnˇ ´ıch databaz´ ´ı – PL/SQL. Prav´ eˇ takovy´ jazyk poskytuje knihovna dbXMLTL, ktera´ bude popsana´ v nasleduj´ ´ıc´ı ka- pitole. S jej´ı pomoc´ı bylo moznˇ e´ zaclenitˇ nativn´ı XML databazi´ eXist do budovaneho´ systemu´ a vyuzˇ´ıt tak funkcionality tohoto nastroje.´

27 Kapitola 4 ASCMS a n´astrojepro pr´acis dokumenty

4.1 OpenOffice a knihovna OO2ASCMS

4.1.1 Transformace form´at˚ukancel´aˇrskych´ dokument ˚u Dule˚ zitˇ ym´ bodem priˇ praci´ s dokumenty je schopnost prevoduˇ mezi ruzn˚ ymi´ formaty.´ Ve sve´ prechozˇ ´ı praci´ [3], ktera´ se zabyv´ a´ predevˇ sˇ´ım formaty´ prezentacnˇ ´ıch dokumentu˚ jsem zm´ınil nedostatky open source knihoven pro praci´ nejen s proprietarn´ ´ımi, ale i otevrenˇ ymi´ formaty.´ Ackolivˇ se (podle [2]) pro nekterˇ e´ formaty´ tento stav zmenil,ˇ stale´ existuj´ı duvody˚ procˇ nen´ı vhodne´ spolehat´ se priˇ prevoduˇ formatu´ dokumentu prˇ´ımo na jednotlive´ knihovny: obecnost – Knihovny pro praci´ s dokumety maj´ı ruzn˚ a´ rozhran´ı. Pro jednotny´ prˇ´ıstup k ob- sahu dokumentu˚ je proto nutne´ vytvoritˇ vlastn´ı framework (jako napr.ˇ SlideShow- Crawler popsany´ v [3]). podpora novych´ form´at˚u – Doba mezi vznikem noveho´ dokumentoveho´ formatu´ a vzni- kem open source knihovny je v mnoha prˇ´ıpadech neunosn´ a,´ jak je moznˇ e´ zaznamenat z prˇ´ıpadu knihovny ODFToolkit (jej´ı vyvoj´ byl dokoncenˇ azˇ v roce 2009, tedy dva roky po vydan´ ´ı standardu OpenDocument). z´avislostna prostˇred´ı –Vetˇ sinaˇ knihoven pro praci´ s formaty´ kancela´rskˇ eho´ bal´ıku Micro- soft Office je zavisl´ a´ na .NET prostredˇ ´ı.

Vhodnejˇ sˇ´ı se proto zda´ vyuzˇ´ıt API existuj´ıc´ıch aplikac´ı, ktere´ se na tuto problematiku specializuj´ı. Jedn´ım z nejznam´ ejˇ sˇ´ıch takovych´ nastroj´ u˚ je kancela´rskˇ y´ bal´ık OpenOffice.org. Kromeˇ toho, zeˇ ma´ sirokouˇ uzivatelskouˇ zakladnu´ (takzeˇ nehroz´ı zastaven´ı jeho vyvoje),´ podporuje velke´ mnozstvˇ ´ı format´ u,˚ ktere´ by bylo obt´ıznˇ e´ zpracovavat´ pouze za podpory specializovanych´ knihoven. Aplikace OpenOffice.org (dale´ jen OO) je pro tento u´ celˇ vhodna´ take´ pro sve´ otevrenˇ e,´ dokumentovane´ rozhran´ı1 a nezavislost´ na extern´ım prostredˇ ´ı. Po jej´ım spustˇ enˇ ´ım v server rezimuˇ 2 zacˇ´ına´ naslouchat na zadanem´ portu a je moznˇ e´ pracovat s jej´ımi komponentami prostrednictvˇ ´ım tzv. UNO (Universal Network Objects).

4.1.2 ASCMS2OO

Prav´ eˇ na praci´ s UNO je zalozenaˇ knihovna OO2ASCMS (OpenOffice to ASCMS), ktera´ byla vyvinuta jako nastroj´ pro prevodˇ mezi ruzn˚ ymi´ dokumentovymi´ formaty´ a extrakci

1. Dokumentaci k OpenOffice.org API je moznˇ e´ naleznout na http://api.openoffice.org/. 2. Zpusob˚ spustˇ enˇ ´ı OpenOffice.org jako serveru je popsan´ v prˇ´ıloze A.

28 4. ASCMS ANASTROJEPROPR´ ACISDOKUMENTY´ jejich obsahu. Transformace za pomoci UNO je prˇ´ımocarˇ a´ a ani knihovna ASCMS2OO se ji nesnazˇ´ı zmenit.ˇ Podobneˇ jako u beˇznˇ e´ prace´ s OO je dokument otevrenˇ a vzap´ etˇ ´ı ulozenˇ pod jinym´ formatem.´ Stejneˇ dule˚ zitˇ a´ jako transformace je vsakˇ i schopnost extrakce obsahu. V ECMS jsou na teto´ vlastnosti zavisl´ e´ predevˇ sˇ´ım komponenty pro indexaci a fulltextove´ vyhledav´ an´ ´ı. Naprˇ´ıklad system´ Documentum (viz 1.3) prevˇ ad´ ´ı nekterˇ e´ dokumenty do XML a na zaklad´ eˇ teto´ reprezentace pak doka´zeˇ priˇ fulltextovem´ vyhledav´ an´ ´ı presnˇ eˇ urcitˇ dokument i odsta- vec, ve kterem´ se hledany´ text nachaz´ ´ı. Dokonce podporuje automatickou kategorizaci do- kumentu na zaklad´ eˇ jeho kl´ıcovˇ ych´ slov a vlastn´ı semantick´ e´ databaze.´ ASCMS2OO se drzˇ´ı podobneho´ postupu. Priˇ extrakci obsahu dokumentu dojde k jeho prevedenˇ ´ı do formatu´ DocBook3, ktery´ zarucuje,ˇ zeˇ je zachovana´ jeho logicka´ struktura a zeˇ jej bude moznˇ e´ znovu sestavit. Jako format´ je DocBook dostatecnˇ eˇ jednoduchy,´ aby s n´ım ostatn´ı nastroje´ mohly pracovat. Formatovac´ ´ı informace (velikost, typ p´ısma, odsa- zen´ı apod.) se vsakˇ priˇ takoveto´ transformaci ztrat´ı. Pro upresnˇ enˇ ´ı je nutne´ uvest´ zmenuˇ ve schematu´ formatu´ DocBook, kterou knihovna ASCMS2OO vyuzˇ´ıva.´ Jelikozˇ DocBook nedefinuje element pro vlozenˇ y´ dokument, bylo nut- ne´ priˇ prevoduˇ zaznacovatˇ tyto objekty za pomoci vlastn´ıho elementu embedded. Exis- tuj´ıc´ım elementum˚ pro obrazky´ a audio soubory je pridˇ an´ atribut objectReference, za- znamenavaj´ ´ıc´ı jmeno´ vlozenˇ eho´ objektu. Protozeˇ vysledek´ nelze povazovatˇ za validn´ı Doc- Book, je v nasleduj´ ´ıc´ım textu oznacovˇ an´ jako ASCMSDocBook. Dokument v tomto formatu´ mu˚ zeˇ vypadat nasledovn´ e:ˇ

Obrazek´ OpenDraw

K prevoduˇ do ASCMSDocBook je vyuzitoˇ vlastnosti aplikace OpenOffice – moznostˇ defi- novat vlastn´ı trˇ´ıdy pro konverzi format´ u˚ – tzv. filtry. To je moznˇ e´ provest´ dvoj´ım zpusobem:˚ • Pro obecnou transformaci je nutne´ implementovat dvojici sluzebˇ pro prevodˇ z Open- Document do pozadovanˇ eho´ formatu´ a zpet.ˇ • Pokud se transformace odehrav´ a´ nad jinym´ XML formatem´ je moznˇ e´ pouze defino- vat XSLT sablonyˇ pro prevodˇ z OpenDocument do pozadovanˇ eho´ XML dokumentu

3. V´ıce o tomto formatu´ je uvedeno napr.ˇ v [11].

29 4. ASCMS ANASTROJEPROPR´ ACISDOKUMENTY´

a zpet.ˇ Nevyhodou´ tohoto postupu je vsakˇ nemoznostˇ extrahovat vlozenˇ e´ objekty (obrazky,´ zvuky, jine´ dokumenty apod.).

Prav´ eˇ druheho´ zpusobu˚ vyuzˇ´ıva´ knihovna ASCMS2OO (resp. jej´ı trˇ´ıda Exporter). Aby vsakˇ bylo moznˇ e´ z´ıskat obsah vcetnˇ eˇ vlozenˇ ych´ objektu,˚ provede se po aplikaci sablonyˇ i dodatecnˇ a´ extrakce za pomoci UNO. Vysledek´ extrakce je tedy nasleduj´ ´ıc´ı: • XML ve formatu´ ASCMSDocBook

• vlozenˇ e´ objekty • metadata dokumentu (autor, jazyk, kl´ıcovˇ a´ slova atd.) Priˇ opacnˇ em´ postupu (otevrenˇ ´ı extrahovaneho´ obsahu jako dokumentu v OpenOffice.org) je opetˇ nutne´ upravit praci´ s vlozenˇ ymi´ objekty. V tomto prˇ´ıpadeˇ uzˇ nen´ı moznˇ e´ vyuzˇ´ıt UNO. Priˇ nacˇ´ıtan´ ´ı totizˇ XSLT sablonaˇ prevedeˇ ASCMSDocBook na XML dokument ve formatu´ OpenDocument, ve kterem´ jsou vlozenˇ e´ objekty zastoupeny odkazy s relativn´ı cestou. O- penOffice.org nasledn´ eˇ vyhodnot´ı tyto odkazy jako neplatne´ a objekty z dokumentu vyradˇ ´ı. Proto trˇ´ıda Importer, ktera´ zodpov´ıda´ za nactenˇ ´ı extrahovaneho´ obsahu do UNO pro- stredˇ ´ı, vytvorˇ´ı dokument ve formatu´ OpenDocument vlastn´ımi prostredkyˇ 4 a teprve ten je pouzitˇ pro dalsˇ´ı zpracovan´ ´ı.

4.2 Knihovna dbXMLTL (Database XML Tag Library)

Nativn´ı XML databaze´ predstavujˇ ´ı pro ECMS uziteˇ cnˇ y´ nastroj´ pro ulozenˇ ´ı a zpracovan´ ´ı do- kumentu.˚ Priˇ jejich vyuzitˇ ´ı v ESB je ovsemˇ nutne´ standardizovat prˇ´ıstup k jejich funkciona- lite.ˇ Prav´ eˇ o to se snazˇ´ı knihovna dbXMLTL, ktera´ poskytuje jednoduchy´ skriptovac´ı XML jazyk pro praci´ s NXD. V soucasnˇ e´ dobeˇ jsou v ramci´ dbXMLTL podporovany´ databaze´ Berkeley DB XML a eXist. Jelikozˇ podpora eXist je z vetˇ sˇ´ı cˇasti´ zalozenaˇ na rozhran´ı XML:DB API, je moznˇ e´ ji pomernˇ eˇ snadno upravit i pro dalsˇ´ı NXD s podporou tohoto rozhran´ı – Apache XIndice, OZONE, BaseX a dalsˇ´ı. Jak uzˇ bylo uvedeno, hlavn´ı rozhran´ı dbXMLTL tvorˇ´ı skriptovac´ı XML jazyk, ktery´ je vhodny´ zejmena´ pro prostredˇ ´ı JBI kontejneru. Pro libovolny´ skript pritomˇ plat´ı, zeˇ pokud se omez´ı pouze na zakladn´ ´ı XPath funkce, je moznˇ e´ jej vyuzˇ´ıt v libovolne´ z podporovanych´ da- tabaz´ ´ı. K vyhodnocovan´ ´ı se pouzˇ´ıva´ (podobneˇ jako v projektech Ant, Maven nebo Cocoon) knihovna Apache Jelly. Zpracovan´ ´ı tedy prob´ıha´ nasleduj´ ´ıc´ım zpusobem:˚

• Urcˇ´ı se kolekce podporovanych´ tagu˚ a jim odpov´ıdaj´ıc´ıch trˇ´ıd pro jejich zpracovan´ ´ı – tzv. knihovna tagu˚ .

• Vstupn´ı promennˇ e,´ ktere´ jsou potrebaˇ behemˇ vyhodnocovan´ ´ı skriptu, se ulozˇ´ı do zakladn´ ´ıho kontextu.

• Nastav´ı se zdroj XML dokumentu, ktery´ tvorˇ´ı skript, a vystup´ vyhodnocovan´ ´ı.

4. Priˇ existenci XSLT sablonyˇ pro vytvorenˇ ´ı XML obsahu je sestaven´ı dokumentu jednoduchou zale´ zitostˇ ´ı. Stacˇ´ı vytvoritˇ ZIP archiv obsahuj´ıc´ı vysledek´ XSLT transformace, vnorenˇ e´ objekty a soubor META-INF/manifest.xml, ktery´ uvad´ ´ı soupis vsechˇ souboru˚ v archivu. V´ıce je o formatu´ OpenDocument uvedeno v praci´ [3].

30 4. ASCMS ANASTROJEPROPR´ ACISDOKUMENTY´

• Jelly postupneˇ parsuje XML skript. Jakmile naraz´ı na SAX udalost´ odpov´ıdaj´ıc´ı pred-ˇ volenemu´ tagu, vytvorˇ´ı se podle knihovny tagu˚ prˇ´ıslusnˇ y´ objekt a predˇ a´ se mu rˇ´ızen´ı. Tento objekt mu˚ zeˇ z´ıskavat´ informace ze vsechˇ predkˇ u˚ aktualn´ ´ıho elementu, cˇ´ıst nebo menitˇ promennˇ e´ a provad´ etˇ zapis´ na vystup.´ Knihovna dbXMLTL ovsemˇ provad´ ´ı tyto akce ve sve´ vlastn´ı rezii,ˇ takzeˇ je moznˇ e´ pouze urcitˇ implementaci rozhran´ı QueryProcesser a nasledn´ eˇ spustit vyhodnocovan´ ´ı (viz na-´ sleduj´ıc´ı prˇ´ıklad).

// prˇıprava´ QueryProcesser processer = getProcesser(); Map variables = new HashMap(); variables.put( QueryProcesser.VAR_TARGET, "xmldb:exist://localhost:8082/exist/xmlrpc/db"); InputSource source = getScript("query.xml"); DOMResult domResult = new DOMResult();

// zahajen´ ı´ try { processer.process(variables, source, domResult); } catch (ProcessException ex) { logger.warn("Zpracovan´ ı´ bylo spatnˇ eˇ iniciovano!",´ ex); }

// zısk´ an´ ı´ promennˇ e´ nastavene´ v˜prub˚ ehuˇ zpracovan´ ı´ String documentName = variables.get("documentName"); ... private QueryProcesser getProcesser() { return new EXistProcesser(); }

private InputSource getScript(String scriptName) { InputStream is = this.getClass(). getResourceAsStream(scriptName); return new InputSource(is); }

Provad´ enˇ ´ı skriptu˚ na zaklad´ eˇ Apache Jelly je castoˇ podrobovano´ stejne´ kritice jako jazyk BPEL – XML ma´ byt´ predevˇ sˇ´ım zdrojem dat. K provad´ enˇ ´ı akc´ı v XML maj´ı slouzitˇ instrukce pro zpracovan´ ´ı. Nav´ıc neexistuj´ı nastroje,´ ktere´ by v Apache Jelly umozˇnovaliˇ ladenˇ ´ı skriptu˚ (k dispozici je pouze logovan´ ´ı). Knihovna dbXMLTL rozsiˇ rujeˇ zakladn´ ´ı knihovnu tagu˚ Apache Jelly a k elementum˚ pro rˇ´ızen´ı skriptu dodav´ a´ nove´ pro praci´ s NXD. Je tak moznˇ e´ vyuzˇ´ıt nasleduj´ ´ıc´ıch funkc´ı: 1. manipulace s daty za pomoci XUpdate, XQuery a XPath 2. podm´ınenˇ e´ vyhodnocovan´ ´ı skriptu (tagy if, when-choose-otherwise, while, continue, break a for-each) 3. zpracovan´ ´ı promennˇ ych´ a referenc´ı na dokument Skript pro prˇ´ıstup k databazi´ mu˚ zeˇ vypadat nasledovn´ e:ˇ

31 4. ASCMS ANASTROJEPROPR´ ACISDOKUMENTY´

Hello, ${userName}, how are you!

Popis elementu˚ umozˇnujˇ ´ıc´ıch praci´ s NXD se nachaz´ ´ı v prˇ´ıloze C a prˇ´ıslusnouˇ dokumen- taci lze naleznout na priloˇ zenˇ em´ CD a na strank´ ach´ projektu5. Je nutne´ zm´ınit i nevyhody´ teto´ knihovny. Abstrakce, ktera´ dovoluje pristupovatˇ k NXD jednotnym´ zpusobem,˚ zarove´ nˇ omezuje rozsˇ´ırenouˇ funkcionalitu jednotlivych´ databaz´ ´ı. Priˇ implementaci totizˇ bylo nutne´ zvolit kontrakt proveditelny´ pro vsechnyˇ NXD. T´ım zanikaj´ı prednostiˇ jako transakce prob´ıhaj´ıc´ı presˇ v´ıce kolekc´ı a hierarchicka´ struktura kolekc´ı. Abs- trakce nav´ıc nen´ı nikdy upln´ a´ – kazdˇ a´ databaze´ ma´ svoji vlastn´ı knihovnu podporovanych´ XPath funkc´ı. Dale´ je trebaˇ zm´ınit problemy´ se specialn´ ´ımi znaky. XQuery dotazy pouzˇ´ıvaj´ı ve sve´ syntaxi znaky ’$’, ’{’ a ’}’. Tyto znaky ovsemˇ pouzˇ´ıva´ i Apache Jelly pro zaznacenˇ ´ı vyrazu,´ ktery´ ma´ byt´ dale´ vyhodnocovan.´ Ackolivˇ je moznˇ e´ nahradit tyto znaky escape sekvenc´ı, vysledek´ mu˚ zeˇ byt´ neprehlednˇ y.´

4.3 ASCMS

4.3.1 Analyza´ pozadavkˇ ˚ua n´avrhsyst´emu Jedn´ım z c´ılu˚ teto´ prace´ je kromeˇ analyzy´ existuj´ıc´ıch ECMS a vyvoje´ nastroj´ u˚ pro spravu´ dokumentu˚ take´ vyvoj´ jednoducheho´ CMS, ktery´ by tyto nastroje´ vyuzˇ´ıval. Jak uzˇ nazev´ teto´ sekce napov´ıda,´ t´ımto systemem´ je ASCMS (Apache ServiceMix Content Management System). Drˇ´ıve nezˇ vsakˇ bude popsan´ jeho navrh´ a zpusob˚ implementace je nutne´ uvest´ pozadavky,ˇ ktere´ vedly k jeho vzniku. Ty lze shrnout do trˇ´ı bodu:˚ • System´ mus´ı poskytovat zakladn´ ´ı funkcionalitu CMS. • Na vysledn´ e´ implementaci bude moznˇ e´ oveˇrit,ˇ zda architektura navrzenˇ a´ v prvn´ı ka- pitole je implementovatelna´ (ASCMS tak mus´ı slouzitˇ i jako proof of concept“). ” • System´ mus´ı byt´ flexibiln´ı pro dalsˇ´ı rozvoj6 a obsahovat pouze nezavisl´ e´ sluzby,ˇ jejichzˇ jednotlive´ implementace bude moznˇ e´ vzajemn´ eˇ zameˇnovat.ˇ

5. http://kore.fi.muni.cz:5080/deep/ascms 6. System´ je soucˇast´ ´ı projektu Semantick´ y´ e-learning (MUNI/G/0121/2009) – viz http://www.muni.cz/ people/4099/projects.

32 4. ASCMS ANASTROJEPROPR´ ACISDOKUMENTY´

Funkcnˇ ´ı pozadavkyˇ

Vysledn´ y´ system´ by melˇ v prvn´ı radˇ eˇ plnit funkci repozita´re,ˇ tak jak byla popsana´ v prvn´ı kapitole. Jeho zakladn´ ´ı datovou jednotkou bude dokument, jako souhrn nestrukturovaneho´ obsahu a metadat. Repozita´rˇ by melˇ poskytovat nasleduj´ ´ıc´ı funkcionalitu:

Podpora form´at˚u – Dokumenty bude moznˇ e´ vkladat´ a vyb´ırat ve vetˇ sinˇ eˇ klasickych´ format´ u˚ jako napr.ˇ OpenDocument Text, Microsoft Word nebo Rich Text Format.

Organizace – Organizace dokumentu˚ bude prob´ıhat na zaklad´ eˇ struktury podobne´ systemu´ souboru.˚

Spr´avametadat – Ke kazdˇ emu´ dokumentu bude moznˇ e´ priˇ clenitˇ mnozinuˇ atributu.˚ Na je- jich zaklad´ eˇ pak bude umoznˇ enoˇ rˇ´ızen´ı zivotnˇ ´ıho cyklu a vyhledav´ an´ ´ı. Rˇ ´ızen´ı zivotnˇ ´ı- ho cyklu dokumentu pritomˇ zahrnuje kromeˇ vytvorenˇ ´ı a odstranenˇ ´ı dokumentu take´ spravu´ jednotlivych´ verz´ı. Verze budou stejneˇ jako v kancela´rskˇ ych´ bal´ıc´ıch oznaco-ˇ vany´ dvemaˇ cˇ´ısly, ktere´ budou reprezentovat hlavn´ı a vedlejsˇ´ı verze dokumentu.

Fulltextov´evyhled´av´an´ı – Kazdˇ y´ dokument mus´ı byt´ moznˇ e´ naleznout podle jeho obsahu.

Zabezpeˇcen´ı –Ackolivˇ zabezpecenˇ ´ı komunikace, autentizace a autorizace uzivatelˇ u˚ nemus´ı byt´ prˇ´ımo implementovany,´ vysledn´ a´ architektura mus´ı takovou vlastnost umozˇnovat.ˇ

Jednotny´ vnitˇrn´ıform´atdokumentu – Jelikozˇ je system´ urcenˇ i pro dalsˇ´ı rozvoj, ktery´ mu˚ zeˇ zahrnovat nastroje´ pro praci´ s obsahem dokumentu, je nutne,´ aby byl dokument ulozenˇ i v nezavisl´ em´ intern´ım formatu,´ ktery´ by byl dostatecnˇ eˇ jednoduchy´ pro zpracovan´ ´ı.

Slozen´edokumentyˇ – V systemu´ mus´ı byt´ dostupne´ veskerˇ e´ cˇasti´ dokumentu, vcetnˇ eˇ vlo- zenˇ ych´ objektu˚ (obrazk´ u,˚ jinych´ dokumentu˚ apod.).

Zachov´an´ıform´atov´an´ı –Ackolivˇ system´ mus´ı podporovat export ze sveho´ vnitrnˇ ´ıho for- matu,´ melaˇ by existovat moznostˇ zachovan´ ´ı formatovac´ ´ıch informac´ı.

Nefunkcnˇ ´ı pozadavkyˇ

Aby architektura systemu´ splnovalaˇ prvky popsane´ v prvn´ı kapitole, a na vysledku´ tak bylo moznˇ e´ oveˇritˇ uvedeny´ koncept ECMS, mus´ı byt´ system´ zalozenˇ na vzajemn´ eˇ nezavisl´ ych´ komponentach.´ Kvuli˚ pozadavkuˇ na snadnou integraci mus´ı tyto komponenty definovat sva´ rozhran´ı jednotnym´ zpusobem.˚ V idealn´ ´ım prˇ´ıpadeˇ by system´ melˇ umozˇnovatˇ evidenci instalovanych´ komponent (prˇ´ıpadneˇ umozˇnovatˇ i jejich spravu).´ Jelikozˇ komponenty vystupuj´ı jako zcela samostatne,´ bezestavove´ cˇasti´ systemu,´ mus´ı byt´ definovan´ zpusob,˚ jakym´ bude jejich funkcionalita kombinovana.´ Tento zpusob˚ mus´ı zahrnovat i moznostiˇ rˇ´ızen´ı transakc´ı a prˇ´ıstupu.

Identifikace prˇ´ıpadu˚ uzitˇ ´ı

Nezbytnou soucˇast´ ´ı systemu´ je uzivatelskˇ e´ rozhran´ı, ktere´ by umozniloˇ prˇ´ıstup k jeho funk- cionalite.ˇ Na zaklad´ eˇ funkcnˇ ´ıch pozadavkˇ u˚ lze identifikovat prˇ´ıpady uzitˇ ´ı pro tenkeho´ kli- enta, ktery´ by tuto roli splnoval.ˇ Prˇ´ıpady uzitˇ ´ı jsou zachyceny na obrazku´ 4.1.

33 4. ASCMS ANASTROJEPROPR´ ACISDOKUMENTY´

Obrazek´ 4.1: Diagram prˇ´ıpadu uzitˇ ´ı

Popis prˇ´ıpadu˚ uzitˇ ´ı

Vyhled´an´ıdokumentu Po zadan´ ´ı slovn´ıho spojen´ı uzivatelemˇ system´ vyp´ıseˇ vsechnyˇ do- kumenty, ktere´ text obsahuj´ı. V prˇ´ıpade,ˇ zeˇ je text obsazenˇ ve v´ıce verz´ıch dokumentu, je vypsana´ pouze posledn´ı verze, ktera´ text obsahuje. Uzivatelˇ mu˚ zeˇ jeden z nalezenych´ do- kumentu˚ zvolit, cˇ´ımzˇ dojde k jeho zobrazen´ı a dalsˇ´ı akce budou provad´ enyˇ nad t´ımto doku- mentem.

Vybˇerzaˇrazen´ehodokumentu´ Po vyb´ eruˇ slozkyˇ a zobrazen´ı jej´ıho obsahu mu˚ zeˇ uzivatelˇ zvolit jeden z dokumentu,˚ ktere´ jsou ve slozceˇ zarazeny.ˇ Po zvolen´ı jsou zobrazeny vsechnyˇ podstatne´ informace o dokumentu (verze, atributy, prˇ´ılohy) a dalsˇ´ı akce prob´ıhaj´ı nad t´ımto dokumentem.

Vlozen´ıdokumentuˇ Po vyb´ eruˇ c´ılove´ slozkyˇ mu˚ zeˇ uzivatelˇ vlozitˇ do systemu´ novy´ doku- ment. Pro proveden´ı teto´ akce mus´ı uzivatelˇ v prˇ´ıslusnˇ em´ dialogu vyplnit nasleduj´ ´ıc´ı udaje:´

• pocˇate´ cnˇ ´ı nazev´ dokumentu

• soubor s dokumentem v jednom z podporovanych´ format´ u˚ (OpenDocument Text, Microsoft Word, Rich Text Format)

34 4. ASCMS ANASTROJEPROPR´ ACISDOKUMENTY´

Po usp´ eˇsnˇ em´ vlozenˇ ´ı dokumentu se v c´ılove´ slozceˇ vytvorˇ´ı pod zadanym´ nazvem´ novy´ dokument. V prˇ´ıpade,ˇ zeˇ dokument nen´ı moznˇ e´ zpracovat, bude uzivatelˇ informovan´ o prˇ´ı- cinˇ eˇ tohoto selhan´ ´ı.

Smaz´an´ıdokumentu Po vyb´ eruˇ dokumentu je uzivateliˇ mimo jine´ nab´ıdnuta i moznostˇ smazan´ ´ı dokumentu. Vyb´ erˇ teto´ akce zpusob˚ ´ı odstranenˇ ´ı dokumentu ze systemu´ vcetnˇ eˇ vsechˇ jeho verz´ı. Smazan´ ´ı dokumentu probehneˇ v porˇadku´ pouze v prˇ´ıpade,ˇ zeˇ nad zˇadnou´ z jeho verz´ı neprob´ıha´ jina´ operace.

Zvyˇsen´ıverze´ dokumentu Uzivatelˇ stejneˇ jako u vlozenˇ ´ı dokumentu zada´ soubor obsa- huj´ıc´ı dokument, m´ısto pocˇate´ cnˇ ´ıho nazvu´ a um´ıstenˇ ´ı vsakˇ urcˇ´ı pouze zpusob˚ zvy´senˇ ´ı verze, ktery´ urcuje,ˇ zda se zvy´sˇ´ı hlavn´ı nebo vedlejsˇ´ı cˇ´ıslo verze. Po usp´ eˇsnˇ em´ zvy´senˇ ´ı verze je vytvorenˇ novy´ dokument, ktery´ nahrad´ı vsechnyˇ vyskyty´ posledn´ı verze v adresa´rovˇ e´ strukture.ˇ Nova´ verze dokumentu z´ıskav´ a´ vsechnyˇ atributy verze predchozˇ ´ı (kromeˇ atributu˚ spjatych´ s verzovan´ ´ım a identifikac´ı dokumentu).

N´avratk pˇredchoz´ıverzi dokumentu Sn´ızenˇ ´ım verze dokumentu dojde k navratu´ k jeho predchozˇ ´ı verzi. Cˇ ´ıslo verze, ke ktere´ se dokument vrac´ı zavis´ ´ı na zpusobu˚ sn´ızenˇ ´ı:

• Priˇ sn´ızenˇ ´ı hlavn´ı verze dojde k odstranenˇ ´ı vsechˇ verz´ı dokumentu se stejnym´ cˇ´ıslem hlavn´ı verze.

• Priˇ sn´ızenˇ ´ı vedlejsˇ´ı verze dojde k odstranenˇ ´ı posledn´ı verze dokumentu.

Z´ısk´an´ıpˇr´ılohy Po vyb´ eruˇ dokumentu lze stahnout´ libovolnou z jeho prˇ´ıloh. Prˇ´ıloha je stazenaˇ vzdyˇ v takovem´ formatu,´ v jakem´ byla do dokumentu pridˇ ana.´

Export dokumentu Vybrany´ dokument je moznˇ e´ stahnou´ v libovolnem´ z podporovanych´ format´ u˚ (OpenDocument Text, Microsoft Word, Rich Text Format).

Vybˇerslo´ zkyˇ Uzivatelˇ mu˚ zeˇ opakovaneˇ provad´ etˇ vyb´ erˇ slozkyˇ za pomoci pruchodu˚ ad- resa´rovouˇ strukturou. Akce zpusob˚ ´ı zobrazen´ı slozkyˇ vcetnˇ eˇ jej´ıho obsahu.

Vytvoˇren´ıslozkyˇ Ve vybrane´ slozceˇ mu˚ zeˇ uzivatelˇ vytvoritˇ novou podslozkuˇ zadanou jmenem.´

Smaz´an´ıslozkyˇ Kazdouˇ vybranou slozkuˇ (s vyjimkou´ korenovˇ e)´ je moznˇ e´ smazat. Doku- menty, ktere´ byly zarazenyˇ pouze v stromove´ hierarchii mazane´ slozky,ˇ dale´ vystupuj´ı jako nezarazenˇ e.´

Odstranˇen´ıdokumentu ze slozkyˇ Po zobrazen´ı obsahu slozkyˇ je moznˇ e´ vyraditˇ doku- ment z adresa´rovˇ e´ struktury. Pokud po proveden´ı akce neexistuje slozka,ˇ ve ktere´ by byl dokument zarazen,ˇ vystupuje dale´ dokument jako nezarazenˇ y.´

35 4. ASCMS ANASTROJEPROPR´ ACISDOKUMENTY´

Zaˇrazen´ıdokumentu do slozkyˇ Uzivatelˇ si v seznamu nezarazenˇ ych´ dokumentu˚ vybere dokument, ktery´ si prejeˇ vratit´ do adresa´rovˇ e´ struktury. Nasledn´ eˇ zvol´ı c´ılovou slozkuˇ a na-´ zev, pod kterym´ bude dokument ve slozceˇ zarazen.ˇ Jakmile je dokument usp´ eˇsnˇ eˇ zarazenˇ do slozky,ˇ je automaticky vyjmut ze seznamu nezarazenˇ ych´ dokumentu.˚ Dokument lze zaraditˇ do v´ıce slozekˇ a v jedne´ slozceˇ mu˚ zeˇ byt´ jeden dokument zarazenˇ v´ıcekrat´ (pokazdˇ e´ ovsemˇ pod jinym´ nazvem).´

Identifikace komponent systemu´ Z funkcnˇ ´ıch pozadavkˇ u˚ a prˇ´ıpadu˚ uzitˇ ´ı lze urcitˇ datovy´ model systemu.´ Ten je zobrazen na diagramu trˇ´ıd na obrazku´ 4.2. Je vsakˇ trebaˇ dale´ specifikovat, jak bude tento model repre- zentovan´ za pomoci nezavis´ ych´ komponent.

Obrazek´ 4.2: Datovy´ model systemu´ ASCMS za pomoci diagramu trˇ´ıd

Nejdule˚ zitˇ ejˇ sˇ´ı otazkou´ je perzistence dat. V klasickych´ ECMS obykle existuje jedna cen- traln´ ´ı databaze,´ ktera´ predstavujeˇ datovou vrstvu pro ostatn´ı komponenty systemu.´ Nevy-´ hody tohoto usporˇad´ an´ ´ı byly popsany´ v prvn´ı kapitole – system´ je prˇ´ılisˇ staticky´ a existuj´ıc´ı data do nejˇ nemohou byt´ pridˇ ana´ jinym´ zpusobem˚ nezˇ migrac´ı. Aby bylo moznˇ e´ existuj´ıc´ı datove´ zdroje jednoduchym´ zpusobem˚ pridˇ avat´ ciˇ odstranovatˇ ze systemu,´ mus´ı vystupovat jako nezavisl´ e´ sluzby.ˇ Pak lze nad nimi vybudovat kompo- nentu, ktera´ pln´ı federativn´ı funkci a sdruzujeˇ je do jedineho´ virtualn´ ´ıho ulo´ ziˇ stˇ e.ˇ Na zaklad´ eˇ tohoto poznatku a pozadavkˇ u˚ na system,´ uzˇ lze identifikovat jednotlive´ kom- ponenty. Jejich usporˇad´ an´ ´ı je zobrazeno na diagramu komponent na obrazku´ 4.3. DocumentStorage slouzˇ´ı pro uchovan´ ´ı extrahovanych´ prˇ´ıloh dokumentu a souboru, po- moc´ı ktereho´ byl do systemu´ ulozen.ˇ Metadata umozˇnujeˇ praci´ s atributy dokumentu a take´ s adresa´rovouˇ strukturou. ProcessManager predstavujeˇ zarodek´ komponenty pln´ıc´ı federativn´ı funkci nad ostatn´ımi datovymi´ sluzbami.ˇ Umozˇnujeˇ transakcnˇ ´ı zpracovan´ ´ı a vytva´renˇ ´ı novych´ objektu˚ v sys- temu.´

36 4. ASCMS ANASTROJEPROPR´ ACISDOKUMENTY´

Obrazek´ 4.3: Komponenty systemu´ ASCMS

DocTransformer zpracovav´ a´ binarn´ ´ı data reprezentuj´ıc´ı dokumenty v ruzn˚ ych´ formatech.´ Predevˇ sˇ´ım slouzˇ´ı k extrakci obsahu a prevoduˇ mezi jednotlivymi´ formaty.´

XMLDocStorage zodpov´ıda´ za ulozenˇ ´ı dokumentu ve formatu´ ASCMSDocBook, jeho in- dexaci a vyhledav´ an´ ´ı.

CompositionEngine vyuzˇ´ıva´ funkcionality ostatn´ıch komponent a vytva´rˇ´ı z n´ı vlastn´ı apli- kacnˇ ´ı logiku celeho´ systemu.´

4.3.2 Implementace Platforma Uvedeny´ navrh´ lze realizovat mnoha ruzn˚ ymi´ zpusoby.˚ Zasadn´ ´ı je predevˇ sˇ´ım volba plat- formy, nad kterou bude system´ implementovan.´ Jak uzˇ bylo naznacenoˇ v druhe´ kapitole, nejvhodnejˇ sˇ´ı platformou pro tento system´ je ESB, ve kterem´ jednotlive´ komponenty vysta- vuj´ı sve´ sluzbyˇ prostrednictvˇ ´ım sd´ılene´ sbernice.ˇ Pro toto prostredˇ ´ı (presnˇ ejiˇ pro ESB Apache ServiceMix) byl take´ system´ puvodn˚ eˇ im- plementovan:´ komponenty zobrazene´ na diagramu komponent na obr. 4.3 jsou implemen- tovany´ jako servisn´ı jednotky. V zav´ eruˇ vyvoje´ vsakˇ byly zjistˇ enyˇ nekterˇ e´ chyby v Apache ServiceMix znemozˇnujˇ ´ıc´ı dokoncenˇ ´ı systemu.´ Jedna´ se predevˇ sˇ´ım o chybu v kompozici sluzeb.ˇ JBI komponenta Apache ODE nedoka´zeˇ zpracovat nekterˇ e´ zpravy´ z NMR a povazujeˇ je za chybne.´ Jelikozˇ se vsakˇ jedna´ o chybu, ktera´ by melaˇ byt´ v dalsˇ´ı verzi Apache ServiceMix opra- vena, bylo by zbytecnˇ e´ migrovat system´ do jineho´ prostredˇ ´ı. Proto bylo zvoleno nasleduj´ ´ıc´ı usporˇad´ an´ ´ı:

• Implementovane´ SU jsou vystaveny jako webove´ sluzbyˇ za pomoci projektu XFire a weboveho´ kontejneru Tomcat.

• Kompozice sluzebˇ prob´ıha´ opetˇ za pomoci projektu Apache ODE, ktery´ je moznˇ e´ vyuzˇ´ıt rovneˇzˇ jako webovou aplikaci.

37 4. ASCMS ANASTROJEPROPR´ ACISDOKUMENTY´

Vyhodou´ tohoto usporˇad´ an´ ´ı je, zeˇ webove´ sluzbyˇ lze zmenouˇ kompilace opetˇ vyuzˇ´ıt jako SU a instalovat do JBI kontejneru. Zbyv´ a´ popsat zpusob˚ implementace jednotlivych´ komponent. Podrobny´ popis rozhran´ı jednotlivych´ sluzebˇ lze nalezt´ v dokumentaci systemu´ ASCMS, ktery´ se nachaz´ ´ı na priloˇ zenˇ em´ CD a take´ na strank´ ach´ projektu7.

DocumentStorage Komponenta DocumentStorage slouzˇ´ı jako ulo´ ziˇ stˇ eˇ binarn´ ´ıch dat souvisej´ıc´ıch s dokumen- tem. Jedna´ se predevˇ sˇ´ım o vnorenˇ e´ objekty, uklad´ a´ se ovsemˇ take´ puvodn˚ ´ı binarn´ ´ı podoba dokumentu, ktera´ slouzˇ´ı pro zachovan´ ´ı formatovac´ ´ıch informac´ı. Reprezentace techtoˇ ob- jektu˚ v relacnˇ ´ı databazi´ je zobrazena na ERD na obrazku´ 4.4.

Obrazek´ 4.4: ERD komponenty DocumentStorage

K ulozenˇ ´ı dat je vyuzitoˇ relacnˇ ´ı databaze´ . Perzistence je zalozenaˇ na JPA8 a jeho implementaci EclipseLink.

Metadata Komponentu Metadata lze prirovnatˇ k LDAP serveru: prostrednictvˇ ´ım jej´ıho rozhran´ı je moznˇ e´ spravovat adresa´rovouˇ strukturu, ukladat´ do n´ı zaznamy´ a provad´ etˇ vyhledav´ an´ ´ı. Lze vsakˇ nalezt´ i rozd´ıly: • Komponenta se soustredˇ ´ı pouze na ulozenˇ ´ı jednoho typu objektu – dokumentu. • Objekty mohou byt´ zarazenyˇ na v´ıce m´ıstech adresa´rovˇ e´ struktury. • Ackolivˇ je moznˇ e´ priˇ vyhledav´ an´ ´ı objektu˚ vyuzˇ´ıt matematicke´ operatory,´ atributy jsou netypovane´ (resp. vzdyˇ jsou reprezentovany´ textovym´ retˇ ezcem).ˇ Aby bylo moznˇ e´ proveˇritˇ funkcnostˇ knihovny dbXMLTL, vyuzˇ´ıva´ adresa´rovˇ a´ sluzbaˇ Me- tadata pro datovou vrstu NXD eXist. Reprezentace dat, ktera´ vyuzˇ´ıva´ dvou XML souboru,˚ je zobrazena na obrazku´ 4.5.

7. http://kore.fi.muni.cz:5080/deep/ascms 8. Java Persistence API – viz http://java.sun.com/javaee/technologies/persistence. jsp.

38 4. ASCMS ANASTROJEPROPR´ ACISDOKUMENTY´

metadata.xml /root

document document

document @id ... @title @id ... @title

id: 1 „1“ „Sample1“ „1“2“ „Sample1“Sample2“ title: „Sample1“

... directory.xml /root

folder folder[@name=“root“] folder[@name=“unfiled“] name: „sample2“

path: /sample/sample2 folder[@name=“sample“]

subfolders: [] folder[@name=“sample2“] documents: [{id:1, name:“doc1“}] document[@id = 1 and @link = „doc1“]

Obrazek´ 4.5: Reprezentace adresa´rovˇ e´ struktury za pomoci XML

DocTransformer Komponenta DocTransformer slouzˇ´ı k praci´ s aplikac´ı OpenOffice.org. Umozˇnujeˇ transfor- maci formatu´ dokumentu, extrakci jeho vnorenˇ ych´ objektu˚ (obrazk´ u,˚ dokumentu˚ apod.) a take´ prevodˇ obsahu dokumentu do formatu´ ASCMSDocBook, ktery´ slouzˇ´ı jako vnitrnˇ ´ı re- prezentace dokumentu pro ostatn´ı nastroje.´ K temtoˇ operac´ım vyuzˇ´ıva´ knihovny dbXMLTL.

XMLDocStorage XMLDocStorage je dalsˇ´ı komponentou, ktera´ vyuzˇ´ıva´ NXD eXist a knihovnu dbXMLTL. Zajistˇ ’uje ulozenˇ ´ı dokumentu˚ ve formatu´ ASCMSDocBook. D´ıky podporeˇ Lucene 9 v NXD eXist jsou dokumenty indexovany´ a je moznˇ e´ nad nimi provad´ etˇ fulltextove´ vyhledav´ an´ ´ı.

ProcessManager Nejdule˚ zitˇ ejˇ sˇ´ı cˇast´ ´ı systemu´ ASCMS je komponenta ProcessManager. Jedna´ se o centraln´ ´ı prvek, ktery´ zajistˇ ’uje kompozici vystavenych´ sluzeb,ˇ atomicitu provad´ enˇ ych´ operac´ı a take´ prenosˇ binarn´ ´ıch dat. ProcessManager rovneˇzˇ predstavujeˇ rozhran´ı systemu.´ Klientske´ apli- kace mohou vyuzˇ´ıvat pouze sluzbyˇ vystavene´ touto komponentou.

9. System´ umozˇnujˇ ´ıc´ı indexaci textu a vyhledav´ an´ ´ı. Viz http://lucene.apache.org/.

39 4. ASCMS ANASTROJEPROPR´ ACISDOKUMENTY´

Ke kompozici sluzebˇ byl zvolen jazyk BPEL a webova´ aplikace Apache ODE (viz 2.3.2). Ackolivˇ je BPEL jazykem, ktery´ je urcenˇ sp´ıseˇ pro vysˇsˇ´ı urove´ nˇ abstrakce – kompozici pro- cesu,˚ se spravn´ ymi´ nastroji´ se osvedˇ cilˇ i pro implementaci aplikacnˇ ´ı logiky systemu.´

Procesy Kazdˇ a´ uzivatelskˇ a´ akce v systemu´ ASCMS je zpracovana´ za pomoci jednoho pro- cesu definovaneho´ jazykem BPEL. Jelikozˇ je moznˇ e´ tyto procesy skladat,´ je takto postaveny´ system´ dostatecnˇ eˇ flexibiln´ı pro dalsˇ´ı vyvoj.´ Na diagramu aktivit na obrazku´ 4.6 je zobrazena jedna z operac´ı – stazenˇ ´ı dokumentu.

Obrazek´ 4.6: Diagram aktivit pro proces stazenˇ ´ı dokumentu

Pˇrenosbin´arn´ıchdat Jedn´ım z problem´ u,˚ ktery´ bylo trebaˇ v prub˚ ehuˇ implementace kom- ponenty ProcessManager odstranit, byla neschopnost ODE pracovat s binarn´ ´ım obsahem zprav.´ Duvodem˚ je chybejˇ ´ıc´ı podpora standardu˚ MTOM a WS–Attachments, ktere´ by tuto funkcionalitu dokazaly´ zajistit. Stejneˇ jako u chybneho´ zpracovan´ ´ı zprav´ z NMR se jedna´ pouze o docasnouˇ chybu. ODE totizˇ vyuzˇ´ıva´ pro komunikaci s webovymi´ sluzbamiˇ pro- jektu Axis, ktery´ oba standardy podporuje.

40 4. ASCMS ANASTROJEPROPR´ ACISDOKUMENTY´

Binarn´ ´ı data nelze prenˇ a´setˇ ani za pomoci jejich textove´ reprezentace s vyuzitˇ ´ım da- tovych´ typu˚ base64Binary a hexBinary. V tomto prˇ´ıpadeˇ totizˇ neum´ ernˇ eˇ vzrustaj˚ ´ı naroky´ na pametˇ ’ a ODE zacneˇ priˇ provad´ enˇ ´ı procesu˚ vykazovat znacnouˇ chybovost. Proto ProcessManager reˇ sˇ´ı tento problem´ za pomoci sluzbyˇ TransferService, ktera´ slouzˇ´ı jako sd´ılene´ ulo´ ziˇ stˇ e:ˇ ulozenˇ a´ data jsou priˇ zpracovan´ ´ı procesu˚ reprezentovana´ svym´ identi- fikatorem,´ ktery´ je moznˇ e´ vyuzˇ´ıt k jejich vyb´ eru.ˇ Pro implementaci teto´ sluzbyˇ byla opetˇ vyuzitaˇ relacnˇ ´ı databaze´ Apache Derby a imple- mentace JPA EclipseLink.

Atomicita operac´ı Jelikozˇ kazdˇ a´ z komponent zachycuje pouze urcitouˇ cˇast´ modelu sys- temu,´ je pro kazdouˇ operaci nad t´ımto modelem nutne´ zajistit atomicitu, aby se system´ ne- dostal do nekonzistentn´ıho stavu. Protozeˇ jazyk BPEL sam´ o sobeˇ nemu˚ zeˇ tuto vlastnost poskytnout, je soucˇast´ ´ı komponenty ProcessManager take´ sluzbaˇ ManagerService, ktera´ u- mozˇnujeˇ uzamykan´ ´ı objektu.˚ Spolu s konstrukc´ı compensate jazyka BPEL, je moznˇ e´ zajistit atomicitu v nasleduj´ ´ıc´ı podobe:ˇ

• Predˇ proveden´ım zmenyˇ je dokument uzamcen.ˇ Dalsˇ´ı pokusy o uzamcenˇ ´ı selhavaj´ ´ı.

• Po radˇ eˇ jsou provedeny operace jednotlivych´ sluzeb,ˇ ktere´ zmenˇ ´ı stav dokumentu. V prˇ´ıpade,ˇ zeˇ nekterˇ a´ z operac´ı selze,ˇ je vracena´ chybova´ zprava,´ dopad provedenych´ akc´ı je za pomoci BPEL aktivity compensate odstranenˇ a dokument je odemcen.ˇ

• V prˇ´ıpadeˇ korektn´ıho proveden´ı vsechˇ akc´ı je dokument opetˇ odemcen.ˇ

Sluzbaˇ ManagerService ovsemˇ neslouzˇ´ı pouze k implementaci zamku´ na dokumentech, ale je predurˇ cenaˇ pro veskerˇ e´ operace, ktere´ mus´ı v systemu´ prob´ıhat centralizovane.ˇ Umoz-ˇ nujeˇ tak naprˇ´ıklad pridˇ elovˇ an´ ´ı a rusenˇ ´ı novych´ identifikator´ u˚ pro objekty.

Webovy´ klient Funkcionalita systemu´ je uzivatelˇ um˚ zprˇ´ıstupnenaˇ za pomoci weboveho´ klienta. K jeho im- plementaci bylo vyuzitoˇ technologie Java Server Faces a take´ open source knihovny Wood- stock, ktera´ pro tuto cˇast´ systemu´ poskytla ovladac´ ´ı prvky a design.

Nezavislost´ komponent Zav´ eremˇ je nutne´ zm´ınit zakladn´ ´ı vlastnost vsechˇ dosud popsanych´ komponent, ktera´ moz-ˇ na´ nebyla z predchozˇ ´ıho textu zretelnˇ a.´ Pro system´ ASCMS skutecnˇ eˇ plat´ı, zeˇ je vybudovan´ za pomoci nezavisl´ ych´ sluzeb.ˇ Priˇ dodrzenˇ ´ı patriˇ cnˇ eho´ kontraktu je moznˇ e´ jednotlive´ cˇasti´ systemu´ implementovat libovolnym´ zpusobem.˚ Naprˇ´ıklad komponenta Metadata nemus´ı byt´ zalozenaˇ na NXD eXist, ale mu˚ zeˇ vyuzˇ´ıvat LDAP serveru, nebo proste´ relacnˇ ´ı databaze.´

41 Kapitola 5 Z´avˇer

Jedn´ım z c´ılu˚ teto´ prace´ bylo prozkoumat architektury soucasnˇ ych´ podnikovych´ system´ u˚ pro spravu´ informac´ı a navrhnout jejich zlepsenˇ ´ı. Architektura popsana´ v prvn´ı kapitole skutecnˇ eˇ napravuje nekterˇ e´ chyby existuj´ıc´ıch system´ u˚ a je moznˇ e,´ zeˇ budouc´ı vyvoj´ ECMS se bude ub´ırat t´ımto smerem.ˇ V ramci´ prace´ byly vyvinuty dva nastroje´ slouzˇ´ıc´ı pro zpracovan´ ´ı dokumentu:˚

• knihovna dbXMLTL pro praci´ s nativn´ımi XML databazemi´

• knihovna ASCMS2OO pro praci´ s dokumentovymi´ formaty´ prostrednictvˇ ´ım aplikace OpenOffice.org

Oba tyto nastroje´ byly proveˇrenyˇ priˇ implementaci systemu´ ASCMS a ackolivˇ jsou urcenyˇ predevˇ sˇ´ım pro distribuovanou spravu´ dokumentu,˚ lze si predstavitˇ i jejich dalsˇ´ı vyuzitˇ ´ı (napr.ˇ pro e-learningove´ aplikace). Implementovany´ system´ ASCMS splnujeˇ funkcnˇ ´ı i nefunkcnˇ ´ı pozadavky,ˇ ktere´ na nejˇ byly kladeny a je dostatecnˇ eˇ flexibiln´ı pro dalsˇ´ı vyvoj.´ Ma´ vsakˇ i sve´ nedostatky. Prednˇ eˇ kvuli˚ sn´ızenˇ emu´ rozsahu prace´ postrad´ a´ rˇ´ızen´ı prˇ´ıstupu k dokumentum˚ na zaklad´ eˇ auten- tizace a autorizace. Kvuli˚ chybam´ v Apache ServiceMix a Apache ODE nevyuzˇ´ıva´ ASCMS technologie JBI, ale pouze webovych´ sluzeb.ˇ T´ım ztrac´ ´ı nekterˇ e´ uziteˇ cnˇ e´ vlastnosti jako napr.ˇ dynamicke´ smerovˇ an´ ´ı zprav.´ Aby bylo moznˇ e´ korektneˇ popsat oba vyvinute´ nastroje´ a system´ ASCMS, zabyv´ a´ se tato prace´ take´ souvisej´ıc´ımi technologiemi. Predevˇ sˇ´ım pojmem ESB, technologi´ı JBI a take´ problematikou nativn´ıch XML databaz´ ´ı.

42 Literatura

[1] HOHPE, G.; BOBBY, W. Enterprise Integration Patterns : Designing, building, and deploying messaging solutions. 2003. ISBN 978-0321200686.

[2] RICHARD, G.B. Export dat do form´at˚ukancel´aˇrsk´ychbal´ık˚u. Masarykova univerzita, 2009.

[3] MUDRAK,´ J. Extrakce dat z prezentaˇcn´ıchdokument˚u. Masarykova univerzita, 2007.

[4] STAKEN, K. Introduction to Native XML Databases. [online]. 2001, [cit. 1.12.2009] Do- stupne´ z www: http://www.xml.com/lpt/a/864

[5] TEN-HOVE R., WALKER P. (eds.) Java Business IntegrationTM (JBI) 1.0. Sun Microsys- tems, Inc., 2005.

[6] SCHNEIDER, C. Missing Email May Cost Morgan $10M [online]. CFO.com, [cit. 1.12.2009] Dostupne´ z www: http://www.cfo.com/article.cfm/4340197/c_ 4340354?f=TodayInFinance_Inside

[7] RADEMAKERS, T.; DIRKSEN, J. Open-Source ESBs in Action: Example Implementations in Mule and ServiceMix. 2008. ISBN 1933988215

[8] McKENDRICK, J. Here’s an SOA definition we can live with [online]. [cit. 2009-12-01]. Do- stupne´ z www: http://blogs.zdnet.com/service-oriented/?p=490

[9] HEWITT, E. Java SOA Cookbook. 2009. ISBN 978-0-596-52072-4.

[10] Is ServiceMix the Right ESB for Me? [online]. [cit. 2009-12-01]. Dostupne´ z www: http: //servicemix.apache.org/is-servicemix-the-right-esb-for-me.html.

[11] PITNER, T.; PAVLOVICˇ J. DocBook a jeho vyuˇzit´ı Zpravodaj UVT´ MU. ISSN 1212-0901, 2004, roc.ˇ XIV, c.ˇ 5, s. 10-14.

[12] SVˇ IK,´ M. CMIS: Nova´ era´ ECM. CIO Business World.cz [online]. 2009 [cit. 2009-12-01]. Dostupne´ z www: http://businessworld.cz/podnikove-is/ cmis-nova-era-ecm-4967

[13] MOSHER, B. Open Text, Autonomy, IBM Among Leaders in Records Management. CMSWire [online]. 2009 [cit. 2009-12-01] 20. cervnaˇ 2009. Dostupne´ z www: http://www.cmswire.com/cms/enterprise-cms/ open-text-autonomy-ibm-among-leaders-in-records-management-005065.php

[14] POSOLDA, M. Procesnˇeorientovan´yport´al. Masarykova univerzita, 2008.

[15] SLEZINGR,ˇ V. SOA vam´ pomu˚ zeˇ slozitˇ idealn´ ´ı informacnˇ ´ı system.´ The Blue Rose [on- line]. 2006 [cit. 2009-01-12]. Dostupne´ z www: http://www-05.ibm.com/cz/think/ download/bluerose0306.pdf

43 5. ZAV´ ERˇ

[16] TOWNSEND, E. The 25-Year History of Service-Oriented Architecture [online]. 2001 [cit. 1.12.2009] Dostupne´ z www: http://www.eriktownsend.com/

[17] What is ECM? [online]. [cit. 2009-12-01] Dostupne´ z www: http://www.aiim.org/ what-is-ecm-enterprise-content-management.aspx

[18] Zakon´ Ceskˇ e´ narodn´ ´ı rady, kterym´ se menˇ ´ı a doplnujeˇ zakon´ Ceskˇ e´ narodn´ ´ı rady c.ˇ 97/1974 Sb.

[19] , T.; GLAZER, D.; SCHAPER H. Enterprise Content Management Technology: What You Need to Know . 2004. ISBN 978-0973066258.

[20] ZHU, W.; etc. IBM FileNet P8 Platform and Architecture. 2009 [cit. 2009-12-01] Dostupne´ z www: http://www.redbooks.ibm.com/redbooks/pdfs/sg247667.pdf

[21] EMC Documentum Architecture: Foundations and Services for Managing Con- tent across Enterprise, EMC Corporation 2009, [online]. [cit. 2009-12-01] Do- stupne´ z www: http://www.emc.com/collateral/software/white-papers/ h3411-documentum-architecture-wp.pdf

44 Pˇr´ılohaA Instalace ASCMS

Navrh´ a implementace projektu ASCMS jsou popsany´ ve ctvrtˇ e´ kapitole. Tato prˇ´ıloha slouzˇ´ı jako instalacnˇ ´ı prˇ´ıruckaˇ tohoto systemu.´

A.1 Pozadavkyˇ na extern´ıprostˇred´ı

ASCMS ke sve´ spravn´ e´ funkci potrebujeˇ nasleduj´ ´ıc´ı sluzby:ˇ

• Relacnˇ ´ı databazi´ Apache Derby (10.5.3.0)

• Aplikaci OpenOffice.org 3.0 v server rezimuˇ

• Nativn´ı XML databazi´ eXist 1.4.0

• Webovy´ kontejner Tomcat ve verzi 6.0

• Webovou aplikaci Apache ODE 2.0Beta

Apache Derby

Nejjednodusˇsˇ´ım zpusobem˚ zprovoznenˇ ´ı teto´ databaze´ jako sluzbyˇ je instalace JavaDB1. Lze si ovsemˇ vystacitˇ i s pouhymi´ knihovnami Apache Derby. Na priloˇ zenˇ em´ CD se v adresa´riˇ /ascms/bin nachaz´ ´ı init skript JavaDB.sh pro spustˇ enˇ ´ı databaze´ nad zadanym´ adresa´remˇ za pomoci knihoven Apache Derby.

A.1.1 OpenOffice.org 3.0

Aplikaci, nainstalovanou standardn´ım zpusobem,˚ lze spustit v server rezimuˇ za pomoci prˇ´ıkazu:

-headless -nofirststartwizard -accept="socket,host=localhost,port=;urp; StarOffice.ServiceManager"

zastupuje spoustˇ ecˇ ´ı soubor. T´ımto zpusobem˚ spustˇ enˇ a´ aplikace pak nasloucha´ na zadanem´ portu a lze s n´ı pracovat jako s UNO serverem napr.ˇ za pomoci knihovny ASCMS2OO nebo JodConverter. OpenOffice lze zprˇ´ıstupnit i jako sluzbuˇ Windows. Navod´ je dostupny´ na strank´ ach´ autoru˚ knihovny JodConverter2. Init skript pro linuxove´ prostredˇ ´ı se nachaz´ ´ı opetˇ na priloˇ zenˇ em´ CD v souboru /ascms/bin/OpenOffice.sh.

1. Dostupne´ na www: http://developers.sun.com/javadb/. 2. http://artofsolving.com/node/11

45 A.INSTALACE ASCMS eXist

Databazi´ eXist je moznˇ e´ z´ıskat na http://exist-db.org/. Instalace prob´ıha´ bud’ za pomoci MSI bal´ıku nebo JAR archivu. Kvuli˚ nutnosti indexovat ukladan´ e´ dokumenty je nutne´ pod administratorsk´ ym´ u´ ctemˇ vytvoritˇ kolekci /db/system/config/db/documents a um´ıstit nasleduj´ ´ıc´ı obsah do sou- boru collection.xconf:

A.1.2 Tomcat

Tomcat ve verzi 6.0 lze stahnout´ na strank´ ach´ http://tomcat.apache.org/download-60. cgi. Pro spravn´ e´ logovan´ ´ı je nutne´ stahnout´ rozsˇ´ırenˇ ´ı a postupovat podle navodu´ na http: //tomcat.apache.org/tomcat-6.0-doc/logging.html.

A.1.3 Apache ODE 2.0Beta

Webova´ aplikace se nachaz´ ´ı na webu projektu http://ode.apache.org/ Jelikozˇ stabiln´ı verze 1.3.3 obsahuje nekterˇ e´ drobne´ chyby, je vhodne´ stahnout´ sp´ıseˇ verzi 2.0Beta. Po insta- laci, ktera´ prob´ıha´ klasickym´ zpusobem˚ je nutne´ zkontrolovat nastaven´ı chovan´ ´ı aplikace v souboru WEB-INF/conf/axis2.xml (uvedeny jsou pouze parametry, ktere´ se mohou zmenitˇ od cistˇ e´ instalace):

enableMTOM false enableSwA false transportReceiver,port port, na kterem´ je prˇ´ıstupna´ webova´ aplikace

46 A.INSTALACE ASCMS

A.1.4 Knihovny Predˇ instalac´ı prvn´ıch cˇast´ ´ı systemu´ ASCMS je nutne´ pridatˇ do weboveho´ kontejneru Tomcat nekterˇ e´ knihovny:

Knihovna Popis commons-logging-1.1.1.jar podpora Commons Logging commons-logging-api-1.1.jar jsf-api.jar podpora Java Server Faces jsf-impl.jar jstl.jar https://jstl.dev.java.net/download.html tomcat-juli-adapters.jar rozsˇ´ırenˇ ´ı weboveho´ kontejneru Tomcat tomcat-juli.jar

A.1.5 Kompilace projektu

Zkompilovane´ podprojekty se nachaz´ ´ı na priloˇ zenˇ em´ CD. Prˇ´ıpadneˇ je moznˇ e´ stahnout´ a zkom- pilovat aktualn´ ´ı verzi projektu. Projekt je um´ıstenˇ v SVN FI MUNI na stroji kore na adrese https://kore.fi.muni.cz:5443/repos/fi/projects/ascms. Sklad´ a´ se z nekolikaˇ pod- projektu:˚

Projekt Popis ASCMS2OO knihovna pro praci´ se serverem OpenOffice ASCMSBackendWebApp webova´ aplikace pro vystaven´ı sluzebˇ systemu´ ASCMSCommons knihovna se spolecnˇ ymi´ konstantami (vysledky´ operac´ı, atributy) ASCMSManager sluzbaˇ pro uzamykan´ ´ı a vytva´renˇ ´ı objektu˚ ASCMSTransfer knihovna pro prenosˇ binarn´ ´ıch dat ASCMSWebClient webovy´ klient dbxmlTL knihovna pro praci´ s XML databaz´ ´ı DocTransformerSU sluzbaˇ pro zpracovan´ ´ı dokumentu˚ DocumentStorage sluzbaˇ pro ulozenˇ ´ı binarn´ ´ı podoby dokumentu˚ MainProcess BPEL procesy utva´rejˇ ´ıc´ı system´ MetadataSU sluzbaˇ pro praci´ s metadaty objektu˚ TransferService sluzbaˇ pro prenosˇ binarn´ ´ıch dat XMLDocStorageSU sluzbaˇ pro praci´ s ulo´ ziˇ stˇ emˇ XML dokumentu˚

Kazdˇ y´ z techtoˇ projektu˚ je nutne´ rucnˇ eˇ zkompilovat s pomoc´ı nastroje´ Maven. Vysledkem´ kompilace jsou projekty ASCMSBackendWebApp a ASCMSWebClient. Oba je nutne´ nain- stalovat do weboveho´ kontejneru.

Procesy Jelikozˇ je cely´ system´ zalozenˇ na orchestraci sluzeb,ˇ je nutne´ pridatˇ artefakty pro BPEL do in- stalace webove´ aplikace Apache ODE. Implicitn´ım adresa´remˇ je WEB-INF/processes/process. Do tohoto adresa´reˇ je nutne´ um´ıstit obsah projektu MainProcess z adresa´reˇ src/main/resources.

47 Pˇr´ılohaB dbXMLTL

Knihovna dbXMLTL poskytuje mechanismus pro praci´ s NXD za pomoci XML skriptu. Je pouhym´ rozsˇ´ırenˇ ´ım projektu Apache Jelly, takzeˇ jakakoliv´ dokumentace, ktera´ nen´ı obsazenaˇ v tomto textu bude k dosazenˇ ´ı na strank´ ach´ tohoto projektu1. Tato prˇ´ıloha uvad´ ´ı prehledˇ elementu˚ vyuzitelnˇ ych´ v ramci´ skriptu. Kazdˇ y´ z elementu˚ se nachaz´ ´ı ve jmennem´ prostoru http://tl.dbxml.fi.muni.cz/.

Element dbxml Popis Korenovˇ y´ element skriptu.

Element if Popis Element pro podm´ınenˇ e´ vyhodnocovan´ ´ı. Teloˇ skriptu se provede pouze pokud je atribut test vyhodnocen jako pravdivy.´ Atributy test vyraz´ pro vyhodnocen´ı

Element choose Popis Element pro podm´ınenˇ e´ vyhodnocovan´ ´ı. Skript zpra- cuje teloˇ kazdˇ eho´ potomka when tohoto elementu, po- kud je jeho atribut test vyhodnocen jako pravdivy.´ Pokud zˇadn´ y´ takovy´ element neexistuje, je vyhodno- cen obsah potomka otherwise (pokud existuje).

Element when Popis viz element choose Atributy test vyraz´ pro vyhodnocen´ı

Element otherwise Popis viz element choose

1. http://commons.apache.org/jelly/

48 B. DBXMLTL

Element expr Popis Vyhodnot´ı vyraz´ v atributu value a nahrad´ı j´ım vyskyt´ elementu.

Atributy value vyraz´ pro vyhodnocen´ı

Element switch Popis Vyhodnot´ı vyraz´ v atributu on a provede prˇ´ıkazy obsazenˇ e´ v techˇ elementech case, jejichzˇ atribut value je ekvivalentn´ı s vyhodnocenym´ vyrazem.´ V prˇ´ıpade,ˇ zeˇ zˇadn´ y´ z elementu˚ case nevyhovuje, je provedeno teloˇ elementu default. Atributy on hodnota pro porovnan´ ´ı vnorenˇ ych´ elementu˚ case

Element case Popis viz element switch Atributy value vyraz,´ ktery´ je porovnav´ an´ s vyhodnocenym´ vyrazem´ atributu on elementu switch

Element default Popis viz element switch

Element break Popis Ukoncˇ´ı vyhodnocovan´ ´ı smyckyˇ zadane´ elementy atri- buty for-each a while.

Element set Popis Nastav´ı hodnotu promennˇ e.´ Hodnotu lze vyuzˇ´ıvat ve vsechˇ vyrazech´ za pomoci retˇ ezceˇ $. Atributy value nova´ hodnota promennˇ e´ var nazev´ promennˇ e´

49 B. DBXMLTL

Element for-each Popis Provede zadany´ pocetˇ kroku,˚ nebo iteraci presˇ kazdˇ y´ objekt v kolekci nebo poli. Atributy begin pocˇate´ cnˇ ´ı index end koncovy´ index step velikost prˇ´ırustku˚ k cˇ´ıtaciˇ na konci kroku indexVar nazev´ promennˇ e,´ pod kterou bude prˇ´ıstupna´ aktualn´ ´ı hodnota cˇ´ıtaceˇ expr Vyraz´ pro vyhodnocen´ı kolekce objektu,˚ presˇ kterou prob´ıha´ iterace. Vyhodnoceny´ vyraz´ mus´ı byt´ typu Iterator, Collection, Map, Array, Enumeration nebo retˇ ezecˇ polozekˇ oddelenˇ ych´ cˇarkami.´

Element remove Popis Vymazeˇ hodnotu promennˇ e.´ Po vyhodnocen´ı vyrazu´ nebude promennˇ a´ nadale´ prˇ´ıstupna.´ Atributy var nazev´ promennˇ e´

Element update Popis Provede zmenuˇ obsahu dokumentu (resp. doku- mentu).˚ Dotaz je zadan´ za pomoci jazyka XUpdate, ktery´ byl vyvinut v ramci´ iniciativy XML:DB a rovneˇzˇ vyuzˇ´ıva´ XML reprezentaci. Prˇ´ıkaz je nutne´ zadat jako teloˇ tohoto elementu (prvn´ım potomkem tak bude ele- ment xupdate:modifications).

Element transaction Popis Kazdˇ a´ akce zaznacenˇ a´ v teleˇ tohoto elementu prob´ıha´ v ramci´ transakce. Transakce je automaticky potvrzena po proveden´ı posledn´ıho prˇ´ıkazu.

Element rollback Popis Provede rollback aktivn´ı transakce. V prˇ´ıpade,ˇ zeˇ roll- back nen´ı posledn´ı akc´ı transakce (posledn´ım potom- kem elementu transaction) je automaticky zahajena´ nova´ transakce.

50 B. DBXMLTL

Element return Popis Provede vyb´ erˇ dokumentu a ten zap´ıseˇ na vystup.´ Opa- kovane´ pouzitˇ ´ı tohoto elementu zpusob˚ ´ı chybu. Atributy value Vyraz´ pro vyb´ erˇ dokumentu. Mu˚ zeˇ se jednat o XPath nebo XQuery dotaz stejneˇ jako o nazev´ promennˇ e´ od- kazuj´ıc´ı na dokument. end V prˇ´ıpade,ˇ zeˇ je vyraz´ zaznacenˇ y´ v tomto atributu vy- hodnocen jako pravdivy,´ skript okamzitˇ eˇ ukoncˇ´ı svou cinnost.ˇ

Element query Popis Provede XPath nebo XQuery dotaz zadany´ v atributu value. S vysledkem´ dotazu je moznˇ e´ bud’ zachazet´ jako s XML dokumentem nebo jako s hodnotou primi- tivn´ıho typu. Vysledek´ dotazu je platny´ azˇ do konce provad´ enˇ ´ı skriptu. Atributy isDocument V prˇ´ıpade,ˇ zeˇ je tento atribut vyhodnocen jako prav- divy,´ je vysledek´ dotazu chap´ an´ jako dokument. Tento dokument je po ukoncenˇ ´ı skriptu smazan.´ Implicitn´ı hodnota tohoto atributu je nepravda. name jmeno´ promennˇ e,´ ve ktere´ je ulozenaˇ vysledn´ a´ hodnota (prˇ´ıpadneˇ odkaz na dokument) value Provad´ enˇ y´ dotaz mus´ı m´ıt tvar XPath nebo XQuery do- tazu. V prˇ´ıpade,ˇ zeˇ tento atribut nen´ı zadan,´ pokus´ı se dbXMLTL z´ıskat dotaz z telaˇ elementu query.

Element namespace Popis Explicitn´ı svaz´ an´ ´ı jmenneho´ prostoru s danym´ prefi- xem. V prub˚ ehuˇ vykonav´ an´ ´ı skriptu je moznˇ e´ defino- vat jmenne´ prostory i klasickym´ zpusobem.˚ Tento ele- ment je urcenˇ predevˇ sˇ´ım pro vyhodnocovan´ ´ı prefixu˚ v dotazech zadanych´ za pomoci elementu query. Atributy prefix vazan´ y´ prefix uri jmenny´ prostor

51 B. DBXMLTL

Element document Popis Tento element slouzˇ´ı pro praci´ s dokumentem. S jeho pomoc´ı lze dokument bud’ vytvorit,ˇ nebo smazat. Atributy action Atribut zaznacujˇ ´ıc´ı zamy´slenouˇ akci. Do tohoto po- vinneho´ atributu je moznˇ e´ zadat bud’ retˇ ezecˇ create pro vytvorenˇ ´ı dokumentu nebo retˇ ezecˇ delete pro jeho smazan´ ´ı. Implicitn´ı volbou je create. name nazev´ dokumentu container Nazev´ kolekce, ve ktere´ se dokument nachaz´ ´ı (nebo bude nachazet).´ V prˇ´ıpade,ˇ zeˇ databaze´ podporuje hi- erarchickou strukturu kolekc´ı, je moznˇ e´ zadat cestu ke kolekci. sourceVariable Priˇ tvorbeˇ dokumentu je moznˇ e´ do tohoto atri- butu zadat nazev´ promennˇ e,´ ktera´ bude vystupovat jako jeho zdroj. Zdroj dokumentu mus´ı byt´ objekt trˇ´ıdy javax.xml.transform.Source. V prˇ´ıpade,ˇ zeˇ tento atribut nen´ı zadan,´ vezme se jako zdroj doku- mentu teloˇ tohoto elementu. temporary Pokud je tento atribut vyhodnocen jako pravdivy,´ bude vytva´renˇ y´ dokument pouze docasnˇ y´ a na konci vyhod- nocen´ı skriptu bude smazan.´

Element container Popis Tento tag slouzˇ´ı pro praci´ s kolekcemi (resp. konejnery v Berkeley XLM DB). Kolekci je moznˇ e´ bud’ otevrˇ´ıt, vy- tvorit,ˇ nebo smazat. Atributy name Nazev´ kolekce. V prˇ´ıpade,ˇ zeˇ databaze´ podporuje hie- rarchickou strukturu kolekc´ı, je moznˇ e´ zadat cestu ke kolekci. action Atribut zaznacujˇ ´ıc´ı zamy´slenouˇ akci. Do tohoto po- vinneho´ atributu je moznˇ e´ zadat bud’ retˇ ezecˇ open pro otevrenˇ ´ı kolekce nebo retˇ ezecˇ delete pro jej´ı smazan´ ´ı. Implicitn´ı volbou je open. Pokud kolekce predˇ otevrenˇ ´ım neexistuje, vytvorˇ´ı se. Otevrenˇ a´ ko- lekce je implicitn´ı kolekc´ı pro vsechnyˇ akce. Kazdˇ a´ re- lativn´ı cesta je vyhodnocovana´ podle n´ı.

52 Pˇr´ılohaC

Obsah pˇrilozen´ehoCDˇ

• dokumentace rozhran´ı komponent systemu´

• init skripty pro linuxove´ prostredˇ ´ı

• zkompilovane´ projekty

• zdrojove´ kody´ projektu˚ pro IDE NetBeans a Eclipse

• knihovny pro webovy´ kontejner Tomcat

• tento dokument (vcetnˇ eˇ zdrojovych´ kod´ u˚ pro sazbu)

53 Pˇr´ılohaD

Uzivatelsk´apˇr´ıruˇckaˇ

Tato prˇ´ıloha slouzˇ´ı jako jednoducha´ uzivatelskˇ a´ prˇ´ıruckaˇ k webove´ aplikaci systemu´ ASCMS. Tento tenky´ klient poskytuje uzivateliˇ zakladn´ ´ı operace nad dokumenty, jejich obsahem a ad- resa´rovouˇ strukturou.1

Adres´aˇrov´astruktura

Obrazek´ D.1: Uvodn´ ´ı obrazovka

S adresa´rovouˇ strukturou lze pracovat za pomoci uvodn´ ´ı obrazovky (viz obr. D.1). Tu lze zobrazit stisknut´ım tlacˇ´ıtka Prochazet´ adresa´rovouˇ strukturou v zahlav´ ´ı kazdˇ e´ stranky.´ Obsahuje nasleduj´ ´ıc´ı prvky: 1. Z´ahlav´ı — umozˇnujeˇ prechodˇ mezi zakladn´ ´ımi strankami.´ Zahlav´ ´ı je zobrazeno na vsechˇ strank´ ach´ jednotnym´ zpusobem.˚ 2. Informaˇcn´ıpanel – zobrazuje status o vykonane´ akci. 3. Obsah aktu´aln´ıhoadres´aˇre — obsahuje seznam podadresa´rˇu˚ a dokumentu˚ zarazenˇ ych´ do aktualn´ ´ıho adresa´re.ˇ Za pomoci tohoto dialogu lze menitˇ aktualn´ ´ı adresa´rˇ (vyb´ eremˇ

1. Aplikace je dostupna´ na http://kore.fi.muni.cz:5980/ASCMSWebClient/.

54 D.UZIVATELSKˇ AP´ Rˇ´IRUCKAˇ

podadresa´reˇ s ikonou slozky)ˇ nebo zobrazovat detaily o dokumentu (vyb´ eremˇ doku- mentu s ikonou cistˇ eho´ listu).

4. Dialog pro akce umozˇnujeˇ veskerˇ e´ akce nad adresa´rovouˇ strukturou:

(a) Karta Vlozitˇ dokument – Po vyplnenˇ ´ı prˇ´ıslusnˇ ych´ pol´ı (nazev´ dokumentu, sou- bor a jeho format)´ lze za pomoci tlacˇ´ıtka Vlozitˇ dokument vytvoritˇ v aktualn´ ´ım adresa´riˇ novy´ dokument. (b) Karta Vytvoritˇ adresa´rˇ – Po zadan´ ´ı nazvu´ slozkyˇ a potvrzen´ı akce (tlacˇ´ıtko Vy- tvoritˇ adresa´rˇ) je v aktualn´ ´ım adresa´riˇ vytvorenˇ novy´ podadresa´rˇ zadaneho´ jmena.´ (c) Karta Ostatn´ı akce – umozˇnujeˇ provest´ triˇ operace: • Vyˇraditdokument –Vyb´ eremˇ dokumentu zarazenˇ eho´ v aktualn´ ´ım adresa´riˇ a potvrzen´ım akce dojde k jeho odstranenˇ ´ı z adresa´rovˇ e´ struktury. Doku- ment nadale´ vystupuje jako nezarazenˇ y.´ • Zobrazit dokument – Akce ekvivalentn´ı s vyb´ eremˇ dokumentu (viz dialog Obsah aktualn´ ´ıho adresa´reˇ ). Po potvrzen´ı akce dojde k zobrazen´ı detailu do- kumentu. • Smazat adres´aˇr – Kazdˇ y´ adresa´rˇ s vyjimkou´ korenovˇ eho´ je moznˇ e´ smazat. Veskerˇ e´ dokumenty ulozenˇ e´ ve stromove´ hierarchii mazaneho´ adresa´reˇ vy- stupuj´ı nadale´ jako nezarazenˇ e.´

Pr´aces dokumentem

Po vyb´ eruˇ dokumentu (at’ uzˇ za pomoci vyhledav´ an´ ´ı ciˇ pruchodu˚ adresa´rovouˇ strukturou) jsou zobrazeny jeho detaily a umoznˇ enyˇ dalsˇ´ı akce. Na obrazovce se nachaz´ ´ı nasleduj´ ´ıc´ı prvky (viz obr. D.2):

1. Atributy dokumetu – Zobrazeno je identifikacnˇ ´ı cˇ´ıslo, nazev,´ velikost, typ a verze vybraneho´ dokumentu.

2. Verze dokumentu – V teto´ cˇasti´ jsou zobrazeny vsechnyˇ verze dokumentu. Priˇ vyb´ eruˇ jedne´ z verz´ı dojde k aktualizaci ostatn´ıch komponent tak, aby odpov´ıdaly zvolene´ verzi. Rovneˇzˇ akce na karteˇ Stahnout´ je uplatnenaˇ vzhledem ke zvolene´ verzi.

3. Pˇr´ılohy – Tato komponenta uvad´ ´ı vsechnyˇ prˇ´ılohy (vlozenˇ e´ objekty) dokumentu. Vzdyˇ je zobrazen nazev,´ typ a velikost prˇ´ılohy. Vyb´ eremˇ jedne´ z prˇ´ıloh dojde k jej´ımu stazenˇ ´ı.

4. Akce – Zde je umoznˇ enaˇ manipulace s dokumentem:

(a) Karta Stahnout´ – Po vyb´ eruˇ formatu´ souboru a potvrzen´ı akce (tlacˇ´ıtko Stahnout´ ) dojde ke stazenˇ ´ı dokumentu ve zvolenem´ formatu.´ (b) Karta Zvy´sitˇ verzi – Po vyplnenˇ ´ı vsechˇ pol´ı (zpusob˚ zvy´senˇ ´ı verze, soubor s do- kumentem a jeho format)´ lze za pomoci tlacˇ´ıtka Zvy´sitˇ verzi vytvoritˇ novou verzi dokumentu. Je moznˇ e´ zvy´sitˇ bud’ hlavn´ı (Major) nebo vedlejsˇ´ı (Minor) verzi. Verze jsou vzdyˇ zobrazovany´ ve formatu´ [cˇıslo´ hlavnı´ verze.cˇıslo´ vedlejsˇı´ verze].

55 D.UZIVATELSKˇ AP´ Rˇ´IRUCKAˇ

Obrazek´ D.2: Obrazovka zobrazuj´ıc´ı detaily dokumentu

(c) Karta Sn´ızitˇ verzi – Po vyb´ eruˇ zpusobu˚ sn´ızenˇ ´ı verze a potvrzen´ı akce (tlacˇ´ıtko Sn´ızitˇ verzi) dojde k odstranenˇ ´ı nekterˇ ych´ verz´ı dokumentu. Priˇ sn´ızenˇ ´ı hlavn´ı (Major) verze dojde k odstranenˇ ´ı vsechˇ verz´ı, ktere´ maj´ı nejvysˇsˇ´ı cˇ´ıslo hlavn´ı verze. Priˇ sn´ızenˇ ´ı vedlejsˇ´ı (Minor) verze dojde k odstranenˇ ´ı posledn´ı vedlejsˇ´ı verze dokumentu. (d) Karta Smazat – po potvrzen´ı akce (tlacˇ´ıtko Smazat) je dokument smazan´ vcetnˇ eˇ vsechˇ verz´ı.

Nezaˇrazen´edokumenty

Dokumenty, ktere´ byly vyrazenyˇ z adresa´rovˇ e´ struktury, je moznˇ e´ zobrazit za pomoci tlacˇ´ıtka Zobrazit nezarazenˇ e´ dokumenty v zahlav´ ´ı kazdˇ e´ stranky.´ Obrazovka obsahuje nasleduj´ ´ıc´ı

56 D.UZIVATELSKˇ AP´ Rˇ´IRUCKAˇ

Obrazek´ D.3: Prace´ s nezarazenˇ ymi´ dokumenty prvky (viz obr. D.3):

1. Adres´aˇrov´astruktura – Komponenta pro prochazen´ ´ı adresa´rovouˇ strukturou je iden- ticka´ s obdobnou komponentou na strance´ pro adresa´rovouˇ strukturu, nezobrazuje vsakˇ dokumenty. Jej´ım prostrednictvˇ ´ım je moznˇ e´ vybrat aktualn´ ´ı adresa´r.ˇ

2. Nezaˇran´edokumenty – Zde se zobrazuj´ı dokumenty, ktere´ byly vyrazenyˇ z adresa´rovˇ e´ struktury.

3. Atributy dokumentu – Po vyb´ eruˇ jednoho z nezarazenˇ ych´ dokumentu˚ se v teto´ cˇasti´ zobraz´ı jeho atributy.

4. Zaˇrazen´ıdokumentu – Obrazovka pro nezarazenˇ e´ dokumenty umozˇnujeˇ pouze je- dinou akci — zaraditˇ dokument zpetˇ do adresa´rovˇ e´ struktury. Pro proveden´ı akce je nutne´ zvolit c´ılovou slozku,ˇ nezarazenˇ y´ dokument, jeho novy´ nazev´ a potvrdit akci (tlacˇ´ıtko Zaraditˇ ).

57 D.UZIVATELSKˇ AP´ Rˇ´IRUCKAˇ

Obrazek´ D.4: Vyhledav´ an´ ´ı

Vyhled´av´an´ı

Obrazovka pro vyhledav´ an´ ´ı (viz obr. D.4) umozˇnujeˇ uzivateliˇ zobrazit vsechnyˇ dokumenty obsahuj´ıc´ı zadany´ text. Uzivatelˇ mu˚ zeˇ tuto obrazovku zvolit kdykoliv stisknut´ım tlacˇ´ıtka Hledat v zahlav´ ´ı stranky.´ Obrazovka obsahuje dva prvky:

1. Vyhled´avac´ıpole – zde je moznˇ e´ zadat slovn´ı spojen´ı pro vyhledav´ an´ ´ı.

2. Vysledek´ vyhled´av´an´ı – po potvrzen´ı zadan´ ´ı slovn´ıho spojen´ı pro vyhled´ av´ an´ ´ı do- kumentu za pomoci klavesy´ Enter jsou zobrazeny vsechnyˇ dokumenty obsahuj´ıc´ı zadany´ text. V prˇ´ıpade,ˇ zeˇ text obsahuje v´ıce verz´ı dokumentu, je zobrazena vzdyˇ posledn´ı verze, ktera´ text obsahuje.

58