Optimalizace formuláře v Oracle Waveset IdM

V poslední době nastal u zákazníka s Oracle Waveset IdM problém s rychlostí načítání formuláře pro přidělení rolí. Pomalost formuláře se týkala uživatelů s více právy (rolemi), kteří mají možnost těchto rolí také více přiřazovat.

comics-time-form2

Postup optimalizace

Nejprve bylo potřeba formulář vyzkoušet s odpovídajícími parametry. Přiřadil jsem tedy 2 uživatelům stejné role jako na produkci a s nimi tento formulář testoval. Po prvním vyzkoušení bylo zřejmé, že doba načítání je velmi nevyhovující, někdy až přes 2 minuty!

Bylo třeba tedy projít kód přislušných stránek formuláře. Z formuláře se volá několik pravidel a používají se prvky z formulářových knihoven, bylo tedy třeba projít všechny jednotlivé kroky a používané komponenty.

Formuláře v Oracle Wavesetu se načítají vždy 3x. Bylo tedy potřeba, aby vyhledání a načtení rolí proběhlo pouze jednou. To se provedlo nastavením tlačítka Hledat na prázdnou hodnotu po vyhledání. Tím pádem se po prvním vyhledání již další neprovádí. Tato úprava zrychlila načítání formuláře skoro na polovinu času.

formular-role-upraven

Na obrázku můžete vidět, že se formulář skládá z 2 tabulek. V jedné jsou vyhledané role, v druhé role, které se později přidají uživateli. Role se však vyhledávaly i po stisknutí na tlačítka přidat či odebrat role. Tato možnost se nyní kontroluje a role se již nevyhledávají. Tento přesun je tedy nyní okamžitý.

Dále bylo třeba najít a zaměřit se na pravidla, která zabírají při načítání největší množství času. Největší část času zabíralo pravidlo pro vyhledání rolí, které může uživatel přiřazovat díky svým rolím. Zde se pro každou uživatelovu roli provádělo vyhledání, zda tato role nemůže přiřazovat další role. Tím pádem počet volání závisel na počtu rolí přiřazených uživateli,což se mohlo vyšplhat až na 20 volání! Tato část byla upravena, vyhledání rolí se provede obecně pouze jednou a poté se teprve filtruje podle rolí uživatele. Zrychlení této části velmi zrychlilo i celkové načítání formuláře.

Závěr

Načítání formuláře tedy bylo zrychleno z původních 2 minut na 10-15 sekund. Také byl zrychlen přesun role z jedné tabulky do druhé. Nyní je formulář pro uživatele použitelný, i když čas stále není úplně přijatelný. Pokud by Vás tento proces zajímal, či jste měli jakékoliv jiné dotazy na Oracle Waveset, napište mi na adam.lenger@bcvsolutions.eu.