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.
2.
Úvod .................................................................................................................................................... 12 1.1.
Artefakt Manager ................................................................................................................... 12
1.2.
Knihovna UES pro C# ........................................................................................................... 13
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.
7.
Mapování složky a souboru na složku, artefakt a přílohu ..................................... 51
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. 8.
Obecná metoda Execete.............................................................................................. 61
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.
GHISLER, Christian: Homepage of Total Commander [online]. Switzerland. [cit. 2013-06-08]. Dostupné z URL:
. 2
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.
ŠIBIL, Jan: UNICORN ES API [online]. Praha: Unicorn Universe. [cit. 2013-06-08]. Dostupné z URL:
. 3
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].
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. 4
14
Obrázek 1: Příloha artefaktu v Unicorn Universe
Příloha
Vlastnost
Kompetentní role
Artefakt
Životní cyklus
Obsah
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.
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:
. 5
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.
BISHOP, Judith: C# 3.0 Design Patterns. 1. vyd. Sebastopol: O'Reilly Media, 2007. 122 s. ISBN 0-596-52773-0. 7
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].
SHERIFF, Paul D.: Designing a .NET Application [online]. PDSA Inc. [cit 2013-04-09]. Dostupné z URL: . 8
22
Obrázek 4: Třívrstvá architektura Presentation tier Web / Win Forms
User Controls
Web services
Business workflow
Business entities
Business tier Service interface
Business components
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.
FOWLER, Martin: Patterns of Enterprise Application Architecture. 1. vyd. Crawfordsville: AddisonWesley Professional, 2002. 99 s. ISBN 0321127420. 9
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”}.
RFC 4627. The application/json Media Type for JavaScript Object Notation (JSON). IETF: The Internet Engineering Task Force, 2006. s. 1. 10
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
REQ01 F REQ02 F
Výběr disku
Popis Volba dostupných disků (pevné disky, optické disky, FLASH disky atd.) lokálního počítače.
Volba
Volba teritoria systému Unicorn Universe, do níž má
teritoria
uživatel přístup Otevření přílohy jako souboru na lokálním médiu, bez
REQ03 F
Přímá práce s přílohou
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.
REQ04 F
REQ05 F
Offline editace přílohy
Během editace není nutná internetová konektivita.
Automatické
Při uložení editovaného souboru (pomocí software
odeslání
třetí strany v němž je příloha editována) automatické
přílohy při
nahrání přílohy do systému Unicorn Universe jako
uložení
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
i napříč systémy. Objekty se přesouvají včetně vnoře-
objektů
ný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í
systému Unicorn Universe (složky, artefakty a přílohy
objektů
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. Artefakty v seznamu oblíbených jsou
oblíbených
snadno dostupné pro jejich zobrazení bez nutnosti zadávat kód artefaktu a volit teritorium.
Hromadný REQ11 F
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.
Stromové REQ13 U
zobrazení struktury
Stromové zobrazení struktury složek, souborů a artefaktů a průchod strukturou. Dvoupanelové zobrazení po vzoru Total Comanderu.
DvoupaneREQ14 U
lové 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.
DokumentaREQ15 U
ce 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
Unicorn Universe bude představovat samostatnou
UES
knihovnu pro použití v jiných programech napsaných nad .Net frameworkem.
28
REQ17 +
XML seznam oblíbených
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é
REQ18 +
Licence
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 SchopNá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.
http://www.ope OpenSSL Licence
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 ([email protected])"
29
Optimálně nepoužívat. Copyright notice do About okna. Text licence do buildu a do helpu. http://www.ope AFL
nsource.org
(Academic
/licenses/afl-
Free License)
3.0.php
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ář
GNU-LGPL
http://www.gnu
(Lesser Gene-
.org/licenses/lgp
ral Public
l.html
pro
zdrojové
kódy
komponent
a přidat je tam. Dodržovat
pravidla
pro
úpravy
knihoven, tzn. upravený kód zase
Licence)
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
Copyright notice do About okna. Text licence do buildu a do helpu. Licenční text UES/UAF musí obsahoCPL
http://www.ope
(Common
nsource.org
Public
/licenses/cpl1.0.
hovat "přiměřené" podmínky, za
Licence)
php
kterých může zákazník získat zdro-
vat zříkání se záruky za škody. Dokumentace UES/UAF musí obsa-
jový kód části produktu, závislé na CPL komponentě. Distribuovat
jako
samostatnou
knihovnu, a to i v případě modifikací.
JOSL (Jabber Open Source Licence)
http://www.ope nsource.org /licenses/jabber pl.php
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í.
MPL (Mozilla Public Licence)
http://www.mo zilla.org
Copyright notice do About okna. Text licence do buildu a do helpu. Zdrojový kód součástí buildu/CD,
/MPL/MPL-
a to včetně modifikací.
1.1.html
Distribuovat
jako
samostatnou
knihovnu, a to i v případě modifikací. NPL
http://www.mo
(Netscape
zilla.org
Public
/MPL/NPL-
Licence)
1.0.html
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
Knihovnu se zdrojovými kódy na CD. Licence na CD. Do svých modifikací open source softwaru zahrnout oznámení, které CDDL (Common Development and Distribu-
ho bude identifikovat jako účastníka http://www.sun. com/cddl/
(spolupracovníka) na modifikaci. V našich licenčních podmínkách k IS nesmíme omezit práva koncových
tion License)
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)
http://www.apa che.org/licenses /LICENSE-
Copyright notice do About okna. Text licence do buildu. V ASL1.1 je do about: "This product includes software developed by the
2.0.html
Apache
Software
Foundation
(http://www.apache.org/)“. http://www.ope BSD
nsource.org
Copyright notice do About okna.
(Berkeley )
/licenses/bsd-
Text licence do buildu a do helpu.
license.php http://www.ope MIT Licence
nsource.org
Copyright notice do About okna.
/licenses/mit-
Text licence do buildu a do helpu.
license.php 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 Uživatel
Popis
Cíle
Užívá program pro zjednodušení práce s Unicorn Universe.
Unicorn
Poskytuje chytrá řešení pro řízení
Universe
organizací.
Efektivnější práce. Vše potřebné pro řízení organizací na jednom místě a snadno dostupné.
Zdroj: Vlastní zpracování
33
4.2. Přehled use case Tabulka níže obsahuje přehled use case. Tabulka 4: Přehled use case ID
Název
Popis Uživatel vybere dostupné médium lokálního počítače (pevné
UC01
Výběr disku
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
UC02
Volba teritoria
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-
UC03
Přímá práce s přílohou
č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.
Automatické UC04
odeslání přílohy při uložení
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
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í UC05
Kopírování objektů
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. UC06
Přesun objektů
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 UC07
Přejmenování objektů
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
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ě UC08
Smazání objektů
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é UC09
Funkce
hvězdičky, respektive zhasnuté hvězdičky. Seznam oblíbe-
oblíbených
ný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
UC10
Hromadný
přílohy všech artefaktů a složek v seznamu oblíbených.
export
Přílohy se uloží na lokální médium počítače do složky
oblíbených
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
UC11
Automatické přihlašování
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
X X
REQ03
X
REQ04
X
REQ05 REQ06
X X
REQ07
X
REQ08
X
REQ09
X
REQ10
X
REQ11
X
REQ12
X Zdroj: Vlastní zpracování
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ů
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
Unicorn Universe
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 Uživatel vybere dostupné médium lokálního počítače (pevné disky, Popis
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.
Vstupní
Existuje lokální médium, které je uživateli dostupné. Uživatel má
podmínka
oprávnění číst data ze zvolného média.
Stav po
Zvolený panel programu zobrazuje v aktivní záložce obsah root
skončení
složky zvoleného média.
Aktér
Uživatel.
Alternativní
1
tok A1
Alternativní tok A2
2 1 2
Uživatel nemá oprávnění zobrazit seznam dostupných medií, nebo pro něj neexistuje žádné dostupné médium. Volba média nebude dostupná. Uživatel nemá oprávnění ze zvoleného média či root složky číst data. Zobrazí se hlášení o chybě. Ve zvoleném panelu zůstane na aktivní záložce zobrazen aktuální obsah. 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. 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 panePopis
lu 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.
Vstupní podmínka
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.
Stav po
Zvolený panel programu zobrazuje na aktivní záložce obsah vybra-
skončení
ného artefaktu či složky.
Aktér
Uživatel.
Alternativní tok A1
Alternativní tok A2
1 2 1 2
Uživatel nemá oprávnění zobrazit obsah zvoleného objektu. Zobrazí se hlášení o chybě. Aktivní záložka zvoleného panelu bude dále zobrazovat obsah předchozího objektu. Přerušení internetového spojení. Zobrazí se hlášení o chybě. Na aktivní záložce zvoleného panelu 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 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ží Popis
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í
Funkční připojení k síti Internet během stahování.
podmínka
Uživatel má oprávnění stáhnout přílohu.
Stav po
Příloha je stažena do složky temp a otevřena softwarem třetí strany.
skončení Aktér
Uživatel.
Alternativní tok A1
1 2
Alternativní tok A2
1 2
Uživatel nemá oprávnění stáhnout přílohu. Zobrazí se hlášení o chybě. Software třetí strany nebude spuštěn. Přerušení internetového spojení. Zobrazí se hlášení o chybě. Software třetí strany nebude spuštěn. 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í Při uložení editovaného souboru (pomocí software třetí strany Popis
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.
Vstupní
Uživatel má oprávnění vytvořit novou verzi přílohy. Příloha není
podmínka
uzamčena jiným uživatelem. Software třetí strany dokončil ukládání editovaných dat.
Stav po
Editovaný soubor je uložen v systému Unicorn Universe jako nová
skončení
verze přílohy.
Aktér
Uživatel.
Alternativní
1
tok A1
Uživatel nemá oprávnění vytvořit novou verzi přílohy, nebo je uzamčena jiným uživatelem.
2
Zobrazí se hlášení o chybě.
Alternativní
1
Přerušení internetového spojení.
tok A2
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
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ů,
Vstupní
které se mají kopírovat.
podmínka
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.
Stav po skončení Aktér
Alternativní tok A1
Alternativní tok A2
Alternativní tok A3
Alternativní tok A4
Označené objekty jsou zkopírovány do cílového umístění. Uživatel. 1
Uživatel nemá oprávnění číst data z objektů, včetně vnořených 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í.
1 2 1
Přerušení internetového spojení při kopírování z, do nebo v rámci systému Unicorn Universe. Zobrazí se hlášení o chybě. Pokud je cílovým objektem artefakt, a přesouvaným objektem je 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.
1
Uživatel nemá oprávnění zapisovat do cílového objektu a vytvářet v něm objekty nové.
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
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ů,
Vstupní
které se mají přesunout.
podmínka
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.
Stav po skončení Aktér
Alternativní tok A1
Alternativní tok A2
Alternativní tok A3
Alternativní tok A4
Označené objekty jsou přesunuty do cílového umístění. Uživatel. 1
Uživatel nemá oprávnění číst data z objektu, včetně vnořených 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í.
1 2 1
Přerušení internetového spojení při přesouvání z, do nebo v rámci systému Unicorn Universe. 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é.
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í.
1
Pokud je cílovým objektem artefakt, a přesouvaným objektem je 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
Přejmenuje vybrané objekty. Funkční připojení k síti Internet pro přejmenování objektů v systé-
Vstupní
mu Unicorn Universe.
podmínka
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.
Stav po skončení
Označené objekty jsou přejmenovány.
Aktér
Uživatel.
Alternativní
1
tok A1
Alternativní tok A2
Alternativní tok A3
2 1
Přerušení internetového spojení při přejmenování objektů v systému Unicorn Universe. Zobrazí se hlášení o chybě. Uživatel nemá oprávnění číst data z objektů, které se mají přejmenovat.
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í
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é.
Aktér
Uživatel.
Alternativní
1
tok A1
Alternativní tok A2
Přerušení internetového spojení při mazání objektů v systému 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 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 Popis
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.
Vstupní
Funkční připojení k síti Internet.
podmínka
Uživatel má oprávnění číst informace o zvoleném artefaktu či složce.
45
Po stisku hvězdičky je objekt přidán či odebrán ze seznamu oblíbeStav po
ných.
skončení
Po výběru v ComboBoxu je zobrazen obsah zvoleného objektu na aktivní záložce daného panelu.
Aktér
Uživatel.
Alternativní
1
Uživatel nemá oprávnění číst informace o vybraném objektu.
tok A1
2
Zobrazí se hlášení o chybě.
Alternativní
1
Přerušení internetového spojení.
tok A2
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 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 Popis
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.
Vstupní
Funkční připojení k síti Internet.
podmínka
Uživatel má oprávnění stahovat přílohy vybraných objektů.
Stav po skončení
Přílohy jsou staženy na lokální médium počítače.
Aktér
Uživatel.
Alternativní
1
tok A1
Uživatel nemá oprávnění získat seznam příloh. či stahovat přílohy zvoleného objektu.
2
Zobrazí se hlášení o chybě.
Alternativní
1
Přerušení internetového spojení.
tok A2
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í Při spuštění se program pokusí získat přihlašovací údaje ze souboru Popis
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.
Vstupní
Funkční připojení k síti Internet.
podmínka
Správně uložené přihlašovací údaje.
Stav po skončení Aktér
Uživatel je přihlášen. Uživatel. 1
Alternativní tok A1
Při nemožnosti číst soubor, nebo neplatných přihlašovacích údajích, není uživatel přihlášen. Je zobrazeno přihlašovací okno vyžadující zadat příslušné údaje.
2
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í médium počítače.
Alternativní tok A2
1 2
Přerušení internetového spojení. Je zobrazeno přihlašovací okno, ve kterém se po obnovení spojení uživatel přihlásí. 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
Abstract Directory
Abstract Factory
Logical tier Business tier Abstract factory Abstract File
Data access tier UES UESArtifact
System.IO UESFolder
FileInfo
UESAttachem ent
FileStream
Zdroj: Vlastní zpracování
48
DirectoryInfo
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
UESArtifact
Název metody
Popis
create
Vytvoří nový artefakt.
delete
Smaže artefakt.
getAttributes
Získá vlastnosti artefaktu, například název či kód artefaktu.
move
Přesune artefakt do jiné složky.
setAttributes
Nastaví vlastnosti artefaktu. Odešle do systému Unicorn Universe soubor
checkIn
jako novou verzi přílohy. Pokud byla příloha uzamčena, odemkne ji.
checkOut UESAttachment
create
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.
delete
Smaže přílohu artefaktu.
getAttachment-
Stáhne přílohu ze systému Unicorn Universe.
Data
Na rozdíl od checkOut přílohu nezamkne.
getAttachmentList
Získá seznam příloh zvoleného artefaktu.
create
Vytvoří složku.
delete
Smaže složku.
getAttributes UESFolder
Získá vlastnosti zvolené složky, například název či kód složky. Získá seznam podřízených objektů (pod-
getEntryList
složky, artefakty, organizační jednotky atd.) zvolené složky.
setAttributes
Nastaví vlastnosti složky.
54
UESPersonalRole getTerritoryList
UESProperty
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.
getCollectionAt-
Získá atributy skupiny dalších vlastností
tributes
artefaktu. Získá seznam vnořených dalších vlastností
getEntryList
a skupin dalších vlastností, z artefaktu či ze skupiny dalších vlastností.
UESSheet
UESSesion
getValue
Získá hodnotu další vlastnosti.
create
Vytvoří nový list artefaktu.
delete
Smaže list artefaktu.
getSheetData
Stáhne obsah listu artefaktu.
getSheetList
Získá seznam listů artefaktu.
setAttributes
Nastaví vlastnosti listu artefaktu.
getPersonalRole
Získá UESUri osobní role uživatele.
Serializace Login Deserializace
Uloží na lokální disk přihlašovací údaje uživatele. 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-vsJson.NET_BE86/jsonnetwindowsdatajson.png
57
7.4. Autentizace Protože je protokol HTTP bezstavový, není možné se trvale přihlásit samotným RESTem. 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 (UESArtifact.create, locationUri, artifact); } }
V těle metody create se zavolá příslušná statická metoda Execute třídy Com-
mand. 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 samot-
né 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(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í: Název artefaktu KOD_ARTEFAKTU
ues:KOD_TERITORIA ...
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
8.9. Přímá práce s přílohou Artefakt Manager umožňuje přímé otevření příloh i souborů. Otevření se provede běžným způsobem, tedy dvojklikem levého tlačítka myši či stiskem klávesy ENTER. V případě souborů Artefakt Manager jen spustí program asociovaný s daným typem souboru, přičemž mu tento soubor předá. U příloh je tento postup rozšířen o stažení souboru do složky temp. Uživateli je zachován komfort spojený s prací souborů, neboť stažení přílohy se provádí automaticky na pozadí. Program si soubor nadále hlídá, pokud dojde k jeho změně, odešle se do systému Unicorn Universe jako nová verze přílohy. Tedy pokud uživatel uloží rozpracovaný dokument, nebo zcela ukončí práci v jiném programu, přičemž změny provedené v dokumentu uloží, jsou veškeré změny propagovány do systému Unicorn Universe. Uživateli je tak celkově simulováno chování že pracuje přímo s přílohou. Existují slabiny tohoto řešení, například při výpadku internetové konektivity nebude možné uložený dokument odeslat na server. V takovém případě je nutné nejprve obnovit internetovou konektivitu a až následně provést uložení souboru. Některé programy mohou automaticky ukládat rozpracovaný dokument, což způsobí nadměrnou tvorbu verzí přílohy. Takový postup je ovšem nezvyklý. Většina programů si neuložené změny ukládá do speciálního souboru. Soubor je často skrytý a uložen ve složce temp, není ale hlídán programem Artefakt Manager. Nadměrná tvorba nových verzí dále hrozí od neukázněných programů, které při uložení přistupují k souboru opakovaně, například oblíbený editor textů a zdrojových kódů PSPad. Při prostém uložení souboru přistoupí k souboru třikrát. Přičemž pokud je soubor uložen na základě výzvy, která se zobrazuje při zavření programu PSPad, je k souboru přistupováno jen jedou. Takovéto chování softwaru třetích stran však není možné ovlivnit a potýkají se s ním všechny programy provádějící synchronizaci dat. Při práci se soubory většího objemu dat je doporučeno volit software, který se chová „ukázněně“. Nebo uložit na lokální médium kopii souboru a tu po skončení úprav odeslat zpět do systému Unicorn Universe. Ušetří se tak kapacita přenosné linky internetového připojení i datová kapacita systému Unicorn Universe.
71
9. Závěr Hlavní cíl bakalářské práce, program Artefakt Manager, i vedlejší cíl, knihovna UES pro C#, byly naplněny.
9.1. Artefakt Manager Artefakt Manager umožňuje snadnou práci s přílohami systému Unicorn Universe. Odstraňuje dvě nevýhody současné verze systému (7.10), tedy nemožnost přímé práce s přílohami uvnitř systému a absenci hromadného importu a exportu objektů. Uživatel může s programem Artefakt Manager stahovat ze systému Unicorn Universe složky, artefakty a jejich přílohy na lokální médium počítače a to jediným stiskem tlačítka. S použitím funkce oblíbených je možné stahovat všechny přílohy od více artefaktů najednou, opět jediným stisknutím tlačítka. Import lokálních složek a souborů do systému Unicorn Universe je stejně snadný. Zatímco současné webové rozhraní vyžaduje každý objekt zpracovat jednotlivě. Přílohy je možné otevřít přímo z programu Artefakt Manager stejným způsobem jako soubory na disku počítače, tedy opět jediným kliknutím. Není tedy nutné přílohu stahovat a po úpravě odesílat zpět do systému. Artefakt Manager se o stažení i zpětné odeslání postará sám, automaticky na pozadí. Některé programy třetích stran mohou svým přístupem (vícenásobný zápis na disk) způsobit nežádoucí vytvoření více totožných verzí stejné přílohy. Takové chování není možné ovlivnit. Je ovšem ojedinělé a vyskytlo se jen u jednoduššího softwaru (editor PSPad), ke kterému existuje mnoho profesionálních alternativ. Celkově je tak program Artefakt Manager prospěšným nástrojem, který usnadňuje práci a šetří čas. V neposlední řadě také eliminuje riziko zapomenutí uživatele odeslat upravenou přílohu zpět do systému, neboť to provádí sám a automaticky.
72
9.2. Knihovna UES pro C# Část programu Artefakt Manager, zajišťující komunikaci se systémem Unicorn Universe byla vyčleněna jako samostatná knihovna. Je tak snadno znovu použitelná v jakémkoliv jiném programu nad frameworkem .Net. Knihovna zajišťuje komunikaci se systémem Unicorn Universe přes REST UES API, které tento systém poskytuje od verze 7.10 (omezeně od 7.08). Čímž se řadí mezi první programy a aplikace používající toto nové rozhraní. Knihovna v maximální možné míře odpovídá stávající dokumentaci. Tato dokumentace je jednotná pro gemy, pro jazyky rodiny Java, i samotné UES API (dřívější SOAP i novější REST) systému Unicorn Universe. Bylo tedy vhodné i nadále dodržet jednotnost dokumentace. Této dokumentaci odpovídá nejen pro snadnější udržení rozvoje, ale i pro snadnější použití. Programátor znalý stávajícího rozhraní není nucen učit se nové věci. Pro použití UES knihovny pro C# si programátor vystačí se stávajícími znalostmi. Rozdíly oproti dokumentaci se vyskytují jen na nejnižší úrovni, kde není možné shodu zaručit kvůli rozdílnosti samotných programovacích jazyků. Tyto odchylky však nepředstavují žádnou komplikaci při použití knihovny. Jedná se čistě o implementační detaily vzniklé rozdílností vnitřní implementace jazyků, pro které jsou knihovny určeny.
73
10. Conclusion The primary goal of my bachelor thesis (Artifact Manager program) and also the secondary goal (library UES for C#) were accomplished.
10.1. Artifact Manager The Artifact Manager facilitates work with attachments of the Unicorn Universe system. It eliminates two disadvantages of the current version of the system (7.10), i. e. the impossibility of direct work with attachments inside the system and the absence of their collective import and export of the objects. With the Artifact Manager the user can download any folders, artifacts and its attachments from Unicorn Universe to a local storage medium by means of one single button. By applying the Favorite function it is possible download all of these attachments from more artifacts in one moment, again by means of only one button. The import of folders and files from the local computer medium into Unicorn Universe is easy as well. The current web interface requires to work with each object separately. The attachments are possible to open directly in the Artifact Manager program in the same way as the documents in a computer disc, again by means of only one button. It is not necessary to download the attachment and after the modification send it back into the system. Artifact Manager is responsible for downloading and sending it back itself, automatically on the background. Some of the programs of third parties can cause an undesirable creation of identical versions of the same attachment by their access (multiple record on a disc). Such behavior is not possible to influence. However, it is rare and it has occurred only in case of a software (PSPad editor) to which a lot of professional alternatives exist. Generally the Artifact Manager program is a useful tool which facilitates work and saves time. Last but not least it also eliminates the risk of a user failure – forgetting to send the amended attachment back into the system because the Artifact Manager makes it itself and automatically.
74
10.2. Library UES for C# A part of the Artifact Manager program which supports the communication with the Unicorn Universe system was separated as an individual library. Thus it is easily reusable in any other program over the .Net framework. The library supports the communication with Unicorn Universe through REST UES API, which is provided by Unicorn Universe version 7.10 and higher (partially 7.08). Thus it belongs among the first programs and applications which use this new interface. The library corresponds to the present documentation in the maximum possible way to the actual documentation. This documentation is unified for gems of Java language family and also for the UES API (formerly SOAP and later REST) of the Unicorn Universe system. Therefore it was suitable to keep the unification of the documentation. The library corresponds to this documentation not only for its easier progress maintenance but also for its easier use. The programmer who knows the existing interface does not have to learn new things. For using the UES library for C# the programmer needs only his/her current knowledge. The differences from the documentation appear only on the lowest levels where the agreement is not possible to assure due to the difference in programming languages. These deviations do not complicate the use of the library. These are only implementation details made by differences of the inside implementation of languages for which the libraries are determined.
75
11. Seznam použitých zdrojů 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: . 3. ŠIBIL, Jan: UNICORN ES API [online]. Praha: Unicorn Universe. [cit. 2013-06-08]. Dostupné z URL: . 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. 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: . 6. KOSEK, Jiří: PHP a XML. 1. vyd. Praha: Grada Publishing, 2009. 367 s. ISBN 80-247-1116-4. 7. BISHOP, Judith: C# 3.0 Design Patterns. 1. vyd. Sebastopol: O'Reilly Media, 2007. 318 s. ISBN 0-596-52773-0 8. SHERIFF, Paul D.: Designing a .NET Application [online]. PDSA Inc. [cit 2013-04-09]. Dostupné z URL: . 9. FOWLER, Martin: Patterns of Enterprise Application Architecture. 1. vyd. Crawfordsville: Addison-Wesley Professional, 2002. 560 s. ISBN 0321127420. 10. RFC 4627. The application/json Media Type for JavaScript Object Notation (JSON). IETF: The Internet Engineering Task Force, 2006. s. 10.
76
12. Sezam Obrázků Obrázek 1: Příloha artefaktu v Unicorn Universe....................................................................... 15 Obrázek 2: Příloha artefaktu............................................................................................................... 16 Obrázek 3: Abstract factory pattern ................................................................................................ 21 Obrázek 4: Třívrstvá architektura .................................................................................................... 23 Obrázek 5: Use case diagram .............................................................................................................. 38 Obrázek 6: Architektura ....................................................................................................................... 48 Obrázek 7: Diagram tříd business vrstvy....................................................................................... 50 Obrázek 8: Mapování na složku a soubor ...................................................................................... 51 Obrázek 9: Standardní pohled............................................................................................................ 64 Obrázek 10: Přihlašovací obrazovka ............................................................................................... 70
77
13. Seznam tabulek Tabulka 1: Požadavky ............................................................................................................................ 26 Tabulka 2: Vhodnost licencí pro použití v produktu Unicorn ES ......................................... 29 Tabulka 3: Přehled aktérů ................................................................................................................... 33 Tabulka 4: Přehled use case ................................................................................................................ 34 Tabulka 5: Mapování požadavků na use case .............................................................................. 37 Tabulka 6: UC01 Výběr disku ............................................................................................................. 39 Tabulka 7: UC02 Volba teritoria. ....................................................................................................... 40 Tabulka 8: UC03 Přímá práce s přílohou ....................................................................................... 40 Tabulka 9: UC04 Automatické odeslání přílohy při uložení ................................................... 41 Tabulka 10: UC05 Kopírování objektů ............................................................................................ 42 Tabulka 11: UC06 Přesun objektů .................................................................................................... 43 Tabulka 12: UC07 Přejmenování objektu ...................................................................................... 44 Tabulka 13: UC08 Smazání objektů ................................................................................................. 45 Tabulka 14: UC09 Funkce oblíbených............................................................................................. 45 Tabulka 15: UC10 Hromadný export oblíbených ....................................................................... 46 Tabulka 16: UC11 Automatické přihlašování............................................................................... 47 Tabulka 17: Funkce implementované v knihovně UES pro C# ............................................. 54
78
14. Seznam grafů Graf 1: Porovnání výkonnosti Json.Net a Windows.Data.Json ............................................... 57
79