Best practices při psaní APEX aplikací – debugování

Máte nějaký návod, jak nejlépe psát aplikace v APEXu?

Pokusím se shrnout nejdůležitější poznatky, které jsem při práci s APEXem získal.

Debugování

Jako první bych napsal to, jak debugování vypnout. Protože je „dobrým“ zvykem ponechat provozní aplikaci se zapnutým debugovacím módem. Ten pak umožní změnou parametru v URL získat někdy až dotaz do databáze (a tím pádem odhalit strukturu databáze a pod.). Vypnutí debug módu se provádí v Shared Components > Application Definition > Availability > Build Status nastavením hodnoty „Run application only“.

Pro zobrazení nějaké informace pro debugování je možné využít hodnotu v proměnné DEBUG (:DEBUG v APEXu, v('DEBUG') v PL/SQL nebo &DEBUG. ve statických regionech APEXu) nastavením pátého parametru v URL na YES (např.: f?p=APP_ID:PAGE_ID:0::YES).

Příklad:

1
2
3
IF :DEBUG = 'YES' THEN -- v kompilovanych procedurách a funkcích if v('DEBUG') = 'YES' then
htp.prn('Sledovaná hodnota: '||v('APP_USER'));
END IF;

Také je možné použít proceduru wwv_flow.debug('zprava') pro zobrazení debugovací hlášky s časovačem.

Příklad:

1
2
3
4
5
BEGIN
wwv_flow.debug('Začátek funkce');
....
wwv_flow.debug('Konec funkce');
END;

Pro zobrazení času potřebného pro vygenerování regionu je možné doplnit #TIMING# na pozici Region Footer. Rozdíl oproti času v debug módu je v tom, že debug mód zobrazuje čas, kdy byl region zobrazen od začátku rendrování stránky. Hodnota #TIMING# obsahuje absolutní čas od začátku zobrazování regionu.

Další možností debugováni je ukládání požadovaných hodnot do databáze. Pro toto je možné napsat vlastní funkce nebo využít PL/SQL logging framework. Tato utilita umožňuje logování APEX proměnných, vlastních logovacích hlášek, logování timingu atd. Utilita je přístupná pro DB od verze 10.2.

Kamil Schvarcz

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

Komentáře

avatar
  Odběr  
Upozornit na

Můžeme Vám s něčím poradit?

S vývojem aplikací v APEXu, Javascriptem, ...

Váš dotaz bude zveřejněn, jakmile na něj jeden z našich expertů odpoví. Vaši e-mailovou adresu nikde uvádět nebudeme.

Vyplňte prosím požadovaná pole.