基于Oracle ADF的應(yīng)用程序開發(fā)過程

2010-08-28 10:50:01來源:西部e網(wǎng)作者:

ADF簡介

ADF(Application Development Framework)是Oracle公司為簡化J2EE程序開發(fā)的復(fù)雜性專門開發(fā)的一種解決方案,ADF通過減少實(shí)現(xiàn)設(shè)計(jì)模式和應(yīng)用程序框架的代碼量,簡化了J2EE的研發(fā)難度。其優(yōu)點(diǎn)主要體現(xiàn)在以下四個方面:

(1) 開發(fā)環(huán)境:大部分J2EE框架都沒有與之配套的開發(fā)工具,ORACLE為ADF提供了JDEVELOPER開發(fā)工具,它和ADF實(shí)現(xiàn)了完美的結(jié)合,方便了程序的開發(fā)。

(2) 平臺獨(dú)立:ADF能夠運(yùn)行在任何符合J2EE標(biāo)準(zhǔn)的應(yīng)用服務(wù)器上。

(3) 技術(shù)選擇:對于應(yīng)用程序的不同層,開發(fā)人員可以使用自己擅長的技術(shù)進(jìn)行開發(fā)。

(4) 端到端的解決方案:ADF不只關(guān)注應(yīng)用程序的某一層,而是對應(yīng)用程序的每一層,都提供了完整的解決方案。

Oracle ADF的架構(gòu)

Oracle ADF的架構(gòu)是基于MVC設(shè)計(jì)模式的,其架構(gòu)如圖1所示。從圖1我們可以看出,ADF把應(yīng)用程序分成了四層,下面我們分別介紹:

1)Business Service 層

Business Service 層包括三個小層(見圖1),分別是持久層(Persistent Business Objects),數(shù)據(jù)訪問層(Data Access)和接口層(ADF Application Module)。這三層建立的順序是這樣的,先建立持久層的實(shí)體對象(Entity Object),然后建立數(shù)據(jù)訪問層的視圖對象(ViewObject),最后建立接口層。其中建立持久層的實(shí)體對象主要是和數(shù)據(jù)庫的表或者同義詞對象建立關(guān)聯(lián),數(shù)據(jù)訪問層的視圖對象(ViewObject)是基于實(shí)體層的實(shí)體對象建立的,主要是進(jìn)行數(shù)據(jù)庫的訪問,而接口層是整個Business Service 層和Model層的接口,在數(shù)據(jù)訪問層建立的視圖對象需要注冊到接口層中,這樣在Model層中才可以訪問。

2)Model 層

該層包括兩部分(見圖1),分別是ADF Bindings和ADF DataControl,其中ADF Bindings是ADF提供的一種綁定技術(shù),ADF DataConrol 是指我們已經(jīng)在接口層中注冊的視圖對象(ViewObject)。這一層在實(shí)際開發(fā)中基本不需要開發(fā)者做太多的工作。

3)Controller 層

ADF 在Controller層中擴(kuò)展了APACHE基金會的STRUTS框架,它為Struts提供了一個頁面流轉(zhuǎn)圖,以簡化應(yīng)用程序的開發(fā)。開發(fā)者可以簡單地拖拽Struts的組件到這個圖表中,這個圖表會自動地同步更新Struts-config.xml文件,其中我們最常用的是DataPage組件,該組件的作用主要是建立一個頁面,并且自動為其建立一個DataForwardAction,如果我們有一些自定義的方法,也可以寫一個Action,然后覆蓋DataForwardAction。

4)View 層

在View層可以采用ORACLE 的UIX 技術(shù),它里面定義了大量功能強(qiáng)大的組件。Oracle Jdeveloper 在View 層提供了一個可視化的布局編輯器,開發(fā)者可以使用組件面板向應(yīng)用程序添加可視化的組件,并可以運(yùn)用屬性編輯器(Property Inspector)來定義這些組件的屬性。可視化的編輯器是和源碼同步的,所以開發(fā)者可以選擇自己喜歡的開發(fā)方式。

