Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Vladimír Opolský - Generování_APEX_aplikaci

APEX solutions
October 31, 2023
33

Vladimír Opolský - Generování_APEX_aplikaci

APEX solutions

October 31, 2023
Tweet

Transcript

  1. Vladimír Opolský  APEX developer, APEX Solutions. od 06/2017 

    IT programátor týmu Databáze, ČSOB, od 09/2019  Interní školení a konzultace APEX řešení  APEX Community of Practice leader  LinkedIn: https://www.linkedin.com/in/wlada92/  X (Twitter): @Wlada92
  2. Disclaimer Prezentované know-how je inspirované reálnou potřebou z vývoje existující

    produkční aplikace. Prezentace nijak neodráží obchodní význam nebo funkční povahu této aplikace, pouze zvolený přístup k jejímu vývoji. Prezentovaný kód nebo jeho fragmenty: • nepochází z produkčního kódu žádné konkrétní aplikace • nejsou vlastnictvím žádného ze subjektů, kde jsem dříve působil nebo aktuálně působím • vznikly čistě pro účely této prezentace
  3. Bylo nebylo, jednou přišel projekt … Požadavky  APEX aplikace

    pro správu dat před dalším odesláním  Struktura 60+ tabulek v 6 různých agendách  Odlišné struktury jednotlivých tabulek  Pro každou tabulku:  Report přehledu s možností filtrování  Editační formulář pro jeden záznam  Náhled na historii změn/žurnál  3 úrovně přístupu pro každou z agend  Hromadné operace  Nad vybranými záznamy  Nad celým vyfiltrovaným datasetem Naše vize  Report přehledu  APEX IR s konkrétními filtry v separátním regionu  Tlačítka pro otevření dialogu hromadné operace  Z povahy operací pro každou operaci zvlášť  APEX IR s obslužnými sloupci:  Sloupec pro checkbox (check all v záhlaví)  Sloupce s odkazy na editaci, kopírování záznamu  Dialog s editační obrazovkou pro single row edit  APEX IR pro náhled na historii změn/žurnál  Všechny stránky jsou koncepčně shodné, liší se jen strukturou samostatných tabulek
  4. Možnost #1 – Vyklikat v APEX Builderu Výhody  Nejbezpečnější

    řešení  Nevyžaduje velké znalost APEXu  Vhodné na zaučení „nového APEXáře“ Nevýhody  Každá stránka v aplikaci je specifická  Zdlouhavé i při „Create Page as Copy“  Vysoká pravděpodobnost copy/paste chyb Výsledek I v případě zkušenějšího vývojáře takovéto klikání spíše otráví než nadchne. I v případě zkušenějšího vývojáře může činnost zabrat řádově desítky dní čisté práce. Nevýhody převažují nad výhodami a existovalo nadšení pro hledání alternativní cesty.
  5. Možnost #2 – Simulovat APEX Builder Výhody  Stále relativně

    bezpečné řešení  Vhodné pro pokročilejší vývojáře k získání vhledu „pod kapotu“ APEX Builderu  Drobnosti (převážně labely) lze doladit v Utilities Nevýhody  Nutná vyšší opatrnost při práci  Často nezdokumentované/wrapped prostředí  Při použití nemusí být 100% (absence náhledu na wrapped PCK a celkového návazného flow) Výsledek Zkušenější vývojář bude umět najít co potřebuje a dohledat/doplnit vlastní kód. Jednou z absencí je právě založení default reportu při vytvoření IR, create nemá všechny parametry (např. labely), atp. To znamená, že i takto generovaný obsah potřebuje další péči, ale co když to lze udělat lépe a tyto nedostatky odladit?
  6. #3 – Simulovat APEX Export Výhody  Absolutní kontrola nad

    jednotlivými prvky  Možnost maximalizace potřeb  Vhodné pro pokročilejší vývojáře k získání vhledu „pod kapotu“ APEX Exportu Nevýhody  Poměrně tenký led, nutná maximální opatrnost  Absolutně nezdokumentované/wrapped prostředí  Při nesprávné manipulaci lze rozbít i Builder  Potřebná časová investice do výzkumu a testování Výsledek Pro tvorbu takových aplikací, kde je každá stránka svou povahou specifická, je toto jednoznačný overkill. Pravděpodobně připravený generátor znovu nikde jinde nepoužijeme – jednorázová investice. Přestože je výhod oproti nevýhodám velmi málo, bylo řešení přijato jako to, které potřebujeme (a zajímavou výzvou).
  7. Co je wwv_flow? „Výkonné jádro APEX aplikací“  Většina interních

    API má staré jmenné konvence  Většina z nich právě na terminologii Oracle Flows  Můžeme pozorovat i v nejaktuálnějších verzích  Pro porozumění wwv_flow je třeba investovat čas do rozklíčování a mapování terminologie  APEX public views jsou napsaná pro vývojáře s APEX terminologií, odkazují však na wwv_flows objekty pod userem APEX_230100 (dle verze) „APEX Behind the Scenes“  Velmi dobrá prezentace (z července 2013, avšak v mnoha bodech stále aktuální), autor Scott Spendolini  https://www.slideshare.net/Enkitec/apex-behind-the-scenes
  8. Pár tipů z bojiště  Mějte vhodné pískoviště pro případnou

    obnovu  Nesprávným postupem můžete rozbít Builder (APEX Builder je také „jen“ APEX aplikace!)  Pokud se něco nepovede, počítejte i s hrozbou úplného backupu prostředí  „Hrajte si“ ve vývojovém nebo úplně separovaném prostoru  Nepoužívejte výsledek pro nasazení na jiná prostředí  Aplikaci modifikujte tímto postupem pouze na bezpečném pískovišti  Do dalších prostředí aplikaci následně exportujte dle vašich běžných postupů nebo code standardů  Pozor na ID  Nebojte se do scriptu zakořenit konstanty pro název WORKSPACE, APP_ID a pracovat s jedním dedikovaným  Pokud chcete aplikace pro porovnání, uchovávejte si výstupy, případně posouvejte APP_ID v různých iteracích ručně
  9. Pár tipů z bojiště  Využijte APEX API  Pro

    opakovaná spuštění si odstraňte a nainstalujte aplikaci znovu (viz APEX_APPLICATION_INSTALL)  Dobře mohou posloužit i APEX_UTIL nebo APEX_STRING, záleží na tom jak to sami uchopíte  Využijte maximálně wwv_flow_api, wwv_flow_imp_api, wwv_flow_id, …  Vneste do generovaných obrazovek řád  Obrazovkám nadefinujte systém, např. přehledová obrazovka i*100, editační dialog (i*100)+1, …  Loopujte sekvence pro itemy, sloupce v IR, IG… Nejde o procesní kód - na výsledek si o pár vteřin déle počkat můžete  Pomoci si můžete například i nějakou dočasnou konfigurační tabulkou  Nesnažte se hned dosáhnout 100%  Ono se to stejně asi nepovede - osvědčilo se napsat pár řádků a spustit kód, klidně i několikrát za den