Ćwiczenie 5. Generowanie aplikacji Wprowadzenie Celem ćwiczenia jest wygenerowanie czterech aplikacji: dwóch prostych formularzy ekranowych: do ewidencji klientów i ewidencji artystów, formularza złoŝonego do ewidencji filmów i nośników, oraz prostego raportu do wydruku listy filmów i nośników. Wymagania wstępne Do przeprowadzenia ćwiczenia niezbędne jest wcześniejsze wykonanie następujących zadań: 1. Utworzenie definicji obiektów modelu relacyjnego: a. relacji, b. sekwencji (przynajmniej dla kolumn: id relacji Klienci, id relacji Artysci i id relacji Filmy). 2. Wygenerowanie w bazie danych obiektów modelu relacyjnego. Generacja aplikacji Zidentyfikowanie klienta Aplikacja Zidentyfikowanie klienta będzie prostym formularzem ekranowym, implementującym funkcję Zidentyfikowanie klienta (ZK). Implementowana funkcja nie jest funkcją atomową, w jej poddrzewie znajdują się dwie funkcje niŝszego poziomu: Czy klient juŝ zarejestrowany (CKJZ) i Zarejestrowanie danych klienta (ZDNK). Jednak z uwagi na łączną realizację obu funkcji niŝszego poziomu korzystne jest wykonanie pojedynczej aplikacji, która swoją funkcjonalnością pokryje funkcjonalność obu funkcji. 1. Kroki wstępne: 1.1. Uruchom narzędzie Function Hierarchy Diagrammer, otwórz diagram modelowanego systemu. 1.2. Otwórz okno własności funkcji Zidentyfikowanie danych klienta i zaznacz opcję Elementary. 1.3. Określ uŝycie encji Klient przez funkcję, realizowane operacje to create, retrieve, update oraz delete, następnie okreś uŝycie wszystkich atrybutów encji Klient przez funkcję, realizowane operacje to: insert, retrieve, update oraz nullify. 1.4. Zapisz dokonane zmiany i zamknij narzędzie. 2. Transformacja funkcji do definicji modułu: 2.1. Uruchom narzędzie Application Design Transformer. 2.2. Wybierz właściwy obszar roboczy. 2.3. Zaznacz opcję Modules w grupie Generate Options. 2.4. WskaŜ funkcję do transformacji: Start function: ZK, ustaw Module Prefix na WYPOZY, Start Number na 10 (wygenerowany moduł będzie nosił nazwę WYPOZY0010). 2.5. Rozpocznij transformację naciśnij przycisk Generate. 2.6. Po zakończeniu generacji zamknij narzędzie. 3. Ustawianie podstawowych własności modułu: 1
3.1. Uruchom narzędzie Design Editor i przejdź na zakładkę Modules. 3.2. Ustaw tryb wyświetlania własności na paletę własności: menu Options -> Use Property Palette. 3.3. Rozwiń poddrzewo Modules w hierarchii obiektów projektowanego systemu, znajdź gałąź modułu WYPOZY0010. 3.4. Otwórz okno własności modułu (dwukrotnie kliknij na ikonę modułu). 3.5. Ustaw wartość własności Candidate na No. 3.6. Sprawdź, czy wartość własności Language to SYSTEM FOLDER/Oracle Forms. Jeśli nie, ustaw odpowiednią wartość. 3.7. Utwórz diagram modułu z menu kontekstowego modułu wybierz opcję Show on New Diagram. Zapisz diagram pod nazwą WYPOZY0010. 4. Pierwsza generacja modułu: 4.1. Z menu kontekstowego modułu wybierz opcję Generate. 4.2. Ustaw następujące własności: Generate Option: Form, Post Generation: Commit. 4.3. W dialogu generacji nacisnij przycisk Options ustawianie zaawansowanych własności generacji, następnie ustaw wymienione poniŝej własności: zakładka Form Options: Destination of generated files: c:\temp zakładka Compile: Compile Form/Menu: Yes Form Executable From Binary Destination: c:\temp Zakładka Run: zlikwiduj zaznaczenie opcji Run form automatically. 4.4. Uruchom generację naciśnij przycisk Start. Po pomyślnym zakończeniu generacji potwierdź komunikat w wyświetlonym oknie dialogowym. 5. Uruchomienie wygenerowanego modułu: 5.1. Uruchom serwer aplikacji: wykonaj polecenie Start OC4J Instance z grupy Oracle menu Programy. 5.2. Uruchom narzędzie do testowania aplikacji: wykonaj polecenie Run a Form on the Web. Uwaga! Narzędzie działa poprawnie jedynie w Internet Explorer. 5.3. W polu Form wskaŝ pełną ścieŝkę do pliku zidentyfikowanie_klienta.fmx (c:\temp\zidentyfikowanie_klienta.fmx). 5.4. W polu Web port wpisz numer portu, na którym działa serwer aplikacji. Uwaga! Numer portu moŝna odczytać z pliku default-web-site.xml, znajdującego się w podkatalogu j2ee\devsuite\config katalogu instalacyjnego Oracle Developer Suite. 5.5. Naciśnij przycisk Run form. 5.6. Podaj parametry połączenia z bazą danych, sprawdź działanie wygenerowanej aplikacji. Spróbuj dodać dane opisujące kilku klientów. 5.7. Zamknij formularz, powróć do narzędzia Design Editor. 6. Dostosowywanie interfejsu uŝytkownika aplikacji: 6.1. Przełącz diagram aplikacji do widoku interfejsu uŝytkownika menu View-> Display View. 6.2. Zmień tytuł okna aplikacji na Lista klientów wypoŝyczalni. 6.3. Zmień nagłówek bloku, wyświetlającego dane klientów, na Klienci. 6.4. Ukryj pole Id ustaw własność Display na wartość No. 2
6.5. Popraw opisy pozostałych pól. 6.6. Zmień kolejność wyświetlania pól, ustawiając własność Usage Sequence lub przeciągając pola w odpowiednie miejsce. 6.7. Określ sposób sortowanie danych w aplikacji: ustaw własności Order By Sequence dla pól Nazwisko i Imię. 6.8. Zmień sposób rozmieszczenia rekordów w aplikacji: wyświetl własności komponentu (podwójne kliknięcie na szary prostokąt na diagramie aplikacji), ustaw opcję Layout Style: Tabular, Rows Displayed: 10, Overflow: Overflow Area Right. 6.9. Ponownie wygeneruj i uruchom aplikację, zaobserwuj dokonane zmiany. Spróbuj zmienić wartości własności z punktu 6.8 i zaobserwuj zmiany w interfejsie aplikacji. 7. Własności zaawansowane: 7.1. Dodanie paska narzędziowego do aplikacji: wyświetl zbiór preferencji generacji systemu aplikacji menu kontekstowe systemu aplikacji, pozycja Edit generator preferences. wybierz Forms Generator z listy Product. rozwiń gałąź Form/Menu Attachment ustaw opcję Name of menu module if not implicit menu generation na wartość DEFAULT&SMARTBAR. 7.2. Automatyczne zapytanie przy uruchomieniu formularza: w preferencjach generacji systemu aplikacji (patrz podpunkt 7.1) rozwiń gałąź Navigation ustaw wartość opcji Use primary key for recall na wartość All forms. wyświet własności komponentu projektowanej aplikacji ustaw własność Autoquery? na wartość Yes. 7.3. Zdefiniowane wskaźnika bieŝącego rekordu: w preferencjach generacji (patrz podpunkt 7.1) rozwiń gałąź End User Interface ustaw wartość opcji Current Rekord Indicator Settings na wartość All Blocks uruchom narzędzie Form Builder (z menu Run->Oracle Forms). otwórz plik szablonu ofgwebt.fmb z podkatalogu cgenf61\admin katalogu instalacyjnego Oracle Developer Suite, dodaj do formularza atrybut wizualny o nazwie CG$CURRENT_RECORD, określ opcje wyróŝnienia bieŝącego rekordu, zapisz szablon, zamknij Form Builder i wróć do Design Editor. 7.4. Wygeneruj i uruchom aplikację, zaobserwuj dokonane zmiany. Generacja aplikacji Ewidencja artystów Aplikacja Ewidencja artystów będzie implementowała część funkcjonalności funkcji Ewidencja nowych nośników (ENN), dotyczącą moŝliwości ewidencji artystów, będących aktorami lub reŝyserami. Do diagramu hierarchii funkcji modelowanego systemu dodamy nową funkcję o nazwie Ewidencja artystów (EA) jako podfunkcję funkcji Ewidencja nowych nośników (ENN). 1. Kroki wstępne: 1.1. Uruchom narzędzie Function Hierarchy Diagrammer i otwórz diagram modelowanego systemu. 1.2. Dodaj nową funkcję Ewidencja artystów (EA) jako podfunkcję funkcji Ewidencja nowych nośników (ENN). 3
1.3. Funkcja będzie uŝywać encji Artysta, Aktor i ReŜyser, wykonując operacje: Create, Retrieve, Update i Delete. Funkcja korzysta ze wszystkich atrybutów wymienionych encji, wykonując na nich operacje insert, retrieve, update i nullify. 1.4. Zapisz zmiany i zamknij narzędzie. 2. Transformacja funkcji do definicji modułu: 2.1. Uruchom narzędzie Application Design Transformer. 2.2. Wybierz właściwy obszar roboczy. 2.3. Zaznacz opcję Modules w grupie Generate Options. 2.4. WskaŜ funkcję do transformacji: Start function: EA, ustaw Module Prefix na WYPOZY, Start Number na 20 (wygenerowany moduł będzie nosił nazwę WYPOZY0020). 2.5. Rozpocznij transformację naciśnij przycisk Generate. 2.6. Po zakończeniu transformacji zamknij narzędzie. 3. Ustawianie podstawowych własności modułu. 3.1. Uruchom narzędzie Design Editor i przejdź na zakładkę Modules. 3.2. Ustaw tryb wyświetlania własności na paletę własności: menu Options -> Use Property Palette. 3.3. Rozwiń poddrzewo Modules w hierarchii obiektów projektowanego systemu, znajdź gałąź modułu WYPOZY0020. 3.4. Otwórz okno własności modułu (dwukrotne kliknięcie na ikonę modułu). 3.5. Ustaw wartość własności Candidate na No. 3.6. Sprawdź, czy wartość własności Language to SYSTEM FOLDER/Oracle Forms. Jeśli nie, ustaw odpowiednią wartość. 3.7. Utwórz diagram modułu z menu kontekstowego modułu wybierz opcję Show on New Diagram. Zapisz diagram pod nazwą WYPOZY0020. 4. Doprowadź aplikację do stanu zaprezentowanego na rysunku 1. Rysunek 1. Interfejs aplikacji "Ewidencja artystów" 5. Zastosowanie zaawansowanych elementów interfejsu uŝytkownika. 5.1. Otwórz diagram modułu, przełącz się do widoku interfejsu. 5.2. Wyświetl własności pola Type, zmień wartości następujących własności:. Prompt: Rodzaj 4
Display Type: Pop list Show Meaning: Meaning Only 5.3. Wyświetl własności pola Data urodzenia, zmień wartości następujących własności: Width: 10 Format Mask: dd.mm.yyyy 5.4. Wygeneruj formularz i sprawdź jego działanie. Generacja aplikacji Ewidencja filmów i nośników Aplikacja Ewidencja filmów i nośników będzie implementowała część funkcjonalności funkcji Ewidencja nowych nośników (ENN), dotyczącą moŝliwości ewidencji zakupionych przez wypoŝyczalnię nośników z filmami. Będzie to aplikacja złoŝona dla danego filmu będzie wyświetlać jego obsadę (listę aktorów) oraz listę nośników z filmem. Do diagramu hierarchii funkcji modelowanego systemu dodamy nową funkcję o nazwie Ewidencja filmów i nośników (EFN) jako kolejną podfunkcję funkcji Ewidencja nowych nośników (ENN). 1. Kroki wstępne: 1.1. Uruchom narzędzie Function Hierarchy Diagrammer i otwórz diagram modelowanego systemu. 1.2. Dodaj nową funkcję Ewidencja filmów i nośników (EFN) jako podfunkcję funkcji Ewidencja nowych nośników (ENN). 1.3. Funkcja będzie uŝywać encji Nośnik, Film i Rola, wykonując operacje: Create, Retrieve, Update i Delete. Funkcja korzysta ze wszystkich atrybutów wymienionych encji, wykonując na nich operacje insert, retrieve, update i nullify. Z kolei na encjach Artysta, Aktor i ReŜyser i ich atrybutach funkcja realizuje jedynie operację retrieve. 1.4. Zapisz zmiany i zamknij narzędzie. 2. Transformacja funkcji do definicji modułu: 2.1. Uruchom narzędzie Application Design Transformer. 2.2. Wybierz właściwy obszar roboczy. 2.3. Zaznacz opcję Modules w grupie Generate Options. 2.4. WskaŜ funkcję do transformacji: Start function: EFN, ustawić Module Prefix na WYPOZY, Start Number na 30 (wygenerowany moduł będzie nosił nazwę WYPOZY0030). 2.5. Rozpocznij transformację nacisnij przycisk Generate. 2.6. Po zakończeniu generacji zamknij narzędzie. 3. Ustawianie podstawowych własności modułu: 3.1. Uruchom narzędzie Design Editor i przejdź na zakładkę Modules. 3.2. Ustaw tryb wyświetlania własności na paletę własności: menu Options -> Use Property Palette. 3.3. Rozwiń poddrzewo Modules w hierarchii obiektów projektowanego systemu, znajdź gałąź modułu WYPOZY0030. 3.4. Otwórz okno własności modułu (dwukrotne kliknięcie na ikonę modułu). 3.5. Ustaw wartość własności Candidate na No. 3.6. Zmień wartość opcji Implementation Name na EFN (uzyskamy przez to pliki formularza o krótkiej nazwie). 3.7. Sprawdź, czy wartość własności Language to SYSTEM FOLDER/Oracle Forms. Jeśli nie, ustaw odpowiednią wartość. 5
3.8. Utwórz diagram modułu z menu kontekstowego modułu wybrać opcję Show on New Diagram. Zapisz diagram pod nazwą WYPOZY0030. 4. Projekt interfejsu aplikacji: 4.1. W widoku danych diagramu modułu ustaw komponenty w następującej kolejności: Filmy, Role, Artysci, Nośniki (uŝyj techniki drag&drop). 4.2. Wygeneruj relacje między komponentami z menu Utilities wybierz pozycję Default links, z oknie dialogowym zaznacz opcję Find Parents i naciśnij przycisk OK. 4.3. Przeciągnij Ŝółty prostokąt, wchodzący w skład komponentu Artysci na prawo od komponentu Role. Rysunek 2 pokazuje postać diagramu modułu po opisanych operacjach. Rysunek 2. Diagram modułu "Ewidencja filmów i nośników" 4.4. Przejdź do widoku interfejsu, określ kolejność wyświetlania pól, opisy pól, tytuły okien i bloków danych. Ukryj wszystkie pola wyświetlające identyfikatory. Rysunek 3 przedstawia diagram po modyfikacjach. 6
Rysunek 3. Diagram po modyfikacja z p. 4.4. 4.5. Ustaw rozmieszczenie rekordów poszczególnych komponentów (własności Layout Style, Rows Displayed, Overflow). 4.6. Zmień typy pól Gatunek, Rodzaj i Typ na pole listy (pop list). 4.7. Zmień typ pola Czy wypoŝyczony? na pole wyboru (check box). 4.8. Ustaw automatyczne wykonywanie zapytania dla komponentu Filmy. 4.9. Wygeneruj i uruchom formularz. Sprawdź jego działanie. 5. Definiowanie list wartości do wyboru aktorów dla obsady filmu: 5.1. Ustaw własności Insert i Update pola Nazwisko na wartość Yes. 5.2. Przejdź do widoku danych diagramu, zaznacz komponent Role i z menu Utilities wybierz pozycję Default List of Values. W dialogu naciśnij przycisk Start. 5.3. Zmień wartość własności Used for wygenerowanej listy wartości na wartość Query and Data Entry. 5.4. Wygeneruj i uruchom formularz. Sprawdź, czy w polu Nazwisko po naciśnięciu klawiszy Ctrl + L uruchamia się lista z aktorami. Generacja raportu Wydruk listy nośników Aplikacja Wydruk listy nośników będzie raportem, dającym moŝliwość wydrukowania listy nośników z filmami na drukarce. Do diagramu hierarchii funkcji modelowanego systemu dodamy nową funkcję o nazwie Wydruk listy nośników (WLN) jako kolejną podfunkcję funkcji Ewidencja nowych nośników (ENN). 1. Kroki wstępne: 7
1.1. Uruchom narzędzie Function Hierarchy Diagrammer i otworzyć diagram modelowanego systemu. 1.2. Dodaj funkcję Wydruk listy nośników (WLN) jako podfunkcję funkcji Ewidencja nowych nośników (ENN). 1.3. Funkcja będzie uŝywać encji Nośnik i Film, wykonując tylko operację Retrieve. Funkcja korzysta ze wszystkich atrybutów wymienionych encji, wykonując na nich operację retrieve. 1.4. Zapisz zmiany i zamknij narzędzie. 2. Transformacja funkcji do definicji modułu: 2.1. Uruchom narzędzie Application Design Transformer. 2.2. Wybierz właściwy obszar roboczy. 2.3. Zaznacz opcję Modules w grupie Generate Options. 2.4. WskaŜ funkcję do transformacji: Start function: WLN, ustawić Module Prefix na WYPOZY, Start Number na 40 (wygenerowany moduł będzie nosił nazwę WYPOZY0040). 2.5. Rozpocznij transformację naciśnij przycisk Generate. 2.6. Po zakończeniu transformacji zamknij narzędzie. 3. Ustawianie podstawowych własności modułu: 3.1. Uruchom narzędzie Design Editor i przejść na zakładkę Modules. 3.2. Ustaw tryb wyświetlania własności na paletę własności: menu Options -> Use Property Palette. 3.3. Rozwiń poddrzewo Modules w hierarchii obiektów projektowanego systemu, znajdź gałąź modułu WYPOZY0040. 3.4. Otwórz okno własności modułu (dwukrotne kliknięcie na ikonę modułu). 3.5. Ustaw wartość własności Candidate na No. 3.6. Zmień wartość opcji Implementation Name na WLN (uzyskamy przez to pliki formularza o krótkiej nazwie). 3.7. Sprawdź, czy wartość własności Language to SYSTEM FOLDER/Oracle Reports. Jeśli nie, ustaw odpowiednią wartość. 3.8. Utwórz diagram modułu z menu kontekstowego modułu wybierz opcję Show on New Diagram. Zapisz diagram pod nazwą WYPOZY0040. 4. Projekt interfejsu aplikacji: 4.1. W widoku danych diagramu modułu ustaw komponenty w następującej kolejności: Filmy, Nośniki (uŝyj techniki drag&drop). 4.2. Wygeneruj relacje między komponentami z menu Utilities wybierz pozycję Default links, z oknie dialogowym zaznacz opcję Find Parents i naciśnij przycisk OK. 4.3. Przejdź do widoku interfejsu diagramu. Ukryj identyfikator filmu, dostosuj kolejność pól, popraw opisy pól, tytuły raportu i bloków. Rysunek 4 przedstawia wygląd diagramu aplikacji. 8
Rysunek 4. Diagram modułu "Wydruk listy nośników" 4.4. Ustaw własność Show meaning pól Gatunek, Typ i Czy wypoŝyczony? na Meaning only. 4.5. Spróbuj wygenerować moduł. Przed pierwszą generacją wyświetl opcje generacji (przycisk Options w dialogu generacji) i ustaw własność Destination of generated files na c:\temp. 5. Uruchomienie modułu: 5.1. Uruchom narzędzie Report Builder (menu Run->Oracle Reports). 5.2. Wybierz opcję Open existing report, w oknie dialogowym wskaŝ plik c:\temp\wln.rdf. 5.3. Z menu Program wybierz pozycję Run Paper Layout. 9