第1章ADF开发起步

本文是ADF开发的入门指南,详细介绍了ADF(Application Development Framework)的架构和设计模式,包括BS-MVC的实现技术。ADF提供了一种声明性的方式来简化J2EE开发,减少了代码量,强调团队开发的高效性。ADF框架的特点包括可扩展的端到端解决方案、可声明的开发以及对各种技术的支持,如JSP、JSF、ADF Faces和STRUTS。文章还探讨了如何使用ADF进行数据库对象建模、设计应用控制和导航,以及如何在团队环境中高效开发。
部署运行你感兴趣的模型镜像

1ADF开发起步

1.1          ADF框架简介

 

1.1.1    什么是ADF

ADF(Application Development Framework)Oracle公司为简化J2EE程序开发的复杂性专门开发的一种解决方案,ADF通过减少实现设计模式和应用程序框架的代码量,简化了J2EE的研发难度。ADF框架是一个建立在JAVA,标准的JAVA EE以及标准的开源技术之上的端到端的应用框架。您可以使用ADF框架去实现企业解决方案,通过WEB, 无线,桌面或者是web services接口实现查询,显示,创建,修改以及验证数据。由于其声明性的特性,ADF简化和加速了开发,使用户仅需要去关注应用创建的逻辑,而不是代码细节。通过串联使用,从设计到部署,JDveloper 11gADF框架提供了一个覆盖整个开发周期的环境,通过使用拉拖拽的数据绑定,可视化界面设计以及内置的团队开发特点。

ADF主要具有以下特点:

  • 可扩展的端到端的JAVAEE框架,端到端的解决方案:AD,不只关注应用程序的某一层,而是对应用程序的每一层,都提供了完整的解决方案。
  • 很好的利用Java平台,同时为Java平台注入了新的价值
  • 提供了可声明的以及虚拟的开发
  • 使开发人员更加关注于框架,而不是低层结构
  • 构建可重用,可维护的代码
  • 使用元素据,简化了用户接口到服务的基本流程的开发
  • 实现JAVAEE的最佳实践以及设计模式,MVC,,如下图
  • 开发环境:大部分J2EE框架都没有与之配套的开发工具,ORACLEADF提供了JDEVELOPER开发工具,它和ADF实现了完美的结合,方便了程序的开发。
  • 技术选择:对于应用程序的不同层,开发人员可以使用自己擅长的技术进行开发

1.1.1    ADF架构

1.1.1.1         BS-MVC

同大多数开源框架一样,ADF的架构设计遵循MVC设计模式。ADF通过MVCWEB应用的业务逻辑,业务导航以及用户界面清楚的划分为不同的层。MVC模式一般将应用程序分为ModelView以及Controller三层,但是ADF的设计模式具有其独特的特点,它将应用程序分为四层,在原有基础上加上Business service层,故亦可称之为:BS-MVC,如图1-1-2-1

1-1-2-1

  • Business Service

Business Service 层包括三个小层,分别是持久层(Persistent Business Objects),数据访问层(Data Access)和接口层(ADF Application Module)。这三层建立的顺序是这样的,先建立持久层的实体对象(Entity Object),然后建立数据访问层的视图对象(ViewObject),最后建立接口层。其中建立持久层的实体对象主要是和数据库的表或者同义词对象建立关联,数据访问层的视图对象(View Object)是基于实体层的实体对象建立的,主要是进行数据库的访问,而接口层是整个Business Service 层和Model层的接口,在数据访问层建立的视图对象需要注册到接口层中,这样在Model层中才可以访问。

  • Model

Oracle ADF提供在业务服务层之上的模型层实现,提供可以访问任何类型业务服务的单一接口。

该层包括两部分,如图1-1-2-2,分别是ADF BindingsADF Data Control,它们利用元数据文件来定义接口。其中ADF BindingsADF提供的一种绑定技术,其向用户界面控件暴露data control的方法和属性,通过绑定机制无须编码就可实现数据读写以及执行业务逻辑。ADF Data Control 是指我们已经在接口层中注册的视图对象(View Object)。这一层在实际开发中基本不需要开发者做太多的工作,向客户端抽象了业务服务的实现细节。

元数据:在数据仓库中,元数据表示描述数据及其环境的数据 ,而在这里,主要表示一些配置文件。

