撰文/前進國際 技術顧問服務處
Oracle 新ㄧ代 Application 開發框架 ADF (Application Development Framework,以下皆簡稱為ADF),使開發人員能夠從零開始構建 J2EE 應用程序和 WEB 服務。因為 Oracle ADF 的高度整合性及他所提供的優秀技術及豐富的內建元件,使得開發 WEB 應用 Application 變得十分簡單方便,從而大大提高了 Application 的開發效率 ,具有很高的應用價值。
ADF 是 Oracle 公司為簡化 J2EE 程序開發的復雜性專門開發的一種解決方案,ADF 通過減少實現設計模式和應用程序框架的程式碼,簡化了 J2EE 的研發難度。其優點主要體現在以下四個方面:
開發環境:大部分 J2EE 框架都沒有與之配套的開發工具,ORACLE 為 ADF 提供了 JDEVELOPER 開發工具,它和 ADF 實現了完美的結合,方便了程序的開發。
平臺獨立:ADF 能夠運行在符合 J2EE 標準的應用服務器(Weblogic ,GlassFish)。
技術選擇:對於應用程序的不同層,開發人員可以使用自己擅長的技術進行開發。
點到點的解決方案:ADF 不只關注應用程序的某一層,而是對應用程序的每一層,都提供了完整的解決方案。
Oracle ADF的架構
Oracle ADF 的架構是基于 MVC 設計模式的,其架構如圖1所示。從圖1我們可以看出,ADF 把應用程序分成了四層,下面我們分別介紹:
1) Business Service 層
Business Service 層包括三個小層(見圖1),分別是持久層(Persistent Business Objects),數據訪問層(Data Access)和接口層(ADF Application Module)。這三層建立的順序是這樣的,先建立持久層的實體對象(Entity Object),然後建立數據訪問層的視圖對象(ViewObject),最後建立接口層。其中建立持久層的實體對象主要是和數據庫的表或者同義詞對象建立關聯,數據訪問層的視圖對象(ViewObject)是基於實體層的實體對象建立的,主要是進行數據庫的訪問,而接口層是整個 Business Service 層和 Model 層的接口,在數據訪問層建立的視圖對象需要注冊到接口層中,這樣在Model層中才可以訪問。

<圖1> Oracle ADF 架構圖
2) Model 層
該層包括兩部分(見圖1),分別是 ADF Bindings 和 ADF DataControl,其中 ADF Bindings 是 ADF 提供的一種綁定技術,ADF DataConrol 是指我們已經在接口層中注冊的視圖對象(ViewObject)。這一層在實際開發中基本不需要開發者做太多的工作。
3) Controller 層
ADF 在 Controller 層中擴展了 APACHE 的 STRUTS 框架,它為 Struts 提供了一個頁面流轉圖,以簡化應用程序的開發。開發者可以簡單地拖拽 Struts 的組件到這個圖表中,這個圖表會自動地同步更新 Struts-config.XML 文件,其中我們最常用的是 DataPage 組件,該組件的作用主要是建立一個頁面,並且自動為其建立一個 DataForwardAction,假如我們有一些自定義的方法,也可以寫一個 Action,然後覆蓋 DataForwardAction。
4) View 層
在 View 層可以採用 ORACLE 的 UIX 技術,它裡面定義了大量功能強大的組件。Oracle Jdeveloper 在 View 層提供了一個可視化的 Layout 編輯器,開發者可以使用組件面板向應用程序添加可視化的組件,並可以運用屬性編輯器(Property Inspector)來定義這些組件的屬性。可視化的編輯器是和程式碼同步的,所以開發者可以選擇自己喜歡的開發方式。
ADF 應用開發過程
下面給大家簡單介紹一下 ADF 具體的實現過程,開發工具我們選擇 Oracle 的 Jdeveloper11g,因為在目前的各種開發工具中,Jdeveloper 是對 ADF 這個框架支持最好的工具,它內部直接整合了 ADF 開發時所需要的各種工具,給開發帶來很大的方便。
第一步: 在 Jdeveloper 中,建立一個工作區,工作區的名字取為 TestProject,在應用程序 Module 中,如圖2所示,按照我們上面講述的 ADF 的架構,我們先建立 Business Service 層的持久層對象,在 Model 這個工程上邊,按右鍵,然后選擇 Business Tier 下的 Business Component,選擇 EntityObject,然後出現圖3;選擇我們要的 Table(ex:EMPLOYEES),Entity Name 是我們建立的持久層對象的名字,我們把 Entity Name 命名為 Employees,Package 指定這個對象放在什麼 Model 下面。

<圖2> workspace TestProject 建立時的情況

<圖3> EntityObject 向導第一步
第二步: 建完持久層的實體對象后,我們就需要建立數據訪問層的 ViewObject。新建選擇 ViewObject 出現圖4,左邊是供我們選擇已經存在的持久層的實體對象(EntityObject),這裡面選擇剛建好的 Employees 這個實體對象。

<圖4> ViewObject 向導第二步
第三步: 需要建立 ApplicationModule,將數據訪問層的 ViewObject 注冊到 ApplicationModule 中,如圖5所示,我們選擇 EmployeesView 這個 View object,把它加入到 AppModul1 中。

<圖5> ApplicationModule 建立向導
第四步: 按照 ADF 架構,Model 層我們基本不需要作什麼工作,那我麼們下面開始建立 Controller 層,首先需要建立 View,可以是 JSF 或 JSP 的 Page,這裡我們用 JSF Page。在 adfc-config.xml 中,從右側的 component 中,可以直接選擇 View,拖拽過來,ListEmployees 是我們給定的名字,如圖6。

<圖6> adfc_config.xml 截面圖
第五步: 建完 Controller 層,需要建立展現層(View),在 ListEmployees.jspx 頁面中設置頁面 Lauout,可以對 DataControl 中的 View 進行拖拽,如圖7所示,我們選擇 Data Control 面板中的EmployeesView1,這就是我們剛才建立的 View,下面的拖拽類型選擇 Table 方式呈現就可以了。

<圖7> ListEmployees.jspx 截面圖
第六步: 我們單擊 ListEmployees.jspx 這個文件,選擇運行(圖8示),就可以直接得出所有設備的數據了,運行的效果如圖9所示。

<圖8> struts_config.xml 截面圖
<圖9> 運行效果圖