圖1 Oracle ADF 架構(gòu)圖

ADF應(yīng)用開發(fā)過程

下面給大家簡單介紹一下ADF具體的實(shí)現(xiàn)過程,開發(fā)工具我們選擇Oracle的Jdeveloper10g,因?yàn)樵谀壳暗母鞣N開發(fā)工具中,Jdeveloper是對ADF這個框架支持最好的工具,它內(nèi)部直接集成了ADF開發(fā)時所需要的各種工具,給開發(fā)帶來很大的方便。我們以《某合同管理系統(tǒng)中的設(shè)備招投標(biāo)》模塊為例。

第一步:在Jdeveloper中,創(chuàng)建一個工作區(qū),工作區(qū)的名字取為TestProject,在應(yīng)用程序模板一項(xiàng)中,選擇WEB APPLICATION(DEFAULT),確認(rèn)后的工作區(qū)如圖2所示,按照我們上面講述的ADF的架構(gòu),我們先建立Business Service層的持久層對象,在Model這個工程上邊,右鍵單擊新建,然后選擇Business Tier 下的Business Component ,選擇EntityObject,然后出現(xiàn)圖3;schema Object是讓我們選擇數(shù)據(jù)庫中的表或者同義詞等對象,name 是我們建立的持久層對象的名字,這里我們把name命名為CdtEquipmentEO,package指定這個對象放在什么包下面。

圖2 workspace TestProject建立時的情況

圖3 EntityObject 向?qū)У谝徊?/CENTER>
 

第二步:建完持久層的實(shí)體對象后,我們就需要建立數(shù)據(jù)訪問層的視圖對象(ViewObject)。右鍵單擊Model,新建選擇ViewObject出現(xiàn)圖4,左邊是供我們選擇已經(jīng)存在的持久層的實(shí)體對象(EntityObject),這里面我們選擇剛建好的CdtEquipmentEO這個實(shí)體對象。

圖4 ViewObject向?qū)У诙?/CENTER>

第三步:需要建立接口層(ApplicationModule),將數(shù)據(jù)訪問層的視圖對象(ViewObject)注冊到ApplicationModule中,如圖5所示,我們選擇CdtEquipmentView1這個視圖對象,并把它添加到AppModul1中。

圖5 ApplicationModule 建立向?qū)?/CENTER>

第四步:按照ADF架構(gòu),Model層我們基本不需要作什么工作,那么我們下面開始建立Controller層,首先需要建立DataPage,可以是UIX格式的也可以是JSP,這里我們用UIX格式。在Struts-config.xml中,從右側(cè)的component中,可以直接選擇DataPage,拖拽過來,listEquipment是我們給定的名字。

圖6 Struts_config.xml截面圖

第五步:建完Controller層,需要建立展現(xiàn)層(View),在listEquipment.uix頁面中設(shè)置頁面布局,可以對DataControl中的View進(jìn)行拖拽,如圖7所示,我們選擇Data Control 面板中的CdtEquipmentView1,這就是我們剛才建立的View,下面的拖拽類型選擇只讀表就可以了。



圖7 listEquipment.xml截面圖

第六步:我們單擊listEquipment.uix這個文件,選擇運(yùn)行(圖8示),就可以直接得出所有設(shè)備的數(shù)據(jù)了,運(yùn)行的效果如圖9所示。

圖8 struts_config.xml截面圖

圖9 運(yùn)行效果圖

結(jié)論

在Jdeveloper10g中結(jié)合ADF框架,使開發(fā)人員能夠從零開始構(gòu)建J2EE應(yīng)用程序和WEB服務(wù)。因?yàn)镺racle ADF的高度結(jié)合性,以及它里面提供的優(yōu)秀技術(shù),使得開發(fā)應(yīng)用變得十分簡單方便,從而大大提高了應(yīng)用程序的開發(fā)效率,具有很高的應(yīng)用價(jià)值。

關(guān)鍵詞:OracleADF