1-1-2-2

 

 

Controller

ADF Controller层中扩展了APACHE基金会的STRUTS框架,它为Struts提供了一个页面流转图,以简化应用程序的开发。开发者可以简单地拖拽Struts的组件到这个图表中,这个图表会自动地同步更新Struts-config.xml文件,其中我们最常用的是DataPage组件,该组件的作用主要是建立一个页面,并且自动为其建立一个DataForwardAction,如果我们有一些自定义的方法,也可以写一个Action,然后覆盖DataForwardAction

View

View层可以采用ORACLE UIX 技术,它里面定义了大量功能强大的组件。Oracle Jdeveloper View 层提供了一个可视化的布局编辑器,开发者可以使用组件面板向应用程序添加可视化的组件,并可以运用属性编辑器(Property Inspector)来定义这些组件的属性。可视化的编辑器是和源码同步的,所以开发者可以选择自己喜欢的开发方式。

VIEW层,是你需要为用户设计WEB界面的一层。你既可以选择用原来的JSP进行开发,亦可选择最新版本基于JSF标准进行开发。另外,你还可以选择闪亮和交互性的桌面UIoff-the-shelf Swing组件或者库去确保满足你界面的需求。无论你选择了何种的界面开发方式,你都可以使用WYSIWYG的可视化设计以及拉拖拽的数据绑定进行开发。选择JSF进行开发的主要原因是ADF FACES module提供了将近上百种JSF组件的综合库。组件库支持多JSF render kits以至于允许interfacing with网页浏览器以及PDA telnet设备。总而言之,这些组件在被HTML以及手动实用JavaScript代码动态简化了构建高吸引力以及功能性强大的WEB以及wireless UIs

1.1.1.1         实现BS-MVC

ADF框架为BS-MVC的每一层都提供了多种不同实现技术的支持,如图1-1-2-2-1

  • View层:ADF框架为View层提供了两个方式的支持:桌面以及浏览器。桌面的实现技术可以是Swing或者office。浏览器则可以通过JSPJSF或者ADF Faces技术来实现。
  • Controller层:同view层一样,支持桌面以及浏览器两种,桌面的实现技术为ADF di。浏览器可以通过开源框架struts或者是基于JSFADF Controller技术来实现。控制层是在您的web应用中控制页面流程的关键点,ADF ControllerJSF之上提供了增强性的导航以及状态管理模型。JDeveloper 允许您声明式的创建task flows ,您可以在taskflow里的不同类型的activities(例如页面 ,管理bean的方法,case语句或者调用其他taskflow)之间传递应用控制。这些taskflow可以被重用,也可以被嵌套,在他们之间以及在页面之间都可以。Taskflow嵌套在页面中会转换成regions,这个regions里面包括了整个taskflow里面的所有内容,它允许用户不离开主页面去查看不同的页面以及功能。   
  • Model层:ADF Model技术。在model层中,ADF model实现了JSR-227服务,称为:data control Data Control通过使用标准的metadata接口去描述服务的操作以及数据集合,包括了属性,方法,以及类型等信息,最终抽象的实现了业务服务的技术。使用Jdveveloper,你可以看到这些信息是作为图标存在在其中的,你可以进行对其进行拉拖拽到一个页面中。在那点上,Jdveloper自动创建了从页面到服务的绑定。运行时,ADF Model层从恰当的XML文件中读取描述您data controls以及databindings的信息并且在您的用户界面以及业务服务中实现两种方式的连接。
  • Business Service层:ADF为最普遍的业务服务技术提供了out-the-box data control的实现方式。同时使用JdveloperADF,您可以使用一个拉拖拽的数据绑定方式去创建您的用户界面。除了支持ADF application modules ADF Model同时还支持以下服务技术:Enterprise JavaBeans(EJB) session beans and JPA entitiesJavaBeansWeb serviceXMLCSV files

1.1.1.1         主要实现技术

ADF框架的主要核心模块就是ADF Model, 一个实现了JSR-227的数据绑定设施(facility)。ADF Model层不需要写代码就启用了一个统一入口去绑定任意用户界面到业务服务中。结合JDeveloperADF框架,我们主要的实现BS-MVC的技术如下:

ADF 业务组件: 简化了创建业务服务。

