Tworzenie pierwszej aplikacji w Oracle APEX

Choć Oracle APEX zalicza się do platform "low code", jego interfejs nie jest user friendly dla osób które spotykają się z nim po raz pierwszy. Nawet osoby z doświadczeniem w kodowaniu potrzebują sporo czasu by oswoić się z nieco osobliwym podejściem Oracle do GUI. Jest to może produkt "low code" ale wymaga iwestycji w postaci sporej ilości czasu by zrozumieć logikę Oracle. Jeśli przejdziesz przez ten artykuł, zaoszczędzisz go sporą ilość.

Stworzymy prostą aplikację która wyświetla zawartość kolumn z bazy a po kliknięciu na link, otworzy nam się modal w kórym będziemy mogli edytować rekord. Oczywiście, możesz to zrobić (i tak częściowo zrobimy) w kreatorze, ale tutaj wyjaśnimy co zadziało się w tle i jak edytować zawartość tego co utowrzył nam automat. A o tym materiałów w Inernecie niewiele.

Jeśli szukasz informacji jak przygotować środowisko Oracle Apex, przejdź do tego artykułu.

Tworzymy "Raport z formularzami"

Tak więc klinąłeś w Application Builder na przycisk "create" i utworzyłeś aplikację. Nie istotne czy z użyciem opcji "z pliku", czy "nowa aplikacja". Wchodzimy do nowo utworzonej aplikacji i tworzymy stronę (a raczej dwie) o których mowa wyżej - wybierz przycisk "create page". Z pierwszego ekranu, "page type", wybieramy "Report":

W następnym kroku określamy jak nazywać się będzie nasza strona bazowa, ta z listą kolumn i rekordów z której będziemy przechodzić do strony pozwalającej na edycję rekordu, i jaką nazwę bedzie mieć nasz modal (pop-up w którym edytować będziemy rekord). W "Form Page Mode" wybieramy "modal dialog" (zawsz możemy to później zmienić). Głowna strona to "Report Page" a modal to "Form Page":

W następnym kroku dodajemy utworzoną stronę do menu naszej aplikacji. Domyślnie punktem startowym nowej aplikacji jest menu "home", wybierzmy zatem ten poziom:

Na następnym ekranie wybieramy źródło naszych danych. I tutaj cenna lekcja numer 1; wybierzmy "SQL Query" zamiast "Table". Oracle APEX to produkt który ma w DNA bazy danych i GUI nie daje pożądanej swobody w kształtowaniu stron (zobaczysz to później). Sprawdz weryfikatorem czy Twoj SQL jest poprawny. Te dane będą stanowić podstawe Twojej strony bazowej. Tej z której otwierać będziesz modal z edycją rekordu.

Na następnym ekranie wybierz kolumny, domyślnie wybrane, które pojawią się w formularzu modal - edycja rekordu. W polu "Primary Key Column" wybierz unikalny klucz tabeli. To ważne.

 

Analizujemy kod stron

Strona Lista rekordów - nasza bazowa strona

Kreator Apex utworzył w wyniku przejscia przez ten wizard dwie strony; Lista rekordów i Edycja rekordów. Zawartość pierwszej strony, "Lista rekordów" wyświeta nam mniej więcej coś takiego:

Po kliknięciu w ikonkę prze wierszu z lewej strony ekranu, przeniesieni zostaniemy do formularza edytującego zawartość rekordu. Gdzie szukać tego przycisku w edycji strony? Znajdziemy go w atrybutach strony "lista rekordów". Otwieramy stronę do edycji następnie rozwijamy "Content body=>Attributes":

W atrybucie "Link" znajdziemy kod CSS:

<span aria-label="Edit"><span class="fa fa-edit" aria-hidden="true" title="Edit"></span></span>

Jeśli klikniemy na wartość pola "Target" (wypełnionego numerem docelowej strony... np 29), znajdziemy tam nazwę linku i jego wartość. Np "P27_ID" z wartością ""\#ID#\. Oznacza to że link zaprowadzi nas do strony 29 a klucz tabeli, pole ID, znajduje się w formularzu strony 29 w polu "P27_ID". Przy okazji, backslash ("\") oznacza html escape.

