Tworzenie aplikacji J2EE w oparciu o Oracle Application Development Framework (ADF)

June 10, 2017 | Author: Wacława Baranowska | Category: N/A
Share Embed Donate


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

Copyright � 2017 SILO Inc.