当创建面向服务的JAVA EE应用时,您实现您的核心业务逻辑作为一个或多个业务服务。这些后台的服务提供了客户端以一种必须的方式去查询,插入,更新以及删除业务数据的同时还要求恰当的业务逻辑。ADF 业务组件作为预置的应用对象加快了delivering, maintaining high-performance, richly functional以及database-centric services的工作。他们提供给您一个实现了JAVA EE设计模式以及最佳体验的框架去使用。

ADF 提供了如下的关键组件去简化创建database-centric的业务逻辑:

Entity object(EO):一个EO代表了一个数据库表中的一行并且简化了通过处理所有的DML操作来更改它的数据。它可以封装业务逻辑去保证您的业务逻辑被一贯执行。您可以使一个EO与另外的EO进行关联去映射关系,在底层的数据库schema去创建一个业务domain对象供以多个应用中进行重用。

View objectVO

一个VO代表了一条SQL查询语句以及简化了对查询结果的工作。您可以使用SQL语言的join,筛选,排序,并通过最终用户任务所需要的形状的汇总数据展示在用户界面中。这还包括了多个VO之间的连接的能力去创建master-detail。当终端用户在用户界面中修改数据的时候,您的VO会联合EO去持久化验证以及保存改变。

Application module

AM是用户界面端使用去处理应用代码的事务组件。It defines an updateable data model along with top-level procedures and functions (called service methods) related to a logical unit of work related to an end-user task.

ADF Faces富客户端: 基于JSFweb应用提供了一个庞大的AJAX界面组件库。

ADF Controller:通过ADF Model集成了JSF。通过提供更多的函数,功能来扩展了标准的JSF controller,例如可重用的task flows,实现了不仅仅在JSF页面之间传递控制,同时还可以在其他activites之间,更甚还可以在method calls 或者其他的task flows

1.1.2    使用ADF开发

ADF强调了整个开发过程中使用声明性的编程范例,让用户更多的去关注业务逻辑,而不用更多的纠结于实施的细节。在JDveloper 11g中使用ADF,你会从一个高产品化的环境中受益,JDveloper会自动的管理您应用中用以获取数据,验证,页面控制,导航,用户界面以及数据绑定的声明性元数据(metadata)。

对于开发一个fusion web 应用,开发流程一般如下:

1.    创建一个应用workspace:使用向导,当您选择某种技术,JDveloper会自动的添加需要的库以及配置到您的应用中,并且会构造您的应用到项目伴随着包和目录。

2.    数据库对象建模:您可以创建一个任意数据库的脱机副本,并且使用JDeveloper编辑器以及图标器去编辑定义以及更新schema

3.    数据库对象建模:您可以创建一个任意数据库的脱机副本,并且使用JDeveloper编辑器以及图标器去编辑定义以及更新schema

4.    设计应用控制以及导航:您可以使用diagrammers去图形化决定应用控制以及导航的流程。JDeveloper会为您创建底层的XML

5.    确定共享资源:您使用一个资源库,它允许您去查看以及使用导入的包通过简单的拉拖拽他们到您的应用中。

6.    创建业务组件去访问数据:从您的数据库表中,您可以使用导航或者是对话框创建EO。您可以创建您页面中要使用的VO,通过您已经创建的EO。您可以使用编辑器实现验证规则以及其他类型的业务逻辑。

7.    使用JSF实现用户界面:JDeveloperData Controls面板包含了所有您应用的VO。创建一个页面,拖一个DC的对象到页面中,然后选择您所需要显示底层数据的UI组件。

1.1.3    高效率的团队开发

通常,应用程序是建立在团队开发环境中的。当一个基于团队的开发流程依照1.1.3使用ADF开发的步骤进行实施的话,很多时候开发人员都是同时在创建应用中不同的部分。高效率的开发意味着团队成员为了确保应用开发的效率会将工作进行划分,理解如何去执行标准以及使用一个源代码控制系统进行管理源文件。

在开始任何大型应用软件开发,设计阶段通常需要对用例进行评估,计划任务流程和screens,并确定可以共享的资源。

The following list shows how the work for a typical Fusion web application might be broken up once an initial design is in place:

基础结构

DBA创建Ant脚本(或者是其他脚本)用以创建以及部署已完成的应用。在应用中,会开发SQL脚本用以创建数据库schema

