openplanning

Các bước để tạo một ứng dụng ADF Fusion Web sử dụng ADF Business Components

  1. Mục tiêu của hướng dẫn
  2. Cơ sở dữ liệu
  3. Tạo ứng dụng ADF (ADF Fusion Web Application)
  4. Tạo kết nối tới cơ sở dữ liệu
  5. Tạo Application Module
  6. Tạo các Entity Object trên Model Project
  7. Tạo các View Object mặc định

1. Mục tiêu của hướng dẫn

Trong bài viết này tôi hướng dẫn bạn tạo một ứng dụng ADF Fusion Web sử dụng ADF Bussiness Components.
Một ứng dụng ADF thông thường gồm 2 project, cũng có thể coi là gồm 2 module (Model & ViewController), giống hình minh họa dưới đây:
Mục tiêu của bài viết bao gồm:
  • Tạo một ứng dụng ADF có kiểu ADF Fusion Web Application.
  • Tạo Model ProjectViewController Project.
  • Tạo kết nối (connection) vào cơ sở dữ liệu Oracle.
  • Tạo Application Module trên Model Project.
  • Tạo các Entity Object trên Model Project.
  • Tạo các View Object mặc định trên Model Project và đăng ký chúng với với Application Module.

2. Cơ sở dữ liệu

Trong bài viết này tôi sử dụng HR Schema, nó là một schema mẫu của Oracle, và có sẵn khi bạn cài đặt Oracle, nếu không có bạn có thể tạo Schema này theo hướng dẫn dưới đây:
  • HR Schema

3. Tạo ứng dụng ADF (ADF Fusion Web Application)

Trên JDeveloper chọn:
  • File/New/From Gallery...
Chọn "ADF Fusion Web Application":
Tiếp theo JDeveloper sẽ tạo ra Model Project, mặc định tên của nó là "Model", bạn có thể đặt một tên khác nếu muốn. Các công nghệ được sử dụng cho project này bao gồm:
  • Java
  • XML
  • ADF Bussiness Components.
Tiếp theo JDeveloper sẽ tạo ra ViewController Project, mặc định nó được đặt tên là "ViewController", bạn có thể đặt một tên khác nếu muốn. Các công nghệ sử dụng trong project này bao gồm:
  • ADF Faces
  • ADF Page Flow
  • Java
  • JavaServer Faces (JSF)
  • JSP and Servlets
  • Trinidad
  • XML,..
Ứng dụng của bạn đã được tạo ra, nó giống với hình minh họa dưới đây:

4. Tạo kết nối tới cơ sở dữ liệu

Tiếp theo bạn cần tạo một kết nối vào cơ sở dữ liệu Oracle, ở đây tôi sẽ kết nối vào HR Schema.
Trên JDeveloper chọn:
  • File/New/From Gallery...
Nhập các thông số để kết nối vào HR Schema. Sau đó nhấn "Test Connection" để kiểm tra kết nối. Nếu mọi việc tốt đẹp bạn sẽ nhận được một thông báo thành công (Success!).
Một Connection (kết nối) đã được tạo ra, bạn có thể nhìn thấy trên cửa sổ "Application Resources":

5. Tạo Application Module

"Application Module" là một thành phần quan trọng của ứng dụng ADF. Nó giống như một cầu nối giữa ViewController ProjectModel Project.

Application Module được đặt tại Model Project.
ViewController chỉ có thể truy cập vào các đối tượng hoặc các phương thức của Model nếu chúng được đăng ký với Application Module. (Xem hình minh họa ở trên).
Để tạo một Application Module, trên JDeveloper chọn:
  • File/New/From Gallery...
    • >> Business Tier/ADF Business Components/Application Module
Chọn kết nối (connection) là HR, mà bạn đã tạo ở bước trên.
  • Package: org.o7planning.adf.model.module
  • Name: AppModule
Tiếp theo JDeveloper gợi ý bạn tạo ra một lớp cho "Application Module". Check chọn "Generate Application Module class" và nhấn "Next" để tiếp tục:
"Application Module" của bạn đã được tạo ra:
Sau khi tạo Application Module, các đối tượng đăng ký với nó sẽ được nhìn thấy trên vùng "Data Controls", và có thể được sử dụng bởi các Project khác (Chẳng hạn như ViewController). Hiện tại Application Module ủa bạn chưa có đối tượng hoặc các phương thức nào.

6. Tạo các Entity Object trên Model Project

Tiếp theo, bạn cần tạo ra các Entity Object. Mỗi Entity Object đại diện cho một bảng trong cơ sở dữ liệu, và chúng cũng có quan hệ với nhau thông qua các Association (Liên hợp).
Trên JDeveloper chọn:
  • File/New/From Gallery...
    • >> Business Tier/ADF Business Components/Business Components from Tables...
Chọn kết nối (connection) là HR, mà bạn đã tạo ở bước trên.
Đặt tên cho package sử dụng để chứa các Entity là:
  • org.o7planning.adf.model.entities
Chọn các bảng bạn muốn tạo ra các Entity Object tương ứng cho nó.
Tiếp theo JDeveloper gợi ý bạn tạo ra các Entity-based View Object (Các View Object mặc đinh), Bạn có thể không cần tới chúng, vì vậy có thể bỏ qua, bạn có thể tạo sau, nếu cần thiết cho ứng dụng của bạn.
Tiếp theo JDeveloper gợi ý bạn tạo tiếp các "Query based View Object" (Các View Object dựa trên câu lệnh truy vấn). Bạn cũng có thể không cần tới chúng.
Tiếp theo JDeveloper gợi ý bạn đăng ký các đối tượng tạo ở bước trước với Application Module. Bạn có thể bỏ qua bước này.
Các Entity Object đã được tạo ra trên Model Project. Mỗi bảng trên cơ sở dữ liệu sẽ tương ứng với một Entity Object được tạo ra. Các Foreign Key trên cơ sở dữ liệu sẽ tương ứng với một Association (Liên hợp). Xem hình minh họa dưới đây:
Chú ý: Nếu JDeveloper tự động tạo ra thêm một Application Module khác bạn có thể xóa nó đi. Một ứng dụng ADF cho phép một hoặc nhiều Application Module.

7. Tạo các View Object mặc định

  • Entity Object là một thành phần của ứng dụng ADF BC, nó tương ứng với một bảng trên cơ sở dữ liệu.
  • View Object là một thành phần của ứng dụng ADF BC, nó tương ứng với một VIEW của cơ sở dữ liệu (Hoặc một câu lệnh truy vấn bất kỳ).
  • View Object mặc định là một View Object được tạo ra từ một Entity Object.
Việc tạo các View Object mặc định là không bắt buộc, nó phụ thuộc vào ứng dụng của bạn. Các View Object được tạo ra bạn có thể đăng ký nó với Application Module. Các View Object được đăng ký với Application Module có thể được sử dụng bởi các project khác.
Tạo View Object mặc định
Nhấn phải chuột vào một Entity Object chọn "New Default View Object":
Nhập vào:
  • Package: org.o7planning.adf.model.views
  • Name: V00Departments
View Object mặc định (V00Departments) đã được tạo ra.
Tiếp theo bạn cần tạo ra lớp Java cho View Object vừa tạo ra.
Tương tự bạn tạo tiếp View Object mặc định cho Employees.
Đăng ký View Object với Application Module:
Mở Application Module:
Lựa chọn các View Object và chuyển nó sang "Data Model".
Lúc này 2 View Object (V00Departments & V00Employees) đã được đăng ký lên Application Module, và các Project khác có thể truy cập sử dụng chúng thông qua "Data Controls":