Bankovní institut vysoká škola Praha Katedra informačních technologií a elektronického obchodování
Oracle Application Express Nástroj pro menší podnikové aplikace Diplomová práce
Autor:
Bc. Tomáš Roubal IT a Management
Vedoucí práce:
Praha
Ing. Michal Valenta Ph. D.
Duben, 2010
Prohlášení: Prohlašuji, že jsem diplomovou práci zpracoval samostatně a s použitím uvedené literatury.
V Praze dne 27.4.2010
Tomáš Roubal
Poděkování: Chtěl bych touto cestou poděkovat vedoucímu práce panu Ing. Michalu Valentovi za konzultace a vedení při zpracování této diplomové práce.
Anotace Tato práce se zabývá prostředím Oracle Application Express, které umožňuje rychlou tvorbu webových databázových aplikací a je nabízeno firmou Oracle zcela zdarma. V první části je práce zaměřena na recenzi tohoto prostředí, popis jeho možností a vlastností, ale také možností jeho nasazení a administrace. V rámci práce je také provedeno porovnání prostředí Oracle Application Express s vybranými obdobnými nástroji. Druhou částí práce je pak návrh a vytvoření demonstrační aplikace v tomto prostředí. Vytvořená aplikace demonstruje vybrané možnosti prostředí Oracle Application Express. V aplikaci jsou použita vlastní autentizační a autorizační schémata. Dále je řešena implementace vlastních procesů pro zpracování formulářů a využita možnost zasílání e-mailových notifikací. V rámci vytvořené aplikace jsou ukázány možnosti interaktivních reportů.
Annotation This thesis is focused on Oracle Application Express environment, which is available free to download and use and gives opportunity to build quickly web based database applications. The first part of thesis is product review of Oracle Application Express which describes its features, options and possibilities of its configuration. Oracle Application Express environment is also compared with selected other environments. In next part of this thesis is designed and implemented application in Oracle Application Express environment, which demonstrates its selected features. Application uses own created authentication and authorization schemes. There are also implemented custom form processing and e-mail notifications. Possibilities of interactive reports are also demonstrated within created application.
Obsah Obsah ..................................................................................................................................... 5 Úvod ...................................................................................................................................... 7 1 Prostředí Oracle Application Express ................................................................................ 8 1.1 Vlastnosti prostředí ..................................................................................................... 8 1.2 Moduly aplikace ........................................................................................................ 11 1.2.1 Application Builder ........................................................................................... 11 1.2.2 SQL Workshop .................................................................................................. 12 1.2.3 Utilities .............................................................................................................. 13 1.3 Struktura aplikace v Oracle Application Express ..................................................... 14 1.4 Sdílené komponenty aplikace ................................................................................... 17 1.5 Stránky aplikace ........................................................................................................ 23 2 Možnosti a administrace prostředí ................................................................................... 31 2.1 Možnosti nasazení ..................................................................................................... 31 2.1.1 Nasazení prostředí ............................................................................................. 31 2.1.2 Požadavky na komunikaci ................................................................................. 33 2.2 Instalace .................................................................................................................... 35 2.3 Administrace prostředí Oracle Application Express ................................................. 38 3 Porovnání s jinými nástroji .............................................................................................. 42 3.1 Microsoft Office Access ........................................................................................... 42 3.2 Iron Speed Designer .................................................................................................. 47 3.3 Once:radix ................................................................................................................. 53 3.4 Shrnutí ....................................................................................................................... 57 4 Analýza a návrh demonstrační aplikace .......................................................................... 60 4.1 Odborný článek ......................................................................................................... 60 4.2 Požadavky na aplikaci ............................................................................................... 62 4.3 Use Case diagram...................................................................................................... 64 4.4 Datový model ............................................................................................................ 65 5 Implementace demonstrační aplikace .............................................................................. 68 5.1 Vytvoření aplikace – Kniha jízd ............................................................................... 68 5.2 Autentizační a autorizační schéma aplikace ............................................................. 71 5.3 Formulář pro správu uživatelů .................................................................................. 75 -5-
5.4 Zadávání jízd ............................................................................................................. 77 5.5 Interaktivní report vykonaných jízd .......................................................................... 83 5.6 E-mailové notifikace a generování reportů do PDF.................................................. 86 5.6.1 E-mailové notifikace ......................................................................................... 86 5.6.2 Generování PDF reportů.................................................................................... 87 5.7 Instalace vytvořené aplikace ..................................................................................... 88 6 Výsledky .......................................................................................................................... 92 Závěry a doporučení ............................................................................................................ 94 Seznam použité literatury .................................................................................................... 95 Seznam použitých zkratek ................................................................................................... 99 Přílohy ............................................................................................................................... 101
-6-
Úvod Oracle Application Express je velmi zajímavým prostředím, které je k dispozici zcela zdarma a umožňuje rychlou tvorbu webových aplikací pracujících s databází. Tato práce si klade za cíl umožnit zájemcům o prostředí Oracle Application Express seznámení se s tímto prostředím a s možnostmi, které poskytuje pro tvorbu aplikací. Ve všech částech práce, pokud není uvedeno jinak, je popisována a použita verze prostředí 3.2.1, která je aktuální nejvyšší vydanou verzí v době psaní této práce. Cílem práce je recenze Oracle Application Express jako nástroje pro vývoj jednoduchých webových aplikací. Porovnání s jinými podobnými nástroji. Návrh a realizace demonstrační aplikace. První část práce je recenzí prostředí Oracle Application Express 3.2.1. Je dále rozdělena na část zaměřenou na prostředí z pohledu vývojáře, kde jsou rozebrány vlastnosti prostředí, které mají vliv na možnosti a způsob tvorby aplikací. Poté se věnuje popisu jednotlivých částí prostředí a struktuře v něm vytvářených aplikací. Další část recenze se zabývá základními konfiguračními možnostmi prostředí a variantami jeho nasazení. Posléze pak vlastní instalací prostředí a jeho administrací. Následně je provedeno porovnání prostředí Oracle Application Express s vybranými obdobnými produkty s ohledem na možnosti tvorby aplikací, architekturu, dostupnost a omezení vytvořených aplikací plynoucí z použití jednotlivých prostředí. Hlavním cílem praktické části práce je navržení a implementace demonstrační aplikace v prostředí Oracle Application Express. Jako téma demonstrační aplikace jsem zvolil evidenci jízd firemních vozidel neboli knihu jízd. V rámci práce byla vytvořena funkční aplikace v prostředí Oracle Application Express, využívající vybrané komponenty, které toto prostředí nabízí. Aplikace obsahuje vlastní autentizační funkci a definovaná autorizační schémata oddělující přístupy k jednotlivým sekcím aplikace. Aplikace dále využívá možnosti změny vlastností a zobrazení jednotlivých komponent stránky podle definovaných kritérií, umožňujících přizpůsobit chování aplikace požadovaným pravidlům. V aplikaci je také řešena možnost zasílání e-mailových notifikací, pomocí funkcí, které prostředí Oracle Application Express nabízí. Dále jsou využity možnosti interaktivního reportu prostředí a je řešena možnost generování reportů z aplikace do formátu PDF.
-7-
1 Prostředí Oracle Application Express 1.1 Vlastnosti prostředí Oracle Application Express (APEX) je prostředí pro rychlý vývoj a provozování jednoduchých webových aplikací pracujících s databází, které firma Oracle nabízí zdarma ke kterékoliv edici svého databázového stroje včetně bezplatné edice Oracle Express.[26] Vychází z původního produktu HTML DB a umožňuje vývoj a provoz více aplikací v rámci jedné Oracle databáze včetně správy uživatelských přístupů a vývojářských oprávnění k aplikacím. Jak aplikace vytvořené v APEXu, tak i vývojové prostředí samotné je založené na webovém rozhraní. Na straně koncového uživatele aplikace i vývojáře je tedy vyžadován pouze webový prohlížeč. Prostředí samotné je realizováno přímo jako volitelná součást databázového stroje. Přestože tedy na straně uživatele není vyžadována žádná instalovaná komponenta kromě podporovaného webového prohlížeče, jedná se o dvouvrstvou architekturu, kde databázový stroj slouží nejen jako relační databáze, ale zároveň zpracovává vykreslování grafického uživatelského rozhraní a veškerou jeho logiku. Databázový stroj tedy zastává i funkce aplikačního serveru. Prostředí Oracle Application Express je uloženo přímo v databázi ve zvoleném databázovém schématu ve formě tabulek, procedur, pohledů a jiných databázových objektů. Jeho instalace je možná pouze na databázovém stoji firmy Oracle. Obr. 1: Architektura Oracle Application Express s použitím vestavěné PL/SQL brány
Zdroj: Oracle Corporation : Oracle Application Express [25]
Firma Oracle k Oracle Application Express neposkytuje žádnou záruku ani podporu, jelikož prostředí je distribuováno zdarma. K řešení problémů je však možné využít fórum -8-
zaměřené
na
APEX
na
firemních
stránkách
Oracle
na
adrese
http://forums.oracle.com/forums/forum.jspa?forumID=137, přičemž příspěvky do tohoto fóra poskytují i samotní zaměstnanci firmy Oracle a vývojáři APEXu. Vývoj aplikací v APEXu je založen na deklarativním programování.[5] Pomocí průvodců lze vytvořit bez psaní jakéhokoliv kódu reporty, formuláře pro změny a vkládání dat, ale například i koláčové grafy. To umožňuje vývoj nových jednoduchých aplikací nad existujícími daty velice rychle a efektivně, a to i vývojářům, kteří mají jen malé nebo dokonce žádné znalosti jazyka SQL a PL/SQL, i když je samozřejmě tato neznalost limitující pro další složitější úpravy aplikace. Pro rozšíření aplikací o složitější logiku a funkčnost, kterou nelze vytvořit pomocí průvodců a předpřipravených funkčností v prostředí APEXu, je potřebné použití procedurálního jazyka PL/SQL. Pro úpravy grafického rozhraní mimo rámec průvodců je pak nutná také znalost jazyka HTML, případně Java skriptu a CSS stylů. APEX rozděluje prostor pro tvorbu aplikací na pracovní prostory (workspace). Každému pracovnímu prostoru jsou při jeho vytvoření přiřazena schémata v databázi, pod kterými mohou pracovat v něm vytvořené aplikace. Každému pracovnímu prostoru se také samostatně vytváří uživatelské přístupy pro administrátory, vývojáře a uživatele pracovního prostoru. To umožňuje provozování více nezávislých prostředí pro vývoj aplikací, díky čemuž lze APEX provozovat i jako hostované vývojové a provozní prostředí. V rámci daného pracovního prostoru pak mohou uživatelé s vývojářskými oprávněními vytvářet libovolný počet samostatných aplikací. [5] Obr. 2: Struktura APEX prostředí
Zdroj: GREENWALD, Rick : Beginning Oracle® Application Express [5]
-9-
Zavedení tohoto prostředí může být také sjednocující alternativou k mnoha malým podnikovým aplikacím vybudovaným například na produktech Microsoft Excel nebo MS Access, kterých bývá v podnicích často mnoho.[5] Migrace stávajících aplikací je přitom poměrně snadná díky nástrojům, které APEX nabízí pro migraci dat. K migraci aplikací z Microsoft Office Access je také možné využít například nástroj SQL Developer, který firma Oracle nabízí rovněž zdarma. Oracle Application Express dává možnost sjednocení těchto menších aplikací do jedné databáze s využitím databázového stroje Oracle. To může přinést mnohé výhody, jak ve sjednocení datové základny jako takové, tak ve využití všech možností a funkcí profesionálního databázového stroje firmy Oracle.[30] Instalace prostředí do databázového stroje je možná buď ve vývojářské nebo provozní verzi. Přičemž provozní verze umožňuje pouze instalaci a provoz již vytvořených aplikací, neobsahuje však žádné funkce pro jejich další úpravu a vývoj. Vývojářská verze obsahuje všechny funkčnosti verze provozní, k tomu přidává ještě prostředí pro vývoj aplikací (Application Builder), nástroje pro práci s objekty a daty v databázi pomocí jazyka SQL (SQL Workshop) a sadu dalších nástrojů (Utilities) jako generátor DDL skriptů, nástroj pro import/export dat nebo sadu předefinovaných náhledů pro monitoring.[11] Stručný popis jednotlivých částí tohoto prostředí je uveden v následujících kapitolách. Obr. 3: Hlavní obrazovka vývojářské verze Oracle Application Express 3.2.1
Zdroj: otisk obrazovky z prostředí APEX 3.2.1
- 10 -
1.2 Moduly aplikace Modul Application Builder zastřešuje funkce pro vlastní vývoj aplikací v APEXu. Aplikace jsou vždy uloženy v konkrétním pracovním prostoru a právo na jejich vytváření a úpravu má pouze uživatel nebo uživatelé daného pracovního prostoru s přiděleným oprávněním pro vývoj aplikací. Protože uživatelé jednotlivých pracovních prostorů jsou na sobě zcela nezávislí (v různých pracovních prostorech mohou existovat uživatelé s totožným uživatelským jménem, ale jedná se o naprosto nezávislé a z pohledu APEXu rozdílné uživatele) je možné pomocí oddělených pracovních prostorů poskytovat v rámci jedné databáze prostor pro více skupin vývojářů, kteří mohou nezávisle na sobě vyvíjet a následně provozovat různé aplikace.[3] Způsob ověřování uživatelů prostředím je dále zmíněn v kapitole 1.4 jako součást sdílených komponent aplikace. Díky této vlastnosti a tomu, že prostředí APEX poskytuje veškeré potřebné nástroje pro vytváření a úpravu objektů v databázi a manipulaci s daty přes webové rozhraní, lze využít Oracle Application Express komerčně i jako prostředí pro poskytování prostoru na vývoj a provozování aplikací více samostatným subjektům.[25]
1.2.1
Application Builder
Část Application Builder v rámci konkrétního pracovního prostoru přihlášeného vývojáře nabízí tyto funkce:
Vytvoření zcela nové aplikace
Úpravu již existujících aplikací
Instalaci a spuštění připravených demonstračních aplikací
Administraci aplikací
Import nových aplikací z instalačního balíku
Spuštění aplikací existujících v daném pracovním prostoru
Jedná se o hlavní část prostředí, která umožňuje vlastní vývoj a úpravu aplikací. Tvorba zde probíhá pomocí průvodců a grafického prostředí. Je možné editovat jednotlivé komponenty aplikace, které jsou podrobněji popsány v kapitolách 1.3 a 1.4.
- 11 -
Obr. 4: Hlavní stránka pro editaci aplikace v části „Application Builder“
Zdroj: otisk obrazovky z prostředí APEX 3.2.1
1.2.2
SQL Workshop
Dalším modulem je SQL Workshop, který sdružuje funkce pro prohlížení a manipulaci s databázovými objekty a daty. Obsahuje tyto nástroje:
Object browser – umožňuje prohlížení a vytváření databázových objektů a dat
SQL commands – umožňuje zadání SQL dotazu nebo DML příkazu
SQL Scripts – umožňuje vytváření nebo nahrání SQL skriptů a jejich následné spuštění v databázi nebo jejich export do souboru.
Query Builder – umožňuje vytváření SQL dotazů jak pomocí grafického rozhraní, tak přímo textovým zadáním a jejich uložení.[3]
Nástroj Object Browser poskytuje funkčnosti pomocí nichž je možné velmi snadno v grafickém prostředí prohlížet a upravovat existující objekty v databázi, ale i vytvářet nové objekty. Prostředí je velmi podobné například Object Browseru v aplikaci TOAD for Oracle od firmy Quest Software, nebo v nástroji SQL Developer od firmy Oracle, na rozdíl - 12 -
od těchto nástrojů ale komunikuje uživatel - vývojář s databázovým strojem pouze přes HTTP protokol a na jeho straně tedy není nutná ani instalace Oracle klienta ani spojení na databázi přes protokol SQL*Net . Obr. 5: Nástroj „Object Browser“
Zdroj: otisk obrazovky z prostředí APEX 3.2.1
1.2.3
Utilities
Část „Utilities“ sdružuje různé nástroje užitečné při vývoji aplikace a monitorování jejího provozu. Jsou to:
Data Load/Unload – Volba Load umožňuje nahrávání dat z textových, CSV a XML souborů do databázových tabulek. Datové soubory zde mohou být také uschovány do repository pro pozdější použití. Volba Unload slouží k exportování dat z databázových tabulek do textových souborů s libovolným oddělovačem nebo do XML souboru.
Generate DDL – tento nástroj umožňuje vytvoření DDL skriptů z existujících databázových objektů. Vytvořené skripty jsou uloženy v repository, odkud je možné je exportovat pro případné použití v jiné databázi. Vytvořené DDL skripty se také dají využít při přípravě instalačního balíčku aplikace. - 13 -
Objects Reports - obsahuje různé reporty nad existujícími tabulkami včetně zobrazení statistik a alokovaného místa. Reporty upozorňující na různé výjimky v databázových objektech jako přehled tabulek bez primárního klíče nebo neindexované tabulky. A dále pak reporty zaměřené na bezpečnost, programové jednotky psané v PL/SQL a reporty nad databázovým pohledem all_objects.
Recycle Bin – umožňuje pohled na vymazané databázové objekty, jejich případnou obnovu nebo naopak definitivní odmazání z databáze
Další sada nástrojů, kterou část Utilities nabízí, je zaměřena na celou databázi. Některé tyto nástroje vyžadují přihlášení pod databázovým uživatelem s rolí DBA. Nástroje v Utilities týkající se celé databáze jsou:
Database Monitor – sdružuje různé pohledy užitečné pro monitoring celé databáze jako například pohledy na databázové sessions nebo systémové statistiky.
APEX Views – reporty nad systémovými pohledy Oracle Application Express. Zde je možné najít veškeré informace o aplikacích a jejich částech uložené v systémových pohledech v databázovém schématu, do kterého byl APEX instalován.
Schema Comparison – nástroj pro porovnání obsahu dvou schémat v databázi a nalezení rozdílů mezi nimi.
About Database – pohledy, ve kterých je možné vidět systémové informace o databázi a jejím nastavení.[3]
1.3 Struktura aplikace v Oracle Application Express Jak již bylo zmíněno v předešlé kapitole, funkce potřebné pro vývoj aplikací jsou v Oracle Application Express zastřešeny v části Application Builder. Zde je také průvodce, který při vytváření nové aplikace provede vývojáře základními volbami a vytvoří podle nich rychle jednoduchou použitelnou aplikaci obsahující formuláře a reporty nad nadefinovanými tabulkami. I když při vytváření aplikace ještě na začátku průvodce pro tvorbu aplikace nabízí vytvoření tabulek a import dat z textových nebo CSV souborů, ostatní funkce jsou již zaměřeny na tvorbu grafického uživatelského rozhraní (GUI) a na další tvorbu aplikační logiky jako například validace, listy hodnot (LOV), aplikační výpočty nebo větvení aplikace. Vytvoření datových struktur v databázi přímo při tvorbě aplikace je vhodné spíše pro rychlé vytvoření aplikace v APEXu (migrace) z již existující aplikace, například - 14 -
v tabulkovém procesoru, kdy máme již dopředu známou strukturu a obsah dat a chceme je pouze co nejrychleji převést ve stejné podobě do Oracle databáze a následně nad nimi postavit aplikaci v APEXu. Jinak je vhodné před vlastní tvorbou nové aplikace nejprve na základě analýzy stanovit datový model a vytvořit předem v databázi všechny objekty, které bude aplikace využívat.[30] To lze buď pomocí nástrojů Oracle Application Express v části SQL Workshop případně Utilities při migraci tabulek z Excelu či textových souborů nebo nahrávání iniciálních dat. Další možností je pochopitelně využití jakýchkoliv jiných nástrojů pro Oracle Databáze mimo APEX. Pro správnou funkčnost APEXu je nutné, aby každá tabulka použitá v aplikaci měla primární klíč.[10] Ačkoliv i již vytvořenou aplikaci nebo její část je možné při pozdější změně datových struktur upravit, je počáteční analýza a správné stanovení datového modelu velice důležité, a při následné tvorbě aplikace ušetří mnoho práce. Při tvorbě aplikace totiž vestavění průvodci čerpají informace i z metadat o použitých datových strukturách, správný datový model tak umožňuje průvodci spíše vytvořit od počátku požadovanou aplikační část správně, čímž se ušetří mnoho dodatečných ručních úprav aplikace. [5] Z uživatelského pohledu je aplikace v APEXu složená podobně jako jiné databázové aplikace z jednotlivých obrazovek, které uživateli určitým způsobem zprostředkovávají náhled, případně možnosti úprav dat uložených v datových strukturách databáze a navigují ho mezi nimi. Vytváření aplikací v Oracle Application Express je přizpůsobeno požadavkům rychlého vývoje jednoduchých aplikací, ovšem zachovává si flexibilitu pro další složitější požadavky. APEX také obsahuje několik demonstračních aplikací, které lze při vytváření nové podobné aplikace využít jako základ a urychlit tak její tvorbu. Jednotlivé součásti aplikace v Oracle Application Express lze z pohledu vývojáře rozdělit podle jejich funkce v aplikaci do tří skupin[10]:
Shared Components – jsou komponenty, které ovlivňují, nebo jsou využitelné v celé aplikaci, patří sem i parametry pro vlastní definici aplikace.
Pages – definice jednotlivých stránek a jejich komponent zobrazovaných v aplikaci. Stránky mohou využívat i sdílené komponenty.
Supporting Objects – komponenty využívané pro instalaci aplikace do nového prostředí, upgradu a deinstalaci aplikace. Jedná se zejména o SQL skripty, ale také o definice různých validací a zpráv zobrazovaných během těchto kroků.
- 15 -
Jiným dělením částí aplikace, zajímavým například z důvodu zálohování nebo instalace aplikace na jinou lokalitu, je pohled na to, kde jsou části aplikace uloženy. Vytvořená aplikace v Oracle Application Express je uložena převážně přímo v Oracle databázi, což může být obrovskou výhodou například právě z pohledu zálohování, kdy běžným zálohováním obsahu databáze zálohujeme nejen data, ale i samotnou aplikaci. Výjimku můžou tvořit statické soubory aplikace, které jsou součástí výsledných stránek aplikace, jako jsou soubory s různými ikonami nebo obrázky. Soubory tohoto typu mohou být uloženy jak v databázi, tak jako běžné soubory v souborovém systému databázového serveru v adresáři definovaném v instanci APEXu.[30] To zda budou statické soubory uloženy v databázi nebo přímo na souborovém systému je na vůli vývojáře, změnu nebo uložení souborů přímo do souborového systému databázového serveru ale není možné provést přes webové rozhraní vývojového prostředí APEX, a jejich uložení tedy musí provést osoba s přímým přístupem k tomuto adresáři. Uložení částí aplikace tímto způsobem však může být vhodné například pro statické soubory o velké velikosti. Komponenty aplikace lze tedy podle způsobu uložení rozdělit takto[30]:
Databázové schéma definované pro APEX – zde je v interních databázových strukturách Oracle Application Express uložena definice aplikace a jejích stránek a běžných komponent. Jsou zde uloženy i statické soubory aplikace, které vývojář uloží přes webové rozhraní vývojového prostředí.
Aplikační databázové schéma, případně další databázová schémata – Jedná se o schéma nebo schémata, ve kterých jsou databázové objekty, se kterými vytvořená aplikace pracuje jako například tabulky, view nebo databázové funkce a procedury.
Adresář na databázovém serveru definovaný v instanci Oracle Application Express – zde mohou být uloženy statické soubory odkazované ve webových stránkách aplikace.
Další externí odkazy – aplikace je v prohlížeči zobrazovaná jako běžná webová stránka, je tedy samozřejmě možné odkazovat i na externí URL adresy.[30]
Hotovou vytvořenou aplikaci pak uživatelé mohou spouštět ve svém webovém prohlížeči z URL adresy s touto strukturou: [http nebo https]://[název serveru nebo IP adresa]:[port]/[pls/]apex/f?p=[id aplikace nebo její unikátní alias]
- 16 -
Zda se použije nešifrovaný protokol HTTP nebo šifrovaný záleží na nastavení instance Oracle Application Express administrátorem. Port nemusí být napsán, pokud by odpovídal obvyklému portu pro HTTP případně HTTPS protokol. Řetězec „pls/“ je v URL cestě jen za určité konfigurace APEX prostředí. ID popřípadě alias aplikace je unikátní identifikace v rámci APEX instance definovaná vývojářem při vytváření aplikace. Aplikace pak po zadání tohoto linku uživatele přesměruje na výchozí stránku a URL adresu nastavenou vývojářem v parametrech aplikace.[3]
1.4 Sdílené komponenty aplikace Kromě průvodců je jedním z hlavních prvků, které podporují rychlý vývoj aplikací v prostředí Oracle Application Express, právě koncept sdílených komponent aplikace (Shared Components). Tyto komponenty zahrnují jak základní parametry aplikace, tak prvky, které ovlivňují vzhled nebo chování celé aplikace nebo jsou v rámci aplikace vícekrát použitelné. To umožňuje například rychle změnit vzhled celé aplikace, změnit autorizační požadavky na celou nebo určitou část aplikace, změnit listy hodnot nebo jiné komponenty, které používá více obrazovek, bez ohledu na rozsáhlost aplikace a nutnosti procházení jednotlivých částí aplikace samotné.[10] Obr. 6: Dostupné sdílené komponenty aplikace
Zdroj: otisk obrazovky z prostředí APEX 3.2.1
- 17 -
V Oracle Application Express jsou sdílené komponenty dále rozděleny na tyto části:
Application – Tato část obsahuje nastavení parametrů aplikace v prostředí Oracle Application Express. Základním atributem aplikace v APEXu je unikátní identifikační číslo aplikace v rámci celého repository Oracle Application Express. Při vytváření nové aplikace průvodce toto číslo sám navrhne, ale vývojář ho může změnit na jakékoliv jiné, ovšem musí zůstat zachována podmínka unikátnosti čísla, a to nejen v rámci pracovního prostoru, kde je aplikace vytvářena, ale v rámci celého APEX repository. Identifikační číslo po vytvoření aplikace už nelze později modifikovat. Toto identifikační číslo je i součástí URL adresy při volání aplikace. Alternativně k němu lze v sekci application v Shared Components nadefinovat také unikátní aplikační alias, který může být pak použit při volání aplikace v URL místo identifikačního čísla. Poslední z parametrů pro označení aplikace je aplikační jméno. To musí být unikátní pouze v rámci daného pracovního prostoru a slouží ke srozumitelnému označení aplikace pro vývojáře – aplikace je pod tímto jménem zobrazována ve vývojovém prostředí. Dalším zásadním parametrem aplikace spadajícím do této sekce komponent je jméno databázového schématu, ve kterém má aplikace pracovat. Tento parametr neznamená, že by aplikace nemohla přistupovat i k objektům v jiných schématech. Aplikace bude veškeré akce v databázi provádět s právy zvoleného schématu, a bude tedy moci přistupovat i k objektům v jiných schématech, pokud na to bude mít zvolené schéma v db oprávnění, s nutností uvedení cizího schématu, ve kterém se objekt nachází. Sekce application v Shared Components poskytuje možnost nastavení celé řady dalších parametrů jako logování a debugování aplikace, řízení dostupnosti aplikace, nastavení aplikačního loga, připsání komentáře a mnoho dalších. Posledním parametrem z této sekce, který bych rád zmínil, je možnost nastavení autorizačního schématu pro celou aplikaci. Autorizační schémata jsou v APEX aplikacích způsob kontroly přístupu k jednotlivým částem aplikace. Jsou zmíněna dále ve společných komponentách u bezpečnostních prvků. Autorizační schéma lze nastavit pro každou stránku aplikace zvlášť. Nastavení autorizačního schématu přímo v Shared Components v sekci application pak znamená, že pro přístup na všechny stránky aplikace je nutno splnit minimálně podmínku tohoto autorizačního schématu.[10]
Logic - V této sekci lze deklarovat aplikační prvky (Application Items). Deklarované aplikační prvky slouží v podstatě jako proměnné, které lze v rámci celé aplikace využívat a nastavovat jejich hodnotu. V sekci „Logic“ lze dále vytvořit aplikační - 18 -
procesy, tedy bloky PL/SQL kódu, které budou provedeny vždy v určeném místě aplikace, například při načítání každé nové stránky. Lze však vytvořit i procesy, které budou spouštěny na vyžádání jen některými částmi aplikace, budou ale dostupné jako pojmenovaný proces pro všechny stránky aplikace a vývojář tedy nemusí v případě vícenásobného využití opisovat vícekrát stejný PL/SQL kód. Obdobným způsobem lze vytvořit aplikační výpočet (Application Computation). Jedná se o definování položky, jejíž hodnota bude vždy přepočítána předem definovaným způsobem v definovaném místě aplikace, jako třeba načítání nové stránky. Aktuální hodnotu této položky lze pak využít kdekoliv v aplikaci. Dalšími možnostmi v sekci „Logic“ je možnost napojení aplikace na webové služby a vytvoření pravidel pro vypnutí nebo zapnutí určité funkcionality aplikace nazvané Build Options.[10]
Security – Jak je patrné již z názvu, tato sekce společných komponent obsahuje nastavení pro zabezpečení aplikace. Prvním atributem je autentizační schéma, které bude aplikace používat pro ověření identity uživatele. APEX nabízí více možností jak ověřit identitu uživatele. Pro autentizaci uživatelů v aplikaci v Oracle Application Express je možné použít přímo databázové účty, nebo uživatelské účty vytvořené v repository Oracle Application Express, je také možné nechat aplikaci zcela bez autentizace nebo použít k autentizaci LDAP nebo Oracle Application Server Single Sign-On. K využití posledních dvou zmíněných možností je ovšem nutné, aby repository Oracle Application Express bylo správně nakonfigurováno k připojení k těmto serverům. Další položkou v sekci bezpečnost ve sdílených komponentách aplikace je nastavení autorizačních schémat. Autorizační schéma je v podstatě funkce, která pomocí definovaného SQL dotazu, PL/SQL kódu nebo jiným zvoleným způsobem ověří, zda autentizovaný uživatel splňuje její kritéria nebo ne. Jeho výstupem je tedy booleovská hodnota true nebo false. Vytvořená autorizační schémata lze navázat na jednotlivé části aplikace a zabezpečit tak, aby je využil pouze oprávněný uživatel. Další bezpečností funkcí je Session State Protection. Protože pohyb mezi jednotlivými obrazovkami aplikace v Oracle Application Express je závislý na URL adrese, existuje bezpečnostní riziko obejití aplikační logiky podvržením falešné URL adresy uživatelem. Funkce „Session State Protection“, pokud je zapnutá, umožňuje ošetřit toto riziko tím, že jako součást URL adres aplikace je generován kontrolní součet, který je aplikací kontrolován. Poslední položka odkazuje na další bezpečnostní atributy aplikace dostupné již ze sekce Application ve sdílených komponentách.[10] - 19 -
Globalization – Pomocí sdílených komponent v této sekci lze upravit aplikaci tak, aby podporovala více jazykových mutací. Oracle Application Express k tomu nabízí dva nástroje. Volba „Translate Application“ umožňuje vytvoření překladu aplikace pro určitou jazykovou mutaci pod novým unikátním identifikačním číslem aplikace a export překladového souboru ve formátu XLIFF1, do kterého APEX vyexportuje textové řetězce z celé nebo zvolené části aplikace. Po přeložení cílové podoby textů pro danou řeč je soubor možné nahrát ke zvolené jazykové mutaci a publikovat ji. Po publikování překladu pak aplikace podle svého nastavení může přepínat mezi jednotlivými mutacemi textů a poskytovat tak každému uživateli lokalizovanou verzi. Pod novým aplikačním ID jsou vytvořeny pouze překlady mapované k originální aplikaci, vývojář tak stále pracuje na vývoji pouze jediné aplikace. Přeložené mapované texty lze také v této sekci kdykoliv dodatečně upravovat. Dalším nástrojem podporujícím vícejazyčnou mutaci v této sekci je překlad textových zpráv. Tímto nástrojem lze vytvořit textovou zprávu s určitým unikátním jménem ve více jazykových mutacích, která může v textu obsahovat až 9 předávaných parametrů. V aplikaci ji pak lze využít v PL/SQL blocích, procedurách, balících i triggerech pomocí zavolání funkce APEX_LANG.MESSAGE, kde je prvním argumentem jméno zprávy, dalšími 9 argumenty implicitně nastavenými na hodnotu NULL jsou parametry, které se substitucí za znaky %1 až %9 doplní do vlastního textu zprávy a posledním nepovinným argumentem je kód jazykové mutace. Funkce na toto volání vrátí textový řetězec ve VARCHAR2 s příslušnou jazykovou mutací žádané zprávy. Pokud poslední argument pro určení jazykové mutace není při volání funkce APEX_LANG.MESSAGE explicitně uveden, vrátí funkce text odpovídající jazykové mutaci podle nastavení aplikace. Poslední volbou v této sekci je možnost nastavení atributů aplikace týkajících se jazykového nastavení. Zde lze například určit, kdy budou použity jazykové mutace nebo formát pro datum, který bude aplikace používat.[10]
Navigation – V této sekci sdílených komponent lze upravovat komponenty sloužící k navigaci v aplikaci. První takovou komponentou jsou záložky (Tabs). Ty se, pokud jsou pro stránku použity, v závislosti na šabloně dané stránky zobrazují v určité její části. Záložek lze vytvořit libovolný počet a ke každé záložce lze přiřadit jednu i více
1
XLIFF – jedná se o otevřený standardizovaný formát pro lokalizaci na bázi XML[23]
- 20 -
stránek v aplikaci s tím, že jedna stránka je zvolena jako hlavní. Na každé stránce, kde jsou záložky použity, pak fungují tak, že je označena záložka, pod kterou spadá aktuálně zobrazená stránka, a ostatní záložky fungují jako odkaz na jim nastavené hlavní stránky. Pro jednu aplikaci lze vytvořit i více skupin záložek. Další komponentou, kterou lze využít pro navigaci v APEX aplikaci, jsou seznamy „Lists“. Seznamy lze plnit položkami, pro které lze definovat hypertextový odkaz na jiné stránky aplikace nebo jiné libovolné URL adresy. Výhodou použití seznamů ve sdílených komponentách pro navigaci v aplikaci je, že vytvořený seznam lze snadno spravovat z jednoho místa bez ohledu na to, v kolika místech aplikace je použit. Při úpravě seznamu se změna automaticky projeví v celé aplikaci ve všech jeho výskytech. Dalším navigační komponentou APEX aplikací jsou takzvané „Breadcrumbs“. Tato komponenta zajišťuje hierarchickou navigační strukturu pro jednotlivé stránky aplikace do jakékoliv úrovně. V této komponentě záznam pro každou stránku zároveň obsahuje i záznam o stránce, která je jejím předkem. V aplikaci pak funguje tato komponenta tak, že uživateli je na aktuální stránce zobrazena hierarchie příslušné stránky až na úroveň hlavní stránky aplikace, kde jednotlivá jména stránek jsou zároveň hypertextovými odkazy na tyto stránky. Uživatel má tedy díky této komponentě možnost se vrátit z aktuální stránky na jakoukoliv vyšší úroveň v aplikaci a zároveň je mu poskytnuta přehledná informace, kde se v aplikaci nachází. Hierarchickou navigační komponentou jsou také stromy. Stromy lze po vytvoření využít podobně jako seznamy na více místech aplikace. Stromy lze plnit hodnotami za pomoci libovolného SQL dotazu, který vrací sloupce s názvy nebo aliasy „ID“, „PID“, „NAME“, a „LINK“. Kde sloupec ID znamená unikátní „ID“ položky ve stromu, hodnota „PID“ je „ID“ nadřazené položky ve stromu, hodnota sloupce „NAME“ udává text, pod jakým bude položka ve stromu zobrazena, a „LINK“ hypertextový odkaz pro danou položku. Pro funkci stromu platí podmínka, že SQL dotaz musí pro všechny vrácené hodnoty „PID“ zároveň vrátit i odpovídající záznamy, kde PID = ID. Poslední položka, kterou APEX ve sdílených komponentách v této sekci nabízí, je nazvaná „Navigation Bar Entries“. Tato komponenta uživateli zobrazí na předem daném místě v obrazovkách aplikace sadu definovaných odkazů podle zvoleného pořadí.[10]
User Interface – Vzhled aplikace v APEXu je založen na takzvaných tématech (Themes). Téma aplikace volí vývojář hned při jejím vytváření, ale je možné ho později změnit právě z této sekce sdílených komponent. Téma představuje skupinu - 21 -
šablon k různým typům obrazovek a komponent v aplikaci. Šablona zde představuje kostru určitého typu stránky nebo komponenty v HTML kódu se speciálními textovými řetězci, které APEX následně při implementaci dané komponenty substituuje za konkrétní hodnoty. Změnou šablony lze tedy změnit například konkrétní podobu tlačítek v aplikaci nebo určitého typu obrazovek. Pomocí substitucí šablony obrazovek také určují, v kterém místě se zobrazí jednotlivé sdílené komponenty. Šablony kromě klasického HTML kódu mohou obsahovat i Java Script, kaskádové styly nebo jiný obsah, který bude schopen prohlížeč uživatele při čtení výsledné stránky interpretovat. Změnou tématu aplikace se obmění sada šablon a změní se tak velmi jednoduše a rychle vzhled celé aplikace bez dopadu na její funkčnost. Lze také upravovat jednotlivé šablony aplikace, nebo vytvářet nové vlastní jako alternativu, kterou mohou využít jen některé komponenty. Je možné také vytvářet celá vlastní témata, obsahující sadu šablon. Tato schopnost může být například užitečná pro případy, kdy chceme, aby aplikace ve firmě měly jednotný vzhled. Vytvořením tématu obsahující všechny potřebné šablony pro požadovaný vzhled aplikací pak dosáhneme tohoto cíle jednoduše tím, že pro každou vyvíjenou aplikaci bude použito toto téma.[5] Další užitečnou možností Oracle Application Express pro sjednocení vzhledu aplikací je vytvoření „User Interface Defaults“ (UID) pro databázové tabulky nebo view. Jedná se v podstatě o obal databázových objektů metadaty, které APEX využije při vytváření nových částí aplikace využívajících tyto objekty. Pomocí UID lze například nastavit jaké popisky APEX implicitně vytvoří pro jednotlivé atributy tabulky nebo view, v jakém pořadí budou implicitně atributy z těchto objektů ve formulářích nebo reportech zobrazeny, nebo které atributy se implicitně v aplikaci zobrazovat nemají. Nadefinování UID k databázovému objektu tak může ušetřit práci při vytváření nových částí aplikace, které tento objekt využívají a zároveň sjednotit způsob, jakým je daný objekt v aplikacích zobrazován. Další komponentou spadající do sekce „User Interface“ ve sdílených komponentách jsou listy hodnot – list of values (LOV). Listy hodnot fungují jako převodník mezi hodnotami, které jsou skutečně uloženy v databázi a hodnotami, které chceme zobrazit uživateli. Příkladem může být například zobrazení záznamů o obchodních transakcích, kde budeme chtít, aby v aplikaci bylo uživateli zobrazeno celé jméno transaktora namísto jeho identifikačního čísla, které ukládáme v databázi k transakčním záznamům. Po vytvoření odpovídajícího listu hodnot lze tohoto docílit jednoduše tím, že položku s identifikačním číslem transaktora navážeme na vytvořený list hodnot. Listy hodnot lze v Oracle Application Express definovat jak na lokální - 22 -
úrovni jednotlivých stránek, tak ve sdílených komponentách. Rozdíl je v tom, že jednou nadefinovaný list hodnot ve sdílených komponentách může být využit v aplikaci vícekrát. List hodnot může být definován jako statický seznam zobrazovaných a odpovídajících návratových hodnot nebo jako dynamicky spouštěný SQL dotaz, který vrací 2 sloupce s aliasy „d“ - pro hodnoty zobrazované uživateli a „r“ pro návratové hodnoty do databáze. Poslední komponentou z této části jsou zkratky (Shortcuts). Zkratky slouží k definování často používaného kusu kódu, který lze pak pomocí substitucí využít v aplikaci vícekrát bez nutnosti přepisování celého kódu.[10]
Reports – V této sekci sdílených komponent lze definovat tiskové reporty, které budou moci uživatelé aplikace využívat. Obsah reportů je definován klasickým SQL dotazem a umožňuje i využití proměnných při spuštění reportu. Oracle Application Express nabízí vytvoření reportů v různých formátech včetně formátů PDF, Microsoft Word a Excel nebo HTML. Oracle Application Express ovšem sám o sobě tyto jmenované formáty není schopen generovat. Aby bylo možné reporty v těchto formátech vytvořit, musí být Oracle Application Express administrátorem patřičně nakonfigurován a napojen na tiskový server, který je schopen provést konverzi do těchto formátů. APEX pak provede pouze spuštění reportu a odeslání výsledku ve formátu XML tiskovému serveru, který vrátí jako výsledek zkonvertovaný report. K vytvořeným reportům je také možné navrhnout definici rozložení reportu (layout), která se použije při konverzi z XML. S pomocí report serveru tak lze vytvořit přesně formátované reporty podle požadavků.[10]
Files - V této sekci je možné uložit do virtuálního adresáře aplikace soubory s kaskádovými styly, obrázky nebo jiné statické soubory, které je pak možné využít v aplikaci. Soubory takto uložené lze volat v HTML kódu stránek aplikace stejným způsobem, jako soubory uložené se stránkami na klasickém webovém serveru.[10]
1.5 Stránky aplikace Každá stránka v Oracle Application Express aplikaci musí mít svoje unikátní identifikační číslo v rámci celé aplikace. Toto číslo je kromě některých typů stránek volitelné. Při volání stránky v aplikaci je pak toto identifikační číslo součástí URL adresy společně s identifikačním číslem aplikace a dalšími parametry. Stránky aplikace v APEXu mohou obsahovat komponenty jak definované pouze pro konkrétní stránku tak i sdílené komponenty. Stránky jsou vykreslovány podle šablon HTML kódu ve sdílených - 23 -
komponentách, do kterých je ještě za pomocí substitucí doplňován další kód nebo obsah dalších podřazených šablon. Kromě sdílených komponent pro navigaci a některých jiných pevně umístěných prvků na začátku a konci stránky podle šablon je další obsah stránky a její komponenty rozdělen do jednotlivých regionů, které slouží jako kontejnery pro jejich umístění na stránce. Region může obsahovat různé typy komponent a jeho umístění na stránce aplikace v rámci oblasti určené pro regiony je řízeno třemi parametry – sekvenčním číslem, číslem sloupce a bodem zobrazení (Display point). Tyto parametry souvisí s tím, jak ve skutečnosti funguje formátování stránek aplikace pro klienta. Stránka aplikace v APEXu je na prohlížeč klienta odesílána jako klasická webová stránka, formátování a umístění jednotlivých komponent je tedy řízeno klasickými prostředky pro webové stránky, jako HTML formátování a kaskádové styly. Jedním z hlavních prostředků, které APEX pro správné umístění obsahu stránky používá, je pak HTML tabulka.[3] Parametry pro umístění regionu se pak dají vysvětlit tak, že „Display point“ určuje, kde bude region umístěn v rámci šablony stránky, a číslo sloupce je číslo sloupce HTML tabulky v této oblasti, do které má být region vykreslen. Sekvenční číslo určuje, v jakém pořadí bude jednotlivé regiony a komponenty APEX při vytváření stránky generovat. Mimo různých atributů určujících vzhled a chování regionu je zajímavá možnost, kterou má i většina ostatních komponent aplikace, a to podmínit zobrazení regionu (komponenty) na základě nějakého kritéria. Kritéria ke zobrazení jednotlivých komponent nebo celých regionů stránky mohou být určena mnoha způsoby od porovnávání hodnot atributů po SQL dotazy nebo návratové hodnoty PL/SQL kódu. Zobrazování je také možné podmínit některými parametry prostředí prohlížeče. To umožňuje velmi efektivně řídit obsah stránky na základě různých rozhodujících podmínek, které mohou být v případě, že vývojář aplikace ovládá PL/SQL, i velmi složité.[10] Vytváření nových stránek aplikace je při vývoji stejně jako vytváření jiných komponent maximálně usnadněno průvodci, kteří vývojáře postupně provedou všemi základními volbami potřebnými pro vytvoření jednoduché stránky daného typu. Takto vytvořené stránky většinou obsahují pouze region s vybraným typem komponenty a zvolené navigační prvky. Základní nabídka typů pro vytvoření nové stránky aplikace je[10]:
Blank Page - vygeneruje novou prázdnou stránku aplikace obsahující jen zvolené navigační prvky.
Multiple Blank Pages - vygeneruje sadu nových prázdných stránek obsahujících jen zvolené navigační prvky. - 24 -
Report – vygeneruje novou stránku aplikace obsahující report zvoleného typu a zvolené navigační prvky. Reportem se zde rozumí objekt zobrazující výsledky SQL dotazu ve formátu tabulky. Reporty mohou obsahovat i hypertextové odkazy nebo multimediální a jiné soubory uložené v databázi. Některé multimediální soubory pak může APEX rozeznat a zobrazit odpovídajícím způsobem. Soubory jakéhokoliv typu a obsahu pak mohou být v reportu zobrazeny jako hypertextový odkaz ke stažení souboru. Od verze Oracle Application Express 3.1 pak toto prostředí nabízí nový a podle mého názoru velmi zajímavý a užitečný typ reportu, takzvaný interaktivní report (Interactive Report).[25] Náročnost vytvoření tohoto reportu z pohledu vývojáře je obdobná jako u klasického, pro uživatele aplikace však výsledný report nabízí mnohem širší možnosti než statická tabulka s výsledky daného selektu. U interaktivních reportů má uživatel aplikace možnost pomocí ovládacích komponent reportu dále s tímto reportem pracovat a upravit si ho podle vlastních požadavku, přičemž se však vždy pohybuje v rámci oblasti výsledků selektu a mezí definovaných vývojářem. U interaktivních reportů má uživatel možnost sám zakrýt nebo přehodit pořadí některých sloupců, přidat vlastní kalkulace k reportu, dále filtrovat výsledky reportu podle vlastních kritérií, sdružovat výsledky podle některého ze sloupců, nastavit vytváření agregací a mnoho jiných funkcí. Velmi zajímavá také může být možnost podbarvovat podle určitých kritérií některé řádky nebo položky reportu. Všechny tyto další úpravy nad výslednou podobou interaktivního reportu přitom uživatel může provádět v aplikaci přes snadno ovladatelné grafické rozhraní a jím provedené úpravy nad výsledným formátem reportu pak uložit jako vlastní uživatelskou verzi pro tento report, pokud je to pro report vývojářem povoleno. Stejné možnosti formátování má i samotný vývojář při vývoji aplikace, ten má navíc možnost tyto úpravy uložit jako výchozí formát reportu pro všechny uživatele.[10]
Chart – vygeneruje stránku s grafem založeným na SQL selektu a zvolenými navigační prvky. Grafy dokáže APEX podle volby vytvořit ve formě HTML kódu nebo za využití technologie Macromedia Flash – to vyžaduje, aby na straně klienta byl nainstalován Flash Player 8 nebo vyšší.[10] Třetí možností je pak vytvoření grafů za
- 25 -
využití formátu SVG.2 V závislosti na použité technologii pak APEX umožňuje tvořit různé druhy grafů. Obsah grafů se definuje pomocí SQL dotazu s pevně danou strukturou jmen očekávaných sloupců. Grafy umožňují selektem vytvořit i hypertextové odkazy z jednotlivých zobrazovaných položek, což dále zvyšuje pružnost APEX aplikací.[10]
Form - vygeneruje stránku s různým typem formuláře a zvolenými navigační prvky. Formuláře umožňují procházení jednotlivých záznamů, a pokud je to možné, také přidávání nových záznamů a editaci nebo smazání existujících záznamů. Kterákoliv z možností úpravy, přidávání a mazání záznamů může být však vývojářem potlačena. APEX nabízí formuláře více typů, formulář může být například napojen přímo na tabulku nebo view, může být však také definován SQL dotazem nebo napojen na webové služby registrované v aplikaci. Je možné také vytvořit kombinovaný formulář „Master Detail“ nad dvěma tabulkami, z nichž jedna obsahuje detailní – rozšířené záznamy k záznamům z hlavní tabulky, typicky tabulky propojené cizím klíčem. Velmi účinná pro zobrazení dat uživatelům je kombinace reportu a formuláře, kterou APEX také umožňuje vytvořit přímo pomocí průvodce. Report pak zobrazuje celkový pohled na data a pomocí hypertextových odkazů umožňuje uživateli zobrazení formuláře s detaily dané položky a případně s možností její editace nebo smazání.[10]
Wizzard – tato volba umožňuje vytvoření skupiny několika propojených stránek vybraného typu. Procházení těchto stránek je pak při vytváření ihned nastaveno tak, aby po potvrzení jedné stránky byl přesměrován na stránku následující. Účelem této možnosti je snadné vytvoření propojených stránek například pro vytvoření aplikačních průvodců.[10]
Calendar – umožňuje vytvořit stránku se zajímavou komponentou Oracle Application Express pro zobrazení záznamů, jež obsahují také položku s datovým typem DATE v kalendáři. Komponenta kalendář může být naplněna v nejjednodušším použití daty přímo ze zvolené tabulky a jejích atributů, může být však také plněna pomocí libovolného SQL dotazu, který vrací předem definované sloupce. Kromě textové hodnoty položek lze dotazem také definovat jejich hypertextové odkazy. Uživatel pak
2
Formát pro webovou grafiku na bázi XML od konsorcia W3C. Všechny webové prohlížeče však tento
formát nemusí podporovat a většina těch, které ho podporují, vyžadují, aby měl uživatel nainstalovaný plugin pro SVG.[25]
- 26 -
má možnost v aplikaci tyto záznamy procházet listováním v kalendáři, včetně volby různé granurality časové osy a po kliknutí na danou položku může být přesměrován například na stránku aplikace zobrazující detail o dané položce.[10]
Tree - vygeneruje stránku s komponentou strom a zvolenými navigační prvky.
Login Page – slouží pro vygenerování nové stránky pro autentizaci uživatele do aplikace. Přihlašovací stránka aplikace je automaticky vygenerována při vytváření nové aplikace, pomocí této volby je možné v případě potřeby (například po nechtěném smazání) vytvořit tuto stránku znovu.[10]
Access Control – vytvoření této stránky slouží jako snadná možnost, jak vybudovat k aplikaci v Oracle Application Expressu bezpečnostní logiku oddělených oprávnění v aplikaci pro různé uživatele. Průvodce v tomto případě vytvoří novou stránku v aplikaci nazvanou „Access Control Administration Page“, kromě toho ale vytvoří v databázi v aplikačním schématu 2 nové tabulky (APEX_ACCESS_SETUP a APEX_ACCESS_CONTROL) pro administraci přístupů uživatelů a také autorizační schémata pro 3 základní aplikační role: „Administrator“, „Edit“ a „View“. Na vytvořené stránce je pak možné definovat jména uživatelů a jejich aplikační role, kromě toho je možné přepínat i mezi různými módy kontroly aplikačních rolí. V aplikaci pak už stačí pro zajištění kontroly přístupu jednotlivým stránkám nebo komponentám přidružit požadované vytvořené autorizační schéma. Celou tuto funkčnost lze nahradit pochopitelně i vlastní implementací nebo ji následně po vytvoření ještě dále upravit. Funkčnost vytvoření kontroly přístupů pomocí této volby pouze usnadňuje využití standardní funkčnosti autorizačních schémat v Oracle Application Express.[10]
Page Zero – je speciální stránka, která může být pouze jedna v celé aplikaci a jejíž ID musí být vždy 0. Komponenty, které vývojář umístí na tuto stránku, bude Oracle Application Express vykreslovat pro každou stránku aplikace, pokud to nebude v podmínkách pro vykreslení nulové stránky pro určité stránky potlačeno.[10]
Po dokončení všech voleb průvodce v závislosti na zvoleném typu stránky se vytvoří nová stránka aplikace. Takto vytvořená stránka obsahuje veškerou základní logiku, aby mohla být zobrazena, většinou je však potřeba stránku dále upravit a přidal další logiku nebo regiony, aby splňovala požadavky aplikace. To lze provést po vytvoření stránky její editací. - 27 -
Obr. 7: Definice stránky
Zdroj: otisk obrazovky z prostředí APEX 3.2.1
Ve vývojovém prostředí pro editaci stránky jsou komponenty stránky rozděleny do tří sekcí:
Renderování stránky (Page Rendering) – v této sekci je přístup k veškerým nastavením stránky, které ovlivní to, jak se stránka zobrazí. Neboli veškeré atributy a komponenty stránky definované v této sekci jsou iniciovány v okamžiku, kdy Oracle Application Express dostane od uživatele žádost o zobrazení dané stránky aplikace. Na klientskou stanici je pak poslána výsledná vygenerovaná stránka. V této sekci lze definovat různé atributy stránky určující její chování a vzhled jako například jméno stránky, autorizační schéma pro vstup do stránky nebo použitá šablona pro vykreslení stránky. Dále zde lze přidávat, editovat nebo mazat regiony stránky (Regions), tlačítka (Buttons) umístěná na stránce a jejich funkčnost, prvky (Items) obsažené na stránce, - 28 -
výpočty hodnot (Computations) některých prvků a procesy (Process), které mají být provedeny v určitém bodě generování stránky, jako například načtení záznamů z databáze do mapovaných prvků formuláře.
Procesování stránky (Page Processing) - tato sekce umožňuje nastavení veškeré logiky, která má být provedena v okamžiku, kdy uživatel odešle výsledek svých akcí na dané stránce. Mohou to být opět výpočty různých prvků, dále různé validace, které mohou zabránit uživateli uložení provedených změn, procesy, které mají být provedeny po odeslání změn uživatelem, pokud jsou všechny validace v pořádku. Poslední oblastí v této sekci je pak větvení aplikace „Branches“, kterým se určuje, na kterou URL adresu nebo stránku aplikace bude uživatel přesměrován po odeslání aktuální stránky. Lze vytvářet i více podmíněných pravidel větvení a tím vytvořit logiku navigování mezi stránkami podmíněné určitými kritérii. Pravidla větvení jsou zpracovávána stejně jako jiné prvky stránky v pořadí podle sekvenčních čísel, jakmile dojde na zpracování větvení, jehož podmínka byla splněna, aplikace ihned provede přesměrování a na další definovaná větvení s vyšším sekvenčním číslem už není brán zřetel. Stránka by měla vždy obsahovat jedno nepodmíněné větvení nebo sadu podmíněných větvení, u kterých je zaručeno, že alespoň jedna z podmínek bude splněna, jako poslední. Pokud totiž není splněna žádná podmínka větvení, vyhlásí Oracle Application Express po odeslání stránky uživatelem chybu aplikace, jelikož nemá, jak dál pokračovat.
Sdílené komponenty (Shared Components) – Tato sekce zobrazuje a zaroveň umožňuje snadný přístup k některým sdíleným komponentám aplikace ovlivňujícím výsledný vzhled a chování stránky.
Výsledná stránka aplikace pomocí dodatečných editací umožněných v této sekci už může v závislosti na schopnostech vývojáře obsahovat poměrně složitou logiku. Prvky stránky fungují na rozdíl od aplikačních prvků jako zobrazitelné komponenty, které mohou být zobrazeny na stránce volitelným způsobem, například jako textové pole, combo box nebo check box. Jejich hodnota může být navázána buď na hodnoty objektu v databázi nebo být určena výpočty definovanými na stránce. Prvky jsou platné jen v rámci dané stránky, ale v rámci ní může být jejich hodnota stejně jako u aplikačních prvků referencována nebo měněna. V SQL a PL/SQL kódu na stránce lze pak s hodnotami těchto prvků pracovat jako s klasickou proměnnou v SQL.[10] Různé komponenty stránky pak mohou být schovávány nebo nastavovány podle nejrůznějších kritérií, SQL nebo PL/SQL kódu nebo volání funkcí a procedur uložených v databázi. Viditelnost ve stránce aplikace na základě různých - 29 -
podmínek lze definovat i samotným prvkům stránky. Lze také definovat prvky, které jsou skryté stále, a využít je pouze jako nositele proměnné potřebné pro určitou logiku stránky. Stránky upravené dodatečnou editací ve vývojovém prostředí mohou také obsahovat sadu mnoha regionů a kombinovat nejrůznější komponenty jako například report s grafy na jedné stránce aplikace. Při přechodu na další stránku aplikace je také možné předávat parametry v URL adrese mezi stránkami a navázat například stránku s reportem tak, aby report zobrazil jen údaje pro danou výseč grafu označenou uživatelem na předchozí stránce.[10] Pro dodatečné úpravy a ladění aplikace je také dobré, že upravované stránky lze přímo z vývojového prostředí spustit, a dolaďovat tak funkčnost a vzhled aplikace. Při spouštění aplikace z vývojového prostředí přitom vývojář vidí aplikaci ve stejné podobě, jako bude viděna běžným uživatelem, pod stránkou aplikace má však ještě k dispozici pomocné hypertextové linky, které mu umožní například snadný návrat do vývojového prostředí, zobrazení informací o aktuální session, ladění aktuální stránky nebo zobrazení editačních linků, pomocí nichž může snadno měnit zobrazené popisky prvků a jiných komponent stránky.[10]
- 30 -
2 Možnosti a administrace prostředí 2.1 Možnosti nasazení 2.1.1
Nasazení prostředí
Jak již bylo zmíněno v předchozí části práce, Oracle Application Express je nástroj, který firma Oracle nabízí zdarma ke kterékoliv platné licenci databázového stroje Oracle a to včetně varianty Oracle Database Express Edition, která je k dispozici zcela zdarma. Pro instalaci je vyžadováno, aby se jednalo o databázový stroj Oracle ve verzi 9.0.2.3 nebo vyšší, konfigurace databáze pak musí splňovat podmínky uvedené v instalační dokumentaci firmy Oracle k tomuto produktu. Instalace je možná na jakékoliv platformě, pro kterou je k dispozici instalace Oracle databáze. Na straně klienta je pro správnou funkci prostředí požadováno, aby webový prohlížeč podporoval Javascript a standardy HTML 4.0 a CSS 1.0. Tyto požadavky splňují například prohlížeče Microsoft Internet Explorer od verze 6.0 nebo Mozzilla Firefox od verze 1.0. Pro chod aplikací je dále nutné, aby na prohlížeči byly povoleny cookies.[11] Kromě možnosti instalace vlastního prostředí existují také komerční poskytovatelé prostoru v prostředí Oracle Application Express dostupném na internetu. Podnik tedy může pořídit toto prostředí těmito způsoby:
Instalací Oracle Application Express do již existující licencované Oracle databáze vlastněné podnikem a splňující minimální požadavek na verzi databázového stroje.
Zakoupením kterékoliv varianty licence k databázovému stroji Oracle.
Využitím edice Oracle Database Express Edition poskytované zdarma
Využitím služeb poskytovatele prostoru v prostředí Oracle Application Express
Pokud může podnik přistoupit k variantě instalace Oracle Application Express do již vlastněné databáze, ať již z důvodu, že se jedná o databázi, ve které se již nachází objekty, se kterými mají budoucí aplikace pracovat, nebo z důvodu nevyužitých kapacit databázového serveru, jedná se o variantu, která podniku nepřináší žádné další náklady. Zakoupením kterékoliv varianty licence databázového stroje firmy Oracle získá podnik zároveň možnost instalovat a využívat na této databázi prostředí Oracle Application Express. Databázový stroj firmy Oracle je řazen mezi přední komerční databázové stroje.[30] Porovnání vlastností jednotlivých edicí databázového stroje lze nalézt na - 31 -
stránkách
firmy
Oracle
na
následujícím
odkazu:
http://www.oracle.com/database/product_editions.html. Při této variantě je nutné počítat nejen s náklady na licenci databázového stroje, ale také s náklady na databázový server odpovídající nárokům, které budou na databázi kladeny. Minimální hardwarové požadavky jsou pak uvedeny v instalačních manuálech k jednotlivým edicím. Ceny licencí databázového stroje Oracle se odvíjejí nejen od edice databázového stroje, ale také od typu licencování. Přehled cen, za které je možné pořídit licence k jednotlivým edicím databázového stoje Oracle 11g, jsou uvedeny na těchto stránkách výrobce.[27] Licence je možné pořídit buď podle počtu uživatelů databáze, nebo podle počtu procesorů databázového serveru. Například pro edici Oracle Database 11g Standard Edition One je cena licence na jednoho uživatele udávaná na stránkách firmy Oracle 180 dolarů a na procesor 5 800 dolarů, pro nejvyšší edici Oracle Database Enterprise Edition je pak cena za jednoho uživatele 950 dolarů a 47 500 dolarů procesor.[27] Využitím bezplatné edice Oracle Database Express Edition je možné využívat databázový stroj firmy Oracle včetně prostředí Oracle Application Express zcela zdarma. Je však stále nutné počítat s investicí do databázového serveru odpovídajícímu nárokům na databázi i možnostem a omezením této bezplatné edice. Tato bezplatná Edice databázového stroje je v součastné době dostupná pouze ve starší verzi Oracle 10g R2 a celkově se samozřejmě jedná o edici s nejomezenějšími možnostmi. Firma Oracle pochopitelně k této edici neposkytuje také žádnou podporu. Dalšími omezeními jsou například možnost využití pouze jednoho CPU na databázovém serveru, využití paměti RAM databázovou instancí maximálně do výše 1GB, maximální velikost databáze je pak 4GB. Tato edice je k dispozici pouze pro operační systémy Windows a Linux a jako jediná nemá podporu jazyka Java.[28] Přes tato uvedená a další omezení této edice se stále jedná o velmi kvalitní a ověřený databázový stroj, navíc při jeho využití je kdykoliv možné po zakoupení licence databázi snadno povýšit na vyšší edici. To činí tuto edici ideální jako startovní pro menší podnikové aplikace, u nichž je pak snadno možné, pokud dojde k jejich růstu, provést upgrade databázového stroje na vyšší placenou edici.[5] Instalace Oracle Database Express Edition v sobě již obsahuje nainstalované prostředí Oracle Application Express a to ve verzi 2.1. Prostředí zde dokonce slouží jako implicitní nástroj pro administraci databáze, na který je uživatel odkázán ihned po dokončení instalace databáze.[28] Pro využití veškerých možností tohoto prostředí je však dobré provést upgrade na aktuální verzi, kterou je v době
- 32 -
psaní této práce verze 3.2.1. V přípravě je však již nová verze Oracle Application Express 4.0.[25] Využitím služeb poskytovatele prostoru v prostředí Oracle Application Express se podnik vyhne všem nákladům na provozování databázového serveru. Míra poskytovaných služeb a velikost poskytnutého prostoru se pak odvíjí od konkrétního ujednání s poskytovatelem. Při této variantě je také nutné zvážit bezpečnostní a jiná rizika související se svěřením podnikových dat externímu dodavateli. Na druhou stranu je možné dosáhnout menších nákladů na provoz aplikace a výhodou může také být, že aplikace je přístupná přes síť internet
bez
nutnosti
budování
potřebné
infrastruktury
v podniku.
Takovým
poskytovatelem je například MaxApex na stránkách http://maxapex.com/index.html, který nabízí různé úrovně hostingu od hostingu zdarma po balík služeb Enterprise za 150 dolarů měsíčně, který obsahuje tabulkový prostor o velikosti 1GB, možnost vytvoření 10 Oracle uživatelům, 10 pracovních prostorů a neomezeného počtu aplikací.[14] Možnost využití prostoru v prostředí Oracle Application Express je také přímo na stránkách firmy Oracle http://apex.oracle.com/pls/otn. Tyto stránky jsou však určeny pouze pro seznámení vývojářů s tímto produktem a nemají být využity k jiným účelům.[25] U variant vlastního prostředí Oracle Application Express je také potřeba počítat s tím, že pokud bude od aplikací vyžadován export nebo tisk reportů, je prostředí samo osobě schopno vygenerovat pouze formáty CSV a XML. Pokud bude požadováno po cílových aplikacích generování jiných formátů, jako například PDF nebo RTF, je potřeba připojit také tiskový server, který dokáže tuto konverzi zajistit. Jako server pro generování reportů je možné použít firmou Oracle doporučovaný vlastní produkt Orace BI Publisher, který je však placeným produktem, nebo jiný tiskový server schopný přijímat formát XSL-FO, jako je například zdarma dostupný produkt Apache FOP.[25]
2.1.2
Požadavky na komunikaci
Aby mohlo prostředí Oracle Application Express fungovat, potřebuje zajistit komunikaci přes HTTP protokol mezi webovým prohlížečem a APEX prostředím v Oracle databázi. Podle instalační dokumentace existují dvě konfigurační možnosti pro zajištění této komunikace[11]:
Vestavěná PL/SQL brána přímo v Oracle databázi
Oracle HTTP server s mod_plsql pluginem - 33 -
Vestavěná PL/SQL brána (Embedded PL/SQL Gateway) je součástí všech edic Oracle Database 11g a je také součástí edice Oracle Database Express Edition 10g. Tato brána je integrována přímo v instanci databáze a při jejím použití jsou tak jedinými komponentami, které jsou využity pro běh aplikace v APEX prostředí, webový prohlížeč u klienta a instance Oracle databáze. Variantu s vestavěnou PL/SQL bránou není možné použít pro verze Oracle Databáze 9i a její použití se také nedoporučuje pro APEX prostředí, které bude dostupné z internetu nebo kde je zvýšené riziko hackerského útoku. Při použití vestavěné PL/SQL brány totiž hrozí větší riziko, že bude napaden databázový server, který přímo komunikuje s koncovými uživateli aplikací. Na druhou stranu tato konfigurace pro nasazení, kde toto riziko není tak velké, přináší výhody ve snadnější architektuře celého řešení, kdy je k provozu celých aplikací v prostředí Oracle Application Express potřeba pouze databázový server Oracle.[11] Obr. 8: Architektura prostředí APEX s použitím vestavěné PL/SQL brány
Zdroj: JENNINGS, Terri: Oracle® Application Express Installation Guide [11]
Použití varianty Oracle HTTP serveru s mod_plsql pluginem je možné u všech verzí Oracle databáze. Instalace Oracle HTTP serveru je dostupná na stránkách firmy Oracle vždy ke konkrétnímu releasu Oracle databáze. Tento server pak funguje tak, že transformuje všechny webové požadavky od klienta do volání databázových procedur prostředí Oracle Application Express přes protokol SQL*Net. Použití této varianty je nutné pro starší verze databázového stroje Oracle a doporučuje se pro prostředí APEX publikovaná ve veřejné síti Internet nebo také pro databáze běžící v prostředí Oracle RAC. Výhodou této varianty je vyšší bezpečnost spojená s oddělením webového serveru od databázového serveru, na druhou stranu je však komplikovanější o další komponentu v architektuře řešení prostředí Oracle Application Express.[11]
- 34 -
Obr. 9: Architektura prostředí APEX s použitím Oracle HTTP serveru s mod_plsql pluginem
Zdroj: JENNINGS, Terri : Oracle® Application Express Installation Guide [11]
V obou těchto variantách je možné nakonfigurovat prostředí Oracle Application Express tak, aby pro komunikaci s uživateli byl použit buď nezabezpečený protokol HTTP nebo zabezpečená varianta HTTPS.[9]
2.2 Instalace Instalaci Oracle Application Express poskytuje firma Oracle na svých stránkách Oracle Technology Network (OTN) v sekci věnované tomuto produktu.[25] Instalační balíček obsahuje jak instalaci vývojové varianty prostředí Oracle Application Express, tak pouze provozní varianty. Instalace samotná má formu SQL a PL/SQL skriptů a provádí se pod databázovým uživatelem SYS. Kompletní instalační postup závisí na zvolených konfiguračních možnostech a je detailně popsán v instalační dokumentaci k tomuto produktu.[11] Přesto bych v této kapitole rád shrnul alespoň základní body instalačního postupu. Před samotnou instalací prostředí je nutné ověřit, zda cílová databáze splňuje všechny požadavky popsané v instalační dokumentaci k dané verzi APEX prostředí. Požadavky se týkají zejména verze databázového stroje Oracle, instalovaných komponent a volného prostoru.[11] Spuštění instalace se provede spuštěním příslušného skriptu ze staženého instalačního balíčku v prostředí SQL *Plus pod uživatelem SYS. V instalační dokumentaci k Oracle Application Express verze 3.2 je to skript apexins.sql pro instalaci plného – vývojového prostředí a skript apexrtins.sql pro instalaci pouze provozního prostředí. Oba tyto skripty pak při spuštění očekávají předání 4 následujících parametrů v tomto pořadí.
Jméno tabulkového prostoru pro schéma a metadata APEX prostředí
Jméno tabulkového prostoru pro soubory ukládané do databáze přes APEX prostředí - 35 -
Jméno dočasného tabulkového prostoru
Jméno virtuálního adresáře pro statické soubory v prostředí. Pro podporu budoucích upgradů prostředí má být tento parametr nastaven na hodnotu „/i/“.[11]
Jako tabulkové prostory pro prostředí Oracle Application Express lze použít tabulkový prostor SYSAUX, který je i uveden v příkladu spuštění instalace v instalační dokumentaci k produktu. V tomto tabulkovém prostrou je také předinstalováno APEX prostředí ve verzi 2.1 v Oracle Database Express Edition 10g, na které jsem měl možnost APEX prostředí využít. Z hlediska budoucí správy provozních prostředí a databáze však může být výhodné vytvořit nové tabulkové prostory určené pouze pro toto prostředí a instalování APEX prostředí do nich.[30] Obr. 10: Spuštění instalace vývojového prostředí APEXu 3.2
Zdroj: otisk obrazovky z instalace (upgradu) prostředí na APEX 3.2.1 na OS Windows XP
Instalace vytvoří v databázi 3 nové účty: APEX_030200, schéma APEX prostředí, ve kterém jsou vytvořeny objekty a uložena metadata, FLOWS_FILES, který bude vlastnit soubory uložené v databázi a APEX_PUBLIC_USER, který má v databázi minimální oprávnění a slouží pro připojení Oracle HTTP serveru s mod_plsql. Upgrade ze starší verze APEX prostředí se spouští stejnými instalačními skripty jako instalace, v tomto případě již databázový účet FLOWS_FILES existuje a účet APEX_PUBLIC_USER bude instalací vytvořen pouze v případě, že neexistuje.[11]
- 36 -
Po dokončení instalace je pro funkčnost prostředí Oracle Application Express nutné provést ještě další po instalační kroky, závislé na zvolené konfiguraci a podrobně popsané v instalační dokumentaci k produktu. Je nutné mimo jiné nakonfigurovat vystavěnou PL/SQL bránu nebo nainstalovat a nakonfigurovat odpovídající verzi Oracle HTTP serveru s mod_plsql.[11] V případě upgradu prostředí ze starší verze a použití vestavěné PL/SQL brány je také ještě potřeba změnit umístění obsahu virtuálního adresáře do umístění se statickými soubory z instalace aktuální verze. Adresář se statickými soubory je umístěn v instalačním balíku v podadresáři apex/images. V případě použití Oracle HTTP serveru je pak nutné tyto statické soubory z instalace překopírovat do adresáře HTTP serveru.[11] Obr. 11: Změna umístění virtuálního adresáře
Zdroj: otisk obrazovky z instalace APEX 3.2.1
Instalační balíček umožňuje také instalaci některé z připravených lokalizovaných verzí, k dispozici je například německá, francouzská nebo japonská. K dispozici jsou také skripty a postupy pro změnu konfigurace z vývojového prostředí na pouze provozní a naopak. Jako poslední z konfiguračních kroků před možností přihlášení do administrátorského rozhraní Oracle Application Express je nutné nastavit účet ADMIN v základním pracovním prostoru označeném jako INTERNAL, který slouží v APEXu jako hlavní účet pro administraci prostředí přes webové rozhraní. Tento účet ADMIN není, stejně jako ostatní uživatelé vytvoření později v APEX prostředí, skutečným databázovým uživatelem. Jedná se o účet definovaný pouze v interních strukturách APEX prostředí. Při instalaci - 37 -
Oracle Application Express do databáze je tento účet instalací automaticky vytvořen, před prvním přihlášením do administrátorského rozhraní je však potřeba tomuto účtu změnit přihlašovací heslo pomocí skriptu apxchpwd.sql, který je také součástí instalačního balíku.[11]
2.3 Administrace prostředí Oracle Application Express Pro administraci prostředí Oracle Application Express nabízí stejně jako pro vývoj a provoz aplikací webové rozhranní. Do tohoto prostředí mají přístup pouze uživatelé, kteří jsou nastaveni jako administrátoři APEX instance. Po instalaci APEX prostředí do databáze je jediným takovým uživatelem uživatel ADMIN ve zvláštním pracovním prostoru označeném INTERNAL. Přístup do administrátorského rozhraní je možný z těchto URL adres[11]: [http nebo https]://[název serveru nebo IP adresa]:[port]/[pls/]apex/apex_admin Použití HTTP nebo šifrovaného HTTPS záleží na nastavení instance Oracle Application Express. Řetězec „pls/“ je v URL adrese jen tehdy, pokud je použita konfigurace s Oracle HTTP serverem s mod_plsql pluginem. Po zadání této adresy se administrátor prostředí přihlásí pouze zadáním jména a hesla. Další možností je spuštění administrátorského prostředí z URL adresy pro běžné přihlašování do vývojového prostředí: [http nebo https]://[název serveru nebo IP adresa]:[port]/[pls/]apex/apex_login Kde ovšem kromě jména a hesla musí administrátor zadat jako pracovní prostor (workspace) prostor Internal. Po přihlášení do tohoto rozhraní má administrátor možnost měnit nastavení instance prostředí Oracle Application Express, vytvářet a administrovat pracovní prostory a monitorovat různé aktivity v prostředí. Celé prostředí je rozděleno do těchto částí[9]:
Manage Services – tato část umožňuje nastavení modulů vývojářského prostředí jako například omezení maximální velikosti ukládaných SQL skriptů v části SQL Workshop nebo možnosti vytváření demonstračních aplikací. Dále správu dalších APEX služeb jako například e-mailové fronty nebo náhledu na nainstalované lokalizace prostředí. Je zde také možné spravovat public témata, která budou moci využívat vývojáři ve všech pracovních prostorech.
- 38 -
Manage Workspaces – umožňuje prohlížet a zpracovávat požadavky na pracovní prostory a změny. Zakládat pracovní prostory, prohlížet a měnit jejich nastavení. Při vytváření pracovních prostorů nebo i později je možné mimo jiné nastavit i kvóty jejich velikosti, což umožňuje efektivně řídit prostor vyhrazený v databázi. Při zakládání pracovního prostoru je možné k tomuto prostoru přiřadit existující databázové schéma nebo založit společně s pracovním prostorem nové schéma. Následně je možné k existujícímu pracovnímu prostoru přiřadit ještě i další schémata, která budou mít vývojáři při vytváření aplikací na výběr pro jejich provoz. Vytvořené pracovní prostory je zde možné i znepřístupnit nebo zcela smazat. V této sekci je také možné zakládat uživatelské účty různých typů pro jednotlivé pracovní prostory a importovat nebo exportovat celý vybraný pracovní prostor.
Manage Applications – v této sekci je možné prohlédnout základní atributy aplikací vytvořených v pracovních prostorech, jako jejich názvy, ID, používané schéma, status, nebo počet stran.
Monitor Activity – umožňuje zobrazení různých reportů užitečných pro monitoring prostředí jako například log přihlášení do APEX instance, počet stránek spuštěných jednotlivými uživateli nebo počty provedených změn v pracovních prostorech jednotlivými vývojáři.
- 39 -
Obr. 12: Administrační rozhraní instance APEX prostředí
Zdroj: otisk obrazovky z prostředí APEX 3.2.1
V prostředí Oracle Application Express lze zakládat 4 typy uživatelů. Jsou jimi[30]:
Administrátor instance prostředí Oracle Application Express. Tento uživatel může administrovat instanci APEX prostředí a zakládat nové pracovní prostory a uživatele. Sám se může hlasit pouze do administrátorského rozhraní pracovního prostoru „Internal“. Po instalaci nového prostředí je jako uživatel tohoto typu vytvořen uživatel ADMIN.
Administrátor pracovního prostoru (workspace administrator) má administrátorská oprávnění k pracovnímu prostoru, ve kterém byl administrátorem instance vytvořen. V tomto pracovním prostoru může zakládat nové uživatelské a vývojářské účty a administrovat další nastavení pracovního prostoru. Administrátor má zároveň uživatelská a vývojářská oprávnění, a může tak pod svým účtem vytvářet a upravovat aplikace ve svém pracovním prostoru. Může se také přihlásit do všech aplikací ve svém pracovním prostoru, pokud tyto aplikace používají pro autentizaci APEX účty a vstupu administrátorského účtu není zabráněno jiným aplikačním nastavením. Administrátor pracovního prostoru se může přihlásit pouze do svého pracovního prostoru.
- 40 -
Vývojář je oprávněn k přihlášení pouze do svého pracovního prostoru. Může být vytvořen administrátorem jeho pracovního prostoru nebo administrátorem instance. V rámci svého pracovního prostoru mohou vývojáři vytvářet a upravovat všechny aplikace. Vývojář má stejně jako administrátor zároveň uživatelská oprávnění, a může se tak pod svým účtem přihlásit do všech aplikací ve svém pracovním prostoru, pokud tyto aplikace používají pro autentizaci APEX účty a vstupu jeho účtu není zabráněno jinou aplikační logikou.
Uživatel vytvořený v prostředí Oracle Application Express může vstoupit do jakékoliv aplikace v rámci svého pracovního prostoru, pokud tyto aplikace používají pro autentizaci APEX účty a vstupu jeho účtu není zabráněno jinou aplikační logikou. Aplikace však mohou být také nastaveny k autentizaci pomocí jiných metod, jako ověření pomocí databázového účtu, LDAP serveru, Oracle Application Server Single Sign-On nebo pomocí jiné vytvořené aplikační logiky, případně mohou být aplikace také zcela bez autentizace. Uživatelský účet v Oracle Application Express je oprávněn vytvořit administrátor daného pracovního prostoru a administrátor APEX instance.
Všechny tyto typu účtů vytvářené v APEX prostředí nejsou skutečnými databázovými uživateli. Účty jsou definovány pouze v rámci databázových struktur – tabulek schématu APEX prostředí.[30]
- 41 -
3 Porovnání s jinými nástroji V součastné době existuje mnoho produktů, které umožňují rychlý vývoj aplikací nad databázovým systémem. Pro porovnání s nástrojem Oracle Application Express jsem zvolil produkt Microsoft Office Access, který je často využívanou aplikací pro tvorbu malých aplikací a v literatuře k Oracle Application Express[5] je zmiňován jako prostředí, pro které je Oracle Application Express vhodnou alternativou. Dále pak nástroj pro rychlý vývoj webových aplikací Iron Speed Designer, který nabízí možnost tvorby aplikací s využitím .NET framework a open source prostředí once:radix.
3.1 Microsoft Office Access Microsoft Office Access je aplikace, která je součástí široce rozšířeného kancelářského balíku Microsoft Office v edicích Professional a vyšších od firmy Microsoft, a jež v sobě kombinuje grafické uživatelské rozhraní pro správu relační databáze a vývoj aplikací s relačním SŘBD Microsoft Jet Database Engine.[34] Rozšířenost a silná obecná povědomost o tomto produktu je také určitě jedním z důvodů, proč je mnoho menších aplikací vyvíjených vlastními silami v podniku stavěno právě v Microsoft Office Access. SŘBD Microsoft Jet Database Engine je přímo součástí operačních systémů Windows, což dává také možnost jeho využití v těchto operačních systémech přes API (Application Programming Interface) rozhranní ODBC (Open Database Connectivity) i bez nutnosti instalace Microsoft Office Access. Produkt Microsoft Office Access pak umožňuje s využitím tohoto SŘBD vytvořit v databázovém systému velmi rychle databázové objekty a aplikace s grafickým uživatelským rozhraním. Verze produktu Microsoft Office Access 2007 tento SŘBD v operačním systému dále ještě povyšuje na vlastní verzi nazvanou Access Database Engine.[35] Aplikace Microsoft Office Access je, stejně jako celý kancelářský balík Microsoft Office, dostupná pouze pro operační systém Windows v různých verzích. Její pořízení je možné v rámci různých variant licencí jak celého balíku aplikací Microsoft Office, tak samostatné licence pouze k Microsoft Office Access. Předpokládaná cena 1 licence uvedená na stránkách firmy Microsoft pro samostatnou instalaci produktu Microsoft Office Access v krabicové verzi bez zbytku produktů Microsoft Office je 6 440,- Kč bez DPH.[19] Prostředí slouží shodně s Oracle Application Express jako vývojové prostředí pro tvorbu aplikací a zároveň i jako prostředí pro jejich běh. Na rozdíl od APEXu je ale Microsoft - 42 -
Office Access klientská aplikace a je tedy nutné, aby byla instalována na každé vývojářské i uživatelské stanici, ze které bude aplikace vytvořená v tomto produktu využívána. Části aplikace v Microsoft Office Access mohou být sice také publikovány ve formě webových stránek jako datové stránky aplikace, propojení těchto stránek s databází je však realizováno pomocí ovládacích prvků modelu COM, které jsou volány pomocí skriptů obsažených ve webové stránce a spuštěných na straně klienta – uživatele. Tyto ovládací prvky potřebné pro běh aplikace musí být tedy opět instalovány na každé stanici, ze které má být webová stránka aplikace v Microsoft Office Access zobrazena. Pro možnost aktivního přístupu k datům je pak opět nutné, aby na stanici byl nainstalován Microsoft Office Access, v opačném případě prvky umožňují pouze pasivní náhled na data.[20] K verzi Access 2007 však firma Microsoft nabízí také zdarma distribuovatelné runtime prostředí, které po nainstalování umožní uživatelům používat vytvořené aplikace v plné funkčnosti.[34] Toto prostředí má však odstraněné nebo vypnuté veškeré nástroje pro úpravu aplikací a je opět dostupné pouze pro operační systémy Windows.[15] Použití aplikací v Microsoft Office Access je tedy ve všech variantách omezeno pouze na uživatele pracující na operačním systému Windows. Z jiných operačních systémů může být přístupný pouze vlastní databázový systém přes API rozhranní, například pomocí ovladačů JDBC. Aplikace vytvořené v prostředí Oracle Application Express v tomto ohledu poskytují hned několik výhod tím, že na straně uživatelů je vyžadován pouze webový prohlížeč podporující požadované standardy. Oracle Application Express aplikace tedy neomezují okruh uživatelů a vývojářů na konkrétní operační systém a nevyžadují na straně klienta instalaci jakéhokoliv softwarového vybavení mimo zmíněného prohlížeče. Tato nevýhoda Microsoft Office Access by měla být odstraněna v plánované verzi Microsoft Office Access 2010, která má umožnit publikaci formulářů a reportů pomocí softwaru Microsoft SharePoint ve formě běžných webových stránek, které budou vyžadovat na straně uživatele pouze webový prohlížeč a jejich užívání tak nebude omezeno na konkrétní operační systém.[34] Jak Microsoft Office Access, tak Oracle Application Express jsou produkty spjaty vždy s konkrétním databázovým strojem. V obou případech je také vytvořená aplikace uložena přímo v databázi. V případě Oracle Application Express je pak v databázi obsaženo i samotné vývojové a provozní prostředí. Zatímco Microsoft Office Access využívá SŘBD Microsoft Jet Database Engine pracující na straně klienta a určený svým zaměřením jako snadno využitelné řešení pro malé uživatelské databáze s malým počtem uživatelů, APEX - 43 -
využívá SŘBD firmy Oracle, který je zaměřen a hojně komerčně využíván jako řešení rozsáhlých databázových systémů podniku. Z těchto radikálních rozdílů v zaměření použitého databázového systému pochopitelně plyne řada rozdílných vlastností, které ovlivňují možnosti výsledné aplikace a také architekturu celého řešení. Zatímco databáze používaná produktem Microsoft Office Access má formu jednoho souboru, který je uložen kdekoliv na souborovém systému a je přímo otevírán klientem, databázový systém Oracle pracuje na principu klient server a jeho struktura je mnohem komplikovanější. Při použití prostředí Oracle Application Express je tedy nutné počítat kromě licence ke zvolené edici Oracle Database, kde je možné také využití edice Oracle Database Express Edition poskytované zdarma, se zřízením a provozem databázového serveru odpovídajícího nárokům dané verze Oracle databáze a nárokům, které budeme na databázový systém mít. Za tuto investici však získáme pro budoucí aplikace výhody použitím mnohem výkonnějšího databázového stroje. Data aplikace tak například nebudou vázána maximální velikostí databáze 2 GB, což je limit velikosti databáze udávaný pro Microsoft Office Access 2007.[16] Tento limit překonává již Oracle Database Express Edition 10g poskytovaná zdarma, která omezuje velikost dat na 4GB, ostatní placené edice pak žádný limit ve velikosti databáze neudávají.[27] Rozdílů mezi Microsoft Jet Database Engine a Oracle Database je vzhledem k odlišnosti jejich zaměření samozřejmě mnohem více, jejich srovnání však není předmětem této diplomové práce. Přesné informace o možnostech jednotlivých edicí Oracle Database jsou publikovány na firemních stránkách Oracle v části věnované tomuto produktu na http://www.oracle.com/database/product_editions.html. Obecně lze však říci, že aplikace vytvořené v Oracle Application Express mohou díky využití databázového stroje Oracle dosáhnout lepší výkonnosti, pracovat s mnohem větším objemem dat, počtem uživatelů a využívat daleko širších možností databázového stroje Oracle jako třeba podpory objektových datových typů nebo procedurálního jazyka PL/SQL. Produkt Microsoft Office Access však také nabízí alternativu pro aplikace, které vyžadují výkonnější databázový systém, a to možností propojení na Microsoft SQL Server. V takovém případě pak databáze Microsoft Office Access uchovává pouze komponenty grafického uživatelského rozhraní a ostatní databázové objekty jsou uloženy v připojené databázi Microsoft SQL.[17] Microsoft SQL Server je podobně jako Oracle Database dostupný v různých edicích. Od edice poskytované zdarma, která má, co se týče velikosti databáze, paměti a počtu procesorů stejná omezení jako Oracle Database Express Edition 10g, až po placené edice bez těchto omezení. Uváděná běžná cena standardní edice je pak 5 999 dolarů na jeden procesor.[18] I při využití tohoto řešení je však vytvořená aplikace - 44 -
stále závislá u svého grafického uživatelského rozhraní na desktopové databázi Access.[17] Prostředí Oracle Application Express umožňuje, aby v rámci jeho instance bylo provozováno více aplikací a dále, aby tyto aplikace byly rozděleny do pracovních prostorů, čímž lze dosáhnout toho, že aplikace v jedné instanci prostředí mohou být vyvíjeny a provozovány na sobě nezávislými skupinami.[30] Díky této vlastnosti a možnostem databázového stroje Oracle lze prostředí Oracle Application Express využít ke konsolidaci více menších aplikací a dat, která využívají, na jedno místo a tím zjednodušit jejich správu, zlepšit kontrolu nad nimi a odbourat případné duplicity mezi daty drženými v různých aplikacích.[30] Kromě toho je také možné, díky tomu, že APEX nabízí oddělení aplikací do samostatných pracovních prostorů a tomu, že aplikace jsou plně webové, využít pro prostor na tvorbu aplikací externího poskytovatele a přenechat tak veškerou režii s provozováním databázového systému na něm. To může být výhodné, například pokud pro aplikace potřebujeme pouze malý prostor a požadujeme jejich dostupnost uživatelům přes Internet a náklady spojené s provozováním vlastního databázového systému by byly vyšší než náklady za služby externího poskytovatele. Tyto možnosti Microsoft Office Access nenabízí. I když je možné při využití Microsoft SQL Serveru sjednotit datovou základnu více aplikací, grafické uživatelské rozhraní aplikace je stále uloženo v samostatné Access databázi. Jako klientská aplikace pak Microsoft Access nenabízí možnost poskytování vývojového prostoru externím poskytovatelem. Verze Microsoft Office 2007 nabízí podobně jako Oracle Application Express ke stažení sadu několika připravených aplikací například k evidenci kontaktů, úkolů nebo incidentů.[17] Prostředí samotné pak umožňuje vytváření: databázových tabulek dotazů formulářů sestav – reportů maker modulů
- 45 -
U tabulek je stejně jako v Oracle Application Express možné definovat relace mezi nimi a definovat integritní omezení. Tabulky se v tomto nástroji vytváří a upravují velmi jednoduše pomocí návrhového zobrazení. Jedna z velkých výhod tohoto prostředí je také to, že umožňuje snadné připojení tabulek z jiných databázových systémů pomocí rozhranní ODBC. Dotazy – databázová view je pak možné vytvářet jak v návrhovém zobrazení, tak pomocí SQL dotazů. Design formulářů aplikace i sestav reportů je v návrhovém prostředí velmi jednoduchý a flexibilní. Pro další aplikační logiku nebo funkčnosti je pak již nutné naprogramování maker a modulů v jazyce Visual Basic for Applications (VBA).[17] Obr. 13: Ukázka návrhového zobrazení formuláře v Microsoft Office Access
Zdroj: otisk obrazovky z prostředí Microsoft Office Access 2007
Na rozdíl od Oracle Application Express nemá Access koncept sdílených komponent aplikace, všechny prvky formulářů a sestav je tedy nutné vždy definovat individuálně. Při vývoji tak nelze ušetřit čas při definování komponent, které se v aplikaci opakují vícekrát. Zrovna tak při změně, která má dopad na více takovýchto prvků, je potřeba provést potřebné úpravy u všech individuálně. Nelze také změnit vzhled celé aplikace nebo více - 46 -
formulářů najednou – layout každého formuláře je definován individuálně. Microsoft Office Access také oproti Oracle Application Express nenabízí možnosti pro provozování aplikace ve více lokalizacích a má omezené možnosti v oblasti autentizace a autorizace uživatelů aplikace. Naopak výhodou prostředí Microsoft Office Access je možnost snadného provázání s ostatními aplikace sady Microsoft Access a možnost exportů do dokumentů formátu Microsoft Word nebo Excel bez nutnosti připojení dalších komponent k tomuto prostředí. Produkt Microsoft Office Access je jistě dobrým nástrojem pro malé aplikace s malým počet uživatelů například v rámci pracovní skupiny, které lze v tomto prostředí vytvořit velmi rychle a bez programátorských znalostí, pokud nevyžadujeme po aplikaci další logiku. Nástroj Oracle Application Express k tomuto prostředí nabízí alternativu se srovnatelnou časovou náročností vývoje aplikace a s potenciálem pro další rozvoj těchto aplikací. Toto prostředí je přitom poskytováno zcela zdarma k jakékoliv edici Oracle databáze a je možné využít také zdarma poskytované Oracle Database Express Edition 10g. Je také možno využít služeb poskytovatele prostoru pro APEX aplikace na Internetu a vyhnout se tak nákladům spojeným s budováním potřebné infrastruktury.
3.2 Iron Speed Designer Nástroj Iron Speed Designer od firmy Iron Speed slouží pro rychlý vývoj webových aplikací, které využívají databázový systém. V době psaní této práce je nástroj dostupný ve verzi 6.2. Jedná se o vývojové prostředí, které neslouží pro samotný běh vytvořených aplikací. Toto prostředí pouze generuje aplikační kód založený na technologii ASP.NET, která je součástí zdarma poskytovaného Microsoft .NET framework a to buď v jazyce C# nebo Visual Basic. NET.[6] ASP.NET je nástupcem starší technologie ASP (Active Server Pages) a umožňuje vytváření dynamických webových stránek, na základě zdrojového kódu psaném v jednom z podporovaných jazyků jako C#, Visual Basic .NET a dalších. Na straně webového serveru Microsoft Internet Information Services (IIS) jsou webové stránky drženy ve zkompilované podobě. Stránky se zde skládají z jednotlivých komponent, kterým je možné určovat vlastnosti a zachycovat na nich události. Na straně klienta je pak pro zobrazení těchto stránek potřeba pouze podporovaný webový prohlížeč.[33] Podporované verze prostředí .NET pro provozování vytvořených aplikací v nástroji Iron Speed Designer jsou[6]: - 47 -
.NET Framework verze 2.0 .NET Framework verze 3.0 .NET Framework verze 3.5 .NET Framework verze 3.5 SP1 Jako webový server je pak podporován Microsoft IIS 5.0, 6.0 a 7.0 dostupný na operačních systémech Windows 7, Windows Server 2008, Windows Server 2003 a vyšších edicích Windows Vista. Pro samotný vývoj aplikací je pak možné také využít jako webový server Microsoft ASP.NET Development Server, který je součástí produktu Microsoft Visual Web Developer dostupného zdarma. Tento server je pak možné použít i na operačním systému Microsoft Windows XP.[6] Pro vlastní provoz aplikací je kromě provozování vlastního webového serveru možné využít i poskytovatele prostoru pro aplikace stavěných na technologii ASP.NET jako je třeba WinHost na adrese http://www.winhost.com/ , který nabízí ve variantě hostingu WinHost Basic za 4,95 dolarů měsíčně webový prostor 1GB společně se 100 MB prostoru v databázi Microsoft SQL 2008.[37] Výhodou tohoto nástroje oproti Oracle Application Express je to, že pokud požadujeme po aplikaci funkčnost, která je mimo možnosti průvodců a nastavení tohoto nástroje, je kdykoliv možné editovat zdrojový kód aplikace přímo v prostředí Iron Speed Designer nebo v prostředí Microsoft Visual Studio a potřebnou část aplikace doprogramovat přímo. Možnosti vytvořených aplikací v tomto prostředí jsou tak limitované samotnou technologii ASP.NET a ne tímto vývojovým prostředím. K dopracování takovéto funkčnosti je již potřeba znalost .NET framework a programovacího jazyka, ve kterém byla aplikace vygenerována. Vytvořené aplikace v tomto prostředí mohou být napojeny na tyto uváděné typy databází[6]: Microsoft Access Microsoft SQL Server MySQL Oracle Microsoft Data Access Components
- 48 -
Podrobnější informace o jednotlivých podporovaných verzích databází jsou pak k dispozici na stránkách firmy Iron Speed uvedených ve zdrojích. V každém případě jsou však aplikace v tomto prostředí použitelné pro více SŘBD než aplikace v Oracle Application Express, které je spojeno pouze s SŘBD firmy Oracle. Na rozdíl od APEXu se také jedná o aplikace s klasickou třívrstvou architekturou, kde je aplikační a databázový server oddělen.[6] Prostředí Iron Speed Designer je na rozdíl od Oracle Application Express prostředím placeným, je k dispozici ale také zdarma, ovšem s omezenou funkčností. Licencování se vztahuje pouze na vývojové prostředí a nijak neomezuje následný provoz aplikací. Ceny jednotlivých edicí jsou určeny podle počtu instalací – vývojářů. V následujících bodech bych rád shrnul některé vybrané možnosti a omezení jednotlivých edicí. Kompletní seznam rozdílů edic je dostupný na stránkách firmy Iron Speed.[6] V edici zdarma je možné vygenerovat pouze 30 aplikačních stránek, je dostupný pouze omezený počet vizuálních stylů aplikace a jsou podporovány exporty dat pouze ve formátu CSV. Dále není možné v této edici prostředí vytvořit aplikaci s bezpečnostními prvky jako je autentizace a autorizace uživatelů.[6] Další, již placenou edicí tohoto prostředí, je Professional Edition. Tato edice již nemá omezení na počet vygenerovaných stránek a má větší výběr vizuálních stylů. Podporuje také vícejazyčné mutace aplikace. Data je možné navíc exportovat i ve formátu pro Microsoft Excel a je také dostupná tvorba reportů ve formátech PDF a Microsoft Word. Z oblasti bezpečnosti je pak možné ve vytvářených aplikacích použít autentizaci s využitím databázových účtů a autorizaci určovat na úrovni jednotlivých komponent aplikace. Cena za 1 licenci prostředí v této edici začíná na 995,- dolarech. Jsou možné i dražší varianty v závislosti na požadované podpoře.[6] Poslední nejvyšší edicí tohoto prostředí je Enterprise Edition, která umožňuje využití všech možností tohoto prostředí. Lze v ní vytvářet i aplikační stránky umožňující složitější náhledy na data, aplikace s definovaným workflow a podporující e-mailové notifikace. Jsou k dispozici rozšířené možnosti pro tisk reportů. Pro autentizaci uživatelů v aplikaci je možné také využití Active Directory nebo autentizace uživatele ve Windows. V této edici je také možné vytvořit aplikace využívající více databází. Cena za 1 licenci prostředí začíná na 1 995,dolarech, jsou možné i dražší varianty v závislosti na požadované podpoře.[6] - 49 -
Vzhledem k těmto licenčním podmínkám jsem měl možnost pro účely této práce využít pouze edici prostředí dostupnou zdarma s omezenou funkčností. Při vyváření nové aplikace je aktivován průvodce, který provede vývojáře základními volbami pro tvorbu aplikace rozdělených do následujících kroků: Page Style – volba vzhledu stránek aplikace, podobně jako témata v APEXu. Database Server – výběr a napojení aplikace na databázový systém. Pages – zde se definuje, které stránky má aplikace obsahovat. Tato část je podle mého názoru velmi zajímavě a dobře řešena pro velmi rychlý vývoj stránek aplikace. V tomto kroku průvodce nabízí v jedné části formuláře menu s typizovanými šablonami stránek, jako je pouze náhled nad daty v tabulkách, stránka pro editaci záznamů v tabulce, volby pro možnost přidání, editaci a zobrazení jednoho záznamu a další typizované stránky, které již však nejsou dostupné ve volně poskytované edici. Na druhé části formuláře pak vývojář zvolí z existujících tabulek a view v databázi, pro které tyto databázové objekty mají být zvolené typy stránek vytvořeny. Pro všechny zvolené tabulky a view jsou tedy vytvořeny stejné typy stránek. Pokud požadujeme pro různé objekty jiné typy stránek, je nutné po vytvoření aplikace znovu spustit průvodce vytvořením dalších stránek, fungujícího na stejném principu, nebo některé nechtěně vytvořené stránky po vytvoření aplikace odebrat.
- 50 -
Obr. 14: Průvodce pro vytvoření aplikace v prostředí Iron Speed
Zdroj: otisk obrazovky z prostředí Iron Speed 6.2
Keys – zde je možné pro databázové tabulky nebo view neobsahující primární klíče nadefinovat virtuální primární klíč pro účely funkčnosti formulářů. Stejně tak je možné definovat virtuální cizí klíče pro stránky zobrazující tabulky v pohledu master – detail. Tyto klíče jsou definovány mimo databázi a jsou pouze součástí aplikace. Languages – zde je možné u placených edicí prostředí nadefinovat vícejazyčnou podporu aplikace. Application Settings – v této části se definují nastavení aplikace jako jméno, adresář, kde má být projekt s aplikací vytvořen, jazyk zdrojového kódu, verze běhového prostředí .NET a další volby. Finish – v poslední části průvodce shrne zvolené aplikační stránky, které budou vygenerovány, a po potvrzení vygeneruje zdrojový kód aplikace. Vytvořená aplikace je založena na objektově orientovaném zdrojovém kódu a dalších souborech strukturovaných podle návrhového vzoru model-view-controller do úrovní prezentační vrstvy, logické vrstvy a vrstvy zajištující přístup k datům. Jednotlivé stránky aplikace lze ve vývojovém prostředí prohlížet v náhledovém módu nebo v design módu, - 51 -
kde je možné upravovat jednotlivé prvky stránky strukturované do tabulky. Vlastnosti je možné určovat jak na úrovni stránek, tak na úrovni jednotlivých prvků.[6] Toto prostředí na rozdíl od prostředí Oracle Application Express neobsahuje možnost tvoření a změny datových struktur v databázi. Všechny stránky jsou také průvodcem vytvořeny na základě jednoduchého dotazu zobrazujícího celý obsah tabulky nebo view. Úpravu formátu zobrazení hodnot je nutné definovat až u jednotlivých prvků v design módu. Stejně tak nepotřebné sloupce, které nechceme zobrazovat, je nutné na stránce následně v design módu odstranit. Prostředí dále umožňuje vytvoření vlastního dotazu, kde je možné propojení více tabulek a view a definování selekčních podmínek. Průvodce vytvářením dotazem však neumožňuje psaní SQL kódu přímo, není také možné použít databázové funkce.[6] Tato omezení si vysvětluji pravděpodobně jako daň za možnost využití různých SŘBD. Nevýhodou prostředí Iron Speed Designer proti Oracle Application Express při následných úpravách aplikací také může být koncept sdílených komponent aplikace. Dále je to pak oficiální podpora pouze prohlížečů Internet Explorer[6] a také nutnost zakoupení licence, jelikož funkčnost zdarma dostupné edice má spíše prezentační charakter a je nedostačující na vytvoření většiny aplikací, například z důvodu absence možnosti autentizace uživatelů. Na druhou stranu lze v prostředí Iron Speed Designer vytvořit velmi rychle velice dobře vypadající aplikace stavěné nad existující databázovou strukturou. Je také výhodou, že vytvořená aplikace není závislá na samotném vývojovém prostředí. Zdrojový kód aplikace lze dále upravovat v prostředí Microsoft Visual Studio.[6]
- 52 -
Obr. 15: Ukázka aplikace vytvořené pomocí průvodce v prostředí Iron Speed Designer
Zdroj: otisk obrazovky z prostředí Iron Speed 6.2
3.3 Once:radix Once:radix je open source prostředí od společnosti once:technologies vydané pod všeobecnou veřejnou licencí (GNU GPL) pro rychlý vývoj webových aplikací využívající open source databázi PostgreSQL. Během psaní této práce bylo toto prostředí dostupné ve verzi 1.5. Prostředí samotné pro svou funkci využívá kombinaci následujících dalších technologií a programů, všech dostupných zdarma[24]: Sun Java JDK 1.6 Apache Tomcat 6 JasperForge i-Report PostgreSQL
- 53 -
Na rozdíl od prostředí Oracle Application Express, které je celé součástí databázového systému a pro svou funkci využívá databázové procedury a balíky, prostředí once:radix je konstruováno jako Java servlet, využívající open source server Apache Tomcat ke svému běhu. Databázový systém relačního SŘBD PostgreSQL , který je také open source, je zde využíván jako datové repository. Pro design reportů je pak využita open source komponenta i-Report komunity JasperForge.[24] Vytvořené reporty lze generovat do PDF, RTF, CSV a dalších formátů, jejichž kompletní seznam je na stránkách komunity JasperForge.[8] Výsledná aplikační stránka je na klientské straně tvořena XTHML kódem a skripty vytvořenými serverem na základě XML definice aplikační stránky. Dále pak kaskádovými styly, obrázky a skripty uloženými na serveru. Data z databázového systému připojenému k serveru jsou na straně klienta ještě cachována.[24] Obr. 16: Architektura prostředí once:radix
Zdroj: Once:technologies : once:radix [24]
Prostředí once:radix je k dispozici jako samostatný balík a pro jeho zprovoznění je potřeba všechny jím využívané komponenty s prostředím správně nakonfigurovat. Konfigurace na straně prostředí once:radix samotného se pak provádí ruční editací konfiguračního
- 54 -
souboru. Před využíváním prostředí je pak dále nutné, již přes webové rozhraní, vytvořit v připojené databázi repository prostředí.[24] Pro zobrazení webového rozhraní prostředí na straně uživatelů a vývojářů jsou podporovány pouze open source prohlížeče Mozilla Firefox nebo Camino.[24] Při pokusu o zobrazení rozhraní v prohlížeči Internet Explorer jsem nebyl úspěšný. Ve webovém prohlížeči Mozilla Firefox je pro správnou funkci prostředí ještě nutné povolit parametr „signed.applets.codebase_principal_support“[24], který není komunitou Mozilla doporučovaný z důvodu nižšího zabezpečení. Při tomto nastavení totiž při dotazu na důvěryhodnost spuštěného skriptu nezobrazuje prohlížeč verifikaci autora, ale pouze URL adresu.[22] Z úvodní webové stránky prostředí once:radix je možné po přihlášení spustit následující webové aplikace v závislosti na oprávnění uživatele[24]: oADMIN - Aplikace, která slouží pro administraci prostředí a umožňuje spouštění SQL příkazů v připojeném databázovém systému. oCLI – Tato aplikace slouží jako uživatelské rozhraní pro běh vytvořených aplikací uvnitř prostředí. oED – Editor pro tvorbu aplikačních stránek. Na rozdíl od Oracle Application Express toto prostředí nenabízí při tvorbě databázových objektů a aplikací žádné průvodce. Webové administrátorské rozhraní je velmi strohé a pro tvorbu objektů v databázi je dostupná pouze SQL konzole. Dále obsahuje tato aplikace sadu nástrojů k záloze a obnově databáze a k načtení změn v databázi do prostředí. Editor aplikací umožňuje design aplikačních stránek tvořených datovými poli, popisky, obrázky a dalšími komponentami pomocí kontextového menu a umisťováním do layoutu stránky přetahováním myší. Stránka je tvořena jednotlivými bloky a podbloky a může obsahovat informace z více databázových tabulek najednou. Jednotlivým komponentám stránky je možné přiřazovat různé atributy a vytvořit událostní logiku pomocí Java skriptu. Definice vytvořených stránek jsou pak ukládány na server ve formě XML souborů. Před použitím nových databázových tabulek ve vytvářené aplikaci je pak nutné jejich nastavení v prostředí
pomocí
předinstalované
aplikace
pro
správu
prostředí,
která
se
spouští klientském rozhraní oCLI. Stejně jako APEX umožňuje prostředí once:radix napojení na e-mailový server zasílání e-mailových zpráv.[24]
- 55 -
Obr. 17: Ukázka z aplikace předinstalované v prostředí once:radix
Zdroj: otisk obrazovky z aplikace pro administraci prostředí dodávané spolu s prostředím once:radix 1.5
V prostředí je možné dále přes aplikaci pro správu prostředí vytvářet uživatele a řadit je do skupin, ke kterým se následně vážou oprávnění. U uživatelů lze také řídit, zda budou mít právo vstupu pouze do klientského rozhranní pro běh aplikací oCLI, nebo zda budou moci také administrovat prostředí nebo vytvářet aplikace v editoru. Prostředí lze díky těmto možnostem stejně jako APEX použít pro běh více nezávislých aplikací, které mohou být používány oddělenými skupinami. Prostředí ale nenabízí jiné možnosti autentizace a autorizace uživatelů než pomocí nastavení ve správcovské aplikaci prostředí.[24] Výhodou prostředí oproti Oracle Application Express je bezpochyby využití zdarma dostupných open source technologií jako SŘBD PostgreSQL a designeru i-Report komunity JasperForge. Na druhou stranu je třeba říci, že žádné použité open source komponenty včetně prostředí once:radix neposkytují podniku záruku za ztráty způsobené v případě nefunkčnosti komponenty nebo poškození či ztráty dat. - 56 -
Design aplikací v samotném prostředí once:radix je podle mého názoru oproti Oracle Application Express obtížnější a výsledné ukázkové aplikace demonstrující možnosti once:radix, které uvádí once:technologies na stránkách věnovaných tomuto prostředí, působí vizuálně horším dojmem než aplikace, které lze vytvořit na APEXu. Na druhou stranu prostředí once:radix umožňuje při designu mnohem větší volnost v umístění jednotlivých komponent stránky. Výhodou designu aplikací v Oracle Application Express je podle mého názoru také koncept sdílených komponent, který v prostředí once:radix není, a mnohem větší nezávislost na webovém prohlížeči uživatele, bez nutnosti jeho další konfigurace oproti standardnímu nastavení. Další výhodou APEXu je pak daleko obsáhlejší a dostupná dokumentace k produktu, průvodci usnadňující vývoj aplikací a také možnost využití nabídky hostingu tohoto prostředí.
3.4 Shrnutí Všechna prostředí vybraná pro srovnání jsou podle mě velmi kvalitní a mají svá uplatnění. Závěrem této části práce bych rád shrnul jejich některé vybrané vlastnosti rozebrané v předchozích kapitolách do následující tabulky.
Tvorba
Oracle
Microsoft
Iron Speed
Application
Office Access
Designer
Express 3.2.1
2007
Ano
Primárně ne, je
Ano
Once:radix
Ano – je však
webových
však možnost
nutné instalovat
aplikací
tvorby datových
plug-in do
stránek. Na
prohlížeče.
stanici uživatele
Podpora pouze
je však nutná
omezené
instalace prvků
skupiny
COM.[17]
prohlížečů.[24]
Koncept
Ano
Ne
Ne
sdílených komponent
- 57 -
Ne
ŠŘBD
Oracle
Microsoft
Microsoft
Database 9i a
Access
Access
vyšší[11]
Database Engine Microsoft SQL Server[17]
PostgreSQL [24]
Microsoft SQL Server MySQL Oracle Database Microsoft Data Access Components [6]
Placený
Ne
Ano – pro
Ano, ale pouze
vývoj.
pro vývojové
Pro uživatele
prostředí.
aplikací je
K dispozici je
k dispozici
též funkčně
verze ke stažení
omezená verze
zdarma.[34]
vývojového prostředí zdarma. K provozu aplikací je nutný vlastní server Microsoft IIS 5.0, 6.0 a 7.0 nebo využití hostingu.[6]
- 58 -
Ne
Možnost
Pomocí jazyka
dalšího rozvoje PL/SQL a
Pomocí maker
Libovolná
ve VBA
úprava, pomocí
funkcí aplikace Javascript
Javascript
editace vytvořeného zdrojového kódu.
Omezení
Ne
Ano – operační
Ne
Ne, omezení
koncového
systémy
však mohou
uživatele
Windows
plynout z omezené
aplikací na OS
podpory prohlížečů Dostupný
Ano
Ne
Ano
pronájem prostoru pro aplikace
- 59 -
Ne
4 Analýza a návrh demonstrační aplikace 4.1 Odborný článek Jako téma pro návrh demonstrační aplikace v prostředí Oracle Application Express jsem si zvolil aplikaci pro evidenci jízd firemních vozidel. Povinnost vést záznam o provozu vozidla upravuje pro podnikatele zákon č. 111/1994 Sb. o silniční dopravě a prováděcí vyhláška k tomuto zákonu č. 478/2000 Sb.[7] Vyhláškou je pak stanoveno, že záznam o provozu vozidla musí obsahovat údaje o evidenčním číslu záznamu, obchodním jménu dopravce, jménu a příjmení řidičů vozidla, dále datum a stav tachometru na počátku záznamu, datum a stav tachometru na konci záznamu a údaje o době řízení, bezpečnostních přestávkách a odpočinku pro každého řidiče.[4] Povinnost vést záznam o provozu vozidla podle tohoto zákona a vyhlášky však není pro osobní vozidla, která dopravce využívá pro vlastní potřebu, tedy v případě, že samotná přeprava není předmětem jeho podnikání. Pokud je však vozidlo, na které se nevztahuje povinnost vést záznam o jeho provozu podle zákona č. 111/1994 Sb., řízeno zaměstnanci společnosti, vztahuje se na něj povinnost vést záznam podle nařízení vlády č. 168/2002 Sb.[7] Toto nařízení stanovuje povinnost vést pro takové vozidlo evidenci o době řízení dopravního prostředku a čerpání bezpečnostních přestávek.[7] Nutnost vést evidenci jízd vyplývala pro podnikatele také ze zákona o daních z příjmu č.586/192 Sb, který umožňuje odečíst ze základu daně náklady na dopravu vozidlem zahrnutým do obchodního majetku společnosti v prokazatelné výši a ve výši nákladů na pohonné hmoty.[13] Evidence jízd pak slouží jako doklad pro případné prokázání výše těchto nákladů. Odečítat lze však pouze náklady spojené s obchodní činností. Protože vozidla v majetku firmy často slouží zároveň i k soukromým jízdám, je nutné v evidenci jízd tyto skutečnosti odlišit. Povinnost prokázání skutečných nákladů je poslední novelou zákona č.586/192 Sb. v § 24 zmírněna a dává podnikatelům možnost namísto prokázaných výdajů uplatnit paušální odpočet na vozidlo 5 000 Kč měsíčně, případě 4 000,- Kč, pokud je vozidlo využíváno i pro soukromé účely. Paušální odpočet je pak možné uplatnit maximálně pro 3 silniční vozidla.[13] Vzhledem k výši odpočtu a omezení počtu vozidel, pro které je možné odpočet uplatnit, však stále velká část podnikatelů bude i nadále využívat evidenci jízd k prokázání skutečných nákladů. Uplatněním paušálu navíc není
- 60 -
podnikatel zbaven povinnosti doložit pro daňové účely využití vozidla, k čemuž je vhodná právě kniha jízd.[13] Evidence jízd je ve firmách realizována různými způsoby, od vyplňování běžného papírového formuláře po aplikace určené zejména dopravcům, které záznamy automaticky doplňují podle zařízení GPS umístěných ve vozidlech. Existuje také mnoho aplikací pro evidenci jízd určených pro malé a střední podniky, u kterých není přeprava vlastním předmětem jejich podnikání. Evidence jízd v elektronické podobě přináší podnikům výhody dalšího zpracování záznamů a možnost snadného přístupu k záznamům oprávněným osobám, což je zejména patrné při zvyšujícím se počtu vozidel. V neposlední řadě je také takto možné zajistit lepší zabezpečení dat. Obr. 18: Formulář knihy jízd firemního vozidla
Zdroj: Lark: Kniha jízd firemního vozidla [12]
Navrhovaná demonstrační aplikace v této práci by svým zaměřením měla plnit základní potřebu evidence jízd. Dále by kromě vlastní realizace knihy jízd firemních vozidel měla ukázat vybrané možnosti prostředí Oracle Application Express. Protože je toto prostředí určeno pro vývoj webových aplikací, které mohou být dobře dostupné přes internet velkému počtu uživatelů, měla by být celá aplikace navržena jako více-uživatelská, s oddělenými oprávněními uživatelů do různých sekcí aplikace podle jednotlivých rolí. Zároveň by ale měla být zachována možnost použití aplikace s menším počtem uživatelů, kde je potřeba vydělení rolí menší. Uživatelé by se měli do aplikace přihlásit na základě zadání svého uživatelského jména a hesla. Každý uživatel by měl mít možnost své heslo kdykoliv změnit a změna hesla uživatele by měla být také vynutitelná aplikačním nastavením po určitém počtu dní od poslední změny hesla nebo kdykoliv administrátorem aplikace. - 61 -
Aplikace by měla mít sekci administrační, poskytující možnost spravování základního nastavení aplikace a zakládání a správy uživatelů. Dále by měla aplikace mít sekci nastavení pro udržování statických údajů potřebných před vlastní evidencí jízd. Zde se jedná zejména potřebu zobrazit a spravovat údaje o firemních vozidlech a řidičích. Dále by tato sekce měla umožnit vedení záznamů o nákladech na vozidlo mimo nákladů na čerpání pohonných hmot. U těchto nákladů na vozidlo by pak měl být uveden vždy popis tohoto nákladu a částka včetně DPH. Sekce evidence jízd by měla umožnit vlastní evidenci jízd firemních vozidel, a to při zajištění potřebných kontrol údajů. Nové jízdy jsou za sebou zadávány vždy v pořadí, v němž byly uskutečněny, a počáteční stav tachometru v následující jízdě tak musí odpovídat konečnému stavu v jízdě předchozí. Konečný stav tachometru vozidla pak musí odpovídat zadané délce jízdy. Zadavatel jízdy musí také evidovat údaje o nákladech na provoz vozidla vzniklých čerpáním pohonných hmot. U těchto nákladů musí být sledována jak částka včetně DPH, tak objem čerpaného paliva. Systém by měl kontrolovat, zda čerpání pohonných hmot není vyšší než objem nádrže vozidla. Měla by být také možnost v případech, kdy není možné doložit skutečnou částku nákladu, dopočítat částku za čerpání podle stanovených sazeb pro dané období. Pro zajištění neměnnosti uložených údajů o již provedených jízdách v minulosti by běžný uživatel, který zadává jízdy do systému, měl mít právo editace pouze poslední jízdy provedené vozidlem, a to pouze v případě, že jízda byla uložena jím. Administrátorovi aplikace by pak v případě nutnosti měla být umožněna i zpětná editace všech záznamů o jízdách pro případ potřebných oprav záznamů. Při zadávání jízdy by mělo být také systémem zajištěno, aby jízda nemohla být zadána pod řidičem, který nevlastní příslušné řidičské oprávnění k danému typu vozidla. V poslední sekci by měl systém umožňovat zobrazení záznamů o všech jízdách provedených vozidlem a také zobrazení souhrnných nákladů za jednotlivá vozidla. Data by mělo být možné z aplikace exportovat nebo vytisknout.
4.2 Požadavky na aplikaci Tato část dále shrnuje funkční požadavky na aplikaci vyplývající z odborného článku. Vzhledem k tomu, že aplikace slouží jako demonstrační aplikace k prostředí Oracle Application Express, je primárním nefunkčním požadavkem implementace aplikace v tomto prostředí.
- 62 -
1
Administrace
možnost spravovat a zakládat další uživatele aplikace
možnost měnit nastavitelné parametry aplikace
rozdělit oprávnění k aplikaci do několika sekcí a možnost přidělovat jednotlivým uživatelům tato oprávnění.
2
možnost opravit staré záznamy o jízdách
Správa statických dat
možnost zaevidovat a spravovat firemní vozidla
možnost zaevidovat a spravovat řidiče vozidel včetně řidičských oprávnění
u řidičů musí být povinně evidováno jméno a příjmení řidiče
možnost evidovat údaje o cenách paliv
evidovat u vozidel údaj o typu paliva a průměrné spotřebě a skupině potřebného řidičského oprávnění, který je nutný pro daný typ vozidla
3
možnost evidovat přednastavení délky častých cest
možnost evidovat náklady na vozidlo mimo nákladů na čerpání pohonných hmot
Evidence jízd
evidovat údaje o začátku a konci jízdy, jménu a příjmení řidiče, začátku a konci případné přestávky
evidovat, zda se jedná o jízdu soukromou nebo služební, počáteční a konečný stav tachometru a délku jízdy
jízdy vozidla musí být zadávány v pořadí, v jakém byly uskutečněny, konečný stav tachometru u předchozí jízdy a počáteční stav u další jízdy musí být shodné
aplikace nesmí povolit běžnému uživateli editaci jiné než poslední jízdy vozidla zadané v systému a to pouze pokud je jejím zadavatelem
jízdu může konat pouze řidič s příslušným oprávněním k vozidlu
evidovat náklady na čerpání pohonných hmot a další vzniklé náklady. Těchto nákladů může být více za jednu jízdu
- 63 -
u čerpání evidovat objem pohonných hmot a cenu včetně DPH. Umožnit dopočet ceny podle průměrné sazby a umožnit evidovat místo, kde bylo čerpání provedeno.
4
u dalších nákladů evidovat cenu včetně DPH a popis nákladu
Výstupy aplikace
umožnit zobrazení reportu o vykonaných jízdách
zobrazení sumárních údajů pro vozidla za určité období
možnost exportovat případně vytisknout údaje o jízdách a sumární údaje o vozidlech za určité období
4.3 Use Case diagram Use Case diagram znázorňuje jednotlivé aktéry a případy jejich užití systému. Aktéry vstupujícími do navrhované aplikace jsou administrátor, editor, zadavatel a hodnotitel. Pro co nejefektivnější použití systému pro různé počty uživatelů a velikosti firemního parku je dostupnost funkcí systému pro aktéry administrátor, editor a zadavatel navržena v kaskádě. Aktér administrátor tak může zároveň užívat systém jako aktér editor a zadavatel a aktér editor může užívat všechny funkce systému dostupné aktéru zadavatel. Z tohoto důvodu jsou tito jmenovaní aktéři v Use Case diagramu vzájemně propojeni vztahem generalizace. Aktéři: Administrátor – má plná práva k celému systému. Jeho hlavní úlohou je nastavení základních parametrů aplikace, zakládání a správa dalších uživatelů. Editor – tento aktér má v systému práva ke všem částem aplikace kromě funkcí určených pouze administrátorovi systému. Úkolem editora je nastavení statických dat v systému, která jsou potřená a pro zadávání jízd. Dále má tento aktér přístup do sekce pro zobrazení reportů a sestav v systému. Zadavatel – tento aktér zadává do systému jízdy a jejich náklady. Zadavatel může zadávat do systému jízdy za všechny řidiče nebo mu může být určen konkrétní řidič, za kterého má právo zadavatel záznamy pořizovat. Cílem je, aby bylo umožněno volitelné použití systému, kdy může v roli editora vystupovat přímo řidič vozidla, nebo záznamy budou pořizovány jinou osobou – editorem za více řidičů. Hodnotitel – tento aktér má přístup k reportům ze systému. - 64 -
Obr. 19: Use Case diagram navrhované aplikace
Zdroj: vlastní obrázek
Pro účely návrhu demonstrační aplikace v prostředí Oracle Application Express nejsou již dále jednotlivé Use Case diagramy rozvedeny do textové podoby.
4.4 Datový model Návrh datového modelu aplikace jsem provedl za pomoci volně dostupného nástroje Oracle SQL Developer Data Modeler.
- 65 -
Obr. 20: Logický model
Zdroj: vlastní obrázek
- 66 -
Obr. 21: Relační model
Zdroj: vlastní obrázek
- 67 -
5 Implementace demonstrační aplikace 5.1 Vytvoření aplikace – Kniha jízd Prvním krokem před vytvořením nové aplikace v prostředí Oracle Application Express by mělo být vytvoření potřebných datových struktur v databázi. Nástroj Oracle SQL Developer Datamodeler, ve kterém byl navrhnut datový model, umožňuje na základě modelu vytvořit skript definující datovou strukturu pro různé SŘBD včetně Oracle Database 10g. Pro naplnění účelu demonstrace vývoje v prostředí Oracle Application Express jsem však zvolil variantu definice tabulek přímo v tomto prostředí pomocí nástrojů v části SQL Workshop. Zde je pomocí průvodce spuštěného při tvorbě nové tabulky možné postupně nadefinovat jednotlivé atributy tabulky včetně integritních omezení. Průvodce také rovnou umožní zvolit plnění hodnot primárního klíče buď pomocí existující nebo nové sekvence. Pokud je hodnota primárního klíče tabulky plněna sekvencí, vytvoří průvodce automaticky k tabulce také databázový trigger. Ten v případě, že hodnota primárního klíče není v příkazu insert udána, doplní před insertem hodnotu primárního klíče novou hodnotou z vytvořené sekvence. Například trigger automaticky vytvořený APEX prostředím pro tabulku UZIVATELE vypadá takto: CREATE OR REPLACE TRIGGER "BI_UZIVATELE" before insert on "UZIVATELE" for each row begin if :NEW."ID" is null then select "UZIVATELE_SEQ".nextval into :NEW."ID" from dual; end if; end;
Požadavek na umělý primární klíč plněný hodnotami sekvence je pro tabulky, které jsou použity v aplikacích v prostředí Oracle Application Express, velmi častý, protože veškeré následně vytvořené formuláře potřebují primární klíč pro identifikaci záznamu, který mají zobrazit. Hodnota primárního klíče je pak ve vytvořených formulářích implicitně označená jako skrytý a chráněný prvek, který nelze měnit. Toto nastavení lze sice ve formuláři změnit, ale pokud dojde ke změně hodnoty primárního klíče, nelze provést operaci update nad záznamem standardním procesem v APEXu, a je nutné pro tuto operaci napsat vlastní proces nebo znemožnit ve formuláři tuto změnu. - 68 -
Po vytvoření všech potřebných objektů je možné začít vytvářet aplikaci v pracovním prostoru vývojáře v části Application Builder. Při vytváření nové aplikace se spustí průvodce, který umožní postupně nastavit základní parametry aplikace a vytvoření libovolného počtu stránek aplikace.[10] Obr. 22: Vytváření aplikace
Zdroj: otisk obrazovky z prostředí APEX 3.2.1
Pro vytvoření aplikace je nutné definovat alespoň jednu stránku, možnosti voleb pro zakládané stránky jsou však v této fázi naprosto minimální. Pro demonstrační aplikaci knihy jízd jsem proto zvolil v průvodci vytvoření pouze jedné prázdné stránky a jednoho formuláře nad tabulkou nastavení. Dále jako navigační prvek oddělující sekce aplikace jednořadé záložky a z nabídky 3 předvolených autentizačních schémat autentizaci pomocí schématu Application Express. Vzhled aplikace jsem založil na tématu číslo 2 z 20, které průvodce nabízí a jazykové nastavení upravil tak, aby odpovídalo české lokalizaci. Výsledkem tohoto nastavení je aplikace, která kromě přihlašovací stránky obsahuje obě definované stránky, ke kterým jsou automaticky vytvořeny a přiřazeny stejnojmenné záložky. Pro přihlášení do aplikace je pak podle zvoleného nastavení potřeba vyplnit platné - 69 -
jméno a heslo jakéhokoliv APEX uživatele v pracovním prostoru, ve kterém byla aplikace vytvořena. Obr. 23: Aplikace vytvořená na základě voleb průvodce
Zdroj: otisk obrazovky z vytvořené aplikace v prostředí APEX 3.2.1
Takto vytvořenou aplikaci jsem dále upravoval a doplňoval postupně jednotlivé obrazovky a funkce. Vzhledem k rozsahu není možné v rámci této kapitoly rozebírat všechny jednotlivé obrazovky aplikace. Proto jsou následující části této kapitoly věnovány pouze určitým úsekům, které jsou zajímavé z pohledu popisu implementace. Aplikaci je možné po jejím vytvoření kdykoliv exportovat pomocí nástrojů v sekci „Application Builder“. Tento export vytvoří SQL skript, který obsahuje definici aplikace pro APEX. Takto vytvořený skript však neobsahuje příkazy pro vytvoření vlastních databázových objektů a dat, které aplikace využívá. Skripty pro vytvoření těchto objektů a - 70 -
vložení iniciálních dat je však možné vytvořit zvlášť, například i pomocí nástrojů APEXu v části „Utilities“ a následně je nahrát a přiřadit k instalačním skriptům aplikace v části „Supporting Objects“. Při exportu aplikace potom výsledný SQL skript obsahuje i tyto vložené skripty. Při následné instalaci takovéhoto exportu pak APEX prostředí automaticky nabídne spuštění vložených dodatečných instalačních skriptů během instalace. Obdobným způsobem lze pak přiřadit k aplikaci skript, který se spustí při deinstalaci nebo upgradu aplikace. Pro demonstrační aplikaci jsem vytvořil pomocí nástrojů Oracle Application Express skripty, které jsem umístil do části „Supporting Objects“. Tři skripty slouží k instalaci objektů v databázi a naplnění tabulek základními daty s nastavením. Poslední skript je zařazen do části „Deinstall“ a zajistí odstranění všech objektů při deinstalaci aplikace z prostředí.
5.2 Autentizační a autorizační schéma aplikace Autentizační schéma používané aplikací je možné změnit poměrně snadno v jakémkoliv stádiu vývoje aplikace. Na výběr jsou různá předefinovaná autentizační schémata od autentizace pomocí APEX účtů až po autentizaci pomocí LDAP nebo single sign on serveru. Je také možné vytvořit vlastní schéma pomocí autentizační funkce.[10] Jako autentizační funkci lze v APEXu nadefinovat libovolnou funkci, která vrací hodnotu pravda / nepravda a přijímá jako parametry uživatelské jméno a heslo. Z počátku jsem měl s vytvořením této funkce problém, jelikož jsem zvolil jiné názvy parametrů, než jsou uváděné v příkladech v dokumentaci k produktu. Jak se ale ukázalo, APEX u autentizační funkce vyžaduje nejen stejný počet a datový typ vstupních parametrů, ale i jejich přesně definovaný název. Deklarace autentizační funkce tedy musí vypadat vždy takto[10]: function
libovolny_nazev_funkce
(p_username
in
VARCHAR2,
p_password in VARCHAR2) return boolean; Funkce však může být vytvořena jak jako samostatný databázový objekt, tak jako součást balíku. Protože řešení autentizace jsem rozdělil do více funkcí, implementoval jsem vlastní autentizační funkci jako součást balíku nazvaného „zabezpeceni“. Tato funkce autentizaci provádí na základě údajů v aplikační tabulce uživatelů. Heslo uživatele je ukládáno v tabulce uživatelů v hashované podobě. Pro ověření zadaného uživatelského jména a hesla pak autentizační funkce ověří pouze, zda je hash hesla zadaného uživatelem shodný - 71 -
s řetězcem uloženým v tabulce uživatelů. Pro postup hashování hesla namísto šifrování jsem se rozhodl na základě doporučení z knihy Pro Oracle Application Express.[30] Vlastní vytvořená autentizační procedura pak zčásti vychází z příkladu v této knize, i když konkrétní implementace je jiná. Shodně s literaturou[30] jsem však pro vlastní hashování použil balík dbms_obfuscation_toolkit přesto, že oracle databáze již nabízí modernější dbms_crypto. Ten však není implicitně grantován uživatelům a stížila by se tak možnost nasazení vytvořené demonstrační aplikace na hostovaná prostředí. Vytvořená autentizační funkce dále podporuje možnost zablokovat existujícího uživatele administrátorem. Po vytvoření balíku s potřebnými funkcemi je pak možné vytvořit ve sdílených komponentách autentizační schéma, které bude používat pro ověření přihlášení vytvořenou autentizační funkci. Nové autentizační schéma je možné vytvořit buď pomocí průvodce zcela od začátku, nebo pomocí úpravy předdefinovaných autentizačních schémat. Autentizační schéma pro demonstrační aplikaci Kniha jízd jsem vytvořil pomocí úpravy existujícího schématu pro autentizaci pomocí Oracle Application Express účtů, kde stačí zaměnit volání autentizační funkce za vlastní hodnotu: return zabezpeceni.autentizuj; Kromě vlastního ověření platnosti zadaných uživatelských údajů aplikace zajišťuje, aby byl uživatel po přihlášení donucen ke změně hesla v případě, že od poslední změny hesla uplynul počet dní uvedený v nastavení aplikace nebo je změna hesla na účtu vynucena administrátorem. Tento úkol je vyřešen v úvodní stránce aplikace pomocí nastavení podmíněného větvení ještě před zobrazením úvodní stránky. Toto větvení přepne uživatele na stránku pro změnu hesla v případě, že funkce „nutna_zmena_hesla“, která je součástí balíku „zabezpeceni“, vrátí hodnotu pravda. Celý zdrojový kód balíku „zabezpeceni“ je součástí elektronické přílohy této práce. Autorizační schémata umožňuje APEX definovat na základě různých způsobů validací. Pro demonstrační aplikaci jsem vytvořil autorizační schémata na podmínce „Exists SQL Query“. V tomto případě autorizace bude pro uživatele platná, pokud definovaný dotaz vrátí alespoň jeden řádek. Jednotlivá autorizační schémata jsem vytvořil tak, aby byla navázána na roli definovanou uživateli. Protože jednotlivým stránkám a komponentám je vždy možno přiřadit pouze jedno autorizační schéma, jsou jednotlivá schémata vytvořena tak, aby ověřila vždy všechny role, které mají do dané části aplikace přístup. - 72 -
Schéma
SQL příkaz
Administrator
select
id
from
uzivatele
where
upper(uziv_jmeno)
=
upper(uziv_jmeno)
=
upper(:APP_USER) and appl_role = 1; Editor
select
id
from
uzivatele
where
upper(:APP_USER) and appl_role in (1,2); Hodnotitel
select id
from uzivatele where upper(uziv_jmeno) =
upper(:APP_USER) and appl_role in (1,2,4); Zadavatel
select id
from uzivatele where upper(uziv_jmeno) =
upper(:APP_USER) and appl_role in (1,2,3);
Proměnná APP_USER je proměnná definovaná přímo v APEX prostředí a vrací jméno přihlášeného uživatele. Výsledná aplikace je rozdělena záložkami na části odpovídající jednotlivým autorizačním schématům. Záložky mají vždy definovánu jednu hlavní stránku, na kterou je uživatel přesměrován po jejím stisknutí. Kromě toho obsahují seznam dalších stránek, pro které se bude daná záložka zobrazovat jako aktuální. Jako hlavní stránku jsem pro jednotlivé záložky definoval stránku zobrazující seznam umožňující navigaci na jednotlivé stránky v dané sekci aplikace. Tento navigační seznam je vytvořen jako sdílená komponenta „List“. Každá záložka je pak navázána na autorizační schéma odpovídající dané sekci aplikace. Záložky se při navázání na autorizační schéma chovají tak, že jsou uživateli zobrazeny vždy jen ty záložky, které splňují autorizační schéma pro daného uživatele. Tímto je zajištěno, že uživatel po přihlášení uvidí vždy jen záložky na části aplikace, na které má oprávnění.
- 73 -
Obr. 24: Menu pro uživatele přihlášeného s oprávněním administrátora aplikace
Zdroj: otisk obrazovky z vytvořené aplikace v prostředí APEX 3.2.1
Obr. 25: Menu pro uživatele přihlášeného s oprávněním editora
Zdroj: otisk obrazovky z vytvořené aplikace v prostředí APEX 3.2.1
- 74 -
5.3 Formulář pro správu uživatelů Formulář pro editaci uživatele se liší od jiných formulářů vytvořených pro demonstrační aplikaci tím, že obsahuje také pole pro definování uživatelského hesla, které však není v databázi ukládáno v podobě, jak bylo zadáno uživatelem ale v podobě hashe, jehož hodnotu autentizační funkce při přihlášení ověřuje. Dále bylo potřeba, aby formulář při editaci existujícího uživatele přepisoval uložené heslo, pouze pokud byla do formuláře zadána nová hodnota hesla. Z těchto důvodu jsem pro tento formulář přepsal standardní procesy vytvořené v APEXu pro ukládání a editaci záznamů. Původní APEX proces pro automatické zpracování formuláře jsem tedy na formuláři nastavil tak, aby se použil pouze při mazání záznamů a vytvořil dva nové PL/SQL procesy pro operace vložení a editace záznamů přistupující k hodnotám ve formuláři pomocí SQL proměnných. Obr. 26: Vlastní proces pro změnu záznamu
Zdroj: otisk obrazovky z vytvořené aplikace v prostředí APEX 3.2.1
- 75 -
Obr. 27: Formulář pro založení a editaci uživatele
Zdroj: otisk obrazovky z vytvořené aplikace v prostředí APEX 3.2.1
Formulář dále obsahuje pole řidič, které umožňuje přiřadit uživatelům s rolí zadavatel pouze jednoho konkrétního řidiče, za kterého budou moci zadávat jízdy. Uživatelé s rolí administrátor a editor mohou vždy zadávat jízdy za kteréhokoliv řidiče. Toto pole má tedy smysl pouze, pokud je uživateli vybrána role zadavatel. Ve formuláři je tedy implementována funkčnost, která zpřístupní nebo znepřístupní pole řidič vždy po změně hodnoty v poli role. Toto lze v APEX prostředí řešit pomocí Javascriptu. K dispozici jsou jak běžné funkce Javascriptu, tak speciální API funkce pro APEX.[1] Definice vytvořeného formuláře v APEX prostředí automaticky obsahuje v hlavičce webové stránky část s Javascriptem. Do této části jsem tedy doplnil vlastní funkci, která na základě hodnoty v prvku „Role“ změní vlastnosti listu „Řidič“.
- 76 -
Obr. 28: Funkce pro změnu vlastností prvku formuláře
Zdroj: otisk obrazovky z vytvořené aplikace v prostředí APEX 3.2.1
Navázání události v prvku „Role“ na vytvořenou funkci je pak provedeno v definici vlastností tohoto prvku v APEX prostředí. Zde je do atributu „HTML Form Element Attributes“ nastaveno zavolání funkce při změně hodnotou „onChange="ZmenaRole()"“.
5.4 Zadávání jízd Pro zadávání jízd je uživatelům k dispozici základní obrazovka tvořená 2 standardními reporty, které jsou na stránce umístěny jako samostatné regiony. První report zobrazuje aktivní vozidla v evidenci. Pokud je report zobrazen uživatelem s rolí zadavatel, který má právo zadávat jízdy pouze za konkrétního řidiče, zobrazí report pouze vozidla, na která má daný řidič řidičská oprávnění. Tato podmínka je řešena v SQL dotazu v definici reportu. Druhý report zobrazuje jízdy, které přihlášený uživatel zadal do systému v minulosti. Oba tyto reporty jsou propojeny s formulářem na zadávání jízd.
- 77 -
Obr. 29: Vstupní obrazovka pro zadávání jízd
Zdroj: otisk obrazovky z vytvořené aplikace v prostředí APEX 3.2.1
U reportů je možné kterýkoliv sloupec definovat ve vlastnostech reportu jako hypertextový odkaz na další stránky aplikace nebo jakékoliv jiné webové stránky. V hypertextovém odkazu na aplikační stránku je zároveň možné nastavit volané stránce zvolené parametry na určitou hodnotu. APEX sám nabízí pomocí průvodců kombinaci vytvoření reportu a navázaného formuláře, kterému je při vybrání položky předána vybraná hodnota primárního klíče. Stejným způsobem funguje report zobrazující jízdy zadané uživatelem, který předá formuláři pro editaci jízd hodnotu ID jízdy do prvku formuláře P410_ID. Formulář pro editaci jízd může být volán z více částí aplikace. Proto má definován ještě skrytý prvek, který není zobrazen uživateli. Tento skrytý prvek ve formuláři slouží k uchování hodnoty stránky, ze které byl formulář pro evidenci jízdy zavolán, aby následně po uložení mohl formulář uživatele přepnout opět do původní stránky. Hypertextový odkaz v reportu je tedy upraven tak, aby předával také hodnotu návratové stránky.
- 78 -
Obr. 30: Definice odkazu v reportu
Zdroj: otisk obrazovky z vytvořené aplikace v prostředí APEX 3.2.1
Stejným způsobem předává hodnoty do formuláře i report sloužící k zadávání nových jízd. Ten ale namísto hodnoty primárního klíče jízdy předává hodnotu zvoleného vozu. Formulář je tak uveden do stavu, kdy umožňuje zadat nový záznam s jízdou. Formulář pro zadávání a evidenci jízd může být spuštěn v různých režimech a podle toho mění svůj vzhled a chování. Možnosti, při kterých může být formulář volán, jsou: Založení nového záznamu o jízdě Úprava posledního záznamu o jízdě k danému vozidlu a přání záznamu o čerpání pohonných hmot Zobrazení staršího záznamu o jízdě uživateli Manuální úprava staršího záznamu o jízdě administrátorem aplikace Jednotlivé režimy formuláře musejí být kombinovány pomocí podmínek k jednotlivým prvkům a částem formuláře. Při zadávání nové jízdy formulář dopočítá hodnotu začátku tachometru podle poslední hodnoty tachometru pro dané vozidlo. Běžný uživatel nemá právo tuto hodnotu nijak měnit. Pole je proto nastaveno pouze pro čtení. List hodnot řidičů pak není navázán na list ve sdílených komponentách aplikace, ale je definován pouze v rámci formuláře tak, aby - 79 -
zobrazoval pouze řidiče, kteří mají k řízení daného vozidla oprávnění a jsou v danou chvíli ve stavu aktivní. V případě, že přihlášený uživatel má právo k zadávání jízd pouze za jednoho řidiče, je toto pole nastaveno na tuto hodnotu a také uvedeno do stavu pouze pro čtení. K držení hodnoty řidiče, za kterého má právo přihlášený uživatel zadávat záznamy, je použita proměnná definovaná ve sdílených komponentách, kterou je tak možné odkazovat kdekoliv v aplikaci. Hodnota této proměnné je pak načtena vytvořeným PL/SQL procesem spuštěným po přihlášení do aplikace. Stejným způsobem jsou definovány proměnné držící hodnoty zkratek pro jednotku délky, měny a objemu. Tyto hodnoty jsou pak načteny při přihlášení z tabulky nastavení. Hodnoty těchto proměnných je možné využít také při generování popisků ve formuláři nebo reportu. Ve formuláři pro evidenci jízd je takto definován popis k poli délka, kde je do hranatých závorek doplněna načtená hodnota „Km“ z hodnoty odpovídajícího sloupce v tabulce NASTAVENI. Obr. 31: Formulář pro zadávání a editaci jízdy v režimu zadání nové jízdy
Zdroj: otisk obrazovky z vytvořené aplikace v prostředí APEX 3.2.1
- 80 -
Formulář obsahuje také Javascript, který plní funkce: Po zadání hodnoty začátku jízdy propsání hodnoty do pole konec jízdy, pokud je pole konec jízdy prázdné Automatické nastavení hodnoty konečného stavu tachometru po zadání délky jízdy Automatické nastavení hodnoty délky jízdy při zadání hodnoty pro konečný stav tachometru Při výběru cesty ze seznamu předdefinovaných jízd nastavení délky jízdy. K této funkčnosti je využit výběrový list, který slouží k párování hodnot název cesty a délky. Tento prvek je pak na stránce před uživatelem skryt pomocí API funkcí, které prostředí Oracle Application Express nabízí pro Javascript.[1] Ve formuláři existuje mnoho podmínek závislých na tom, zda je editovaná jízda poslední jízdou pro dané vozidlo. V APEX prostředí se podmínky definují pro každý prvek a komponentu na stránce zvlášť. Aby tedy nebyl do databáze dotaz na poslední jízdu pokládán vícenásobně, je ve formuláři vytvořen skrytý prvek, do kterého je hodnota poslední jízdy načtena. V podmínkách jednotlivých prvků už je pak využita hodnota tohoto skrytého prvku. Složitější podmínky a validace v tomto formuláři jsou definovány pomocí jazyka PL/SQL.
- 81 -
Obr. 32: Formulář pro zadávání a editaci jízdy v režimu zobrazení starých jízd
Zdroj: otisk obrazovky z vytvořené aplikace v prostředí APEX 3.2.1
Obr. 33: Formulář pro zadávání a editaci jízdy v režimu administrátorských úprav uložených jízd
Zdroj: otisk obrazovky z vytvořené aplikace v prostředí APEX 3.2.1
- 82 -
5.5 Interaktivní report vykonaných jízd Výpis jízd v aplikaci je vytvořen pomocí interaktivního reportu. Interaktivní report je stejně jako klasický report definován SQL dotazem. Na rozdíl od klasického reportu má ale uživatel možnost nad reportem definovaným vývojářem provádět další úpravy, jako je výběr sloupců pro zobrazení, vkládání podmínek, vytváření vlastních kalkulací nebo barevné zvýraznění určitých řádků nebo buněk podle definovaných podmínek.[10] Vývojář přitom definuje standardní podobu reportu a může při návrhu reportu zvolit, jaké funkčnosti interaktivního reportu budou dostupné uživateli. Je pak možné v rámci jednoho reportu předdefinovat a uložit více náhledů na daná data. Pokud to není zakázáno v návrhu reportu, může si vlastní úpravy reportu uložit jako pojmenovaný report i uživatel aplikace. Bohužel interaktivní report nenabízí možnost překladu některých zobrazených textů. Obr. 34: Report jízd
Zdroj: otisk obrazovky z vytvořené aplikace v prostředí APEX 3.2.1
- 83 -
Obr. 35: Report jízd v režimu grafu
Zdroj: otisk obrazovky z vytvořené aplikace v prostředí APEX 3.2.1
Report jízd je dále propojen s grafem ukazujícím statistiku ujetých kilometrů řidiči za posledních 12 měsíců. Tento graf je tvořen na základě SQL dotazu, kde jeden ze sloupců představuje hypertextový odkaz. V tomto případě je odkaz vytvořen tak, aby byl uživatel po kliknutí na výseč grafu přesměrován na interaktivní report zobrazující seznam jízd s tím, že v rámci odkazu je report nastaven na podmínku pro zobrazení jízd pouze označeného řidiče.
- 84 -
Obr. 36: Obrazovka Statistika kilometrů
Zdroj: otisk obrazovky z vytvořené aplikace v prostředí APEX 3.2.1
Obr. 37: Report jízd po označení výseče grafu
Zdroj: otisk obrazovky z vytvořené aplikace v prostředí APEX 3.2.1
- 85 -
5.6 E-mailové notifikace a generování reportů do PDF 5.6.1
E-mailové notifikace
Prostředí Oracle Application Express nabízí vývojářům vlastní funkce pro odesílání e-mailových zpráv. Využití těchto funkcí vyžaduje, aby instance APEX prostředí byla nakonfigurována pro připojení k poštovnímu serveru. Bohužel však prostředí neumožňuje připojení na poštovní servery, které vyžadují autentizaci.[9] Pro napojení prostředí na poštovní server jsem tedy využil zdarma dostupný program Free SMTP Server firmy Softstack, který funguje jako SMTP server a umožňuje v zdarma dostupné verzi odeslat 10 e-mailových zpráv denně.[32] V administrátorském rozhraní APEX prostředí pro napojení pak stačí pouze nastavit jméno SMTP serveru na jméno stanice, kde je Free SMTP Server spuštěn a port odpovídající konfiguraci serveru. Odesílání e-mailových zpráv je v aplikaci využito pro notifikaci správců vozů, pokud se konečný stav tachometru blíží hodnotě definované v nastavení vozu pro prohlídku vozu. Pokud má uživatel, který je nastaven jako správce vozu, nastavené e-mailové notifikace, je mu aplikací odeslána zpráva upozorňující na to, že vozidlo potřebuje servisní kontrolu. Obr. 38: Notifikace zaslaná aplikací
Zdroj: otisk obrazovky příchozí notifikace z poštovního klienta seznam.cz[31]
- 86 -
Odeslání notifikace je řízeno PL/SQL procesem definovaným ve formuláři pro zadávání jízd. K vlastnímu odeslání zprávy jsou využity funkce prostředí APEX v balíku apex_mail.
5.6.2
Generování PDF reportů
Bez napojení na report server umožňuje prostředí Oracle Application Express export reportů pouze do formátu CSV. Jako report server je možné využít buď Oracle BI Publisher, který je placeným produktem, nebo zdarma dostupný Apache FOP, případně jiný produkt zpracovávající jazyk XLS-FO.[25] Pro demonstrační aplikaci Kniha jízd jsem provedl instalaci a nastavení produktu Apache FOP, jehož podporovaná verze pro APEX prostředí je dodávána spolu s instalačním balíkem prostředí. Pro napojení APEX prostředí na Apache FOP přiložený v instalačním balíku prostředí je potřeba podle návodu ještě nainstalovat produkt Oracle Containers for J2EE a v něm zprovoznit Apache FOP. Následně je nutná konfigurace tiskového serveru v instanci prostředí. Celý postup je detailně popsán na stránkách věnovaných produktu Oracle Application Express.[29] Po těchto konfiguračních krocích je již možné nastavit jednotlivé reporty v aplikaci tak, aby umožnily export dat do PDF dokumentu. Reporty se bez dalšího nastavení generují podle implicitní šablony prostředí Oracle Application Express. Je ale také možné definovat vlastní XLS-FO šablonu pro vzhled reportu ve sdílených komponentách aplikace.[10] Apache FOP dodávaný k prostředí Oracle Application Express bohužel nepodporuje všechny znaky české abecedy. Pro demonstrační aplikaci jsem vytvořil úpravou standardní šablony APEX prostředí vlastní šablonu, kterou jsem přiřadil k reportu „Souhrnná sestava“. V této upravené šabloně je narozdíl od standardní šablony do záhlaví stránky vsazen text „Sestava z aplikace Kniha jízd“ a je potlačen tisk čísla stránky v zápatí.
- 87 -
Obr. 39: Vygenerovaný report z aplikace pomocí upravené šablony
Zdroj: otisk obrazovky z reportu vygenerovaného aplikací
5.7 Instalace vytvořené aplikace Vytvořenou demonstrační aplikaci je možné instalovat do jiné APEX instance jednoduchým způsobem, díky skriptům definovaným v „Supporting Objects“, které založí veškeré potřebné databázové objekty a nastaví iniciální data potřebná pro spuštění aplikace. Následným exportem aplikace je pak vytvořen jeden SQL skript, který kromě definice aplikace pro APEX prostředí obsahuje i tyto vývojářem definované skripty. Instalaci aplikace je možné provést pomocí takto vytvořeného instalačního souboru, který je součástí elektronické přílohy této práce, následujícím způsobem:
Po přihlášení do pracovního prostoru v APEX instanci pod účtem s vývojářským oprávněním zvolte v části „Application Builder“ možnost „Import“.
Jako soubor k importování zvolte soubor instalace\instalace_knihy_jizd.sql na disku, který je přílohou této práce. Typ souboru nechte nastavený na hodnotu „Application, Page or Component Export“ a znakovou sadu souboru na UTF-8.
- 88 -
Obr. 40: Import instalačního souboru
Zdroj: otisk obrazovky z prostředí APEX 3.2.1
Po stisku tlačítka „Next“ dojde k importu instalačního souboru do prostředí.
V dalším kroku potvrďte opět tlačítkem „Next“ instalaci aplikace.
Před vlastní instalací aplikace prostředí Oracle Application Express vyžaduje ještě vybrání databázového schématu a ID aplikace. Tyto hodnoty zvolte libovolně podle svých požadavků, aplikace je na nich nezávislá. Položkou „Build status“ lze pak ovlivnit v jakém režimu bude aplikace po instalaci dostupná. Po nastavení všech voleb pokračujte v instalaci stiskem tlačítka „Install“.
- 89 -
Obr. 41: Instalace aplikace
Zdroj: otisk obrazovky z prostředí APEX 3.2.1
V této části instalace je provedena definice aplikace v APEX prostředí. Po jejím skončení prostředí automaticky nabídne instalaci podpůrných objektů. Touto volbou se obecně myslí spuštění instalačních skriptů, které jsou definovány k aplikaci vývojářem a které musí zajistit vytvoření potřebných databázových objektů ve schématu aplikace. Pokud již nejsou objekty pro aplikaci Kniha jízd ve schématu vytvořeny z předešlé instalace aplikace, ponechte volbu instalovat podpůrné objekty a pokračujte tlačítkem „Next“.
Obr. 42: Instalace podpůrných objektů
Zdroj: otisk obrazovky z prostředí APEX 3.2.1
- 90 -
Zahajte instalaci podpůrných objektů tlačítkem „Install“.
Po dokončení instalace je aplikace již připravena k použití. Prostředí dává možnost aplikaci ihned editovat nebo spustit, případně prohlédnout instalační protokol.
Obr. 43: Dokončení instalace
Zdroj: otisk obrazovky z prostředí APEX 3.2.1
Při prvním spuštění aplikace je pro přihlášení nutné použít iniciální administrátorský účet vytvořený instalačními skripty, následně je však možné vytvořit v administrační části aplikace další uživatelské účty. Pro první přihlášení do aplikace použijte vytvořený účet admin s heslem admin. Aplikace si po přihlášení vynutí změnu hesla k tomuto účtu. Pro účely testování je k aplikaci vytvořen SQL skript pro nahrání testovacích dat do aplikace. Tento skript je také součástí elektronické přílohy práce ve složce instalace. Podmínkou pro korektní běh skriptu je to, že aplikace obsahuje pouze nezměněná data z instalace. Skript musí být spuštěn v databázovém schématu, ve kterém jsou vytvořeny objekty aplikace. Jeho instalaci lze provést například přímo přes APEX prostředí, nahráním a spuštěním skriptu v nástroji „SQL Scripts“. Skript je uložen ve znakové sadě UTF-8, která musí být zadána při nahrání skriptu do prostředí. Skript kromě testovacích dat v aplikaci založí uživatele: spravce, zadavatel1, zadavatel2 a hodnotitel, všechny s nastaveným vstupním heslem: heslo123.
- 91 -
6 Výsledky V rámci této diplomové práce byla zpracována recenze prostředí Oracle Application Express jako nástroje pro tvorbu menších podnikových aplikací. Dále jsem provedl srovnání vlastností produktu Oracle Application Express s vybranými produkty: Microsoft Office Access, Iron Speed Designer a zdarma dostupným prostředím once:radix. Z provedeného porovnání myslím vyplývá, že ačkoliv se ve všech případech jedná o velmi zajímavá prostředí, má produkt Oracle Application Express v této konkurenci co nabídnout. Jeho jedinečnost spatřuji zejména v konceptu sdílených komponent aplikace, a v kombinaci jeho dostupnosti zdarma s poměrně širokou dokumentací a zázemím poskytnutým firmou Oracle, dále pak nízkou náročností na konfiguraci stanic uživatelů vytvořených aplikací a snadnou možností tvorby jednoduchých aplikací, umožňující však další rozšiřitelnost aplikace pomocí jazyka PL/SQL a Javascript. Hlavním úkolem práce pak bylo navržení a implementace vlastní demonstrační aplikace v prostředí Oracle Application Express. Jako téma pro tvorbu aplikace jsem zvolil aplikaci pro evidenci jízd firemních vozidel. Pomocí dostupných zdrojů jsem sestavil požadavky na danou aplikaci a provedl její základní návrh. Hlavní pozornost byla v této části práce věnována vlastní implementaci aplikace v prostředí Oracle Application Express. Vytvořená aplikace pak splňuje všechny identifikované požadavky a zároveň se snaží demonstrovat vybrané možnosti prostředí. V aplikaci je použita možnost vytvoření vlastního autetizačního mechanismu aplikace pomocí autentizační funkce včetně řešení expirace hesel a blokace účtů. Pro oddělení částí aplikace jsou vytvořena autorizační schémata napojená na komponenty aplikace tak, aby byly uživateli zpřístupněny části aplikace na základě jeho aplikační role nastavené administrátorem. Vytvořená aplikace využívá Javascript a API funkce prostředí k řešení některých požadavků na chování formulářů během procesu zadávání dat uživatelem. V aplikaci jsou využívány sdílené komponenty jako aplikační proměnné, statické a dynamické listy hodnot (LOV) nebo listy sloužící jako navigační prvek v jednotlivých sekcích aplikace. Aplikace také umožňuje vkládání a stahování příloh u záznamů o nákladech. Jsou využity možnosti interaktivního reportu a tvorby grafů na základě SQL dotazů. Aplikace dále využívá funkcí prostředí k zasílání e-mailových notifikací. V rámci aplikace je také řešena jednoduchá úprava základního rozvržení pro generování reportů do PDF formátu.
- 92 -
I když vytvořená aplikace jistě nevyužívá všech možností, které prostředí Oracle Application Express nabízí a je možný její další rozvoj jak z pohledu funkčnosti prostředí, tak z pohledu funkcí pro evidenci jízd vozidel, domnívám se, že vytvořená aplikace splňuje rozsah i cíle stanovené pro tuto práci.
- 93 -
Závěry a doporučení V rámci této práce jsem měl možnost se důkladně seznámit s prostředím Oracle Application Express. Oracle Application Express je podle mě velmi zajímavým prostředím umožňujícím rychlý vývoj webových aplikací pracujících s databází. Díky průvodcům a předefinovaným tématům umožňuje prostředí rychlé vyvinutí dobře vypadajících aplikací se základní funkčností, jsou ale umožněny i složitější úpravy pomocí jazyka PL/SQL a Javascriptu. U implementace komplikovanější logiky podmíněného chování většího množství jednotlivých prvků stránky je podle mě mírnou nevýhodou grafického prostředí horší orientace v celkové funkčnosti, než by byla možná například pomocí zdrojového kódu. V době dokončení této práce je firmou Oracle však vyvíjena nová verze prostředí, Oracle Application Express 4.0, která je nyní již také pro účely testů ještě v nedokončeném stavu publikována ve formě hostované instance. Tato verze má mimo jiných změn zcela přepracováno grafické prostředí pro definici aplikačních stránek a jejich komponent, které jsem vnímal ve verzi 3.2.1 použité v této práci jako částečné negativum při větším počtu komponent a komplikovanosti logiky aplikačních stránek. Celkově lze podle zkušeností s tímto prostředím, které jsem měl možnost získat během zpracování této diplomové práce, říci, že prostředí Oracle Application Express je velmi vhodným a efektivním nástrojem k tvorbě menších podnikových aplikací. Možnosti oddělení pracovních prostorů, a provozování většího množství aplikací v rámci jedné instance prostředí navíc skutečně činí, tak jak je uváděno v literatuře [5], tento nástroj velmi vhodný ke sjednocení samostatných malých aplikací v rámci podniku. Pro využití tohoto prostředí pro podnikové aplikace však může být překážkou nebo nevýhodou nemožnost zakoupení podpory firmy Oracle k tomuto produktu, která je však částečně vyvážena dobře dostupnou a obsáhlou dokumentací a existencí fóra na podporu a řešení problémů prostředí Oracle Application Express. Při rozhodování o využití tohoto prostředí je také potřeba mít na paměti, že prostředí lze využít pouze s databázovým systémem Oracle. Ten je však možné získat také zcela zdarma v omezené edici Oracle Database Express Edition.
- 94 -
Seznam použité literatury [1] BAKER, Drue : Oracle® Application Express API Reference, Release 3.2 [online]. c2003, 2009, Oracle and/or its affiliates. E13369-01[cit. 2010-01-15]. Dostupný z WWW:
. [2] BAKER, Drue; ROMANO, Anne; JENNINGS Terri : Oracle® Application Express Advanced Tutorials, Release 3.2 [online]. c2003, 2009, Oracle and/or its affiliates. E13363-02 [cit. 2010-01-15]. Dostupný z WWW: . [3] BAKER, Drue; ROMANO, Anne; WINTERS, Terri : Oracle® Database 2 Day + Application Express Developer’s Guide, Release 3.2 [online]. c2003, 2009, Oracle and/or its affiliates. E13367-02 [cit. 2010-01-15]. Dostupný z WWW: . [4] Česko. Ministerstvo dopravy a spojů. Vyhláška č. 478/2000 Sb. ze dne 14. prosince 2000, kterou se se provádí zákon o silniční dopravě. In Sbírka zákonů, Česká republika. 2000. Dostupný také z WWW: . ISSN 1211-1244 [5] GREENWALD, Rick : Beginning Oracle® Application Express. Indianapolis, Indiana : Wiley Publishing, Inc., 2009. 363 s. ISBN 978-0-470-38837-2 [6] Iron Speed, Inc. : Iron Speed Designer [online]. c2005 – 2010 [cit. 2010-01-24]. Dostupný z WWW: . [7] JANOUŠEK, Karel : Povinnost vést knihu jízd. In Živnostník [online]. Praha : Dashöfer Holding, Ltd. a Verlag Dashöfer, 13.2.2009 [cit. 2010-02-21]. Dostupný z WWW: . ISSN 1214-5564 [8] Jaspersoft Corporation : JasperForge: iReport Project Home [online]. c2000 – 2009 [cit. 2010-01-27]. Dostupný z WWW: . [9] JENNINGS Terri: Oracle® Application Express Administration Guide, Release 3.2 [online]. c2003, 2009, Oracle and/or its affiliates. E13371-01. [cit. 2010-01-15].
- 95 -
Dostupný z WWW: . [10] JENNINGS, Terri : Oracle® Application Express Application Builder User's Guide, Release 3.2 [online]. c2003, 2009, Oracle and/or its affiliates. E11838-02 [cit. 2010-01-15]. Dostupný z WWW: . [11] JENNINGS, Terri : Oracle® Application Express Installation Guide, Release 3.2 [online]. c2003, 2009, Oracle and/or its affiliates. E13366-03 [cit. 2010-01-15]. Dostupný z WWW: . [12] Lark : Kniha jízd firemního vozidla. 1998. Praha : Tiskopisy LARK. KN 9202 [13] LUKÁŠOVÁ, Jitka : Kniha jízd nebyla zrušena, jde jen o nafouknutou bublinu. In Podnikatel.cz [online]. Praha : Internet Info, s.r.o., 11.1.2010 [cit. 2010-02-20]. Dostupný z WWW: . ISSN 1802-8012 [14] MaxApex : Oracle Application Express – Apex 3.2. Hosting [online]. c2008 - 2009 [cit. 2010-01-09]. Dostupný z WWW: . [15] Microsoft Corporation: Access 2007 Download: Access Runtime [online]. 28.4.2009 [cit. 2010-01-10]. Dostupný z WWW: . [16] Microsoft Corporation : Access 2007 Limits [online]. 5.6.2006 [cit. 2010-01-05]. Dostupný z WWW: . [17] Microsoft Corporation : Microsoft Office Access 2007 [online]. c2010 [cit. 2010-0102]. Dostupný z WWW: . [18] Microsoft Corporation : Microsoft SQL Server 2008 [online]. c2009 [cit. 2010-01-10]. Dostupný z WWW: . [19] Microsoft Corporation : Předpokládané ceny produktů systému Microsoft Office 2007 [online]. 28.12.2006 [cit. 2010-01-02]. Dostupný z WWW: . - 96 -
[20] Microsoft Corporation : Součásti Office Web Components pro sadu Office XP [online]. 12.12.2005 [cit. 2010-01-02]. Dostupný z WWW: . [21] Microsoft Corporation : Stáhněte zdarma šablony pro produkty systému Microsoft Office [online]. c2010 [cit. 2010-01-10]. Dostupný z WWW: . [22] Mozilla Foundation : JavaScript Security: Signed Scripts [online]. [cit. 2010-01-28]. Dostupný z WWW: . [23] Oasis : OASIS XML Localisation Interchange File Format (XLIFF) TC [online]. c1993-2010 [cit. 2009-12-15]. Dostupný z WWW: . [24] Once:technologies : once:technologies : software : once:radix : documentation [online]. c2006 [cit. 2010-01-27]. Dostupný z WWW: . [25] Oracle Corporation: Oracle Application Express [online]. [cit. 2009-09-01]. Dostupný z WWW: < http://www.oracle.com/technology/products/database/application_express/index.html>. [26] Oracle Corporation: Oracle Application Express [online]. [cit. 2009-12-05]. Dostupný z WWW: . [27] Oracle Corporation : Oracle Database [online]. [cit. 2010-01-09]. Dostupný z WWW: . [28] Oracle Corporation : Oracle® Database Express Edition Installation Guide 10g Release 2 (10.2) for Microsoft Windows [online]. c2003, 2005, Oracle. B25143-03 [cit. 2010-01-15]. Dostupný z WWW: . [29] Oracle Corporation : PDF Printing in Application Express 3.1 and above [online]. [cit. 2010-02-25]. Dostupný z WWW: . - 97 -
[30] SCOTT, John Edward; SPENDOLINI, Scott : Pro Oracle Application Express. United States of America : Apress, 2008. 714 s. ISBN 978-1-59059-827-6 [31] Seznam.cz, a.s. : Seznam E-mail [online]. c1996 – 2010, Seznam.cz [cit. 2010-04-05]. Dostupný z WWW: . [32] Softstack.com : Free SMTP Server [online]. [cit. 2010-03-06]. Dostupný z WWW: . [33] Wikipedie, Otevřená encyklopedie : ASP.NET [online]. St. Petersburg (Florida) : Wikimedia Foundation, 2001-, strana naposledy edit. 2010-01-13 [cit. 2010-01-24]. Dostupný z WWW: . [34] Wikipedia, The Free Encyclopedia : Microsoft Access [online]. St. Petersburg (Florida) : Wikimedia Foundation, 2001-, strana naposledy edit. 2009-12-13 [cit. 2009-12-19]. Dostupný z WWW: . [35] Wikipedia, The Free Encyclopedia : Microsoft Jet Database Engine [online]. St. Petersburg (Florida) : Wikimedia Foundation, 2001-, strana naposledy edit. 2009-12-07 [cit. 2009-12-20]. Dostupný z WWW: . [36] Wikipedie, Otevřená encyklopedie : PostgreSQL [online]. St. Petersburg (Florida) : Wikimedia Foundation, 2001-, strana naposledy edit. 2010-01-17 [cit. 2010-01-27]. Dostupný z WWW: . [37] WinHost : WinHost : Discount Windows Hosting [online]. c2009 - 2010 [cit. 2010-0124]. Dostupný z WWW: < http://www.winhost.com/>.
- 98 -
Seznam použitých zkratek APEX
Oracle Application Express
API
Application Programming Interface
ASP
Active Server Pages
COM
Component Object Model
CPU
Central Processing Unit
CSV
Comma Separated Value
DB
Database
DDL
Data Definition Language
DML
Data Manipulation Language
GPL
General Public License
GUI
Graphic User Interface
LDAP
Lightweight Directory Access Protocol
LOV
List of Values
ODBC
Open Database Connectivity
Oracle RAC
Oracle Real Application Clusters
PDF PL/SQL
Portable Document Format Procedural Language/Structured Query Language
RTF
Rich Text Format
SQL
Structured Query Language
SŘBD
systém řízení báze dat
SVG
Scalable Vector Graphic
UID
User Interface Defaults
VBA
Visual Basic for Applications
XE
Express Edition
XTHML
Extensible HyperText Markup Language - 99 -
XLIFF XSL-FO
XML Localization Interchange File Format Extensible Stylesheet Language Formatting Objects
XML
Extensible Markup Language
- 100 -
Přílohy Příloha č. 1 Obsah přiloženého CD Elektronická příloha této práce obsahuje zdrojové a instalační soubory k demonstrační aplikaci vytvořené v rámci této diplomové práce. Příloha je rozdělena do následujících složek: /instalace – obsahuje kompletní instalační skript vytvořené demonstrační aplikace pro prostředí Oracle Application Express - instalace_knihy_jizd.sql. Dále obsahuje skript pro vytvoření testovacích dat - testovaci_data.sql. /zdroje – obsahuje samostatné skripty pro vytvoření databázových objektů.
- 101 -