Entity Objects

在一个大型的开发环境中,一个单独的开发小组去创建所有应用中需要的entity object。因为其他的应用都会依赖于这些objects,在应用开发过程中,entity objects应该是最初开发的步骤之一。

一旦entity objects开发完成以后,它们通过Oracle ADF 库(libraries)可以供其他团队进行使用。其他团队然后会通过在Resource Palette.添加他们(Oracle ADF 库)进行访问entity objects。在你的个人应用开发流程中,你可以选择不用去以这种方法划分工作。

在很多应用中,entity objects以及view objects会通过相同的团队(甚至是一个人)来开发,并且它们会被保存在同一个project中。

View Objects

entity object创建完成后,并且通过一个库或者是在project内部进行提供objects,视图对象可以根据需要创建用以显示数据,或者会提供service data objects(当其他基于SOA基础的应用需要数据的时候)。

在开发金风科技门户应用的时候,每个页面或者是服务的开发人员会去负责创建该页面或者是服务所需要的view objects。这是完全必要的,因为在应用中view objects与要需要使用它的页面是金敏结合的。创建UI的开发团队也会去创建相关联的view objects

在开发的过程中,你会发觉两个或者是多个view objects会提供相同的功能。在某些案例中,这些view objects可以通过更改其中一个的query进行轻松的合并,改变query用以满足每个开发人员的页面或者是服务的需求。

一旦view objects到位了,你就可以创建application moduleAM),data controlsdc)以及添加某些需要的自定义方法。在创建视图对​​象过程中,以备不时之需审查,然后将其添加到application module中可以是一个反复的过程之一。

用户界面(UI)的创建

伴随着UI的设计完成之后(相应的美工人员进行UI的设计),view objects到位以及data controls创建好了之后,创建view objects的团队或者是一个独自的团队可以进行创建UI。你还可以使用一个UI优先的开发流程进行开发,这会允许UI设计人员在data controls到位之前进行创建界面。Oracle ADF提供占位符数据控件的UI设计人员可以使用在开发周期的早期阶段。

1.1.3.1         执行标准

由于有很多人会被分成不同的团队去进行应用的开发,在开发之前你必须去实施一系列的标准去确保应用中所有中的组件高效的进行整合。以下为在团队开发环境下,应用中需要做到标准化的区域:

代码布局风格

因此,不止一个人可以在代码中有效率的工作,有利于遵循特定的代码样式。JDeveloper中让你选择如何内置的代码编辑器的行为。尽管许多设置影响用户如何使用代码编辑器(如显示设置)相互作用,影响他人代码如何被格式化。例如,你可以选择一个代码风格,决定像开放括号的缩进位置和大小的东西。您也可以导入任何现有的代码风格,你可能有,也可以创建自己的和出口的团队使用。在后面的章节中,我们会讲到如何对JDeveloper进行设置。

包命名规则

您不仅仅应该确定包去如何去命名的,还可以确定每个包中对象的类型个以及数量的颗粒度。所有包含用以其他bean访问辅助方法的bean会放置在util包中(一个是Oracle ADF的,另一个是JSF的)。所有的属性文件会放置在common包中

页面

您可以创建模版去供所有开发人员去使用。这不仅仅确保了所有的页面具有相同的外观和感觉,同时还允许您去修改模版来使所有使用页面模版的页面的外观进行改变

除了使用模版之外,您还可以制定一个标准网页命名。例如,您可能需要有名称反映页面在应用程序中使用之处。为了实现这一目标,你可以创建一个子目录,以提供进一步的组织层。

连接名称

与大多数JDeveloperOracle ADF所创建的对象不一样,根据定义只有一次对象具有相同的名字不管是谁看到或使用它们,数据库连接名称可能造成个别团队成员,即使他们映射到同一个连接的详细信息。命名差异可能引起不必要的冲突。团队成员应同意在共同的,区分大小写的连接,应该由每个团队成员使用的名称进步。

1.1.3.2         使用源代码管理系统

当在一个换队的环境的工作的时候,你会需要去使用一个源代码管理系统。默认情况下,JDeveloper提供了针对CVS以及Subversion源代码管理系统的集成支持,其他一些可以通过扩展来使用。

1.1.4    如何学习ADF

 

 

 

 

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值