Tworzenie aplikacji J2EE w oparciu o Oracle Application Development Framework (ADF)
June 10, 2017 | Author: Wacława Baranowska | Category: N/A
Short Description
1 352 Tworzenie aplikacji J2EE w oparciu o Oracle Application Development Framework (ADF)2 Plan prezentacji 353 Architek...
Description
352
Tworzenie aplikacji J2EE w oparciu o Oracle Application Development Framework (ADF)
353
Plan prezentacji • Architektura i technologie składowe Oracle ADF • ADF Business Components jako warstwa logiki biznesowej • Tworzenie aplikacji webowych w technologiach: – ADF Business Components + JSP + Struts – ADF Business Components + JSF + ADF Faces
• Podsumowanie
354
Architektura Oracle ADF
Oracle Application Development Framework (ADF)
355
• Ukrywa złożoność J2EE oferując wizualne środowisko projektowe • Zwiększa produktywność programisty – typowa funkcjonalność jest już zaimplementowana – programiści skupiają się na kodzie specyficznym dla danej aplikacji
• Oparty o uznane wzorce projektowe dla J2EE – np. architektura Model-View-Controller dla aplikacji webowych
• Jest wynikiem ewolucji i integracji technologii dostępnych we wcześniejszych wersjach JDeveloper – BC4J -> ADF Business Components, UIX -> ADF Faces
356
Zalety Oracle ADF • Dostępność narzędzia wspierającego framework: JDeveloper 10g • Swoboda wyboru technologii – ADF dla każdej z warstw wspiera różne technologie
• Kompleksowość oferowanych rozwiązań – Obejmuje wszystkie warstwy aplikacji – Uwzględnia wszystkie fazy rozwoju oprogramowania
• Niezależność od platformy – Możliwość instalacji na dowolnym serwerze J2EE – JDeveloper oferuje kreator instalacji ADF runtime dla popularnych serwerów J2EE
357
Warstwy Oracle ADF Web & Wireless Clients
Rich Clients
Controller Model Business Services
• Business Services – warstwa oferująca dostęp do różnych źródeł danych i obsługująca logikę biznesową • Model – warstwa abstrakcji zapewniająca spójne mechanizmy współpracy warstw View i Controller z różnymi implementacjami Business Services • Controller –obsługuje przepływ sterowania w aplikacji webowej • View – dostarcza interfejs użytkownika
358
Architektura Oracle ADF
* Schemat z Oracle ADF Developer’s Guide
359
Moduły Oracle ADF • Oracle ADF Model – Kluczowy element ADF – Oferuje ujednolicone podejście do deklaratywnego wiązania różnych interfejsów użytkownika z różnymi usługami biznesowymi z różnymi – Implementuje „Data Control” – specyfikację JSR-227 dotyczącą warstwy abstrakcji usług biznesowych
• Oracle ADF Controller – Integruje Struts i JSF z Oracle ADF Model
• Oracle ADF Faces – Biblioteka komponentów JSF
• Oracle ADF Swing – Rozszerzenie ADF Model dla aplikacji Swing
• Oracle ADF Business Components – Upraszcza implementację usług biznesowych, szczególnie twórcom aplikacji korzystających wcześniej z 4GL (np. Oracle Forms)
Szablony aplikacji w JDeveloper 10g (10.1.3) • Szablon rozumiany jako wybór technologii – Zwiększenie przejrzystości przez ograniczenie wyboru – Szablony dostarczane jedynie dla wygody
• Gotowe szablony: – – – – – – –
Web Application: JSF, EJB, Toplink Web Application: JSF, ADF Business Components Web Application: JSF, EJB Web Application: JSP, Struts, ADF Business Components Java Application: ADF Swing, ADF Business Components Java Application: Java, Swing/JFC No Template: wszystkie technologie
360
361
ADF – Zalecane zestawy technologii • Zalecany szablon dla programistów J2EE i nowych aplikacji: – Business Services: EJB Session + Oracle Toplink – Controller: JSF – View: JSF + ADF Faces
• Zalecany szablon dla programistów migrujących z Oracle Forms: – Business Services: ADF Business Components – Controller: JSF – View: JSF +ADF Faces
• W poprzednich wersjach JDevelopera wybrane szablony były oznaczone jako „domyślne” – 10.1.2: Web Application [Default] (JSP, Struts, ADF BC) – 10.1.3 Preview & EA: Web Application [Default] (JSF, JSP, ADF BC) – 10.1.3: brak wskazania domyślnych szablonów
362
ADF – Przykładowa aplikacja Model Controller
View
JDeveloper 10g: Kroki tworzenia aplikacji webowej opartej o ADF 1) Utworzenie aplikacji – Typowo z wybraniem jednego z szablonów
2) Zaprojektowanie warstwy usług biznesowych dla modelu – Gdy usługi biznesowe w innej technologii niż ADF Business Components to dodatkowo utworzenie kontrolek danych
3) Zaprojektowanie przepływu sterowania dla kontrolera 4) Utworzenie stron - widoków
363
364
ADF Business Components jako warstwa logiki biznesowej
365
Tworzenie nowej aplikacji wg szablonu obejmującego ADF Business Components • Wskazanie nazwy aplikacji, katalogu i szablonu
Powstają 2 projekty: Model i ViewController
Tworzenie komponentów biznesowych opartych o tabele bazy danych (1/6) • Uruchomienie kreatora
366
Tworzenie komponentów biznesowych opartych o tabele bazy danych (2/6) • Wybór połączenia z bazą danych
367
• Wybór tabel, które mają być reprezentowane jako obiekty encyjne
Tworzenie komponentów biznesowych opartych o tabele bazy danych (3/6) • Wybór obiektów encyjnych, dla których mają zostać utworzone modyfikowalne widoki
• Wybór obiektów encyjnych, dla których mają zostać utworzone widoki tylko do odczytu
368
Tworzenie komponentów biznesowych opartych o tabele bazy danych (4/6)
369
• Opcjonalne utworzenie domyślnego modułu aplikacji – Domyślny moduł aplikacji zawiera wszystkie obiekty encyjne i widoki – Domyślny moduł aplikacji umożliwia przetestowanie utworzonych komponentów – Na potrzeby aplikacji zalecane jest utworzenie specjalizowanych („odchudzonych”) modułów aplikacji
Tworzenie komponentów biznesowych opartych o tabele bazy danych (5/6) • Opcjonalne utworzenie diagramu UML komponentów biznesowych
Obiekty encyjne
Widoki
Moduł aplikacji
370
Tworzenie komponentów biznesowych opartych o tabele bazy danych (6/6)
371
• Efekt działania kreatora: – Obiekty encyjne, widoki i opcjonalnie domyślny moduł aplikacji – Asocjacje między obiektami encyjnymi dla encji powstałych z tabel powiązanych relacją klucza obcego – Linki między widokami prezentującymi dane z obiektów encyjnych powiązanych asocjacjami
372
Rodzaje komponentów biznesowych • Obiekty encyjne (Entity Objects) – Reprezentują dane – Odpowiadają za walidację i trwałość danych
• Widoki (View Objects) – Udostępniają dane dla aplikacji – Filtrują i zmieniają sposób prezentacji danych
• Moduły aplikacji (Application Modules) – Publikują widoki dla aplikacji – Odpowiadają za zarządzanie transakcjami
373
Obiekty encyjne (Entity Objects) • Reprezentują model biznesowy: – Dane – Reguły biznesowe: walidacja danych
• Jeden obiekt encyjny odpowiada jednej tabeli • Obiekty encyjne mogą być powiązane asocjacjami – Reprezentującymi zależności klucza obcego – Umożliwiającymi dostęp do związanych encji
374
Obiekty encyjne - pliki • Generowane domyślnie: – Emp.xml (obowiązkowy) - metadane o komponencie – EmpImpl.java (opcjonalny) - dziedziczy z EntityImpl • Reprezentuje wiersze • Zawiera metody setter/getter dla atrybutów
• Generowane opcjonalnie: – EmpDefImpl.java – dziedziczy z EntityDefImpl • Opisuje wszystkie instancje encji • Wykorzystywana gdy konieczne modyfikacje metadanych w trakcie pracy aplikacji
– EmpCollImpl.java – dziedziczy z EntityCollImpl • Reprezentuje cache dla wierszy encji • Niegenerowana gdyż domyślny mechanizm jest odpowiedni
375
Wybór generowanych plików • W ramach edycji obiektu encyjnego można zadecydować o generacji opcjonalnych plików Java • Dla klasy EntityImpl można wskazać, które metody mają się w niej pojawić – Domyślnie metody setter/getter dla atrybutów – Jeśli chcemy nadawać domyślne wartości atrybutom należy wskazać metodę create()
ADF BC – Pobieranie identyfikatorów z sekwencji (1/2) • Utworzenie w bazie danych sekwencji i wyzwalacza CREATE SEQUENCE emp_seq START WITH 8001 INCREMENT BY 1;
CREATE TRIGGER empno_trigger BEFORE INSERT ON emp FOR EACH ROW BEGIN IF (:NEW.empno IS NULL) THEN SELECT emp_seq.NEXTVAL INTO :NEW.empno FROM dual; END IF; END; /
376
ADF BC – Pobieranie identyfikatorów z sekwencji (2/2) • Zmiana typu atrybutu obiektu encyjnego na DBSequence
377
378
ADF BC – Walidacja danych (1/2) • Na poziomie obiektu encyjnego – – – –
CompareValidator ListValidator RangeValidator MethodValidator
379
ADF BC – Walidacja danych (2/2) • Walidacja poprzez domeny – Utworzenie nowego typu danych – domeny • Wymuszającego odpowiedni format • Specyfikującego dopuszczalne wartości • Format/dopuszczalne wartości określa metoda validate(), której zadaniem jest generowanie wyjątku przy błędnych danych
– Wykorzystanie domeny jako typu danych dla atrybutu • Mechanizm dla walidacji różnych atrybutów różnych encji
380
Asocjacje (1/2) • Umożliwiają dostęp do powiązanych obiektów encyjnych (poprzez opcjonalne metody dostępu) • Oparte lub nie o ograniczenia w bazie danych • Typy asocjacji: – Związek asocjacji – encje powiązane luźno, mogą istnieć niezależnie – Związek kompozycji – encja docelowa w pełni zależna od źródłowej, nie może wystąpienie encji docelowej istnieć bez powiązania z wystąpieniem encji źródłowej • Usunięcie wystąpienia encji źródłowej powoduje usunięcie powiązanych z nią wystąpień encji docelowej
381
Asocjacje (2/2)
• Metody dostępu: – W Emp: setDept(...), getDept() – zwraca DeptImpl – W Dept: getEmp() – zwraca RowIterator
382
Widoki (View Objects) • Udostępniają dane aplikacjom • Można je do stroić do wymagań aplikacji poprzez: – – – –
Wybór atrybutów Dodanie atrybutów wyliczeniowych Dodanie klauzul WHERE i ORDER BY Oparcie o kilka obiektów encyjnych (JOIN)
• Mogą być powiązane linkami reprezentującymi zależności Master-Detail
383
Widoki - pliki • Generowane domyślnie: – EmpView.xml (obowiązkowy) – metadane o komponencie – EmpViewImpl.java (opcjonalny) - dziedziczy z ViewObjectImpl • Reprezentuje widok • Zawiera dodane metody biznesowe
• Generowane opcjonalnie: – EmpViewRowImpl.java (opcjonalny) – dziedziczy z ViewRowImpl • Reprezentuje wiersze widoku • Zawiera metody setter/getter dla atrybutów
– EmpDefImpl.java – dziedziczy z ViewDefImpl • reprezentuje metadane w trakcie pracy aplikacji
View Objects a widoki interfejsu użytkownika
384
• ViewObjects stanowią część warstwy Business Services! – Typowo View Object jest wykorzystywany jako źródło danych dla strony w warstwie View – View Object może być również wykorzystany do wydawania "w tle" pomocniczego zapytania na żądanie!
385
Edycja właściwości widoków • Modyfikacja klauzul WHERE i ORDER BY
W trybie eksperckim możliwa swobodna edycja zapytania, ale problem z mapowaniem atrybutów
Możliwość parametryzacji (styl ? Lub :1)
386
Atrybuty wyliczeniowe • Przykład: całkowite zarobki pracownika (SAL + COMM)
387
Widoki tylko do odczytu • Nieoparte o encje tylko o jawnie podane zapytanie SQL • Jeśli widok nie będzie służył do modyfikacji danych, (np. widok dla LOV) oparcie go o zapytanie SQL z pominięciem encji zwiększa efektywność
Współpraca widoków i obiektów encyjnych • Odczyt danych – Odczyt bezpośrednio z bazy danych – Atrybuty bazowe buforowane i walidowane w encjach
BD
EO
VO
getXXX()
• Modyfikacja danych – Widok modyfikuje cache obiektu encyjnego – Obiekt encyjny modyfikuje stan bazy danych
BD
EO
setXXX()
VO
388
389
Moduły aplikacji (Application Modules) • Publikują widoki dla aplikacji – Aplikacja "łączy się" z modułem apl. – Widok aby był dostępny musi być w module aplikacji
• Obsługują transakcje • Każdy moduł powinien zawierać komponenty (encje i widoki) niezbędne do realizacji konkretnego zadania – Im mniejszy moduł tym większa efektywność
• Moduły można zagnieżdżać (modularność!) – Za obsługę transakcji odpowiada moduł nadrzędny
390
Moduły aplikacji - pliki • Generowane domyślnie: – AppModule.xml (obowiązkowy) - metadane o komponencie – AppModuleImpl.java (opcjonalny) - dziedziczy z ApplicationModuleImpl • Reprezentuje moduł • Zawiera dodane metody biznesowe
• Generowany opcjonalnie: – AppModuleDefImpl.java – dziedziczy z ApplicationModuleDefImpl • reprezentuje metadane w trakcie pracy aplikacji
391
Edycja modułu aplikacji • Dodawanie/usuwanie komponentów
• Ewentualne dodawanie modułów zagnieżdżonych
392
Dodawanie metod biznesowych • Do realizacji specyficznych zadań można utworzyć dodatkowe metody biznesowe • Należy przemyśleć, na jakim poziomie metoda powinna być dodana • Na poziomie obiektów encyjnych: – Metody wykorzystywane w walidacji, nieudostępniane klientom
• Na poziomie obiektów widoków: – Metody użyteczne dla wszystkich klientów korzystających z danego widoku
• Na poziomie modułów aplikacji: – Metody specyficzne dla modułu aplikacji
Testowanie komponentów biznesowych w JDeveloper (1/2) • JDeveloper umożliwia przetestowanie komponentów biznesowych w oderwaniu od konkretnego interfejsu narzędziem BC Browser – Ułatwia lokalizację błędów – Umożliwia przeglądanie i edycję poprzez widoki, obserwację działania linków między widokami – Nie pozwala na uruchamianie dodanych metod
393
Testowanie komponentów biznesowych w JDeveloper (2/2)
394
Przeglądanie widoku w oddzielnym oknie
395
Tworzenie aplikacji webowej MVC opartej o komponenty biznesowe, JSP i Struts
396
Wykorzystywane technologie
* Schemat z Oracle ADF Developer’s Guide
Struts: Diagram przepływu miedzy stronami • JDeveloper 10g ułatwia korzystanie ze Struts poprzez diagramy przepływu sterowania • ADF oferuje 2 niestandardowe komponenty: – DataPage – kombinacja DataAction i PageForward; dla stron korzystających z danych modelu – DataAction – akcja wywołująca metody z warstwy Business Services
397
398
Tworzenie stron JSP – widoków (1/8) • Dwuklik na ikonie strony
• Dodawanie komponentów ADF reprezentujących dane Po umieszczeniu (drag&drop) elementu modelu na stronie, pojawia się okienko z wyborem sposobu prezentacji
399
Tworzenie stron JSP – widoków (2/8) • Źródło JSP ... ... ...
400
Tworzenie stron JSP – widoków (3/8) • Uruchomienie – Koniecznie z diagramu Struts! (aby poprzez kontroler)
• Efekt działania
401
Tworzenie stron JSP – widoków (4/8) • Dodanie przycisków do nawigacji po wynikach zapytania
402
Tworzenie stron JSP – widoków (5/8) • Przyciski nawigacyjne – kod i efekt działania
Wskaźnik bieżącego wiersza
403
Tworzenie stron JSP – widoków (6/8) • Formatka do edycji
404
Tworzenie stron JSP – widoków (7/8) • Zmiana własności przycisków – Etykiety – Aktywność
• Definicja nawigacji w odpowiedzi na zdarzenia – Predefiniowane np. Commit, Rollback – Aplikacji np. Edit
405
Tworzenie stron JSP – widoków (8/8) • Zmiana bieżącego wiersza • Generacja zdarzeń aplikacji
Ręczna edycja Edit
Efekty walidacji na poziomie komponentów biznesowych
406
ApplicationResources.properties ... errors.header= Niepoprawne dane Musisz poprawi\u0107 poni\u017Csze b\u0142\u0119dy\: ...
...
editEmp.jsp
407
Tworzenie formularzy master-detail • Strony oparte o View Objects powiązane linkiem Dla /displayDept Dla /displayEmp
Link "Details" należy oprogramować by generował zdarzenie "Details" i zmieniał bieżący wiersz
408
Tworzenie aplikacji webowej MVC opartej o komponenty biznesowe, JSF i ADF Faces
409
Wykorzystywane technologie
* Schemat z Oracle ADF Developer’s Guide
410
Czym jest ADF Faces? • Technologia tworzenia widoków w Oracle Application Development Framework (ADF) • Bogata biblioteka komponentów interfejsu użytkownika oparta o JSF • Port ADF UIX – – – – –
Technologii widoków specyficznej dla Oracle (obecnie zarzuconej) Cechującej się bogactwem zaawansowanych komponentów Wspierającej różne typy urządzeń Wykorzystywanej przez Oracle (np. Enterprise Manager) Wraz z Oracle JDeveloper 10g (10.1.3) API zostało „zamrożone”
• Współpracują z implementacjami JSF – JSF RI 1.1 lub nowsza – Apache MyFaces 1.0.8 lub nowsza
• W styczniu 2006 podarowane Apache Software Foundation • Wspierane przez wizualne edytory w JDeveloper 10.1.3 – Oracle pracuje również nad pełnym wsparciem ADF Faces w Eclipse
Zalety ADF Faces w porównaniu ze standardowymi JSF • Bogaty zestaw zaawansowanych komponentów interfejsu użytkownika, konwerterów i walidatorów – W tym konwertery/walidatory wykorzystujące JavaScript do wczesnej walidacji po stronie klienta
• Wsparcie dla mechanizmu file upload • Wsparcie dla okienek dialogowych • Zastępniki dla standardowych znaczników oferujące większą funkcjonalność • Większa wydajność – Np. w zakresie zachowywania stanu (po stronie klienta i serwera)
• Integracja z Oracle ADF • Partial Page Rendering (w stylu AJAX!) UWAGA: Znaczniki ADF Faces można mieszać (z pewnymi ograniczeniami) ze standardowymi
411
412
ADF Faces – Przykłady komponentów
< af:chooseDate >
413
Tworzenie stron JSF – widoków (1/5) • Tworzenie strony-widoku JSF JSP + ADF Faces – Edytor wizualny – Elementy z modelu wybierane z Data Control Palette
• Dla kontrolek reprezentujących View Objects z ADF Business Components, oprócz opcji prezentacji pojedynczych widoków (jak dla JSP), możliwość prezentacji widoków master-detail na jednej stonie
Widok zagnieżdżony może stanowić model dla formularza master-detail
414
Tworzenie stron JSF – widoków (2/5) • Wybór sposobu prezentacji danych z modelu
Po umieszczeniu (drag&drop) elementu modelu na stronie, pojawia się okienko z wyborem sposobu prezentacji
415
Tworzenie stron JSF – widoków (3/5) • Wynik działania kreatora (edytor wizualny)
416
Tworzenie stron JSF – widoków (4/5) • Wynik działania kreatora (fragment kodu źródłowego strony) Odwołania do modelu poprzez bindings ...
417
Tworzenie stron JSF – widoków (5/5) • Działająca aplikacja
418
Podsumowanie
419
Oracle ADF - Podsumowanie • Odpowiedni szkielet aplikacji (framework) jest kluczem do osiągnięcia satysfakcjonującej produktywności projektantów aplikacji J2EE • Zalety Oracle ADF: – – – –
Oparty o uznane wzorce projektowe i technologie Daje swobodę wyboru technologii Niezależny od platformy (przenaszalny) Wspierany przez wygodne narzędzie – JDeveloper 10g
• Dwa zalecane przez Oracle zestawy technologii: – Dla programistów J2EE: EJB+Toplink, JSF, ADF Faces – Dla programistów migrujących z Oracle Forms: ADF Business Components, JSF, ADF Faces
View more...
Comments