Tvorba aplikací v Oracle Forms Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů Demo-cvičení pro IDS 26. března 2014 Marek Rychlý Tvorba aplikací v Oracle Forms Demo-cvičení pro IDS, 26. března 2014 1 / 20
Obsah 1 Základy tvorby aplikací v Oracle Forms 2 Menu v Oracle Forms aplikaci Skupiny záznamů a list položky (LOV) Hlášení zpráv a zpracování chyb/výjimek a událostí 3 Marek Rychlý Tvorba aplikací v Oracle Forms Demo-cvičení pro IDS, 26. března 2014 2 / 20
Obecné informace k Oracle Forms Programovací jazyk PL/SQL. (balík standard rozšířen o fce a procedury pro práci s DBS a GUI; objekty Oracle Forms aplikace dostupné z PL/SQL kódu uvozením :, např. :MYBLOCK) Událostmi řízená aplikace. (datové nebo uživatelské události a aplikační triggery, které spouští) Aplikace spouštěné interpretem v aplikačním kontejneru/serveru. (přenositelné na různé OS/platformy; zdroje v *.fmb, bytecode v *.fmx) Zdroje dat primárně z Oracle databáze. (ale lze použít i jiné DBS, např. přes ODBC rozhraní) Rapid Application Development (RAD). (CASE nástroje Oracle Forms/Reports Developer) Marek Rychlý Tvorba aplikací v Oracle Forms Demo-cvičení pro IDS, 26. března 2014 4 / 20
Typy oken v Oracle Forms Developer Object Navigator (hierarchie objektů aplikace vč. menu, knihoven, balíků a databázových objektů) Property Palette (zobrazení a editace vlastností aktuálně vybraného objektu v Object Navigator) PL/SQL Editor (editace PL/SQL kódu apl. triggerů, programových jednotek a kódu akcí menu) Layout/Canvas Editor (zobrazení a vizuální editace pláten/canvases s prvky uživatelského rozhraní) Marek Rychlý Tvorba aplikací v Oracle Forms Demo-cvičení pro IDS, 26. března 2014 5 / 20
aplikace je formulář nebo kolekce formulářů (obecně sada modulů, např. formuláře, menu, reporty, atp.) aplikace je tvořena vývojářem definovanými objekty (datové bloky, položky, plátna, okna, skupiny záznamů, triggery, atd.) objekty můžeme rozdělit na logické a grafické logické bez grafického/uživatelského rozhraní (např. datové bloky, skupiny záznamů, triggery, atp.) grafické reprezentující prvky uživatelského rozhraní (např. plátna, okna, GUI položky, tlačítka, atp.) každý objekt má vlastnosti nastavitelné v designtime i runtime (v designtime pomocí Property Palette, v runtime PL/SQL kódem) Marek Rychlý Tvorba aplikací v Oracle Forms Demo-cvičení pro IDS, 26. března 2014 6 / 20
Datové bloky aplikace v Oracle Forms datové bloky (data blocks) (položky struktury datového bloku jsou v jeho části items, např. sloupce zobrazené tabulky/budoucí inputboxy uživ. rozhraní, či tlačítka souvisejících akcí) databázové zprostředkovávají data z tabulek/pohledů (např. jako zdroje dat zobrazených formuláři pro editaci obsahu db. tabulek; v Property Palette vlastnost Database/Database data block = Yes) řídící pro prvky uživ. rozhraní nesouvisejícími s databází (např. s db. daty nesouvisejícími inputboxy a tlačítky uživatelského rozhraní; v Property Palette vlastnost Database/Database data block = No) snadná návrh databázových bloků pomocí Data Block Wizard (vč. navazujícího návrhu zobrazení dat z db. bloku pomocí Layout Wizard) snadná realizace Master-Detail vztahu mezi databázovými bloky (vztahy bloku jsou v jeho části relations ; automaticky pomocí Data Block Wizard) Marek Rychlý Tvorba aplikací v Oracle Forms Demo-cvičení pro IDS, 26. března 2014 7 / 20
Plátna a okna aplikace v Oracle Forms plátna (canvases) se starají o vykreslování uživ. rozhraní (typ plátna nastavitelný v Property Palette vlastností General/Canvas Type) typ content prosté plátno s vizuálními objekty (implicitní typ, používá se nejčastěji) typ tab rozdělení obsahu plátna do přepínatelných tab pages (pořadí a počáteční page volitelné v Layout Editoru, aktivní pak také PL/SQL SET_CANVAS_PROPERTY( mycanvas, TOPMOST_TAB_PAGE, mypage );) typ horizontal/vertical toolbar pro uživatelské nástrojové lišty typ stacked posun viewport, tj. zobrazené části plátna (nastavitelný v Property Palette skupinou vlastností Viewport) okna (windows) jsou jednotlivá pod-okna hlavního okna aplikace (okno propojeno s plátnem, ve smyslu rám a jeho obsah, pomocí vlastnosti plátna Physical/Window a vlastnosti okna Functional/Primary Canvas; okno může za běhu měnit plátna, tj. svůj obsah) Marek Rychlý Tvorba aplikací v Oracle Forms Demo-cvičení pro IDS, 26. března 2014 8 / 20
PL/SQL build-ins funkce pro vlastnosti objektů (1) pro data blocks (parameter block může být textový řetězec jména bloku, tj. blockname, nebo jeho objekt získaný pomocí FIND_BLOCK(blockname)) SET_BLOCK_PROPERTY(block, propertyno, propertyvalues) varchar2 GET_BLOCK_PROPERTY(block, propertyno) pro items, tj. položky struktury data blocks (parametr item může být textový řetězec jména položky, tj. itemname formátu block.item, nebo její objekt získaný pomocí FIND_ITEM(itemname)) SET_ITEM_PROPERTY(item, propertyno, propertyvalues) varchar2 GET_ITEM_PROPERTY(item, propertyno) pro item instances, tj. vlastnosti řádků data blocks (parametr item může být textový řetězec jména položky, tj. itemname formátu block.item, nebo její objekt získaný pomocí FIND_ITEM(itemname); parametr recordno pak číslo řádku nebo CURRENT_RECORD pro aktuálně vybraný řádek) SET_ITEM_INSTANCE_PROPERTY(item, recordno, propertyno, propertyvalues) varchar2 GET_ITEM_INSTANCE_PROPERTY(item, recordno, propertyno) Marek Rychlý Tvorba aplikací v Oracle Forms Demo-cvičení pro IDS, 26. března 2014 9 / 20
PL/SQL build-ins funkce pro vlastnosti objektů (2) pro canvases (parametr canvas může být textový řetězec jména plátna, tj. canvasname, nebo jeho objekt získaný pomocí FIND_CANVAS(canvasname)) SET_CANVAS_PROPERTY(canvas, propertyno, propertyvalues) GET_CANVAS_PROPERTY(canvas, propertyno) pro windows (parametr window může být textový řetězec jména okna, tj. windowname, nebo jeho objekt získaný pomocí FIND_WINDOW(windowname)) SET_WINDOW_PROPERTY(window, propertyno, propertyvalues) GET_WINDOW_PROPERTY(window, propertyno)..................................................................... parametr propertyno je číslo vlastnosti objektu (používají se v před-definované konstanty jazyka PL/SQL, vizte dále) parametr propertyvalues je jedena hodnota typu varchar2 nebo number 1, nebo dvě hodnoty typu number (např. pro souřadnice) 1 pro bool vlastnosti jsou před-definované konstanty PROPERTY_TRUE/FALSE Marek Rychlý Tvorba aplikací v Oracle Forms Demo-cvičení pro IDS, 26. března 2014 10 / 20
Některé konstanty pro vlastnosti objektů (1) propertyno pro data blocks CURRENT_ROW_... pro vizuální odlišení vybraného řádku (např. CURRENT_ROW_BACKGROUND_COLOR pro barvu pozadí) DELETE/INSET/UPDATE_ALLOWED pro povolení úprav DEFAULT/ONETIME_WHERE pro modifikaci WHERE části dotazu (použitelné např. pro filtrování dotazu z uživatelského rozhraní) ORDER BY pro modifikaci ORDER BY části dotazu (použitelné např. pro řazení výsledku dotazu z uživatelského rozhraní) propertyno pro items LABEL text popisky položky ENABLED pro nastavení modifikovatelnosti položky uživatelem REQUIRED pro nastavení povinnosti vyplnit obsah položky CURRENT_ROW_... pro vizuální odlišení vybrané položky (např. CURRENT_ROW_BACKGROUND_COLOR pro barvu pozadí) FORMAT_MASK pro nastavení vynuceného formátu obsahu položky LOV_NAME, VALIDATE_FROM_LIST pro napojení obsahu položky na LOV (používáno pro výběr hodnot položky z čísleníku možných hodnot) Marek Rychlý Tvorba aplikací v Oracle Forms Demo-cvičení pro IDS, 26. března 2014 11 / 20
Některé konstanty pro vlastnosti objektů (2) propertyno pro canvases BACKGROUND/FOREGROUND_COLOR pro nastavení barev plátna FONT_... pro nastavení vlastností písma obsahu plátna HEIGHT/WIDTH pro nastavení rozměrů plátna TOPMOST_TAB_PAGE pro nastavení aktivní stránky tab plátna propertyno pro windows BACKGROUND/FOREGROUND_COLOR pro nastavení barev okna FONT_... pro nastavení vlastností písma obsahu okna POSITION, WINDOW_SIZE pro nastavení pozice a rozměrů okna TITLE pro nastavení titulku okna WINDOW_STATE pro nastavení NORMAL/MAXIMIZE/MINIMIZE stavu VISIBLE pro nastavevní viditelnosti okna (vhodné pro zobrazení/skrývání oken dle potřeby aplikace) HIDE_ON_EXIT automatické skrytí okna při přechodu na jiné Marek Rychlý Tvorba aplikací v Oracle Forms Demo-cvičení pro IDS, 26. března 2014 12 / 20
Navigace v aplikaci ve Oracle Forms akce v uživatelském rozhraní a některé PL/SQL příkazy se vztahují k aktivnímu objektu, tyto lze vybrat pomocí GO_BLOCK(blockname) další akce budou nad tímto blokem GO_ITEM(item) další vstup uživatele bude nad touto položkou GO_RECORD(recordno) uživateli bude zobrazen daný záznam GO_FORM(form) uživatel přejde do jiného formuláře (formulář = modul/projekt v Oracle Forms; takto lze propojit více formulářů) HIDE/SHOW_WINDOW(widnow) zobrazení/skrytí daného okna (po přepnutí okna ještě do jeho bloku/položky pomocí GO_BLOCK/ITEM) akce nad aktuálním db. datovým blokem mohou být např. (záznamy lze vkládat/mazat do/z db. také přímo pom. SQL 2 ; při INSERT např. číst data z položek/inputboxů řídícího data bloku, tj. bez použití db. data bloku) EXECUTE_QUERY načte data do bloku, příp. předtím udělá commit CREATE_RECORD vytvoří nový záznam v aktuálním bloku DELETE_RECORD smaže akt. vybraný záznam v aktuálním bloku COMMIT/ROLLBACK potvrdí nebo odvolá změny v aktuální bloku 2 při modifikaci dat pomocí SQL nezapomeňte potvrdit transakci pom. COMMIT Marek Rychlý Tvorba aplikací v Oracle Forms Demo-cvičení pro IDS, 26. března 2014 13 / 20
Menu v aplikaci v Oracle Forms Menu v Oracle Forms aplikaci Skupiny záznamů a list položky (LOV) Hlášení zpráv a zpracování chyb/výjimek a událostí menu je samostatný modul, samotná větev Menus v Object Navig. (musí být explicitně načteno; soubory zdrojů *.mmb, bytecode *.mmx) přiřazeno pomocí názvu *.mmx souboru ve vlastnosti formuláře (název souboru do vlastnosti formuláře Functional/Menu Module v Property Palette, soubor se hledá v pracovním adresáři či podle proměnné prostředí FORMS_PATH 3 ) implicitní menu (a toolbar) jsou DEFAULT&SMARTBAR (umožňuje základní operace a db. data bloky a s okny aplikace) menu lze vytvořit vytvořením modulu a pak pomocí Menu Wizard (vytvořením modulu v Object Navig. a pak pop-up na menus v modulu tamtéž) každá položka akce menu musí mít nějaký PL/SQL kód (např. NULL, EXIT_FORM, nebo GO_BLOCK( myblock ); pozor, v kódu nutno používat názvy objektů, ne samotné objekty, ty jsou v jiném modulu, ne v modulu menu) 3 tuto proměnnou lze nastavit v souboru ORACLE_HOME/forms/server/default.env, např. pro virtuální stroj pro IDS je ORACLE_HOME C:/Oracle/DevSuiteHome_1 Marek Rychlý Tvorba aplikací v Oracle Forms Demo-cvičení pro IDS, 26. března 2014 15 / 20
Menu v Oracle Forms aplikaci Skupiny záznamů a list položky (LOV) Hlášení zpráv a zpracování chyb/výjimek a událostí Skupiny záznamů a list položky v Oracle Forms tzv. new-style List of Values (LOV) record group, tj. skupina zazánamů, je obecně seznam n-tic (staticky zadaný seznam, či dynamicky generovaný databázovým dotazem; samotná větev Record Groups v Object Navigator) list item je GUI prvek pro výběr z názvů daných seznamem dvojic (název, hodnota), pro zvolený prvek vrací hodnotu (obě složky dvojice musí být typu textový řetězec, např. varchar2) list item lze napojit na record group dvojic, např. načíst z db. (z dotazu načítané složky dvojice musí být přetypovány pom. to_char) dynamický record group nutno explicitně načíst z db. (pom. fce POPULATE_GROUP( rgname ), která vrací počet načtených záznamů) list item nutno explicitně načíst z record group (pom. procedur CLEAR_LIST( listname ) a POPULATE_LIST( listname, rgname )) časté použití pro výběr hodnot položek db. záznamů z čísleníků (např. po vytvoření db. data bloku změnit u položky s hod. z číselníku vlastnost Item Type na List Item a inicializovat v triggeru WHEN-NEW-FORM-INSTANCE) Marek Rychlý Tvorba aplikací v Oracle Forms Demo-cvičení pro IDS, 26. března 2014 16 / 20
Menu v Oracle Forms aplikaci Skupiny záznamů a list položky (LOV) Hlášení zpráv a zpracování chyb/výjimek a událostí Hlášení zpráv uživateli a zpracování výjimek zprávy uživateli pomocí stavového řádku nebo modálních dialogů (např. zprávy s potvrzením provedených operací, varování či chybová hlášení) výpis zprávy na stavový řádek pom. procedury MESSAGE(text) (text může být max. 200 znaků dlouhý textový řetězec) při opakovaném volání MESSAGE bez prodlevy uživatel nemusí stihnout přečíst zprávu a zobrazí se modální dialog (zobrazení dialogem lze potlačit voláním MESSAGE(text,NO_ACKNOWLEDGE)) přímé zobrazení zprávy mod. dialogem objektem typu Alert (vytvořit objekt ve větvi Alerts v Object Navigator, nastavit v Property Palette nebo PL/SQL titulek, typ, tlačítka a zprávu, a vyvolat pomocí fce SHOW_ALERT(alert) nad objektem či jeho názvem alert; fce vrací pořadí uživatelem stisknutého tlačítka)..................................................................... pozor, výše uvedené hlášení zpráv není zpracování výjimek (přestože obvykle programátor výjimku odchytí a zobrazí nějaké chybové hlášení) zpracování výjimek klasicky pom. PL/SQL EXCEPTION bloku (EXCEPTION WHEN exname THEN mycode; jak bylo na demo k PL/SQL) Marek Rychlý Tvorba aplikací v Oracle Forms Demo-cvičení pro IDS, 26. března 2014 17 / 20
Některé užitečné triggery objektů Menu v Oracle Forms aplikaci Skupiny záznamů a list položky (LOV) Hlášení zpráv a zpracování chyb/výjimek a událostí WHEN-BUTTON-PRESSED reakce na stisk tlačítka PRE-INSERT akce před vložením záznamu v uživ. rozhraní (vhodné pro nastavení počátečních hodnot, např. ze sekvencí, do položek bloku) WHEN-NEW-FORM-INSTANCE akce při stratu aplikace (vhodné pro inicializaci data bloků, tj. GO_BLOCK a EXECUTE_QUERY, a načtení skupin záznamů a list položek, tj. POPULATE_GROUP a POPULATE_LIST) PRE-FORM akce předi startem aplikace (vhodné pro nastavení vlastností okna, např. maximizace hlavního okna pomocí SET_WINDOW_PROPERTY( mywindow,window_state,maximize) a SET_WINDOW_PROPERTY(FORMS_MDI_WINDOW,WINDOW_STATE,MAXIMIZE)) WHEN-WINDOW-CLOSED reakce na zavření libovolného okna (název okna lze zjistit ze :SYSTEM.EVENT_WINDOW; vhodné např. pro zobrazení jiného okna, třeba zobrazení toho, které zavírané okno původně vyvolalo) ON-ERROR reakce na dříve neodchycené výjimky (poslední možnost odchycení takových výjimek/chyb, jejich popis v proměnných ERROR_CODE, ERROR_TEXT, DBMS_ERROR_CODE, DBMS_ERROR_TEXT) Marek Rychlý Tvorba aplikací v Oracle Forms Demo-cvičení pro IDS, 26. března 2014 18 / 20
Aplikace Oracle Forms využívají rozšířené PL/SQL. (aplikační objekty dostupné přes : prefix, fce a procedury) Aplikace se skládá z různých typů objektů. (moduly, data bloky, plátna, okna, položky, triggery, procedury, sk. záznamů, atd.) Aplikace jsou interpretovány Oracle Forms kontejnerem. (od Oracle Forms 10g běží na apl. serveru a v Java appletech web. prohlížeče) Dokumentace: Oracle9iDS Forms Developer Reference Guide Oracle Forms 10g release 2: Demos, Tips and Techniques nápověda v Oracle Forms/Reports Developer... a další na webových stránkách předmětu Marek Rychlý Tvorba aplikací v Oracle Forms Demo-cvičení pro IDS, 26. března 2014 20 / 20