Tvorba aplikací v Oracle Forms Marek Rychlý Vysoké uˇcení technické v Brneˇ Fakulta informaˇcních technologií Ústav informaˇcních systému˚
Demo-cviˇcení pro IDS 26. bˇrezna 2014
Marek Rychlý
Tvorba aplikací v Oracle Forms — Demo-cviˇcení pro IDS, 26. bˇrezna 2014
1 / 20
Obsah
1
Základy tvorby aplikací v Oracle Forms Oracle Forms a Oracle Forms Developer Struktura aplikace v Oracle Forms Oracle Forms build-in procedury a funkce
2
Vylepšení aplikací v Oracle Forms Menu v Oracle Forms aplikaci Skupiny záznamu˚ a list položky (LOV) Hlášení zpráv a zpracování chyb/výjimek a událostí
3
ˇ Shrnutí a záver
Marek Rychlý
Tvorba aplikací v Oracle Forms — Demo-cviˇcení pro IDS, 26. bˇrezna 2014
2 / 20
Základy tvorby aplikací v Oracle Forms Vylepšení aplikací v Oracle Forms ˇ Shrnutí a záver
Oracle Forms a Oracle Forms Developer Struktura aplikace v Oracle Forms Oracle Forms build-in procedury a funkce
Obecné informace k Oracle Forms Programovací jazyk PL/SQL. (balík „standard“ rozšíˇren o fce a procedury pro práci s DBS a GUI; objekty Oracle Forms aplikace dostupné z PL/SQL kódu uvozením „:“, napˇr. :MYBLOCK )
Událostmi ˇrízená aplikace. (datové nebo uživatelské události a aplikaˇcní triggery, které spouští)
ˇ Aplikace spouštené interpretem v aplikaˇcním kontejneru/serveru. (pˇrenositelné na ruzné ˚ OS/platformy; zdroje v *.fmb, bytecode v *.fmx)
Zdroje dat primárneˇ z Oracle databáze. (ale lze použít i jiné DBS, napˇr. pˇres ODBC rozhraní)
Rapid Application Development (RAD). (CASE nástroje Oracle Forms/Reports Developer)
Marek Rychlý
Tvorba aplikací v Oracle Forms — Demo-cviˇcení pro IDS, 26. bˇrezna 2014
4 / 20
Základy tvorby aplikací v Oracle Forms Vylepšení aplikací v Oracle Forms ˇ Shrnutí a záver
Oracle Forms a Oracle Forms Developer Struktura aplikace v Oracle Forms Oracle Forms build-in procedury a funkce
Typy oken v Oracle Forms Developer Object Navigator (hierarchie objektu˚ aplikace vˇc. menu, knihoven, balíku˚ a databázových objektu) ˚
Property Palette (zobrazení a editace vlastností aktuálneˇ vybraného objektu v Object Navigator)
PL/SQL Editor (editace PL/SQL kódu apl. triggeru, ˚ 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ˇcení pro IDS, 26. bˇrezna 2014
5 / 20
Základy tvorby aplikací v Oracle Forms Vylepšení aplikací v Oracle Forms ˇ Shrnutí a záver
Oracle Forms a Oracle Forms Developer Struktura aplikace v Oracle Forms Oracle Forms build-in procedury a funkce
Struktura aplikace v Oracle Forms aplikace je formuláˇr nebo kolekce formuláˇru˚ (obecneˇ sada modulu, ˚ napˇr. formuláˇre, menu, reporty, atp.)
aplikace je tvoˇrena vývojáˇrem definovanými objekty (datové bloky, položky, plátna, okna, skupiny záznamu, ˚ triggery, atd.)
ˇ na logické a grafické objekty mužeme ˚ rozdelit logické bez grafického/uživatelského rozhraní (napˇr. datové bloky, skupiny záznamu, ˚ triggery, atp.)
grafické reprezentující prvky uživatelského rozhraní (napˇr. plátna, okna, GUI položky, tlaˇcí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ˇcení pro IDS, 26. bˇrezna 2014
6 / 20
Základy tvorby aplikací v Oracle Forms Vylepšení aplikací v Oracle Forms ˇ Shrnutí a záver
Oracle Forms a Oracle Forms Developer Struktura aplikace v Oracle Forms Oracle Forms build-in procedury a funkce
Datové bloky aplikace v Oracle Forms datové bloky (data blocks) (položky struktury datového bloku jsou v jeho cˇ ásti „items“, napˇr. sloupce zobrazené tabulky/budoucí inputboxy uživ. rozhraní, cˇ i tlaˇcítka souvisejících akcí)
databázové – zprostˇredkovávají data z tabulek/pohledu˚ (napˇr. jako zdroje dat zobrazených formuláˇri pro editaci obsahu db. tabulek; v Property Palette vlastnost Database/Database data block = Yes)
ˇrídící – pro prvky uživ. rozhraní nesouvisejícími s databází (napˇr. s db. daty nesouvisejícími inputboxy a tlaˇcítky uživatelského rozhraní; v Property Palette vlastnost Database/Database data block = No)
snadná návrh databázových bloku˚ pomocí Data Block Wizard (vˇc. 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 cˇ ásti „relations“; automaticky pomocí Data Block Wizard)
Marek Rychlý
Tvorba aplikací v Oracle Forms — Demo-cviˇcení pro IDS, 26. bˇrezna 2014
7 / 20
Základy tvorby aplikací v Oracle Forms Vylepšení aplikací v Oracle Forms ˇ Shrnutí a záver
Oracle Forms a Oracle Forms Developer Struktura aplikace v Oracle Forms Oracle Forms build-in procedury a funkce
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ˇcasteji)
ˇ typ „tab“ – rozdelení obsahu plátna do pˇrepínatelných „tab pages“ (poˇradí a poˇcáteˇcní 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é cˇ á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 muže ˚ za ˇ ˇ plátna, tj. svuj behu menit ˚ obsah)
Marek Rychlý
Tvorba aplikací v Oracle Forms — Demo-cviˇcení pro IDS, 26. bˇrezna 2014
8 / 20
Základy tvorby aplikací v Oracle Forms Vylepšení aplikací v Oracle Forms ˇ Shrnutí a záver
Oracle Forms a Oracle Forms Developer Struktura aplikace v Oracle Forms Oracle Forms build-in procedury a funkce
PL/SQL build-ins funkce pro vlastnosti objektu˚ (1) pro „data blocks“ ˇ (parameter block muže ˚ být textový rˇetezec 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 muže ˚ být textový ˇretezec 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 ˇrádku˚ „data blocks“ ˇ (parametr item muže ˚ být textový ˇretezec jména položky, tj. itemname formátu „block.item“, nebo její objekt získaný pomocí FIND_ITEM(itemname); parametr ˇ vybraný ˇrádek) recordno pak cˇ íslo ˇrádku nebo CURRENT_RECORD pro aktuálne 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ˇcení pro IDS, 26. bˇrezna 2014
9 / 20
Základy tvorby aplikací v Oracle Forms Vylepšení aplikací v Oracle Forms ˇ Shrnutí a záver
Oracle Forms a Oracle Forms Developer Struktura aplikace v Oracle Forms Oracle Forms build-in procedury a funkce
PL/SQL build-ins funkce pro vlastnosti objektu˚ (2) pro „canvases“ ˇ (parametr canvas muže ˚ být textový rˇetezec 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 muže ˚ být textový rˇetezec 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 cˇ íslo vlastnosti objektu (používají se v pˇred-definované konstanty jazyka PL/SQL, vizte dále)
parametr propertyvalues je jedena hodnota typu varchar2 nebo number 1 , nebo dveˇ hodnoty typu number (napˇr. pro souˇradnice) 1 pro
bool vlastnosti jsou pˇred-definované konstanty PROPERTY_TRUE/FALSE
Marek Rychlý
Tvorba aplikací v Oracle Forms — Demo-cviˇcení pro IDS, 26. bˇrezna 2014
10 / 20
Základy tvorby aplikací v Oracle Forms Vylepšení aplikací v Oracle Forms ˇ Shrnutí a záver
Oracle Forms a Oracle Forms Developer Struktura aplikace v Oracle Forms Oracle Forms build-in procedury a funkce
ˇ Nekteré konstanty pro vlastnosti objektu˚ (1) propertyno pro „data blocks“ CURRENT_ROW_. . . pro vizuální odlišení vybraného ˇrádku (napˇr. CURRENT_ROW_BACKGROUND_COLOR pro barvu pozadí)
pro povolení úprav pro modifikaci WHERE cˇ ásti dotazu
DELETE/INSET/UPDATE_ALLOWED DEFAULT/ONETIME_WHERE
(použitelné napˇr. pro filtrování dotazu z uživatelského rozhraní) ORDER BY
pro modifikaci ORDER BY cˇ ásti dotazu
(použitelné napˇr. pro ˇrazení 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ˇr. CURRENT_ROW_BACKGROUND_COLOR pro barvu pozadí) FORMAT_MASK
pro nastavení vynuceného formátu obsahu položky pro napojení obsahu položky na LOV
LOV_NAME, VALIDATE_FROM_LIST
ˇ hodnot položky z cˇ ísleníku možných hodnot) (používáno pro výber Marek Rychlý
Tvorba aplikací v Oracle Forms — Demo-cviˇcení pro IDS, 26. bˇrezna 2014
11 / 20
Základy tvorby aplikací v Oracle Forms Vylepšení aplikací v Oracle Forms ˇ Shrnutí a záver
Oracle Forms a Oracle Forms Developer Struktura aplikace v Oracle Forms Oracle Forms build-in procedury a funkce
ˇ Nekteré konstanty pro vlastnosti objektu˚ (2) propertyno pro „canvases“ pro nastavení barev plátna pro nastavení vlastností písma obsahu plátna ˇ u˚ plátna HEIGHT/WIDTH pro nastavení rozmer TOPMOST_TAB_PAGE pro nastavení aktivní stránky „tab“ plátna BACKGROUND/FOREGROUND_COLOR FONT_. . .
propertyno pro „windows“ pro nastavení barev okna pro nastavení vlastností písma obsahu okna ˇ u˚ okna POSITION, WINDOW_SIZE pro nastavení pozice a rozmer TITLE pro nastavení titulku okna WINDOW_STATE pro nastavení NORMAL/MAXIMIZE/MINIMIZE stavu VISIBLE pro nastavevní viditelnosti okna BACKGROUND/FOREGROUND_COLOR FONT_. . .
(vhodné pro zobrazení/skrývání oken dle potˇreby aplikace) HIDE_ON_EXIT
Marek Rychlý
automatické skrytí okna pˇri pˇrechodu na jiné
Tvorba aplikací v Oracle Forms — Demo-cviˇcení pro IDS, 26. bˇrezna 2014
12 / 20
Základy tvorby aplikací v Oracle Forms Vylepšení aplikací v Oracle Forms ˇ Shrnutí a záver
Oracle Forms a Oracle Forms Developer Struktura aplikace v Oracle Forms Oracle Forms build-in procedury a funkce
Navigace v aplikaci ve Oracle Forms ˇ akce v uživatelském rozhraní a nekteré PL/SQL pˇríkazy se vztahují k aktivnímu objektu, tyto lze vybrat pomocí – 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ˇrejde do jiného formuláˇre GO_BLOCK(blockname)
(formuláˇr = modul/projekt v Oracle Forms; takto lze propojit více formuláˇru) ˚ HIDE/SHOW_WINDOW(widnow)
– zobrazení/skrytí daného okna
(po pˇrepnutí okna ješteˇ do jeho bloku/položky pomocí GO_BLOCK/ITEM )
akce nad aktuálním db. datovým blokem mohou být napˇr. (záznamy lze vkládat/mazat do/z db. také pˇrímo pom. SQL2 ; pˇri INSERT napˇr. cˇ íst data z položek/inputboxu˚ ˇrídícího data bloku, tj. bez použití db. data bloku)
ˇ commit – naˇcte data do bloku, pˇríp. pˇredtím udelá CREATE_RECORD – vytvoˇrí nový záznam v aktuálním bloku DELETE_RECORD – smaže akt. vybraný záznam v aktuálním bloku ˇ v aktuální bloku COMMIT/ROLLBACK – potvrdí nebo odvolá zmeny EXECUTE_QUERY
2 pˇri
ˇ potvrdit transakci pom. COMMIT modifikaci dat pomocí SQL nezapomente Marek Rychlý
Tvorba aplikací v Oracle Forms — Demo-cviˇcení pro IDS, 26. bˇrezna 2014
13 / 20
Základy tvorby aplikací v Oracle Forms Vylepšení aplikací v Oracle Forms ˇ Shrnutí a záver
Menu v Oracle Forms aplikaci Skupiny záznamu˚ a list položky (LOV) Hlášení zpráv a zpracování chyb/výjimek a událostí
Menu v aplikaci v Oracle Forms ˇ menu je samostatný modul, samotná vetev Menus v Object Navig. (musí být explicitneˇ naˇcteno; soubory zdroju˚ *.mmb, bytecode *.mmx)
pˇriˇrazeno pomocí názvu *.mmx souboru ve vlastnosti formuláˇre (název souboru do vlastnosti formuláˇre Functional/Menu Module v Property Palette, ˇ soubor se hledá v pracovním adresáˇri cˇ i podle promenné prostˇredí FORMS_PATH 3 )
implicitní menu (a toolbar) jsou DEFAULT&SMARTBAR ˇ (umožnuje základní operace a db. data bloky a s okny aplikace)
menu lze vytvoˇrit vytvoˇrením modulu a pak pomocí Menu Wizard (vytvoˇrením modulu v Object Navig. a pak pop-up na „menus“ v modulu tamtéž)
ˇ každá položka akce menu musí mít nejaký PL/SQL kód (napˇr. NULL, EXIT_FORM, nebo GO_BLOCK(’myblock’); pozor, v kódu nutno používat názvy objektu, ˚ ne samotné objekty, ty jsou v jiném modulu, ne v modulu menu) 3 tuto promennou ˇ lze nastavit v souboru „ORACLE_HOME/forms/server/default.env“, napˇr. pro virtuální stroj pro IDS je ORACLE_HOME „C:/Oracle/DevSuiteHome_1“ Marek Rychlý
Tvorba aplikací v Oracle Forms — Demo-cviˇcení pro IDS, 26. bˇrezna 2014
15 / 20
Základy tvorby aplikací v Oracle Forms Vylepšení aplikací v Oracle Forms ˇ Shrnutí a záver
Menu v Oracle Forms aplikaci Skupiny záznamu˚ a list položky (LOV) Hlášení zpráv a zpracování chyb/výjimek a událostí
Skupiny záznamu˚ a list položky v Oracle Forms tzv. „new-style“ List of Values (LOV)
„record group“, tj. skupina zazánamu, ˚ je obecneˇ seznam n-tic (staticky zadaný seznam, cˇ i dynamicky generovaný databázovým dotazem; ˇ samotná vetev Record Groups v Object Navigator)
ˇ z „názvu“ „list item“ je GUI prvek pro výber ˚ daných seznamem dvojic (název, hodnota) , pro zvolený prvek vrací „hodnotu“ ˇ (obeˇ složky dvojice musí být typu textový ˇretezec, napˇr. varchar2 )
„list item“ lze napojit na „record group“ dvojic, napˇr. naˇcíst z db. (z dotazu naˇcítané složky dvojice musí být pˇretypovány pom. to_char )
dynamický „record group“ nutno explicitneˇ naˇcíst z db. (pom. fce POPULATE_GROUP(’rgname’), která vrací poˇcet naˇctených záznamu) ˚
„list item“ nutno explicitneˇ naˇcíst z „record group“ (pom. procedur CLEAR_LIST(’listname’) a POPULATE_LIST(’listname’,’rgname’))
ˇ hodnot položek db. záznamu˚ z cˇ ísleníku˚ cˇ asté použití pro výber ˇ u položky s hod. z cˇ íselníku vlastnost (napˇr. po vytvoˇrení db. data bloku zmenit Item Type na List Item a inicializovat v triggeru WHEN-NEW-FORM-INSTANCE ) Marek Rychlý
Tvorba aplikací v Oracle Forms — Demo-cviˇcení pro IDS, 26. bˇrezna 2014
16 / 20
Základy tvorby aplikací v Oracle Forms Vylepšení aplikací v Oracle Forms ˇ Shrnutí a záver
Menu v Oracle Forms aplikaci Skupiny záznamu˚ 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 ˇrádku nebo modálních dialogu˚ (napˇr. zprávy s potvrzením provedených operací, varování cˇ i chybová hlášení)
výpis zprávy na stavový ˇrádek pom. procedury MESSAGE(text) ˇ (text muže ˚ být max. 200 znaku˚ dlouhý textový ˇretezec)
pˇri opakovaném volání MESSAGE bez prodlevy uživatel nemusí stihnout pˇreˇcíst zprávu a zobrazí se modální dialog (zobrazení dialogem lze potlaˇcit voláním MESSAGE(text,NO_ACKNOWLEDGE))
pˇrímé zobrazení zprávy mod. dialogem objektem typu Alert ˇ Alerts v Object Navigator, nastavit v Property Palette nebo (vytvoˇrit objekt ve vetvi PL/SQL titulek, typ, tlaˇcítka a zprávu, a vyvolat pomocí fce SHOW_ALERT(alert) nad objektem cˇ i jeho názvem alert ; fce vrací poˇradí uživatelem stisknutého tlaˇcítka)
..................................................................... pozor, výše uvedené hlášení zpráv není zpracování výjimek ˇ (pˇrestože obvykle programátor výjimku odchytí a zobrazí nejaké 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ˇcení pro IDS, 26. bˇrezna 2014
17 / 20
Základy tvorby aplikací v Oracle Forms Vylepšení aplikací v Oracle Forms ˇ Shrnutí a záver
Menu v Oracle Forms aplikaci Skupiny záznamu˚ a list položky (LOV) Hlášení zpráv a zpracování chyb/výjimek a událostí
ˇ Nekteré užiteˇcné triggery objektu˚ WHEN-BUTTON-PRESSED PRE-INSERT
– reakce na stisk tlaˇcítka
– akce pˇred vložením záznamu v uživ. rozhraní
(vhodné pro nastavení poˇcáteˇcních hodnot, napˇr. ze sekvencí, do položek bloku) WHEN-NEW-FORM-INSTANCE
– akce pˇri stratu aplikace
(vhodné pro inicializaci data bloku, ˚ tj. GO_BLOCK a EXECUTE_QUERY, a naˇctení skupin záznamu˚ a list položek, tj. POPULATE_GROUP a POPULATE_LIST ) PRE-FORM
– akce pˇredi startem aplikace
(vhodné pro nastavení vlastností okna, napˇr. 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ˇrení libovolného okna
(název okna lze zjistit ze :SYSTEM.EVENT_WINDOW ; vhodné napˇr. pro zobrazení jiného okna, tˇreba zobrazení toho, které zavírané okno puvodn ˚ eˇ vyvolalo) ON-ERROR
– reakce na dˇríve neodchycené výjimky
ˇ (poslední možnost odchycení takových výjimek/chyb, jejich popis v promenných ERROR_CODE, ERROR_TEXT, DBMS_ERROR_CODE, DBMS_ERROR_TEXT ) Marek Rychlý
Tvorba aplikací v Oracle Forms — Demo-cviˇcení pro IDS, 26. bˇrezna 2014
18 / 20
Základy tvorby aplikací v Oracle Forms Vylepšení aplikací v Oracle Forms ˇ Shrnutí a záver
ˇ Shrnutí a záver Aplikace Oracle Forms využívají rozšíˇrené PL/SQL. (aplikaˇcní objekty dostupné pˇres „:“ prefix, fce a procedury)
Aplikace se skládá z ruzných ˚ typu˚ objektu. ˚ (moduly, data bloky, plátna, okna, položky, triggery, procedury, sk. záznamu, ˚ atd.)
Aplikace jsou interpretovány Oracle Forms kontejnerem. ˇ na apl. serveru a v Java appletech web. prohlížeˇce) (od Oracle Forms 10g beží
Dokumentace: Oracle9iDS Forms Developer Reference Guide Oracle Forms 10g release 2: Demos, Tips and Techniques ˇ nápoveda v Oracle Forms/Reports Developer ˇ . . . a další na webových stránkách pˇredmetu
Marek Rychlý
Tvorba aplikací v Oracle Forms — Demo-cviˇcení pro IDS, 26. bˇrezna 2014
20 / 20