Best practices při psaní APEX aplikací – struktura aplikace

Toto je druhý díl mého psaní o Best practices při psaní APEX aplikací, který navazuje na díl o debugování APEX aplikací.

Témou dnešního psaní bude struktura aplikace, kde se pokusím sepsat a vysvětlit jednotlivé kroky a postupy pro návrh, psaní a udržování aplikací napsaných v APEXu.

2. Struktura aplikace
Popis struktury aplikace začneme na úrovni workspace. Z hlediska bezpečnosti, oddělení aplikační logiky od dat a z neposledního hlediska pro zabezpečení kontroly nad používanými objekty je dobrým zvykem vytvořit 2 workspace – „datový“ workspace a „komunikační“ workspace. Pro ulehčení identifikace jednotlivých workspace je vhodné pojmenovat jednotlivé workspace dle jejich využití (např. demo_data, demo_comm a pod.).

V datovém workspace budeme mat všechny databázové prostředky, které budeme využívat v aplikaci jako tabulky, pohledy, sequence, triggry, package, funkce, procedury, db linky…. Tento workspace nebude viditelný pro db uživatele (APEX workspace), z kterého budeme přistupovat k aplikaci.

Komunikační workspace nebude obsahovat žádné db objekty. Pro přístup k objektům v datovém workspace bude mít přidělená příslušná práva (pro čtení, zápis, vykonávání…). Komunikační workspace bude viditelný pro db uživatele (APEX workspace), ze kterého budeme přistupovat k aplikaci.

Často se setkávám s otázkami, zda logiku aplikace uchovávat v APEXu, nebo ji mít v databáze. Jsem zastánce toho, aby logika aplikace byla přesunutá do databáze – do pohledů, procedur, funkcí a package. Získávám při tom přehled o tom, co mám již použito v aplikaci – a nevytváří se tím duplicitní kód a v APEXu mám takto skryté většinou jenom příslušná volání. Proč to takhle dělám? APEX má svou logiku uloženou v metadatech a při každém volání anonymního bloku, které v bohaté míře APEX využívá, musí daný blok kompilovat a až pak jej vykoná. Toho se sice nezbavíme při použití a volání databázových prostředků, minimalizujeme však čas potřebný ke kompilování bloku.
V mích prvních APEXových aplikacích jsem vytvářel jednotlivé stránky v pořadí jak mi to navrhovalal Application Builder, z čeho se časem stala nekontrolovatelní směs stránek, ve kterých jsem se nevěděl orientovat. Proto jsem začal hledat možnosti, kterými bych mohl jednotlivé stránky oddělit. Jako první mně napadlo oddělování dle číselné řady (např. sekce objednávky – 10 – 19, sekce uživatelé 20 – 29 …). Po chvíli jsem došel na omezení s 9 stránkami pro jeden typ (v mém připadě sekci) a začal jsem používat zařazování do skupin.

Kamil Schvarcz

jednatel, zakladatel společnosti, senior programátor, školitel

Komentáře

avatar
  Odběr  
Upozornit na