Załóżmy że zapomniałeś dodać którejś z kolumn do listy na etapie tworzenia (albo jest ich zbyt dużo). Jak teraz to naprawić? Umieszczanie/usuwanie kolumn odbywa się poprzez edycję SQL'a. Na poniższym ekranie w sekcji "Regions=>Content Body=>Columns" znajduje się lista kolumn. Jest to wynik zapytania które widzisz po prawej stronie ekranu. Zmień zapytanie jeśli chcesz dodać lub usunąć kolumnę. Cechy kolumn możesz także zmieniać; typ danych (zastanów się zanim to zrobisz), ukryte lub widoczne.

Strona Edycja rekordów - formularz do zmiany zawartości wiersza

Kreator który utworzył dla nas dwie strony, stronę zawierającą listę rekordów oraz modal z edycją rekordu, stworzył oprócz layout'u strony także wszystkie powiązania miedzy tymi stronami i mechanikę strony. Pierwszym procesem który został stworzony automatycznie jest "Form - Initialization". Proces ten odpowiada za pobranie rekordu (pamiętasz pole "ID" w linku?) z tabeli. Dlatego kiedy otwierasz modal, wczytywana jest tam zawartość rekordu.

 

Sprawdź następnie ustawienia "Items" czyli kolumn formularza. Wybierz którąkolwiek kolumnę i zobacz ustawienia sekcji "Source". Typ danych kolumny dostosowuje się automatycznie na etapie tworzenia strony lub późniejszego dodawania kolumn. Nie jest zalecane ręczne zastępowanie typu danych - zawsze akceptuj propozycje APEX. Zmień typ danych tylko, jeśli wiesz, że bieżący wybór jest nieprawidłowy (np. Po zmianie tabeli). Najważniejsze przełączniki to "Query Only" i "Primary Key". Region formularza musi mieć co najmniej jeden element klucza podstawowego;
w przeciwnym razie strona nie będzie renderowana.
Jeśli dla opcji "Query Only" wybrano ustawienie On, ten element zostanie pobrany tylko podczas inicjowania, ale nie będzie uczestniczył w operacji DML (czym jest DML poniżej).
Jest to bardzo przydatne w przypadku kolumn źródła danych, których nie można aktualizować, takich jak kolumny wirtualne lub podzapytanie.

Co robi "Form - Automatic Row Processing (DML)"? Proces ten zapewnia obsługę SQL INSERT/UPDATE/DELETE. Uwalnia Cię od żmudnego pisania funkcji które obsłużą te właśnie interakcje z bazą.

Szczegóły tego co dokładnie dzieje się z formularzem przy odczycie, aktualizacji i zapisie znajdziesz na blogu Oracle w artykule jednego z twórców APEXa.

Test - tworzymy formularz który podepniemy pod naszą listę rekordów

Skoro wyjaśniliśmy to jak połączone są ze sobą dwie strony, lista i okno edycji, możemy dla utrwalenia wiedzy wykonać test gdzie utworzymy w wiekszym stopniu ręcznie sam formularz edycji rekordów i połączymy go z istniejącą już stroną.

W głównym menu aplikacji wybierz "Create Page". Wybierz "Form" jako typ strony. Wybierz ponownie "Form" - chcemy tylko formularz. W kroku "Create Form" wpisz nazwę tego formularza i najlepiej wybierz typ "modal". W następnym kroku decydujesz czy formularz będzie widoczny w menu - zadecyduj że nie. W następnych dwóch krokach wybierasz źródło danych i kolumny które mają się pojawić w formularzu (także klucz). Formularz gotowy - APEX stworzył automatycznie całą mechanikę potrzebną do obsługi zapisu/aktualizacji/kasowania.

Połączmy teraz naszą listę rekordów z nowo utworzonym formularzem. Wchodzimy do edycji strony "Lista rekordów" a następnie w zakładce "Rendering" idziemy do "Regions=>Content Body=>Attributes". Klikamy w sekcji "Link" na wartość "Target" i zmieniamy numer strony na nową, oraz zmieniamy nazwę pola przechowującego primary key w sekcji "Items". Np było to wcześniej pole "P27_ID" a obecnie "P28_ID" (sprawdz w ustawieniach nowego formularza). Gotowe.

Przejście przez te ćwiczenia pozwoliło Ci lepiej zrozumieć jak działają środowisko Oracle APEX.