UNICORN COLLEGE Katedra informačních technologií BAKALÁŘSKÁ PRÁCE Artefaktový manager pro Unicorn Universe Autor BP: Michael Baitler Vedoucí BP: Ing. David Hartman Ph.D. 2014 Praha
Čestné prohlášení Prohlašuji, že jsem svou bakalářskou práci na téma Artefaktový manager pro Unicorn Universe vypracoval samostatně, pod vedením vedoucího bakalářské práce a s použitím výhradně odborné literatury a dalších informačních zdrojů, které jsou v práci citovány a jsou také uvedeny v seznamu literatury a použitých zdrojů. Jako autor této bakalářské práce dále prohlašuji, že v souvislosti s jejím vytvořením jsem neporušil autorská práva třetích osob a jsem si plně vědom následků porušení ustanovení 11 a následujících autorského zákona č. 121/2000 Sb. V Praze dne 10. 1. 2014. (Michael Baitler)
Poděkování Děkuji vedoucímu bakalářské práce Ing. Davidu Hartmanovi Ph.D. za účinnou metodickou, pedagogickou a odbornou pomoc a další cenné rady při zpracování mé bakalářské práce.
Artefaktový manager pro Unicorn Universe Artifact manager at Unicorn Universe 6
Abstrakt Cílem této bakalářské práce je navrhnout a implementovat řešení, které by zefektivnilo a usnadnilo práci s objekty informačního systému Unicorn Universe. Uživatelské rozhraní Unicorn Universe je webová stránka v internetovém prohlížeči. Tento fakt přináší při současné implementaci (verze 7.10) jistá omezení. Je to především nemožnost hromadného importu a exportu objektů. Dále pak s přílohami artefaktů není možné pracovat přímo v systému. Pro úpravu je nutné nejprve přílohu uložit jako soubor na lokální disk. Teprve na takto vytvořené kopii lze provést požadované úpravy. Následně je nutné soubor nahrát zpět do systému. Zvoleným řešením bylo naprogramování programu Artefakt Manager. Ten umožňuje pracovat s objekty Unicorn Universe obdobným způsobem jako se soubory a složkami uloženými na lokálním disku. Systém Unicorn Universe tak dostává novou možnost snadného využití jako webový disk, přičemž jsou zachovány veškeré výhody ukládání dat v Unicorn Universe, a to bez omezení snadné práce s daty. Program Artefakt Manager byl napsán v jazyce C#. Komunikace se systémem Unicorn Universe probíhá přes REST UES API. K tomu byla vytvořena samostatná (znovu použitelná) knihovna tvořící rozhraní pro.net framework. Klíčová slova: Unicorn Universe, artefakt, příloha, soubor, složka, hromadný import / export, REST, C#,.Net rozhraní 7
Abstract The aim of this bachelor s thesis is to design and implement a solution that would help users to work with objects of Unicorn Universe information system. This solution is supposed to make the usage of an attachment easier and more efficient. Unicorn Universe user interface is a website working within an Internet browser. However, this causes certain limitations in the current implementation setting (version 7.08). The major limitations are the following: Firstly, the system does not allow a user to import and export objects in an aggregate form. Secondly, a user cannot work with an attachment of artifact or modify it directly in the system. For any changes, a user has to save an attached file at a local disc to be able to make desired changes. After doing so, it is necessary to upload the file back into the system. The intended solution then was to program a so called Artifact Manager. The program enables to work with objects of Unicorn Universe in a similar way as with other files and folders saved at a local disc. Unicorn Universe thus becomes easier to use as a web disc, while all advantages of data saving in Unicorn Universe remain without any limitations related to easy manipulation. The Artifact Manager program was written in C# language and the communication with Unicorn Universe is active through REST UES API. For this purpose, an independent (reusable) library has been created to serve as the interface for.net Framework. Key words: Unicorn Universe, artifact, attachment, file, folder, aggregated import / export, REST, C#,.Net Interface 8
Obsah 1. Úvod... 12 1.1. Artefakt Manager... 12 1.2. Knihovna UES pro C#... 13 2. Použité technologie... 14 2.1. Unicorn Universe... 14 2.1.1. Příloha artefaktu... 16 2.1.2. Rozhraní... 17 2.1.3. Technologická omezení... 17 2.2. REST... 19 2.3. Abstract factory pattern... 20 2.4. Třívrstvá architektura... 22 2.4.1. Prezentační vrstva... 24 2.4.2. Logická vrstva... 24 2.4.3. Datová vrstva... 24 2.5. JSON... 25 2.5.1. Příklad... 25 3. Požadavky na aplikaci... 26 4. Use case analýza... 33 4.1. Přehled aktérů... 33 4.2. Přehled use case... 34 4.3. Mapování požadavků na use case... 37 4.4. Use case diagram... 38 4.5. Use case specifikace... 39 4.5.1. UC01 Výběr disku... 39 4.5.2. UC02 Volba teritoria... 40 9
4.5.3. UC03 Přímá práce s přílohou... 40 4.5.4. UC04 Automatické odeslání přílohy při uložení... 41 4.5.5. UC05 Kopírování objektů... 42 4.5.6. UC06 Přesun objektů... 43 4.5.7. UC07 Přejmenování objektu... 44 4.5.8. UC08 Smazání objektů... 45 4.5.9. UC09 Funkce oblíbených... 45 4.5.10. UC10 Hromadný export oblíbených... 46 4.5.11. UC11 Automatické přihlašování... 47 5. Zvolená architektura... 48 6. Business podvrstva... 49 6.1. Mapování složky a souboru na složku, artefakt a přílohu... 51 7. Knihovna UES... 52 7.1. Jednotnost knihoven pro C# a Javu... 53 7.2. Implementované funkce... 54 7.3. Knihovny třetích stran... 56 7.3.1. RestSharp... 56 7.3.2. Json.NET... 57 7.4. Autentizace... 58 7.5. Třída Login... 58 7.6. Třída Crypto... 59 7.7. Tvorba commandu... 59 7.7.1. Obecná metoda Execete... 61 8. Uživatelská dokumentace... 64 8.1. Panely... 65 8.2. Záložky... 66 8.3. Kopírování... 66 10
8.3.1. Možná úskalí při vytváření kopií objektů... 67 8.4. Přesouvání... 68 8.5. Přejmenování... 68 8.6. Mazání... 68 8.7. Oblíbené... 69 8.8. Přihlašovací formulář... 70 8.9. Přímá práce s přílohou... 71 9. Závěr... 72 9.1. Artefakt Manager... 72 9.2. Knihovna UES pro C#... 73 10. Conclusion... 74 10.1. Artifact Manager... 74 10.2. Library UES for C#... 75 11. Seznam použitých zdrojů... 76 12. Sezam Obrázků... 77 13. Seznam tabulek... 78 14. Seznam grafů... 79 11
1. Úvod Unicorn Universe je moderní informační systém nové generace. Poskytuje chytrá řešení pro podporu řízení, sdílení informací a hlavně spolupráci. Unicorn Universe umožňuje organizovat firmu, osobní zájmy nebo jiné aktivity. Buduje na internetu prostor, kde každý snadno nabídne svůj business ostatním. Na jednom místě je možné komunikovat s obchodními partnery, sdílet potřebné informace s kolegy nebo plánovat společné akce s přáteli. Prioritami jsou přitom maximální dostupnost, absolutní bezpečnost a ochrana svěřených dat [1]. Základní stavební jednotkou je artefakt. Artefakt je chytrý dokument, který obsahuje nejen data, ale i životní cyklus objektu, který tyto data reprezentují. Data dle svého charakteru mohou být uložena v obsahu artefaktu ve vlastnostech či v příloze. Současná verze 7.10 Unicorn Universe neumí pracovat s více artefakty či přílohami najednou. Tedy neumožňuje hromadný export a import dat. Dále pak není možné s přílohou pracovat přímo v systému Unicorn Universe. Při práci s jednou přílohou je nutné ji nejprve stáhnout a po provedení úprav odeslat zpět. 1.1. Artefakt Manager Hlavním cílem je vytvořit program, který by řešil výše zmíněné komplikace při používání příloh a artefaktů. Tedy umožní hromadný import objektů (složek včetně vnořených podsložek a souborů) z lokálního média do systému Unicorn Universe. Dále pak export objektů (složek včetně vnořených artefaktů a to i s přílohami artefaktů) ze systému Unicorn Universe na lokální médium. Artefakt Manager zjednoduší práci s přílohami tak, aby uživatel nemusel nejprve stahovat soubor a po provedení práce ho odesílat zpět do systému. Vznikne tak dojem, že je pracováno přímo s přílohou a nejen s její lokálně vytvořenou kopií. Program je napsán v jazyce C# nad.net frameworkem a je tak spustitelný na většině počítačů běžných uživatelů. Jeho grafické rozhraní je rozděleno do dvou panelů po vzoru populárního Total Commanderu [2]. V panelech je na záložkách zobrazen buď obsah systému Unicorn Universe nebo obsah lokálního počítače. 1 MÁLEK, Michael: More than software. Hospodářské noviny. 21. září 2012, komerční příloha deníku. 2 GHISLER, Christian: Homepage of Total Commander [online]. Switzerland. [cit. 2013-06-08]. Dostupné z URL: <http://www.ghisler.com/>. 12
1.2. Knihovna UES pro C# Pro komunikaci s Unicorn Universe je použito UES API [3], poskytující webové služby pomocí technologie REST viz kapitola 2.2 REST. Neboť to je v současné době preferováno ze strany Unicorn Universe. S UES API lze komunikovat i pomocí starší technologie SOAP. Technologie SOAP nemusí být do budoucna dále podporována. REST je na Unicorn Universe nově použitá technologie, která je nasazována do provozu v době vzniku této bakalářské práce. Teprve v lednu roku 2013 byla nasazena verze Unicorn Universe 7.08, která přináší plnou podporu pro REST UES API. Předchozí verze 7.06 obsahovala jen omezené množství commandů spustitelných přes REST UES API. V rámci Unicorn Universe je za command považován příkaz systému, spouštějící určitou funkčnost, který byl systému zadán přes UES API. REST respektive SOAP command je pak command odeslaný na webové rozhraní poskytované UES API pomocí technologie REST respektive SOAP. Artefakt Manager je tak jedním z prvních programů pro.net Framework používajících REST UES API Unicorn Universe. Proto je vedlejším cílem této bakalářské práce vyčlenit z programu Artefakt Manager samostatnou část (knihovnu) tvořící komunikační rozhraní. Tato knihovna má za úkol veškerou komunikaci s Unicorn Universe přes REST UES API. Knihovna zaobaluje REST commandy a poskytuje programátorovi jazyku C# potřebné objekty reprezentující objekty Unicorn Universe. Dále je tato knihovna v maximální možné míře identická s původní Java knihovnou pro zastarávající SOAP UES API. Pro rozdílnost programovacích jazyků C# a Java není možné zaručit stoprocentní identitu. U funkčností potřebných pro Artefakt Manager je identita zachována v maximální možné míře tak, aby knihovna byla snadno přenositelná, znovu použitelná a rozšířitelná i pro potřeby jiných programů. Zároveň tak v maximální možné míře odpovídá stávající dokumentaci UES API. 3 ŠIBIL, Jan: UNICORN ES API [online]. Praha: Unicorn Universe. [cit. 2013-06-08]. Dostupné z URL: <https://api.unicornuniverse.eu/>. 13
2. Použité technologie Program Artefakt Manager spolupracuje se systémem Unicorn Universe. Pro komunikaci se používá REST UES API. Data přenášená během komunikace jsou ve formátu JSON viz kapitola 2.5 JSON. Program Artefakt Manager je implementován dle třívrstvé architektury viz kapitola 2.4 Třívrstvá architektura s využitím design paternu Abstract factory viz kapitola 2.3 Abstract factory pattern. 2.1. Unicorn Universe Unicorn Universe je moderní informační systém pro efektivnější řízení organizací. Je postaven nad platformou Unicorn Enterprise System (Unicorn ES). Jeho základní stavební jednotkou je artefakt. Artefakt je chytrý dokument obsahující nejen data, ale i životní cyklus objektu, který tyto data reprezentují. Data dle svého charakteru mohou být uložena v obsahu artefaktu, ve vlastnostech či v příloze [4]. Například artefakt reprezentující smlouvu by mohl mít v obsahu celkové znění smlouvy. Do vlastností artefaktu se uloží klíčové informace jako datumy, názvy společností uzavírajících smlouvu a jména zástupců těchto společností. Příloha artefaktu pak bude obsahovat scan již podepsané smlouvy. V životním cyklu artefaktu budou zaznamenány například úkoly: Sepsat smlouvu, Revidovat smlouvu a Podepsat smlouvu. Tyto úkoly budou zadány rolím, do kterých jsou obsazeny konkrétní členové (zaměstnanci) organizace. Viz Obrázek 1: Příloha artefaktu v Unicorn Universe. Podrobnější popis artefaktu a jeho částí viz disertační práce Vladimíra Kováře [4]. 4 KOVÁŘ, Vladimír: Unicorn Enterprise System Powered Company: Metodika pro řízení podniku a organizací s přímou podporou informačního systému. Praha, 2011. 130 s. Dizertační práce (Ph.D.). Univerzita Hradec Králové, Fakulta informatiky a managementu, Katedra informatiky a kvalitativních metod. 14
Obrázek 1: Příloha artefaktu v Unicorn Universe Příloha Kompetentní role Vlastnost Artefakt Obsah Životní cyklus Aktivity Zdroj: Vlastní zpracování Artefakt je uložen ve složce. Složka je speciální typ artefaktu, který může navíc obsahovat další složky a artefakty. Složka je tedy odvozena od artefaktu. Stejným způsobem je například organizační jednotka odvozena od složky. Organizační jednotka má oproti složce například rozšířené možnosti nastavení oprávnění pro artefakty v ní vnořené. Jednotlivé organizace používající Unicorn Universe jsou od sebe odděleny teritorii. Teritorium představuje prostor, do něhož má přístup pouze uživatel, který zde má aktivní přístupovou roli. Uživatel tak nemůže do teritoria, kam přístupovou roli nemá (či jí má ale v neaktivním stavu). Veškeré artefakty v rámci teritoria jsou dostupné pouze uživatelům s výše zmíněným přístupem. Zaměstnanec jedné společnosti tak nemá přístup k datům jiné společnosti, pokud jsou v rozdílných teritoriích, aniž by zaměstnanec první společnosti neměl aktivní přístupovou roli i do druhého teritoria. 15
2.1.1. Příloha artefaktu Příloha artefaktu (složky, organizační jednotky atd.) je soubor z lokálního média počítače uložený do systému Unicorn Universe. Soubor může být libovolného typu. Omezena je pouze velikost souboru, prostorem dostupným uživateli v daném teritoriu. Jeden artefakt může mít více příloh. U každé přílohy jsou automaticky ukládány všechny předchozí verze souboru. Nová verze přílohy se vytvoří stiskem prvního tlačítka z leva, na konci řádku tabulky reprezentující přílohy artefaktu, viz Obrázek 2: Příloha artefaktu. Po stisku tlačítka dojde k uzamknutí přílohy. Uzamčenou přílohu může editovat jen role, která přílohu uzamkla. Všem ostatním uživatelům je příloha stále k dispozici, ale jen pro stažení. Při uzamčení je příloha stažena na lokální médium počítače a ikona pro stažení/uzamčení se nahradí dvěma ikonami. První slouží pro vyvolání formuláře, ve kterém se nahraje do systému nová verze přílohy a přitom dojde k odemčení. Druhá ikona slouží k odemčení přílohy, tedy jakési stornování předchozího uzamčení, bez provedení jakýchkoliv změn (nevytváří se nová verze). Uzamčení přílohy je zjistitelné buď z tlačítek umožňující akce s přílohou, nebo z ikony zámku, který je zobrazen v prvním sloupci tabulky, před názvem přílohy. Obrázek 2: Příloha artefaktu Zdroj: Grafické rozhraní Unicorn Universe Za prvním tlačítkem zleva (u uzamčené přílohy za prvními dvěma tlačítky) jsou ještě tři tlačítka. První je k zobrazení historie, kde je možné stáhnout předchozí verze přílohy, či se k předchozí verzi vrátit. Další tlačítko je pro změnu vlastností přílohy, jako je název, popis či kód. Poslední tlačítko je pro smazání přílohy. 16
2.1.2. Rozhraní Uživatelské rozhraní současné verze (7.10) Unicorn Universe je webová stránka v internetovém prohlížeči. To pro práci se soubory přináší jistá technologická omezení. Tato omezení by bylo možné řešit, ovšem jen za cenu ztráty nezávislosti a univerzálnosti systému Unicorn Universe. Ke kterému je dnes možné přistoupit z libovolného počítače či chytrého zařízení (tablet, telefon, televizor atd.) obsahující webový prohlížeč splňující běžné standardy. Od verze 6.00 existuje SOAP rozhraní, díky němuž mohou s Unicorn Universe komunikovat i jiné systémy či programy. Pro toto rozhraní je k dispozici knihovna pro jazyk Java a další jazyky, jako JRuby, spustitelné v prostředí Javy. Od verze 7.06 a v plném rozsahu od 7.08 je k dispozici i REST rozhraní. K oběma rozhraním i Java knihovně je k dispozici společná dokumentace na webové adrese https://api.unicornuniverse.eu/ [3]. 2.1.3. Technologická omezení První technologické omezení představuje nemožnost přiložit k artefaktu více souborů najednou či naopak stáhnout více příloh najednou. Každý jednotlivý soubor musí být stažen samostatně, stejně tak i uložen do systému. Stažení přílohy se provede jedním kliknutím na hypertextový odkaz. Ovšem při vkládání přílohy je nutné projít formulářem, v němž se z disku počítače vybírá soubor, který má být připojen k artefaktu. Vyvolání formuláře a jeho odeslání, spolu s výběrem souboru představují monotónní činnosti, které není příjemné provádět opakovaně. Ani stahování n příloh není uživatelsky přívětivé, pokud se musí kliknout na n odkazů. Druhým současným technologickým omezením je nemožnost pracovat s přílohami přímo v systému Unicorn Universe. Uživatel musí přílohu nejprve uložit do svého počítače jako soubor. Ten následně otevře v programu asociovaném k souborům daného typu. Provede v tomto programu požadované úpravy. Po skončení úprav soubor uloží na svém počítači. Takto upravený a uložený soubor pak přiloží k artefaktu jako novou verzi přílohy. 17
Takový postup je o několik kroků složitější v porovnání s prací se soubory uloženými v počítači (nemusí se stahovat a odesílat). Je tu ovšem i riziko že nebude proveden poslední krok odeslání. Ať již selháním lidského faktoru (zapomenutí), nebo selháním technologií (poškození počítače, výpadek elektřiny či internetového připojení). Postupné ukládání rozpracovaného dokumentu na počítači uživatele je nedostačující, neboť zde nejsou data uložena bezpečně, ani nejsou k dispozici ostatním uživatelům. Odesílání každé rozpracované verze je zas pro uživatele činnost zdržující od práce. Dalším omezením je nemožnost přesouvání a kopírování více artefaktů najednou. Lze přesunout celou složku, ale ne jen vybrané podsložky a artefakty. Každý zvolený artefakt či složka tak musí být přesunut samostatně. Kopírovat je možné pouze artefakty. Složky a z nich odvozené objekty (např. organizační jednotky) kopírovat nelze. 18
2.2. REST REST (Representational State Transfer) je architektura rozhraní [5]. Ve své disertační práci ho v roce 2000 popsal Roy Fielding, jeden z autorů protokolu HTTP (Hypertext Transfer Protocol). Na rozdíl od předešlých procedurálně orientovaných architektur rozhraní jako jsou SOAP či RPC je REST datově orientován. REST rozhraní poskytuje CRUD operace nad zdroji. Každý zdroj má jedinečnou URL adresu. Zjednodušení na čtyři CRUD (Create vytvoření, Read čtení, Update aktualizace, Delete - smazání) operace vychází z protokolu http, nad kterým je REST vystavěn. HTTP nabízí osm operací (GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS a CONNECT). Pro REST jsou podstatné především POST (create), GET (read), PUT (update) a DELETE (delete). Pokud REST rozhraní poskytuje pro každý zdroj všechny čtyři CRUD operace, pak takové rozhraní označujeme jako RESTfull [6]. UES API není RESTfull, neboť většina commandů se pro zjednodušení provádí pomocí GET a POST. Například smazání artefaktu není prováděno pomocí HTTP DELETE, ale POST. 5 FIELDING, Roy Thomas: Architectural Styles and the Design of Network-based Software Architectures [online]. Irvine, 2000 [cit. 2013-06-20]. Disertační práce (Ph.D.). University of California. Dostupný z URL: <http://www.ics.uci.edu/~fielding/pubs/dissertation/fielding_dissertation.pdf >. 6 KOSEK, Jiří: PHP a XML. 1. vyd. Praha: Grada Publishing, 2009. 335 s. ISBN 80-247-1116-4. 19
2.3. Abstract factory pattern Pokud se v programu používá více tříd, které mají společného předka, přičemž je požadováno, aby jednotlivé třídy obsahovaly různé metody pracující nad různými daty. Pak je pattern Abstract factory vhodným způsobem jak zajistit, aby se s rozdílnými třídami dalo jednoduše pracovat. Tedy jak zakrýt rozdílnosti jednotlivých tříd [7]. Tento pattern používá třídy označované jako továrna a produkt. Továrna má za úkol vytvářet instance produktů dle daných kritérií. Programátor tedy sám nevolá konstruktor určité třídy (produktu) ani se nerozhoduje, jakého produktu bude vytvořená instance. Programátor vytvoří instanci určité továrny a jí pak požádá, nejčastěji metodou getinstance, o instanci produktu. Instance tovární třídy se dle zadaných kritérií rozhodne jaký produkt bude vytvářet. Následně zavolá konstruktor vybraného produktu a vytvořenou instanci vrátí. Rozhodovací kritéria mohou být předána vstupním parametrem metodě getinstance nebo se může jednat o konfigurační či lokalizační nastavení programu atd. [7]. Továrních tříd může být více, pro více skupin produktů. Například v programu prodejna budou tovární třídy Ovoce a Zelenina. Tovární třída Ovoce bude vytvářet instance produktů Jablka a Hrušky. Tovární třída Zelenina bude vytvářet instance produktů Mrkev a Cibule. Se všemi produkty bude možné pracovat stejným způsobem, protože jsou potomky stejné třídy Zboží. Je tedy možné je vložit do košíku či se dotazovat na cenu. U ceny se mohou projevit rozdílnosti výpočtů. Například produkty vytvořené továrnou Ovoce budou počítat cenu za kus, zatímco produkty vytvořené továrnou zelenina budou počítat cenu za kilogram. Produkty tak budou obsahovat atributy počet kusů a hmotnost. Dále mohou být rozdílnosti mezi produkty určité skupiny. Například produkty Cibule budou hmotnost převádět na cenu rovnou. Zatímco produkty Mrkev nejprve od hmotnosti odečítanou 10 procent za zelenou nať, která představuje zákazníkem nechtěnou část. 7 BISHOP, Judith: C# 3.0 Design Patterns. 1. vyd. Sebastopol: O'Reilly Media, 2007. 122 s. ISBN 0-596-52773-0. 20
Obrázek 3: Abstract factory pattern Zdroj: http://sheremetov.com/wp-content/uploads/2010/05/abstract.gif 21
2.4. Třívrstvá architektura Postupem času se stávaly počítačové programy více a více složité. Tím se stával zdrojový kód obsáhlejší a komplikovanější. V rostoucím počtu zapsaných řádků bylo čím dál více náročné se vyznat. Takový software pak bylo složité vyvinout a dále udržovat, přičemž obsahoval mnoho chyb. Prvním krokem ke zlepšení situace bylo členění zdrojového kódu do metod a funkcí. Jednou vytvořené metody a funkce, které byly dostatečně otestovány, pak bylo snadné znovu použít. Tím se proces vývoje zjednodušil a zrychlil. Dalším krokem bylo seskupení více metod a funkcí, zaměřených na podobný problém do knihoven. Tím vzrostla schopnost takového kódu být znovu použit. U složitých informačních systémů bylo velké množství knihoven, které bylo zapotřebí rozčlenit. Tak vznikly vrstvy. Software se dnes nevytváří jako ucelený balík kódu, ale je velmi často tvořen několika vrstvami z nichž každá má svůj úkol. Existuje mnoho návrhů, jak mohou jednotlivé vrstvy vypadat. Jaký je jejich úkol, s jakými vrstvami a jak komunikují. Nejrozšířenější je třívrstvá architektura. Třívrstvá architektura je tvořena datovou, logickou a prezentační vrstvou. V tomto pořadí jsou vrstvy řazeny od nejvzdálenější po nejbližší z pohledu konzumenta (uživatel či jiný software). [8] Komunikace mezi vrstvami je omezena pouze na vrstvy sousedící. Pokud některá vrstva potřebuje spolupracovat s jinou než sousedící vrstvou, činí tak výhradně za pomoci vrstvy sousedící, která tuto komunikaci zajišťuje. Striktní omezení na komunikaci mezi vrstvami umožňuje aby nesousedící vrstvy byly na sobě zcela nezávislé. Jejich vývoj je tak jednodušší. Také jejich údržba, rozvoj či úplné nahrazení může být snadné a bezpečné. Sousedící vrstvy spolu komunikují přes definované rozhraní. Při dodržení výše popsaného je snadné nahradit stávající vrstvu novou vrstvou s minimálním rizikem, že by změna kódu měla dalekosáhlejší důsledky [8]. 8 SHERIFF, Paul D.: Designing a.net Application [online]. PDSA Inc. [cit 2013-04-09]. Dostupné z URL: <http://msdn.microsoft.com/en-us/library/ms973829.aspx >. 22
Obrázek 4: Třívrstvá architektura Presentation tier Web / Win Forms User Controls Web services Business tier Service interface Business components Business workflow Business entities Data tier Data access components Service gateways Data sources Services Zdroj: Vlastní zpracování 23
2.4.1. Prezentační vrstva Tato vrstva má za úkol komunikovat s konzumentem a poskytovat či přijímat data. Její činnost se liší především dle konzumenta obsahu. Pokud je konzumentem jiná aplikace, budou data poskytnuta ve formě srozumitelné strojům, například xml soubory či datové streamy dostupné přes UES API. Pokud je konzumentem uživatel, budou data zobrazena v grafické podobě přes GUI, například s použitím Windows Forms. Prezenční vrstva přijímá požadavky od konzumenta. Následně uvede v činnost logickou vrstvu, která provede nové výpočty nad daty získanými od datové vrstvy. Prezenční vrstva pak zobrazí výsledky. [9] 2.4.2. Logická vrstva Logická vrstva, často nazývaná též bussines logika, se stará o zpracování dat, jako jediná datům plně rozumí. Na této vrstvě jsou prováděny výpočty. Protože se o ukládání dat stará datová vrstva, jsou výpočty nad daty zproštěny rozdílností dat plynoucích z místa a způsobu jejich uložení či získání. 2.4.3. Datová vrstva Téměř každý program dnes pracuje s nějakými daty. Datová vrstva má za úkol především základní CRUD operace s daty. Tato vrstva datům nerozumí, ani nezná jejich význam. Stará se především o jejich uložení a navrácení. Je nejčastěji tvořena databázemi. 9 FOWLER, Martin: Patterns of Enterprise Application Architecture. 1. vyd. Crawfordsville: Addison- Wesley Professional, 2002. 99 s. ISBN 0321127420. 24
2.5. JSON JSON, JavaScript Object Notation čili JavaScriptový objektový zápis, je datový formát v podobě textového řetězce reprezentující libovolný datový objekt (textový řetězec, číslo, logická hodnota atd.). JSON je určen k přenosu dat, neboť je nezávislý na programovacím jazyku či platformě. Data v něm reprezentována jsou strukturována definovaným způsobem [10]. V JSONu je možné data strukturovat do polí či hashů. Definice hashe začíná a končí složenými závorkami {}. Indexy hashů se zapisují do uvozovek, stejně tak se do uvozovek zapisují textové řetězce. Pokud není pro hodnotu definován index, je automaticky vybráno celé číslo počínaje nulou a zvyšující se o jedna pro každou další hodnotu bez definovaného indexu. Za indexem následuje dvojtečka :, jakožto oddělovač od hodnoty. Každá dvojice index hodnota je od následující dvojice oddělena čárkou,. Pole se zapisují do hranatých závorek []. Podobně jako u hashů se jednotlivé hodnoty pole oddělují čárkou,. Prázdná hodnota je reprezentována slovem null. Logická pravda je reprezentována slovem true a logická nepravda slovem false. Nealfabetické znaky (například uvozovky) jsou při použití v textovém řetězci escapovány zpětným lomítkem \. Jak je zvykem z jiných datových formátů nový řádek se zapisuje jako zpětné lomítko a znak n \n, tabulátor se zapisuje jako zpětné lomítko a znak t \t, samotné zpětné lomítko se zapisuje jako dvě zpětná lomítka \\ a znak v UTF-16 se zapisuje jako zpětné lomítko následované písmenem u a čtyřmi hexadecimálními číslicemi například \u0148 pro znak ň. Výchozím kódováním je UTF-8, ale není povinné [10]. 2.5.1. Příklad Následující příklad znázorňuje zápis dat instance třídy User. Atributy jsou name s hodnotou Jan, surname s hodnotou Novák a salary s hodnotou 25000. Objekt je reprezentován hashí. Příklad: { name : Jan, surname : Nov\u00e1k, salary : 25000 }. 10 RFC 4627. The application/json Media Type for JavaScript Object Notation (JSON). IETF: The Internet Engineering Task Force, 2006. s. 1. 25
3. Požadavky na aplikaci Tabulka níže obsahuje seznam požadavků vzešlých z konzultací se zástupci Unicorn College, jakožto uživatelů Unicorn Universe, a s vedením společnosti NeatCode s. r. o. interním implementačním partnerem Unicorn Universe. Tabulka 1: Požadavky Id Typ Název Popis REQ01 F Výběr disku REQ02 F Volba teritoria REQ03 F Přímá práce s přílohou REQ04 F Offline editace přílohy Automatické REQ05 F odeslání přílohy při uložení Volba dostupných disků (pevné disky, optické disky, FLASH disky atd.) lokálního počítače. Volba teritoria systému Unicorn Universe, do níž má uživatel přístup Otevření přílohy jako souboru na lokálním médiu, bez nutnosti manuálně stahovat. Stažení provede program automaticky na pozadí, přičemž přílohu uzamkne. Příloha se po stažení otevře v software třetí strany asociovaném k danému typu souboru. Během editace není nutná internetová konektivita. Při uložení editovaného souboru (pomocí software třetí strany v němž je příloha editována) automatické nahrání přílohy do systému Unicorn Universe jako nová verze přílohy. 26
Vybrané lokální objekty (soubory a složky) i objekty systému Unicorn Universe (složky, artefakty a přílohy artefaktů) lze kopírovat v rámci daného systému i napříč systémy. Objekty se kopírují včetně vnořených objektů (pokud existují). Objekty kopírované napříč systémy se převedou na příslušné ekvivalenty. REQ06 F Kopírování objektů Složky a artefakty systému Unicorn Universe se kopírují včetně listů a dalších vlastností. Na lokální médium se ukládají tak, aby bylo možné při zpětném kopírování do Unicorn Universe rekonstruovat listy a další vlastnosti artefaktu. Při shodě názvu kopírovaných příloh a existujících souborů na lokálním médiu budou lokální soubory nahrazeny. Při shodě názvu kopírovaných souborů a existujících příloh, bude vytvořena nová verze přílohy. Vybrané lokální objekty (soubory a složky) i objekty systému Unicorn Universe (složky, artefakty a přílohy artefaktu) lze přesouvat v rámci daného systému REQ07 F Přesun objektů i napříč systémy. Objekty se přesouvají včetně vnořených objektů (pokud existují). Pokud určitý systém neumožňuje přesun daného objektu, nebo je objekt přesouván napříč systémy bude nejprve vytvořena kopie do nového umístění a posléze smazán originál. REQ08 F Přejmenování objektů Vybrané lokální objekty (soubor a složka) i objekty systému Unicorn Universe (složka, artefakt a příloha artefaktu) lze přejmenovat. Vybrané lokální objekty (soubory a složky) i objekty REQ09 F Smazání objektů systému Unicorn Universe (složky, artefakty a přílohy artefaktu) lze smazat. Objekty se smažou včetně vnořených objektů (pokud existují). 27
Artefakt (či složku) lze vložit a odebrat ze seznamu REQ10 F Funkce oblíbených oblíbených. Artefakty v seznamu oblíbených jsou snadno dostupné pro jejich zobrazení bez nutnosti zadávat kód artefaktu a volit teritorium. REQ11 F Hromadný export oblíbených Jedním stiskem tlačítka je možné stáhnout všechny přílohy všech artefaktů a složek v seznamu oblíbených. Přihlašovací údaje je možno nechat "zapamatovat". REQ12 F Automatické přihlašování Údaje jsou pak v zabezpečené podobě uloženy na lokálním médiu počítače a jsou k dispozici při každém dalším spuštění programu. Není tak nutné se přihlašovat při každém spuštění programu. REQ13 U Stromové zobrazení struktury Stromové zobrazení struktury složek, souborů a artefaktů a průchod strukturou. Dvoupanelové zobrazení po vzoru Total Comanderu. REQ14 U Dvoupanelové zobrazení se záložkami Každý panel zobrazuje na jedné či více záložkách obsah systému Unicorn Universe nebo obsah lokálního média počítače. Záložky je možné přidávat a zavírat. Za aktivní záložku je považována ta jejíž obsah je právě zobrazen. Mezi záložkami lze přepínat a volit tak aktivní. Knihovna zachová jednotnost stávající dokumentace. REQ15 U Dokumentace knihovny UES Funkce potřebné pro fungování programu Artefakt Manager, implementované v knihovně budou svým názvem, vstupními a návratovými hodnotami atd. odpovídat stávající dokumentaci SOAP a REST UES API a gemu pro jazyk JRuby. Část programu zajištující komunikaci se systémem REQ16 S Knihovna UES Unicorn Universe bude představovat samostatnou knihovnu pro použití v jiných programech napsaných nad.net frameworkem. 28
REQ17 + XML seznam oblíbených REQ18 + Licence Seznam oblíbených artefaktů je ve formátu XML uložen v souboru na lokálním médiu počítače. Při každém spuštění programu je soubor načten. Použité budou jen knihovny a komponenty vydané pod svobodnou licencí (open source) s volně stažitelnými zdrojovými kódy dle interního doporučení společností Unicorn a.s. viz tabulka 2. Zdroj: Vlastní zpracování Tabulka níže znázorňuje vhodnost licencí pro použití v produktech Unicorn ES. Při interním rozvoji v rámci Unicorn Universe je závazná. Pro možnost dalšího rozvoje programu Artefakt Manager v rámci Unicorn Universe je tato tabulka závazná i pro knihovny a jiné použité komponenty třetích stran v programu Artefakt Manager. Tabulka 2: Vhodnost licencí pro použití v produktu Unicorn ES Schop- Název nost být Odkaz Podmínky použití použit GNU-GPL (General Public Licence) http://www.gnu.org/copyleft/gp l.html Nepoužívat. Lze použít pouze vývojové tooly, které nejsou součástí dodávky produktu. Optimálně nepoužívat. OpenSSL Licence http://www.ope nssl.org /source/license. html Copyright notice do About okna. Text licence do buildu a do helpu. Všechny marketingové a obchodní materiály musí obsahovat poznámku "This product includes cryptographic software written by Eric Young (eay@cryptsoft.com)" 29
AFL (Academic Free License) GNU-LGPL (Lesser General Public Licence) http://www.ope nsource.org /licenses/afl- 3.0.php http://www.gnu.org/licenses/lgp l.html Optimálně nepoužívat. Copyright notice do About okna. Text licence do buildu a do helpu. Vyžaduje explicitní souhlas uživatele s licencí (např. v instalátoru musí administrátor potvrdit souhlas). V případě, že budeme měnit SW podle AFL, můžeme jej i nadále distribuovat, ale musíme vyhovět AFL (umožnit přístup ke zdroj. kódům, označit námi změněné části kódu atd.). Optimálně nepoužívat. VŽDY komponenty zapojovat pouze jako oddělené knihovny (samostatné JARy atp.). V buildu vytvořit samostatný adresář pro zdrojové kódy komponent a přidat je tam. Dodržovat pravidla pro úpravy knihoven, tzn. upravený kód zase musí být samostatná knihovna, součástí buildu musí být text licence a zdrojový kód, ve zdrojovém kódu příslušným způsobem označeny změny. Copyright notice do About okna. 30
CPL (Common Public Licence) JOSL (Jabber Open Source Licence) MPL (Mozilla Public Licence) NPL (Netscape Public Licence) http://www.ope nsource.org /licenses/cpl1.0. php http://www.ope nsource.org /licenses/jabber pl.php http://www.mo zilla.org /MPL/MPL- 1.1.html http://www.mo zilla.org /MPL/NPL- 1.0.html Copyright notice do About okna. Text licence do buildu a do helpu. Licenční text UES/UAF musí obsahovat zříkání se záruky za škody. Dokumentace UES/UAF musí obsahovat "přiměřené" podmínky, za kterých může zákazník získat zdrojový kód části produktu, závislé na CPL komponentě. Distribuovat jako samostatnou knihovnu, a to i v případě modifikací. Copyright notice do About okna. Text licence do buildu a do helpu. Zdrojový kód součástí buildu/cd, a to včetně modifikací. Distribuovat jako samostatnou knihovnu, a to i v případě modifikací. Copyright notice do About okna. Text licence do buildu a do helpu. Zdrojový kód součástí buildu/cd, a to včetně modifikací. Distribuovat jako samostatnou knihovnu, a to i v případě modifikací. Copyright notice do About okna. Text licence do buildu a do helpu. Zdrojový kód součástí buildu/cd, a to včetně modifikací. Distribuovat jako samostatnou knihovnu, a to i v případě modifikací. 31
CDDL (Common Development and Distribution License) http://www.sun. com/cddl/ Knihovnu se zdrojovými kódy na CD. Licence na CD. Do svých modifikací open source softwaru zahrnout oznámení, které ho bude identifikovat jako účastníka (spolupracovníka) na modifikaci. V našich licenčních podmínkách k IS nesmíme omezit práva koncových uživatelů, co se týká jejich práva na přístup ke zdrojovému kódu open source softwaru poskytnutého dle CDDL, který je součástí IS a ke zdrojovému kódu modifikací open source softwaru. ASL (Apache Software Licence) BSD (Berkeley ) MIT Licence Copyright notice do About okna. http://www.apa Text licence do buildu. che.org/licenses V ASL1.1 je do about: "This product /LICENSEincludes software developed by the 2.0.html Apache Software Foundation (http://www.apache.org/). http://www.ope nsource.org Copyright notice do About okna. /licenses/bsdlicense.php Text licence do buildu a do helpu. http://www.ope nsource.org Copyright notice do About okna. /licenses/mitlicense.php Text licence do buildu a do helpu. Zdroj: Interní materiál pro vývoj Unicorn Universe 32
4. Use case analýza Tato kapitola popisuje případy užití vzešlé z funkčních požadavků. Dále obsahuje přehled aktérů a mapování případů užití na funkční požadavky které plní. 4.1. Přehled aktérů Tabulka níže popisuje aktéry programu Artefakt Manager. Tabulka 3: Přehled aktérů Název Popis Cíle Uživatel Unicorn Universe Užívá program pro zjednodušení Efektivnější práce. práce s Unicorn Universe. Vše potřebné pro řízení organizací na jednom místě a snadno Poskytuje chytrá řešení pro řízení organizací. dostupné. Zdroj: Vlastní zpracování 33
4.2. Přehled use case Tabulka níže obsahuje přehled use case. ID Název Popis Tabulka 4: Přehled use case UC01 UC02 UC03 UC04 Výběr disku Volba teritoria Přímá práce s přílohou Automatické odeslání přílohy při uložení Uživatel vybere dostupné médium lokálního počítače (pevné disky, optické disky, FLASH disky atd.) z ComboBoxu zvoleného panelu, následně se v daném panelu zobrazí root složka zvoleného média na aktivní záložce. Uživatel vybere z ComboBoxu zvoleného panelu teritorium systému Unicorn Universe, do nějž má přístup. Dále zapíše kód složky či artefaktu. Po stisku klávesy Enter či stisku tlačítka se šipkou doprava se zobrazí obsah vybraného objektu ve zvoleném panelu na aktivní záložce. Uživatel otevře přílohu jako soubor na lokálním médiu. Po kliknutí na přílohu ji program na pozadí stáhne, přičemž ji v systému Unicorn Universe uzamkne. Příloha se uloží do složky temp, dále již není internetové připojení nutné. Po stažení se příloha otevře v software třetí strany, asociovaném k danému typu souboru, v němž s ní bude uživatel moci dále pracovat. Při uložení editovaného souboru (pomocí software třetí strany v němž je příloha editována) program nahraje přílohu do systému Unicorn Universe jako novou verzi přílohy. 34
UC05 UC06 UC07 Kopírování objektů Přesun objektů Přejmenování objektů Uživatel vybere aktivní záložku jednoho z panelů a označí v ní objekty. Pravým tlačítkem myši vyvolá kontextovou nabídku a vybere položku Kopírovat. Objekty jsou následně zkopírovány do objektu zobrazeném na aktivní záložce druhého panelu. Obsah všech záložek obou panelů je aktualizován, pokud zobrazuje obsah cílového objektu, do kterého je kopírováno. Během provádění operace je zobrazeno okno s ProgessBarem informující o právě probíhající činnosti, hlavní okno programu Artefakt Manager je neaktivní. Uživatel vybere aktivní záložku jednoho z panelů a označí v ní objekty. Pravým tlačítkem myši vyvolá kontextovou nabídku a vybere položku Přesunout. Objekty jsou následně přesunuty do objektu zobrazeném na aktivní záložce druhého panelu. Obsah všech záložek obou panelů je aktualizován, pokud zobrazoval, nebo by nyní měl zobrazovat právě přesunutý objekt. Během provádění operace je zobrazeno okno s ProgessBarem informující o právě probíhající činnosti, hlavní okno programu Artefakt Manager je neaktivní. Uživatel vybere aktivní záložku jednoho z panelů a označí v ní objekty. Pravým tlačítkem myši vyvolá kontextovou nabídku a vybere položku Přejmenovat. Následně je zobrazeno dialogové okno pro zadání nového názvu jednotlivých objektů. Po potvrzení je objekt přejmenován. Obsah všech záložek obou panelů je aktualizován, pokud zobrazoval právě přejmenovaný objekt. 35
UC08 UC09 UC10 UC11 Smazání objektů Funkce oblíbených Hromadný export oblíbených Automatické přihlašování Uživatel vybere aktivní záložku jednoho z panelů a označí v ní objekty. Pravým tlačítkem myši vyvolá kontextovou nabídku a vybere položku Smazat. Objekty jsou následně smazány i s vnořenými objekty (pokud existují). Obsah všech záložek obou panelů je aktualizován, pokud zobrazoval právě smazaný objekt. Během provádění operace je zobrazeno okno s ProgessBarem informující o právě probíhající činnosti, hlavní okno programu Artefakt Manager je neaktivní. Artefakt (či složku) lze vložit, respektive odebrat ze seznamu oblíbených stiskem tlačítka s ikonou rozsvícené hvězdičky, respektive zhasnuté hvězdičky. Seznam oblíbených je zobrazen v ComboBoxu. Výběrem artefaktu či složky v ComboBoxu dojde k zobrazení obsahu objektu v aktuální záložce příslušného panelu. Stiskem tlačítka s ikonou šipky dolů se stáhnou všechny přílohy všech artefaktů a složek v seznamu oblíbených. Přílohy se uloží na lokální médium počítače do složky Unicorn Universe v dokumentech aktuálně přihlášeného uživatele. Při stažení příloh nedochází k zamykání přílohy. Při spuštění se program pokusí získat přihlašovací údaje ze souboru na disku. Pokud je soubor v pořádku, dojde k ověření spojení a platnosti přihlašovacích údajů a program je přihlášen. Soubor je šifrován, proto se musí přihlašovací údaje před použitím dešifrovat pomocí klíče, kterým je identita uživatele přihlášeného v operačním systému Windows. Zdroj: Vlastní zpracování 36
4.3. Mapování požadavků na use case Tabulka níže popisuje mapování požadavků na use case, které je naplňují. Tabulka 5: Mapování požadavků na use case UC01 UC02 UC03 UC04 UC05 UC06 UC07 UC08 UC09 UC10 UC11 REQ01 REQ02 REQ03 REQ04 REQ05 REQ06 REQ07 REQ08 REQ09 REQ10 REQ11 REQ12 X X X X X X X X Zdroj: Vlastní zpracování X X X X 37
4.4. Use case diagram Obrázek níže znázorňuje use case diagram programu Artefakt Manager. Obrázek 5: Use case diagram Artefakt Manager UC01 Výběr disku UC02 Volba teritoria UC03 Přímá práce s přílohou UC04 Automatické odeslání přílohy při uložení UC05 Kopírování objektů Uživatel UC06 Přesun objektů Unicorn Universe UC07 Přejmenování objektu UC08 Smazání objektů UC09 Funkce oblíbených UC10 Hromadný export oblíbených UC11 Automatické přihlašování Zdroj: Vlastní zpracování 38
4.5. Use case specifikace Následující kapitoly popisují detailněji jednotlivé use case. Jejich vstupní podmínky, koncové stavy, aktéry a alternativní scénáře. 4.5.1. UC01 Výběr disku Tabulka níže popisuje use case UC01 Výběr disku. Tabulka 6: UC01 Výběr disku Popis Vstupní podmínka Stav po skončení Aktér Alternativní tok A1 Alternativní tok A2 Uživatel vybere dostupné médium lokálního počítače (pevné disky, optické disky, FLASH disky atd.) z ComboBoxu zvoleného panelu. Následně se na aktivní záložce zvoleného panelu zobrazí root složka zvoleného média. Existuje lokální médium, které je uživateli dostupné. Uživatel má oprávnění číst data ze zvolného média. Zvolený panel programu zobrazuje v aktivní záložce obsah root složky zvoleného média. Uživatel. Uživatel nemá oprávnění zobrazit seznam dostupných medií, 1 nebo pro něj neexistuje žádné dostupné médium. 2 Volba média nebude dostupná. Uživatel nemá oprávnění ze zvoleného média či root složky číst 1 data. Zobrazí se hlášení o chybě. Ve zvoleném panelu zůstane na aktivní záložce zobrazen aktuální obsah. 2 Zdroj: Vlastní zpracování 39
4.5.2. UC02 Volba teritoria Tabulka níže popisuje use case UC02 Volba teritoria. Tabulka 7: UC02 Volba teritoria. Popis Vstupní podmínka Stav po skončení Aktér Alternativní tok A1 Alternativní tok A2 Uživatel vybere z ComboBoxu zvoleného panelu teritorium systému Unicorn Universe, do nějž má přístup. Dále zapíše ve zvoleném panelu kód složky či artefaktu. Po stisku klávesy Enter či stisku tlačítka se šipkou doprava se zobrazí obsah vybraného objektu na aktivní záložce zvoleného panelu. Funkční připojení k síti Internet. Uživatel je přihlášen a má oprávnění spouštět vzdálené commandy do zvoleného teritoria. Zvolený panel programu zobrazuje na aktivní záložce obsah vybraného artefaktu či složky. Uživatel. 1 Uživatel nemá oprávnění zobrazit obsah zvoleného objektu. Zobrazí se hlášení o chybě. Aktivní záložka zvoleného panelu 2 bude dále zobrazovat obsah předchozího objektu. 1 Přerušení internetového spojení. Zobrazí se hlášení o chybě. Na aktivní záložce zvoleného panelu 2 zůstane zobrazen aktuální obsah. Zdroj: Vlastní zpracování 4.5.3. UC03 Přímá práce s přílohou Tabulka níže popisuje use case UC03 Přímá práce s přílohou. Tabulka 8: UC03 Přímá práce s přílohou Popis Uživatel otevře přílohu jako soubor na lokálním médiu. Po kliknutí na přílohu ji program na pozadí stáhne a uzamkne. Příloha se uloží do složky temp, dále již není internetové připojení nutné. Po stažení se příloha otevře v software třetí strany, asociovaném k danému typu souboru, v němž s ní bude uživatel moci dále pracovat. 40
Vstupní podmínka Stav po skončení Aktér Alternativní tok A1 Alternativní tok A2 Funkční připojení k síti Internet během stahování. Uživatel má oprávnění stáhnout přílohu. Příloha je stažena do složky temp a otevřena softwarem třetí strany. Uživatel. 1 Uživatel nemá oprávnění stáhnout přílohu. Zobrazí se hlášení o chybě. Software třetí strany nebude spuštěn. 2 1 Přerušení internetového spojení. Zobrazí se hlášení o chybě. Software třetí strany nebude spuštěn. 2 Zdroj: Vlastní zpracování 4.5.4. UC04 Automatické odeslání přílohy při uložení Tabulka níže popisuje use case UC04 Automatické odeslání přílohy při uložení. Tabulka 9: UC04 Automatické odeslání přílohy při uložení Popis Vstupní podmínka Stav po skončení Aktér Alternativní tok A1 Alternativní tok A2 Při uložení editovaného souboru (pomocí software třetí strany v němž je příloha editována) program nahraje přílohu do systému Unicorn Universe jako novou verzi přílohy. Funkční připojení k síti Internet. Uživatel má oprávnění vytvořit novou verzi přílohy. Příloha není uzamčena jiným uživatelem. Software třetí strany dokončil ukládání editovaných dat. Editovaný soubor je uložen v systému Unicorn Universe jako nová verze přílohy. Uživatel. Uživatel nemá oprávnění vytvořit novou verzi přílohy, nebo je 1 uzamčena jiným uživatelem. 2 Zobrazí se hlášení o chybě. 1 Přerušení internetového spojení. 2 Zobrazí se hlášení o chybě. Zdroj: Vlastní zpracování 41
4.5.5. UC05 Kopírování objektů Tabulka níže popisuje use case UC05 Kopírování objektů. Tabulka 10: UC05 Kopírování objektů Popis Vstupní podmínka Stav po skončení Aktér Alternativní tok A1 Alternativní tok A2 Alternativní tok A3 Alternativní tok A4 Vytváří kopie objektů do zvoleného umístění. Funkční připojení k síti Internet pro kopírování z, do nebo v rámci systému Unicorn Universe. Uživatel má oprávnění číst data z objektů, včetně vnořených objektů, které se mají kopírovat. Uživatel má oprávnění zapisovat do cílového objektu a vytvářet v něm objekty nové. Kopírovaný objekt není artefakt či složka (systému Unicorn Universe nebo lokální), pokud je cílovým objektem artefakt. Označené objekty jsou zkopírovány do cílového umístění. Uživatel. Uživatel nemá oprávnění číst data z objektů, včetně vnořených 1 objektů, které se mají kopírovat. 2 Zobrazí se hlášení o chybě. 3 Operace pokračuje dalším objektem vybraným ke kopírování. Přerušení internetového spojení při kopírování z, do nebo 1 v rámci systému Unicorn Universe. 2 Zobrazí se hlášení o chybě. Pokud je cílovým objektem artefakt, a přesouvaným objektem je 1 artefakt či složka (systému Unicorn Universe nebo lokální). 2 Zobrazí se hlášení o chybě. 3 Daný objekt je vynechán z kopírování a pokračuje se dalším. Uživatel nemá oprávnění zapisovat do cílového objektu a vytvářet v něm objekty nové. 1 2 Zobrazí se hlášení o chybě. 3 Operace pokračuje dalším objektem vybraným ke kopírování. Zdroj: Vlastní zpracování 42
4.5.6. UC06 Přesun objektů Tabulka níže popisuje use case UC06 Přesun objektů. Tabulka 11: UC06 Přesun objektů Popis Vstupní podmínka Stav po skončení Aktér Alternativní tok A1 Alternativní tok A2 Alternativní tok A3 Alternativní tok A4 Přesouvá objekty do zvoleného umístění. Funkční připojení k síti Internet pro přesun z, do nebo v systému Unicorn Universe. Uživatel má oprávnění číst data z objektů, včetně vnořených objektů, které se mají přesunout. Uživatel má oprávnění zapisovat do cílového objektu a vytvářet v něm objekty nové. Přesouvaný objekt není artefakt či složka (systému Unicorn Universe nebo lokální), pokud je cílovým objektem artefakt. Označené objekty jsou přesunuty do cílového umístění. Uživatel. Uživatel nemá oprávnění číst data z objektu, včetně vnořených 1 objektů, které se mají přesunout. 2 Zobrazí se hlášení o chybě. Objekt zůstane nezměněn. 3 Operace pokračuje dalším objektem vybraným k přesunutí. Přerušení internetového spojení při přesouvání z, do nebo 1 v rámci systému Unicorn Universe. 2 Zobrazí se hlášení o chybě. Objekt zůstane nezměněn. Uživatel nemá oprávnění zapisovat do cílového objektu a vytvářet v něm objekty nové. 1 2 Zobrazí se hlášení o chybě. Objekt zůstane nezměněn. 3 Operace pokračuje dalším objektem vybraným k přesunutí. Pokud je cílovým objektem artefakt, a přesouvaným objektem je 1 artefakt či složka (systému Unicorn Universe nebo lokální). 2 Zobrazí se hlášení o chybě. Přesun objektu se nezahájí. 3 Operace pokračuje dalším objektem vybraným k přesunutí. Zdroj: Vlastní zpracování 43
4.5.7. UC07 Přejmenování objektu Tabulka níže popisuje use case UC07 Přejmenování objektu. Tabulka 12: UC07 Přejmenování objektu Popis Vstupní podmínka Stav po skončení Aktér Alternativní tok A1 Alternativní tok A2 Alternativní tok A3 Přejmenuje vybrané objekty. Funkční připojení k síti Internet pro přejmenování objektů v systému Unicorn Universe. Uživatel má oprávnění číst data z objektů, které se mají přejmenovat. Uživatel má oprávnění zapisovat do cílového objektu. Označené objekty jsou přejmenovány. Uživatel. Přerušení internetového spojení při přejmenování objektů 1 v systému Unicorn Universe. 2 Zobrazí se hlášení o chybě. Uživatel nemá oprávnění číst data z objektů, které se mají přejmenovat. 1 2 Zobrazí se hlášení o chybě. 3 Operace pokračuje dalším objektem označeným k přejmenování. 1 Uživatel nemá oprávnění zapisovat do cílového objektu. 2 Zobrazí se hlášení o chybě. 3 Operace pokračuje dalším objektem označeným k přejmenování. Zdroj: Vlastní zpracování 44
4.5.8. UC08 Smazání objektů Tabulka níže popisuje use case UC08 Smazání objektů. Tabulka 13: UC08 Smazání objektů Popis Vstupní podmínka Stav po skončení Aktér Alternativní tok A1 Alternativní tok A2 Smaže vybrané objekty. Funkční připojení k síti Internet při mazání objektů v systému Unicorn Universe. Uživatel má oprávnění smazat daný objekt. Vybrané objekty jsou smazané. Uživatel. Přerušení internetového spojení při mazání objektů v systému 1 Unicorn Universe. 2 Zobrazí se hlášení o chybě. 1 Uživatel nemá oprávnění smazat daný objekt. 2 Zobrazí se hlášení o chybě. 3 Operace pokračuje dalším objektem označeným ke smazání. Zdroj: Vlastní zpracování 4.5.9. UC09 Funkce oblíbených Tabulka níže popisuje use case UC09 Funkce oblíbených. Tabulka 14: UC09 Funkce oblíbených Popis Vstupní podmínka Artefakt (či složku) lze vložit, respektive odebrat ze seznamu oblíbených stiskem tlačítka s ikonou rozsvícené hvězdičky, respektive zhasnuté hvězdičky. Seznam oblíbených je zobrazen v ComboBoxech na obou panelech. Výběrem artefaktu či složky v ComboBoxu dojde k zobrazení obsahu objektu na aktivní záložce daného panelu. Funkční připojení k síti Internet. Uživatel má oprávnění číst informace o zvoleném artefaktu či složce. 45
Stav po skončení Aktér Alternativní tok A1 Alternativní tok A2 Po stisku hvězdičky je objekt přidán či odebrán ze seznamu oblíbených. Po výběru v ComboBoxu je zobrazen obsah zvoleného objektu na aktivní záložce daného panelu. Uživatel. 1 Uživatel nemá oprávnění číst informace o vybraném objektu. 2 Zobrazí se hlášení o chybě. 1 Přerušení internetového spojení. 2 Zobrazí se hlášení o chybě. Zdroj: Vlastní zpracování 4.5.10. UC10 Hromadný export oblíbených Tabulka níže popisuje use case UC10 Hromadný export oblíbených. Tabulka 15: UC10 Hromadný export oblíbených Popis Vstupní podmínka Stav po skončení Aktér Alternativní tok A1 Alternativní tok A2 Stiskem tlačítka s ikonou šipky dolů se stáhnou všechny přílohy všech artefaktů a složek v seznamu oblíbených. Přílohy se uloží na lokální médium počítače do složky Unicorn Universe v dokumentech aktuálně přihlášeného uživatele. Při stažení příloh nedochází k zamykání přílohy. Funkční připojení k síti Internet. Uživatel má oprávnění stahovat přílohy vybraných objektů. Přílohy jsou staženy na lokální médium počítače. Uživatel. Uživatel nemá oprávnění získat seznam příloh. či stahovat přílohy zvoleného objektu. 1 2 Zobrazí se hlášení o chybě. 1 Přerušení internetového spojení. 2 Zobrazí se hlášení o chybě. Zdroj: Vlastní zpracování 46
4.5.11. UC11 Automatické přihlašování Tabulka níže popisuje use case UC11 Automatické přihlašování. Tabulka 16: UC11 Automatické přihlašování Popis Vstupní podmínka Stav po skončení Aktér Alternativní tok A1 Alternativní tok A2 Při spuštění se program pokusí získat přihlašovací údaje ze souboru na disku. Pokud je soubor v pořádku, dojde k ověření spojení a platnosti přihlašovacích údajů a program je přihlášen. Funkční připojení k síti Internet. Správně uložené přihlašovací údaje. Uživatel je přihlášen. Uživatel. Při nemožnosti číst soubor, nebo neplatných přihlašovacích 1 údajích, není uživatel přihlášen. Je zobrazeno přihlašovací okno vyžadující zadat příslušné údaje. V přihlašovacím okně je možnost zaškrtnout políčko Zapamatovat, čímž dojde k uložení přihlašovacích údajů na lokální 2 médium počítače. 1 Přerušení internetového spojení. Je zobrazeno přihlašovací okno, ve kterém se po obnovení spojení uživatel přihlásí. 2 Zdroj: Vlastní zpracování 47
5. Zvolená architektura Z pohledu třívrstvé architektury implementuje Artefakt Manager první dvě vrstvy. Tedy prezentační a logickou vrstvu. Datová vrstva je zajištěna dvojím způsobem, dle povahy dat. V případě souborů na disku představují datovou vrstvu služby operačního systému zprostředkované.net frameworkem. Unicorn Universe pak představuje datovou vrstvu pro artefakty, složky a přílohy artefaktů. Logická vrstva je dále členěna horizontálně na business podvrstvu a podvrstvu pro přístup k datům. Business podvrstva obsahuje většinu logiky samotného programu. Je zde použit abstrakt factory pattern. Pro unifikaci jinak rozdílných přístupů k datům dle jejich místa uložení. Podvrstva pro přístup k datům je dále rozdělena vertikálně na prostředky poskytované.net frameworkem a knihovnu UES komunikující pomocí REST UES API s Unicorn Universe. Obrázek 6: Architektura Presentation tier Button TextBox DataGridView Logical tier Business tier Abstract factory Abstract File Abstract Directory Abstract Factory Data access tier UES System.IO UESArtifact UESFolder FileInfo DirectoryInfo UESAttachem ent FileStream Zdroj: Vlastní zpracování 48
6. Business podvrstva Jejím úkolem je odstínit rozdíly mezi lokálním ukládáním dat a ukládáním do Unicorn Universe viz kapitola 6.1 Mapování složky a souboru na složku, artefakt a přílohu. Všechny objekty jsou potomci abstraktní třídy Entiti, viz Obrázek 7: Diagram tříd business vrstvy, která definuje základní atributy a metody shodné pro každý další objekt. Na základě třídy Entiti je především definováno grafické zobrazení v prezenční vrstvě. Přímými potomky třídy Entiti jsou abstraktní třídy AbstractDirectory a AbstractFile. Jejích společným úkolem je již zmíněné odstínění rozdílností ukládání dat. Na základě design patternu abstrakt faktory sjednocují rozdílné produkty továren. Továrnami jsou třídy FactorySystem a FactoryUniverse. Instance třídy FactorySystem vytváří instance tříd SystemDirectory a SystemFile. Zatímco instance třídy FactoryUniverse vytváří instance tříd UniverseAttachement, UniverseDirectory a UniverseArtifact. Třída SystemFile reprezentuje nositele lokálních dat. UniverseAttachement reprezentuje nositele dat uložených v Unicorn Universe jako přílohu artefaktu. Třída SystemDirectory reprezentuje složku na lokálním mediu. Třídy UniverseDirectory a UniverseArtifact pak reprezentují složku a artefakt v Unicorn Universe. Protože dvě třídy reprezentují složku (na základě rozhodnutí o mapování objektů) je použita třída UniFileDir. UniFileDir zastiňuje rozdíly mezi UniverseDirectory a UniverseArtifact, tedy rozdíly mezi složkou a artefaktem systému Unicorn Universe. Třída UniFileDir představuje jakousi obecnou složku, která ve skutečnosti tvoří konkrétní instance určitých tříd. Třídy UniverseDirectory a UniverseArtifact jakožto potomci UniFileDir jsou povinni implementovat rozhraní IUESUri, stejně tak jako třída UniverseAttachement. Rozhraní IUESUri dává třídám reprezentujícím objekty Unicorn Universe vlastnosti typické pro tento systém, jako je jedinečný kód UESUri či příslušnost k určitému teritoriu. Rozhraní IMarUri implementované třídami UniverseDirectory a UniverseArtifact, jakožto potomků třídy UniFileDir, přidává kód meta artefaktu, dle kterého byly objekty vytvořeny v systému Unicorn Universe. 49
Obrázek 7: Diagram tříd business vrstvy Zdroj: Vlastní zpracování 50
6.1. Mapování složky a souboru na složku, artefakt a přílohu Operační systém ukládá data do souborů. Soubor je obsažen ve složce. Přičemž složka může obsahovat kromě souborů i podsložky. Unicorn Universe ukládá v tomto případě data do příloh. Příloha může být připojena ke složce nebo artefaktu. Artefakt může obsahovat pouze přílohy a je uložen ve složce. Složka může krom již zmíněných příloh a artefaktů obsahovat podsložky. Obrázek 8: Mapování na složku a soubor Složka Složka Podsložka Podsložka Artefakt Soubor Příloha Příloha Zdroj: Vlastní zpracování Pro účel programu Artefakt Manager bylo zvoleno mapování znázorněné na obrázku Obrázek 8: Mapování na složku a soubor přerušovanými čarami. Tedy složky a podsložky jsou si identické. Soubor a příloha, jakožto nositelé dat, znamenají totéž. Jen v Unicorn Universe může příloha být připojena nejen ke složce, ale i k artefaktu. Artefakt je pak vnímán jako speciální případ složky, která nemůže obsahovat podsložku, či podartefakt. Artefakt Manager rozlišuje složku a artefakt pouze graficky, ikonou. Složka má typickou žlutou ikonu, zatímco artefakt má logo Unicorn Universe. 51
7. Knihovna UES Podvrstva pro přístup k datům je vertikálně rozdělena na část používající funkce.net frameworku a knihovny UES. První část s.net frameworkem není příliš složitá, používá třídy z jmenného prostoru System.IO. Například statické třídy FileInfo a DirectoryInfo pro získání základních informací o souboru a složce. Pro získání samotných dat ze souboru je pak použit stream FileStream. Všechny potřebné elementární funkce jsou již implementovány frameworkem a v této části se jen vhodným způsobem používají. Komplikovanější je situace s přístupem k datům v systému Unicorn Universe. Jak již bylo řečeno výše existující knihovna používající pro komunikaci protokol SOAP je napsána jen pro jazyk Java. Proto byla vytvořena UES knihovna pro jazyk C#. Tato knihovna tvoří samostatnou část nezávislou na zbytku programu Artefakt Manager. Díky tomu je možné tuto část programu dále použít i v jiných programech. Do knihovny byly implementovány funkčnosti nutné pro práci programu Artefakt Manager viz kapitola 7.2 Implementované funkce. Knihovna odpovídá UES API systému Unicorn Universe ve verzi 7.10. Knihovna je vytvořena dle existující dokumentace ke stávajícímu rozhraní. Stoprocentní shodu nebylo možné zajistit rozdílností jazyků Java a C#. Je však zajištěna v maximální možné míře. 52
7.1. Jednotnost knihoven pro C# a Javu Pokud stávající rozhraní pro Javu obsahuje třídu UESArtifact. A tato třída má metodu getattributes. Potom i knihovna pro C# má třídu UESArtifact s metodou getattributes. Obě metody mají i stejné vstupní parametry, ovšem v případě Javy se jedná o Java objekty a v případě C# se jedná o C# objekty. Tato metoda vrací při kladné odpovědi objekt třídy UESArtifactAttributes. Typem atributu code třídy UESArtifactAttributes je v případě Javy java.lang.string, v případě C# se jedná o typ string. U číselného atributu například zde revision je místo java.lang.integer použit typ int. Přesto že na obecné úrovni jsou tyto datové typy stejné, je jejich implementace v různých programovacích jazycích odlišná. Proto není možné prohlásit, že jsou obě knihovny stoprocentně shodné. Na obecné úrovni to ovšem prohlásit lze, neboť základní datové typy poskytované samotnými jazyky jsou jedinou odlišností. Složitější objekty vytvořené ze základních se od sebe v obou knihovnách již neliší. Knihovna je dále rozšířena o dvě třídy. První třída Login se stará o poskytování uživatelského jména a hesla commandům viz kapitola 7.5 Třída Login. Druhá třída Crypto tyto přihlašovací údaje šifruje a dešifruje viz kapitola 7.6 Třída Crypto. Důvodem pro zachování shody bylo použití v praxi již ověřeného návrhu objektů a možnost použití stávající dokumentace. Není tak nutné vytvářet a případně udržovat další novou dokumentaci. Lidé znalí stávajícího rozhraní jsou schopni okamžitě použít nové, bez nutnosti učit se či školit na nové. 53
7.2. Implementované funkce Tabulka níže shrnuje funkce implementované v knihovně UES pro C#. Metody třídy Login jsou rozšíření implementovaná nad rámec UES API. Tabulka 17: Funkce implementované v knihovně UES pro C# Třída Název metody Popis UESArtifact UESAttachment UESFolder create delete getattributes move setattributes checkin checkout create delete getattachment- Data getattachment- List create delete getattributes getentrylist setattributes Vytvoří nový artefakt. Smaže artefakt. Získá vlastnosti artefaktu, například název či kód artefaktu. Přesune artefakt do jiné složky. Nastaví vlastnosti artefaktu. Odešle do systému Unicorn Universe soubor jako novou verzi přílohy. Pokud byla příloha uzamčena, odemkne ji. Uzamkne přílohu, pokud je to možné, a stáhne přílohu ze systému Unicorn Universe. Odešle soubor do systému Unicorn Universe jako novou přílohu zvoleného artefaktu. Smaže přílohu artefaktu. Stáhne přílohu ze systému Unicorn Universe. Na rozdíl od checkout přílohu nezamkne. Získá seznam příloh zvoleného artefaktu. Vytvoří složku. Smaže složku. Získá vlastnosti zvolené složky, například název či kód složky. Získá seznam podřízených objektů (podsložky, artefakty, organizační jednotky atd.) zvolené složky. Nastaví vlastnosti složky. 54
UESPersonalRole getterritorylist Získá seznam teritorií do kterých má uživatel přístup (aktivní přístupovou roly). create Vytvoří další vlastnost artefaktu. createcollection Vytvoří skupinu dalších vlastností artefaktu. delete Smaže další vlastnost artefaktu. deletecollection Smaže skupinu dalších vlastností artefaktu. getattributes Získá atributy další vlastnosti artefaktu. UESProperty getcollectionattributes Získá atributy skupiny dalších vlastností artefaktu. getentrylist Získá seznam vnořených dalších vlastností a skupin dalších vlastností, z artefaktu či ze skupiny dalších vlastností. getvalue Získá hodnotu další vlastnosti. create Vytvoří nový list artefaktu. delete Smaže list artefaktu. UESSheet getsheetdata Stáhne obsah listu artefaktu. getsheetlist Získá seznam listů artefaktu. setattributes Nastaví vlastnosti listu artefaktu. UESSesion getpersonalrole Získá UESUri osobní role uživatele. Login Serializace Uloží na lokální disk přihlašovací údaje uživatele. Deserializace Načte z lokálního disku přihlašovací údaje uživatele. Zdroj: Vlastní zpracování 55
7.3. Knihovny třetích stran UES knihovna používá dvě knihovny třetích stran. První je Json.NET zpracovávající datový formát JSON, v němž jsou odesílány požadavky a přijímány odpovědi z REST UES API. Druhou knihovnou je RestSharp, která zajišťuje komunikaci s REST UES API přes HTTP. 7.3.1. RestSharp Knihovna s licencí Apache License 2.0. Je jednoduchým klientem pro protokol REST a HTTP, používá se především pro vytváření RESTových požadavků. Po odeslání požadavku a přijetí odpovědi knihovna RestSharp vytváří objekt reprezentující odpověď. Tento objekt usnadňuje další práci se získanou odpovědí. Domovská stránka projektu vyvíjející tuto knihovnu je na webové adrese http://restsharp.org. Zdrojové kódy je možné k projektu ve Visual Studiu připojit pomocí komponenty NuGet, nebo stáhnout například z úložiště zdrojových kódů GitHub na webové adrese https://github.com/restsharp/restsharp. Dokumentace je k dispozici na webové adrese https://github.com/restsharp/restsharp/wiki. 56
7.3.2. Json.NET Také označovaný jako Newton Json. Je knihovna pod licencí MIT. Knihovna se stará o parsování.net objektů do datové struktury formátu JSON při vytváření požadavků. Při čtení odpovědí pak tato knihovna parsuje ze struktury JSON text přijatý v těle odpovědi. Domovská stránka této knihovny je na webové adrese http://james.newtonking.com/pages/json-net.aspx. Zdrojové kódy je možné k projektu ve Visual Studiu připojit pomocí komponenty NuGet, nebo stáhnout například na webové stránce http://json.codeplex.com/releases/view/105023. Dokumentace je k dispozici na webové adrese http://james.newtonking.com/projects/json/help/. Důvodem pro použití knihovny Json.NET a ne například Windows.Data.Json je vyšší rychlost parsování, viz následující graf přejatý z oficiálních stránek Json.NET. Graf 1: Porovnání výkonnosti Json.Net a Windows.Data.Json Zdroj: http://james.newtonking.com/images/windows.data.json-vs- Json.NET_BE86/jsonnetwindowsdatajson.png 57
7.4. Autentizace Protože je protokol HTTP bezstavový, není možné se trvale přihlásit samotným RES- Tem. Unicorn Universe nepoužívá pro UES API žádné technologie jako seasion či cookies a je tak nutné se autentizovat při každém volání commandu. Je akceptována základní autentizace tedy basic authentication. Při té je použito nejprve uživatelské jméno, což je v případě Unicorn Universe přístupový kód jedna. Následuje dvojtečka a heslo, kterým je přístupový kód dva. Takto vzniklý řetězec je následně zakódován pomocí Base64 a odeslán v těle požadavku. Samotné dekódování řetězce je sice velmi snadné a kódování tak představuje zabezpečení jen pro osobu neznalou tohoto postupu. Jinak spíše než zabezpečení představuje zamaskování uživatelského jména a hesla. Bezpečnost je ovšem dostatečně zajištěna použitím již výše zmíněného protokolu HTTP v zabezpečené podobě tedy HTTPS. 7.5. Třída Login Všechny commandy při autentizace získávají přihlašovací údaje ze statických atributů name a password třídy Login. Před voláním prvního commandu je tedy nutné tyto atributy naplnit hodnotou přístupový kód jedna a přístupový kód dva. Díky tomu už ale není nutné při volání commandu předávat tyto hodnoty parametrem. Ostatně dle dokumentace nemá žádný command přihlašovací údaje jako parametr. Knihovna UES tak působí, že je trvale přihlášena k systému Unicorn Universe. Třída Login implementuje dvě statické metody Serializace a Deserializace. Metoda Serializace se postará o uložení přihlašovacích údajů v zašifrované podobě do binárního souboru umístěného ve složce AppData programu. Metoda Deserializace se pak postará o načtení dříve serializovaných přihlašovacích údajů a jejich dešifrování. Následně jimi naplnění atributy name, password. Při použití metod Serializace a Deserializace není nutné požadovat po uživateli zadání přihlašovacích údajů při každém spuštění programu. Stačí je vyžádat při prvním spuštění a následně uložit. Při každém dalším spuštění se přihlašovací údaje načtou z disku. 58
7.6. Třída Crypto Má za úkol šifrovat a dešifrovat přihlašovací údaje. Crypto používá jako klíč k šifrování a dešifrování identitu uživatele přihlášeného k operačnímu systému Windows. Tím je zajištěno, aby přihlašovací údaje nemohl přečíst nikdo jiný než program spuštěný daným uživatelem Windows. Knihovna UES ukládá zašifrované přihlašovací údaje do souboru na disku lokálního počítače do speciální složky v AppData přihlášeného uživatele. Operační systém Windows pak zajišťuje, že do příslušné složky v AppData má přístup pouze program, který knihovnu používá. Každý program používající knihovnu UES má vlastní složku. 7.7. Tvorba commandu Pokud chceme do knihovny UES přidat nový command, například pro vytvoření nového artefaktu, postup je následující. Nejprve vytvoříme statickou metodu create ve třídě UESArtifact. Metoda create má dle dokumentace návratovou hodnotu typu UESUri obsahující uri nově vytvořeného artefaktu. Dokumentace dále říká, že metoda má dva vstupní parametry. Prvním parametrem typu UESUri je uri objektu (složky, organizační jednotky atd.) ve kterém bude nový artefakt vytvořen. Druhým parametrem typu UESArtifactCreate je objekt, obsahující informace o novém artefaktu jako název či kód. public static class UESArtifact { public static UESURI create(uesuri locationuri, UESArtifactCreate artifact) { return Command.ExecutePOST<UESURI> (UESArtifact.create, locationuri, artifact); } } V těle metody create se zavolá příslušná statická metoda Execute třídy Command. Protože se nový artefakt vytváří HTTP požadavkem typu POST, vybereme metodu ExecutePOST. Tato metoda je přetížena. Existují dvě varianty. První varianta metody ExecutePOST nemá návratovou hodnotu a používá se pro commandy, které mají jediný vstupní parametr UESUri, například command delete nad objektem UESArtifact. V příkladu je použita druhá varianta metody ExecutePOST, která je generická. Návratovým typem metody je předaný typ (ve špičatých závorkách). 59
Všechny metody Execute mají jako první parametr textový řetězec obsahující část url určující cestu commandu v UES API. Url adresa, která bude volána protokolem HTTP se v metodě Execute vytváří složením url adresy UES API, cestou commandu a případně UESUri objektu s nímž bude pracováno. Proto je nutné každé metodě Execute předat cestu konkrétního commandu, který bude zavolán. Cesty commandů jsou jakožto konstanty zapsané v příslušné třídě. Dalším krokem je tedy vytvoření této konstanty ve třídě UESArtifact. internal const string create = "core/artifact/uesartifact/create?uesuri="; Součástí konstanty je rovnou i definice parametru, říkající že přes url bude předáno UESUri objektu. Toto UESUri je prvním parametrem commandů a druhým parametrem všech Execute metod. Jedinou výjimkou je konstanta obsahující identifikátor commandu getpersonalrole nad objektem UESSession. Tento command dle dokumentace nemá žádný vstupní parametr. Některé metody Execute, jako v ukázkovém příkladě, mají ještě třetí parametr. Ten není vyžadován u všech commandů. Pokud je zapotřebí předat systému Unicorn Universe určité informace, jsou vždy uloženy v tomto objektu. Různé commandy používají různé typy objektů dle povahy dat, které je nutno předat. V ukázce je předán objekt typu UESArtifactCreate obsahující název nebo kód nově vytvářeného objektu. Posledním krokem je vytvoření třídy UESArtifactCreate s příslušnými metodami a atributy dle dokumentace. Pro správnou funkci serializace respektive deserializace objektů do respektive z formátu Json je nutno u každého atributu definovat getter a setter. Například atribut název nového artefaktu nesmí být zapsán jako public string name;, ale jako public string name { get; set; }. 60
7.7.1. Obecná metoda Execete Tato metoda je v knihovně UES implementována pro HTTP požadavky typu POST a GET, které používá většina commandů UES API. Každá konkrétní implementace se skládá ze dvou částí, vytvoření požadavku a zpracování odpovědi. Pro commandy mající druhý parametr mají metody Execute ještě třetí část a to přidání objektu, kterým je druhý parametr commandu, do těla HTTP požadavku. Pro vytvoření požadavku je nejprve nutné vytvořit klienta jakožto instanci třídy RestClient z knihovny RestSharp a předat mu textový řetězec představující url adresu zdroje. RestClient client = new RestClient(url); Url adresa je složena ze tří částí (výjimečně jen z prvních dvou). Nejprve je použita konstanta obsahující url adresu UES API https://api.unicornuniverse.eu /ues/wcp/ues/. Za adresu je dále přidána cesta ke commandu a definice parametru UESUri, pokud ho command vyžaduje, například "core/artifact/uesartifact/create?uesuri=". Většina commandů vyžaduje jako první parametr UESUri objektu, s nímž bude pracováno. Textová podoba UESUri je pak poslední částí tvořící url adresu. Dále se klientovi předají autentizační údaje pro přístup do UES API. client.authenticator = new HttpBasicAuthenticator(Login.AccessCode1, Login.AccessCode2); Oba parametry konstruktoru třídy HttpBasicAuthenticator jsou textové řetězce, atributy statické třídy Login. Atributy třídy Login musejí být naplněny před prvním voláním commandů. Konstruktor se sám postará o kódování do Base64. Následně se vytvoří objekt požadavek jako instance třídy RestRequest. Konstruktoru třídy RestRequest se předává typ požadavku. V tomto případě se jedná o POST požadavek. RestRequest reguest = new RestRequest(Method.POST) ; Pokud command vyžaduje druhý parametr, je objekt, představující tento parametr, nejprve serializován do datové struktury Json. string json = JsonConvert.SerializeObject(o); 61
Následně je nutno provést korekce. Ze struktury Json se odeberou atributy, které neměly definovanou hodnotu či hodnotou byl null. Takovéto atributy je nejen zbytečné odesílat, ale v některých případech může nastat chyba na straně UES API při zpracovávání atributu, který není datového typu podporující hodnotu null. Regex rgx = new Regex("(,\"[^\"]*\":(null \"\") \"[^\"]*\":(null \"\"),)"); string replacenull = rgx.replace(json, ""); Unicorn Universe při serializaci a deserializaci struktury Json považuje UESUri za základní datový typ, přestože se jedná o objekt mající své metody a atributy. Proto je další korekcí převod objektového zápisu všech UESUri na textové řetězce. rgx = new Regex ("(\"[a-za-z]*[uu]ri\"):{\"uesuri\":(\"ues:[^\"]*\")(,\" territory\":\"[^\"]*\",\"artefakt\":\ [^\"]*\"(,\"objekt\":\"[^\"]*\"))}"); string jsonuu = rgx.replace(replacenull, "$1:$2"); Posledním krokem přidání objektu jako parametru HTTP požadavku je samotné přidání. Serializovaný a následně upravený objekt se nyní přidá metodou AddParametr, přičemž se definuje použitá datová struktura a znaková sada pomocí prvního parametru. Druhým parametrem je Json reprezentace objektu. Třetím parametrem metody AddParameter je umístění, kam bude parametr přidán. Možnosti jsou například do hlavičky nebo do těla požadavku. request.addparameter("application/json; charset=utf-8", jsonuu, ParameterType.RequestBody); Nyní je možno hotový požadavek odeslat na server. Objekt požadavek se předá klientovi jako parametr metody Execute. Tato metoda odešle požadavek na server. RestResponse response = (RestResponse)client.Execute(reguest); Návratovou hodnotou je odpověď získaná od serveru. Protože je návratová hodnota typu IRestResponse, tedy implementací třídy splňující interface IRestResponse, je nutné odpověď převést na objekt třídy RestResponse. Po získání odpovědi je vhodné nejprve zjistit status code. Tedy zjistit zda vše proběhlo v pořádku dle očekávání, či nastala chyba, kterou bude nutné dále ošetřit. if (response.statuscode == System.Net.HttpStatusCode.OK) { } 62
Pokud metoda Execute zpracovává command s návratovou hodnotou, bude tato hodnota uložena v těle odpovědi serializovaná ve struktuře Json. Před deserializací je nutno Json nejprve upravit. Za prvé odebrat informaci jakého typu je objekt a za druhé převést textovou reprezentaci všech UESUri na objektovou reprezentaci. Regex rgx = new Regex("\\{\"type\":\"[a-zA-Z]*\","); string withoutfristtype = rgx.replace(response.content, "{"); rgx = new Regex("(\"[a-zA-Z]*[uU]ri\"):(\"ues:[^\"]*\")"); string uesuriobject = rgx.replace(withoutfristtype, "$1:{\"uesUri\":$2}"); Nyní je již možné Json deserializovat na objekt typu, který generická metoda Execute obdržela, a tento objekt navrátit. return JsonConvert.DeserializeObject<T>(uesUriObject); 63
8. Uživatelská dokumentace Grafické rozhraní je tvořeno standardními komponentami Windows Forms. Z nichž je složen dvoupanelový design po vzoru Total Commanderu. Oba panely osahují záložky pro zobrazení obsahu v Unicorn Universe, nebo obsahu disku počítače, v němž je Artefakt Manager spuštěn. Záhlaví obou panelů je přizpůsobeno potřebám vycházejících z povahy datového úložiště, které je právě zobrazeno na aktivní záložce daného panelu. Obrázek 9: Standardní pohled Zdroj: Vlastní zpracování 64
8.1. Panely Oba panely obsahují v levé části ComboBox pro výběr diskového oddílu či výměnného média jako CD, DVD nebo USB FLASH paměť. První položkou je vždy složka Dokumenty aktuálně přihlášeného uživatele. ComboBox dále obsahuje teritoria, do kterých má uživatel přístup. Je nutno zmínit že samotný přístup do teritoria je podmínkou nutnou, ne však dostačující. Pro funkci Artefakt Manageru je nezbytné, aby měl uživatel v daném teritoriu od provozovatele systému Unicorn Universe oprávnění spouštět vzdáleně commandy. Po vybrání disku, média či složky dokumentů, dojde k zobrazení obsahu na aktivní záložce příslušného panelu. Pokud je v ComboBoxu vybráno teritorium systému Unicorn universe, zobrazí se TextBox pro zadání kódu artefaktu či složky. Pokud objekt s daným kódem existuje a uživatel má potřebné oprávnění, dojde po stisku klávesy ENTER či kliknutí na tlačítko (zelená šipka doprava) vpravo od TextBoxu k zobrazení obsahu artefaktu nebo složky v aktivní záložce příslušného panelu. V případě artefaktu jsou zobrazeny přílohy k němu připojené a odkaz na složku, v níž se artefakt nachází. Odkaz je zobrazen na prvním řádku výpisu jako dvě tečky. Pokud nemá uživatel potřebná oprávnění pro získání informací o složce, pak není odkaz zobrazen, neboť by nebylo možné zobrazit obsah. Při zobrazení obsahu složky je opět na prvním řádku zobrazen odkaz na nadřazenou složku, pokud je to možné. Ve výpisu dále následují podsložky, artefakty a přílohy nebo podsložky a soubory. Pravá část panelu obsahuje sekci s komponentami pro práci s oblíbenými artefakty a složkami systému Unicorn Universe. 65
8.2. Záložky Záložky zobrazují obsah určitého objektu. V záhlaví záložky obsahují logo zobrazeného úložiště. Nad logem je umístěn název otevřené složky nebo artefaktu, což je zároveň název dané záložky. Vpravo od loga je název teritoria v případě systému Unicorn Universe, nebo cesta ke složce v případě lokálních dat. Pokud je zobrazován obsah systému Unicorn Universe, je v pravé části záhlaví záložky zobrazena ikona hvězdičky pro přidání respektive odebrání do respektive z oblíbených. Zcela vpravo záhlaví záložky je ikona s červeným křížkem pro uzavření aktivní záložky. Nová záložka se otevře kliknutím na speciální záložku, která je vždy poslední a má v názvu znak +. Aktuálně viditelná záložka je považována za aktivní. 8.3. Kopírování Objekty, tedy složky a soubory na lokálním médiu a složky, artefakty a přílohy artefaktů v Unicorn Universe, je možné kopírovat. Kopírovat je možné v rámci určitého systému i napříč systémy nebo mezi teritorii. Kopírování se provádí označením zvolených objektů v aktivní záložce jednoho z panelů. Po kliknutí pravým tlačítkem myši se zobrazí kontextová nabídka, ze které se vybere položka Kopírovat. Kopie objektů, včetně vnořených objektů, jsou vytvořeny do objektu, který je zobrazen na aktivní záložce druhého panelu. Během kopírování je zobrazeno okno informující o právě probíhající činnosti. 66
8.3.1. Možná úskalí při vytváření kopií objektů Kopírovat lze do objektu jen takové objekty, které mohou být v objektu uloženy. Není tedy možné do artefaktu kopírovat složku. Vytvořené kopie nemusejí být zcela totožné s originálem. Jedním z důvodů je například u kopírování artefaktu na lokální médium nemožnost vytvořit daný objekt, neboť souborový systém umožňuje vytvářet jen složky a soubory. Artefakt je na lokálním médiu uložen jako složka obsahující informace, pokud bylo možné je získat vzhledem k oprávnění, o originálním artefaktu. Při kopírování takovéto složky zpět do systému Unicorn Universe bude vytvořen artefakt. Takovýto artefakt bude obsahovat další vlastnosti a listy originálu, pokud je to možné. Ovšem životní cyklus původního artefaktu se nekopíruje. Důvodem je například situace při kopírování artefaktu reprezentující smlouvu. Takovýto artefakt může mít v životním cyklu zaznamenáno datum podpisu smlouvy. Kopie této smlouvy je samostatným objektem, představující samostatnou smlouvu, která ovšem nebyla podepsána. Proto není vhodné na kopii vytvářet aktivitu Podpis smlouvy, ve stavu podepsáno, neboť tato smlouva podepsána nebyla. Systém Unicorn Universe z pochopitelných důvodů ani neumožňuje zadat datum v minulosti, smlouva by tak byla podepsána s aktuálním datem. Obdobný problém jako s datem u stavů aktivit, je i problém s rolí, která daný stav nastavila. Systém Unicorn Universe opět z pochopitelných důvodů neumožňuje vydávat se za někoho jiného, proto by u všech aktivit vždy figurovala role uživatele používající program Artefakt Manager. Dalším úskalím vytvoření zcela totožné kopie je například, při kopírování mezi teritorii, neexistence odpovídajícího meta artefaktu či oprávnění vytvářet artefakty dle daného meta artefaktu. Program Artefakt manager se vždy snaží vytvářet kopie co nejvíce totožné s originálem a převádět objekty na ekvivalentní objekty vzhledem k cílovému úložišti. Artefakt je tak vždy vytvořen jako artefakt, třebaže dle meta artefaktu pro obecný artefakt. Nikdy ale nebude během kopírování artefakt změněn na složku a naopak. 67
8.4. Přesouvání Přesouvání se provádí a probíhá podobným způsobem jako vytváření kopií. Pokud určitý systém neumožňuje daný objekt přesunout nebo je přesun realizován napříč systémy, provede program Artefakt Manager nejprve vytvoření kopie v cílovém umístění a následně smazání originálu. V takovém případě je nutno vzít na vědomí možnou ztrátu informací plynoucí z nemožnosti vytvoření zcela identické kopie viz kapitola 8.3.1 Možná úskalí při vytváření kopií objektů. Přesun probíhá včetně vnořených objektů do objektu zobrazeného na aktivní záložce druhého z panelů. 8.5. Přejmenování Program Artefakt Manager umožňuje změnit název libovolného objektu. Operace se provádí, tak jako u kopírování nebo přesouvání, výběrem příslušné volby z kontextové nabídky. Z důvodů absence funkce umožňující pouhou změnu názvu přílohy artefaktu, musí program Artefakt Manager používat funkci sloužící pro vytváření nové verze přílohy. Je tedy nutné přílohu stáhnout na lokální médium a následně odeslat zpět do systému jako novou verzi, ovšem se změněným názvem. To má za následek nečekaně delší časovou náročnost, vzhledem k času potřebnému k přejmenování například artefaktu. Při přejmenování příloh artefaktů a souborů se vždy pracuje i s příponou daného objektu. 8.6. Mazání Výběrem volby Smazat v kontextové nabídce označených objektů, budou tyto objekty odstraněny včetně objektů vnořených. Program Artefakt Manager provádí přímé smazání, bez přesunutí objektu do koše. Neboť systém Unicorn Universe koš neimplementuje, proto jeho objekty jsou vždy odstraněny zcela. 68
8.7. Oblíbené Při zobrazení obsahu artefaktu nebo složky, je možné přidat artefakt a složku do seznamu oblíbených, stiskem ikony hvězdičky v záhlaví aktivní záložky. Hvězdička se následně zprůhlední, čímž indikuje, že daný artefakt nebo složka jsou již vloženy do seznamu oblíbených. Další stisk povede k odebrání ze seznamu oblíbených (uvedení do původního stavu) a znovu rozsvícení hvězdičky. Seznam oblíbených artefaktů a složek je zobrazen vlevo v ComboBoxu obou panelů. Seznam oblíbených má dvojí využití. První je pro rychlý přístup ke zvoleným artefaktům a složkám. Pouhým výběrem z ComboBoxu, bez nutnosti vybrat teritorium a zadat kód. Druhé využití seznamu oblíbených artefaktů a složek je pro rychlé stažení příloh připojených k těmto artefaktům a složkám. Stažení se provede stiskem tlačítka, se zelenou šipkou dolů, vlevo od hvězdičky. Všechny přílohy všech artefaktů a složek v oblíbených se následně stáhnou do složky Unicorn Universe v dokumentech uživatele. Rychlé stažení všech příloh je vhodné například při potřebě lokální úpravy většího množství souborů. Seznam oblíbených artefaktů a složek je uložen v xml souboru na lokálním disku. Struktura souboru je následující: <?xml version="1.0" encoding="utf-8"?> <ArrayOfFavorite xmlns:xsi=http://www.w3.org/2001/xmlschema-instance xmlns:xsd=http://www.w3.org/2001/xmlschema> <Favorite> <name>název artefaktu</name> <code>kod_artefaktu</code> <territory>ues:kod_teritoria</territory> </Favorite> <Favorite>... </Favorite> </ArrayOfFavorite> 69
8.8. Přihlašovací formulář Program se při spuštění pokouší připojit k systému Unicorn Universe. K tomu potřebuje přihlašovací údaje. Tyto informace se pokusí nalézt v uloženém souboru. Pokud soubor neexistuje, nebo informace v něm jsou neplatné a komunikaci se nepodaří správně navázat, je zobrazeno dialogové okno přihlašovací obrazovky. Obrázek 10: Přihlašovací obrazovka Zdroj: Vlastní zpracování Přihlašovací obrazovka obsahuje dva TextBoxy pro zadání přístupových kódů, tlačítko pro odeslání a CheckBox pro volbu uložení přihlašovacích informací do souboru. Soubor je v šifrované podobě uložen na lokálním počítači. Funkci zapamatování přihlašovacích údajů není doporučeno používat na nedůvěryhodném počítači. 70