20150506 Created By BaoXinjian

XML 11.
页面基础


以浏览器层,OAF页面和外页面一样,是正式的HTML页面。

于中间层,OAF页面实际是由内存中的JAVABEAN结构来落实之,和民俗的JAVA客户端界面相同。

每个页面中之用户界面(UI)组件(按钮、标签、图片等)实际还对应一个或者多个组织中之JAVABEAN。

当浏览器请求一个初页面时,OAF读取页面中之声明的第一数据来树立WEB
BEAN的构造。

本着各国一个带有UI控制器的BEAN,OAF调用你写的代码来初始化页面。

当页面执行了,OAF将WEBBEAN结构交给UIX框架来拍卖,它会将之转为HTML发送至浏览器。

 

当浏览器提交一个FORM(如:用户选择了搜索区的GO按钮),如发生必要,OAF重新成立WEBBEAN结构(BEAN结构在求中是缓存了底,只有在不测之场面下用再次确立),然后调用你当PAGEBEAN中形容的处理事件的代码。当页面处理终结,HTML页面还建并发送至浏览器。

 

XML 2二、模型


1.
模封装了点名的利用中之数及商贸逻辑。它为供了实际的商业对象同商务服务的纸上谈兵。

顾:要完全正确和均等,本图需包括以下的实现

oracle.apps.fnd.framework.server.OADBTransactionImpl而不是oracle.apps.fnd.framework.OADBTransaction接口。

 

  1. Application
    Modules

一个BC4J应用模型是治本及供BC4J模型对象的根基容器,在这上下文中,同一任务之目标是出于多方面关系的。例如:所有的BC4J对象都蕴涵一个同一任务之事务。甚至用户界面包括多个页面。

所有的APPLICATION
MODULE都是oracle.apps.fnd.framework.server.OAApplicationModuleImpl的子类。

各个一个OAF页面都有一个涉嫌到顶层REGION(pageLayout
region)的ROOT application module。这个root application
module提供了事务处理的上下文,封闭了数据库的连日。

(1).
如果多个页面在一个工作中,它们该共享一个root application
module。

(2).
如果一个页面及另外页面没关系,它当来好的application module。

只顾:一个root application
module可能嵌套多独application module(也得以又嵌套多重合)。

在这种状况下,root application
module可以看它所嵌套的装有的数额、对象及拥有的ROOT包含的介入同一个事务的分段对象。你可以以你想创立重用的及数据库交互的UI
region时行使这特性。

 

  1. Entity
    Objects(和Association Objects)实体和涉嫌实体

BC4J实体封装了涉嫌到数码表行的商务规则(验证、动作等)。如:OAFSample
Library包括了FWK_TBX_SUPPLIERS表,用来囤供应商的定义。

咱们得啊者表定义一个实体对象(SupplierEO),用来促成之保有的生意规则,新建、更新、删除一个供应商。

只顾:Entity
Object也得根据视图、同义词和快照。

OAF支持JAVA和PLSQL实体。

您建之多数实体都应有是oracle.apps.fnd.framework.server.OAEntityImpl的子类。

以数据库暨实体之间是相当的涉,所有的ORACLE
Applicaiotn 实体都当包括她关联的表底所有列。

实业使用声明来以它的特性与指定的数据列之间映射,来自动实现查询、插入、更新与去。大多数景象下,你得丰富验证逻辑。

实体可以让外需要同申交互的顺序行使(不仅是OAF),这样一来,就非得考虑到持有的印证规则以便客户端就甭还关注这些了。

 

  1. Association
    Objects(关联实体)

设若您发一个复杂的实体(如三叠采购定单,在峰、行、发运地之前是一致针对性大多之涉),你得运用association
object来定义实体间的涉嫌,

君得定义弱连接(一个定单引用了一度存在的供应商)和强连接(一个定单包括她的实行,行未可知独于头在)。

 

  1. View Objects(and view
    Links)视图对象及视图连接

于简练的情下,一个BC4J视图对象封装了一个数据库查询。查询执行后,一个视图对象循环访问结果集。结果集带有一个或者多只张图行,一个看图行的差性质对应数据库查询的执行。

享有的视图对象都是oracle.apps.fnd.framework.server.OAViewObjectImpl的子类。

每个视图对象都得安排用以下的不二法门来查询数据:

(1).
属性对应SQL语句之排(通常用于比小、只读的视图对象)

(2).
属性对应实体对象的性(用于插入、更新、删除实体对象)

(3).
一些性能对许交实体,一些性质直接对诺SQL(用来加强实体对象的无能够从实体对象查询的即数据,如出示的计算值)。

在OAF中,在下面的情形下会为此到视图对象。

(1).
为详细的用户界面显示太优化的数据。如果用户界面支持实业对象的插、更新、删除,你当利用视图对象来形成这些职责。

(2).
为建立下拉列表建立查询,值列表和另的界面组件。

(3).
为商逻辑建立中的“验证查询”。如:在采购定单头实体对象吃,你恐怕要动用一个认证视图对象来博取是请定单的最为大行号,以便为它们好叫缓存而在新行插入时得加。

最后,你或许未单独需要定义视图对象,还可能而呢她编写代码。典型气象下,代码应该实现复杂的询问的数量绑定并执行查询(所以视图对象掌握怎么询问其和谐)。

 

  1. View
    Link(视图连接)

即便比如连接实体对象同,你为堪创造视图对象的涉嫌,这叫做视图连接。如:你于采购定单头视图对象同行视图对象之间确立了一个视图连接,这得用来当访问头的下自动查询行。

 

  1. OADBTransaction

要达到图所示:OADBTransaction在您的范中的一个主干角色,它包裹了JDBC的数据库连接会话和root
application module的干。

再就是直接容纳了您建之具有实体对象(视图对象由root
application
module容纳,并以看到图行中援引了实体对象)。你用于公的模子中正常使用OADBTransaction,基于以下原因:

(1). 建立callable
statement来实施PLSQL函数的过程。

(2).
访问session级别之采取及下文,如用户称、id、当前任务齐。

(3).
如果要履行NLS操作,如转换服务器时格式为用户时间格式,访问oracle.apps.fnd.framework.OANLSServices对象

root application
module可以拜OADBTransaction。

 

XML 33.
视图


视图用来吧用户格式化和出示模型数据。

  1. 概念页面

每当设计时,你可以使用声明的法子来树立BEAN的组织。在oracle开发过程遭到,你将本着XML文件进行定义。当你安排至客户站点时,OAF从数据库被运行页面定义。

为了简单说明,Jdeveoper定义的页面由REGION和ITEM组成。

(1).
ITEM是一个略的零部件,如按钮、输入框、图下等不包括子元素的机件。

(2).
REGION是包ITEM的器皿。如:header、表格或一定的布局组件。

(3).
你定义的每个REGION和ITEM都起一个STYLE属性,用来指明OAF在运作时以谁WEB
EBAN对象来啊其实例化(这会指明产生什么使瓣HTML代码),

而:如果您定义了一个STYLE为table的REGION,OAF会为此oracle.apps.fnd.framework.webui.beans.table.OATablebean来实例化。

(4).
所有的页面必须含有一个顶层的REGION(叫做root
region),它的STYLE是pageLayout,它是oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean的实例。

(5).
在Jdeveoper的页面树被的REGION和ITEM的逐条指明了以运转时补充加BEAN结构的职。

产图展示了一个简易页面的WEB
BEAN显示力量,你看来的页面的标签指明了WEB BEAN的名字。

倘:一个下拉列表是oracle.apps.fnd.framework.webui.beans.message.OAMessageChoiceBean的实例,一个交给按钮是oracle.apps.fnd.framework.webui.beans.form.OASubmitButtonbean的实例。

瞩目:下面图被的ITEM名称没有按ORACLE应用命名标准来开,只是为你掌握WEB
BEAN的布局。

 

  1. Attribute Sets
    属性集

每个REGION和ITEM都可行使性质集来继承一组属性,一个属性集是通过命名可选用的特性之集纳,它好被任何UI对象下,包括region\item和其它属于性集。

任凭何时你建一个利用属性集的UI组件,你都好覆盖其的继承的性(尽管这当OAF中凡是匪推荐的)。

为印证这或多或少,在动开发被,每个表格必须也外的各个一样排列关联到属性集,这些性集如提醒标签、显示涨幅等。

(1).
在OAF的ToolBox示例中,有一个进货定单表(FWK_TBX_PO_HEADERS),HEADER_ID是NUMBER类型的主键,也当作购买定单号显示。

(2).
这个表格来一个涉嫌的性质集:FwkTbxHeaders,是一个XML包文件,里面包括了独具的表列的属性(每一样排一个性能)。其中一个性叫做HeaderId。

(3). HeaderId属性设置Prompt为 Order
Number,Display Length为15。

(4).
当我们成立一个页面包括购买定单的order number
这个ITEM时,我们呢应指定属性集为/oracle/apps/fnd/framework/toolbox/attributessets/FwkTbxheaders/Headerid

 

  1. 组件重用

如想结页面中之共享对象,你得简简单单的连续它们

苟:在OAF的ToolBox示例中,我们成立了一个通用的REGION(叫PoSummaryRN),所以是组件可以被多单页面包含而休用重新写代码。

如若补偿加一个region到页面,我们而简单的立一个新的region,将Extends属性设为:/oracle/apps/fnd/framework/toolbox/tutorial/webui/PoSummaryRN

小心:这个共享的REGION在援它的页面被凡是免能够修改的,所以于Jdeveloper的Structure面板中的灰色的。

 

  1. 数据源绑定

对发生数据库交互(插入、更新、删除、查询)的BEAN,你还要指定一个数据源绑定到一个视图实例和关系的视图属性名称。这个绑定好重要,因为OAF用她来询问数据、写回用户输入的数目。

(1). View Instance
Name指的是于application
module中的视图对象(所有的视图对象都存活于application
module中连通过它的名称来调用),

假定:如果一个SuppliersVO视图对象由页面被的root
application
module通过“MySupVO”来调用,则当此地而应当指定MySupVO这个名字。

(2). View Attribute Name
指的凡炫耀到列的视图属性。

若:如果您的SuppliersVO有一个属性“SupplierId”(映射到列SUPPLIER_ID),这里您应有指定“SupplierId”这个称谓。

 

  1. 概念菜单

卿应当使用oracle
application菜单与作用的表单中定义菜单。

刚刚像OAF将概念之UI布局翻译成运行时的BEAN结构,它为蕴含了菜单定义的WEB
BEAN。

 

  1. 概念页面流

处理多页面事务流时,OAF提供了一个可是定义的(可客户化)给复杂的、硬编码的主宰逻辑。

 

  1. 客户化页面

OAF也席卷了一个可是定义的客户化架构,叫做:OA
Personalization
Framework。这是为支持最终用户所待的客户化和活污染输链(区域化以及垂直化(没了解什么意思)等)。

专注:如你在开指南中之变现底,建立REGION和item声明比编程更可取。实际上,你该一味以无可知因此声明的法来建之时段才下编程的计,这样客户就可知客户化你的页面了。

 

XML 44、控制器


1.
控制器是故来响应用户的动作和定向应用之流向的。

控制器可以提到到视图的REGION级别,(很多情景下,任何的OAF
web
bean实现了oracle.apps.fnd.framework.webui.beans.OAWebBeanContainer接口,可以提到到控制器)。

公建之享有的控制器都应该吗oracle.apps.fnd.framework.webui.OAControllerImpl的子类。

而可当控制器中实现WEB
BEAN的效果。

若得编制代码用来:

(1).
在运行时操作和初始化(包括但编程的你切莫克坐宣称的法门确立之布局)

(2). 截取和处理用户事件一旦以下按钮

 

  1. 拍卖要

当浏览器为卿的页面发布一个OA.jsp请求时:

(1).
oracle.apps.fnd.framework.webui.OAPageBean(主要的OAF页面处理类)使用页面名称来支配要哪个root
application module,然后从application module池中取出。

本条application module
也打连池中取出JDBC连接,然后这个页面的事务处理的上下文就规定了。

(2).
用户之SESSION被证明,如果无效,显示登录的页面。

(3).
如果用户是行之有效之,OAPageBean评估请求参数来规定当做HTTP
POST或GET来处理。

 

  1. 处理GET请求

当浏览器为服务器发送一个GET页面的请时(或者您手工的FORWARD),OAF使用可声明的UI定义来树立web
bean结构

(1).
OAPageBean调用页面的顶层pageLayout的bean的processRequest()方法,整个WEB
BEAN结构给递归的行来初始化WEB BEAN(包括其他关系的模型组件):

a. 每个web
bean实例化它的控制器(如果有言语)并且调用控制器上的processRequest(OAPageContext,OAWebBean),

即时是一个而用来建、修改你的页面布局,设置web
bean属性和推行手工的数初始化的方式(如当您打开页面时你也许使执行一个机动查询)。

b. 一些犬牙交错的web
bean(如:oracle.apps.fnd.framework.webui.beans.table.OATableBean和oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean)执行post控制器执行prepareForRendering()方法。

c. 每个web
bean都调用它的子类的processRequest()方法。

(2).
oracle.apps.fnd.framework.webui.OAPageBean将web
bean结构交给uix并发送至浏览器。

 

  1. 处理POST请求

当浏览器发送一个POST请求到服务器

(1). OAPageBean检查看web
bean是否有叫外存中,如果没有(可能以资源被再度组织了,用户仍了继下降按钮,

要POST是出于一个对话框来的),那就更建web
bean的构造,像面执行GET时一样。

(2).
OAPageBean在富有结构树被的bean上调用processFormDate(OAPageContext,OAWebBean),将form中的数目写入module(它调用pageLayout
region上之processFormData,

从而每个web
bean教递归的调用了她的子类的processFormData)。写副form数据及model自动的调用了属性级和实体级的辨证。如果你扔来其它说明异常,执行会停并出示错误信息。

(3). 
如果当实施processFormData()过程遭到从未那个,OAPageBean调用所有的bean上的processFormRequest(OAPageContext,OAWebBean)方法,如上面所讲。

夫历程被你的控制器对用户之动作作出响应。

(4). 如果没JSP
FORWARD或者再次定向,或者在processFormRequest()方法被莫异常,则页面被刷新。

 

  1. OAPageContext

当OAF接收至一个OA.jsp请求,OAPageBean建立一个oracle.apps.fnd.framework.webui.OAPageContext,这个仿佛才于页面处理过程中才在。

上面所说的老三只主要措施(processRequest(),processFormData()和processFormRequest())都产生一个OAPageContext参数,你编的别控制器总是要使用这个重要的切近。

假定齐图所示,OAPageContext同时援引了request和root
applications mudule。

实际上OAPageContext被提交你的每个控制器的行方,在脚的任务中你拿采取OAPageContext:

 

  1. 访问请求参数

或是不过重大是,这是一个君用来由此getParameter(String)方法来读取请数据的切近(请求包括URL中之参数,如果是POST,任何的名称值和事件还提到到用户之动作)。

提醒:对于页面中之不等的WEB
BEAN(按钮、输入框等),传至getParameter()的名称值都由此公在页面被定义的ID来分配。

假若:如果用户以了一个深受“GoButton”的按钮,你可以在Jdeveloper在描写以下的控制器代码:

processFormRequest(OAPageContext pageContext, OAWebBean webBean)  {  
   if (pageContext.getParameter("GoButton") != null)  
   {  // The user pressed the "Go" button, do something...  } 
} 

 

  1. 访问root application
    module

OAPageContext缓存了一个对root application
module的援,它提供了走访它的视图对象与业务。

要是用访问application mudule:

processFormRequest(OAPageContext pageContext, OAWebBean webBean) {  
   OAApplicationModule am =   (OAApplicationModule)pageContext.getRootApplicationModule();
} 

 

8.
导航介绍

君利用是看似的计来告诉OAF执行一个JSP
forward。如:

processFormRequest(OAPageContext pageContext, OAWebBean webBean){  if (pageContext.getParameter("CreateButton") != null)  { 
  // The user pressed the "Create Supplier" button, now perform a JSP forward to 
  // the "Create Supplier" page.
  pageContext.setForwardURL("OA.jsp?page=/oracle/apps/dem/employee/webui/EmpDetailsPG",  
                            null,   
                            OAWebBeanConstants.KEEP_MENU_CONTEXT, 
                            null,  null,  
                            true, // Retain AMOAWebBeanConstants.ADD_BREAD_CRUMB_YES, // Show breadcrumbsOAWebBeanConstants.IGNORE_MESSAGES); } } 

 

9.
拜访使达到下文信息

似乎模型中的OADBTransaction,OAPageContext提供了拜访servlet
session级别之oracle应用及下文信息,如用户称、id、当前任务齐。如下面代码显示怎么获取用户称;

processRequest(OAPageContext pageContext, OAWebBean webBean){   
  String userName = pageContext.getUserName();
}

 

XML 55、 Web
bean 架构


  1. 拥有的WEB
    BEAN继承了UIX架构中的呼应的bean。

如一个OATableBean继承了oracle.cabo.ui.beans.table.TableBean。

每个OAF web
bean也实现了平组接口,这些接口定义了OAF加至UIX bean中之行。

(1).
Oracle.apps.fnd.framework.webui.beans.OAWebBean

概念了拥有的WEB
BEAN的通用的骨干的一言一行。

设若:不同于外行为,它定义了processRequest,processFormData和processFormRequest方法,这些点子还在不同的bean中产生落实。

(2).
Oracle.apps.fnd.framework.webui.OAWebBeanConstants:

当视图和控制器中使的如出一辙组常量。

(3).
Oracle.apps.fnd.framework..webui.beans.OAWebBeanData:

概念了通用的客户化定义及数据源管理行为。

(4).
Oracle.apps.fnd.framework.webui.beans.OAWebBeanContainer:

概念了所有的web
bean的做也容器的风味。如:所有的布局web
bean都落实这个接口。只有实现了这接口的bean才方可提到到控制器。

(5). OAWebBean<Type>:

概念了在OAF上下文中之bean中原始之行事。

如:OATableBean实现了oracle.apps.fnd.framework.webui.beans.OAWebBeanTable接口。

 

  1. 内部bean结构

每个web
bean都维护其好以下的音讯:

_indexedChildren 子web bean

_namedChildren UIX指定的子web
bean

_attributes web
bean的性状(描述性属性),如下图所示

 

  1. 数据绑定值

用作不是达到图所显示之动静,OAF web
bean属性实际当做数据绑定值来落实。

意是价值由特定的以运行时处理组件的数据源提供。

 

  1. 实现

当页面实现时,UIX架构处理web
bean结构来生成html。

本着其余web
bean属性,当用她交给一个兑现上下文(实现上下文是UIX需要处理绑定数据的兼具的音)时,UIX调它的getAttributeValue()方法。

对一个加以的特性,如:实现上下文知道谁视图对象、视图属性和当下实行是啊。

多少绑定值使用实现上下文提供的这些信息来了解数据源,并返回实际的值,所以它能够转移对应的HTML。

 

XML 66、oracle.apps.fnd.framework


1.
oracle.apps.fnd.framework

包打model和用户界面或视图代码中可高枕无忧访问的切近和接口。

如果:如果你当页面被要看一个root
application
module,你如动用oracle.apps.fnd.framework.OAApplicationModule接口(你永远不会见看一个客户端的兑现)。

骨子里情况下,这个包也席卷:

(1). 你可能要丢来的具备的生

(2).你用来国际化操作的好像:OANLSServices

 

2.
oracle.apps.fnd.framwwork.server

概括了在mvc架构中贯彻model的近乎的接口

这些类似是因此来被客户端用户界面(不特是OAF的html页面)使用的,它不应一直引用oracle.apps.fnd.framework.webui包和子包中之接近和接口,或者其他利用指定的WEBUI包和子包。

当起一个OAF应用模型时,你当使用这个包中的切近设休是她的累的近乎。

警戒:不要以控制器和视图对象吃调用这个包中的类。

 

3.
oracle.apps.fnd.framework.webui

连了树及操作OAF
html用户界面的核心类。

局部常用之近乎以及接口包括:

(1). OAController

(2).
OAPageContext

(3).
以转包被之在bean中之所有类

警示:不要当model代码中调用这个包中的好像。

 

4.
oracle.apps.fnd.framework.webui.beans

概括了非克适合多样变化bean子包的用户界面组件类(如:图像、静态的公文、键弹性域、说明性弹性域)。

乃该当编制用户界面的急需编程的控制器的当儿下这些近似。

这保险吗席卷了着力之被有的WEB
BEAN实现的OAF接口。

其一包中的类和它子包中的好像对承诺交她贯彻之uix组件,如下表。当起OAF应用页面时,你应该总是采取OAF类除非你想使一个席卷以UIX中如OAF不支持之新特性。

瞩目:OAF类总是为公以Jdeveloper中声称的MDS实例化。

XML 7

警戒:不要当model代码中调用这个包中的接近。

 

5.
oracle.apps.fnd.framework.webui.beans.form

包了html form的机件的web
bean类,包括提交按钮和输入组件(多选框、单选取框、文本框等)。

若该以编排一个用户界面控制器的下以这些看似。

顾:对于许多以此包中的web
bean,有一些变量在oracle.apps.fnd.framework,webui.message包中(这些message
web bean可以显得错误、信息、警告的图标和说明信息,而之包中web
bean不能够)。

当您于Jdeveloper中树立页面时,OAF自动的也罢当下简单独确保着之零部件实例化message
bean。你应有只在脚的气象被应用这包中的类似:

(1). 一个接近没有message
bean(如:OASubmitButtonBean只以斯保险吃存在)

(2). 你不需用message bean

警戒:不要以model代码中调用这个包中的类似。

 

6.
oracle.apps.fnd.framework.webui.include

包OAF中用户界面的扩展web
bean(servlet\jsp\html)。

你应该当编制用户界面控制器时以这些类似。

告诫:不要以model代码中调用这个包中的类似。

 

7.
oracle.apps.fnd.framework.webui.beans.layout

包括OAF页面的布局web
bean。包括特定的布局要hide/show,容器XML,列表,头,标准的单列或双列模板等。你当当编排用户界面控制器时采取这些类似。

警告:不要以model代码中调用这个包中的好像。

 

8.
oracle.apps.fnd.framework.webui.beans.message

连可显示错误、警告或信息之HTML
FORM控件。如用户以一个文本框中输入了左的值,一个破绽百出图标会显示在它的标题下面。你应有于编写用户界面控制器时行使这些看似。

小心:这个包中的坏多类了概括以oracle.apps.fnd.framework.webui.beans.form包中,但尚未出示图标和消息的意义。

警告:不要以model代码中调用这个包中的接近。

 

9.
oracle.apps.fnd.framework.webui.beans.nav

包了用户界面导航的零部件(连接、树、菜单、快速连接等。)你应该于编写用户界面控制器时利用这些看似。

提个醒:不要在model代码中调用这个包中的类。

 

10.
oracle.apps.fnd.framework.webui.beans.table

席卷了表和培育表格的web
bean。它好坐表的款式显得数据。你当在编写用户界面控制器时利用这些类似。

警戒:不要以model代码中调用这个包中的切近。

 

11.
oracle.apps.fnd.framework.webui.laf

包了可控制HTML外观(包括页面风格)和上下文行为之家伙。

 

Thanks and Regards

转载: c1275671283 –
http://shaofeng.blog.51cto.com/3392077/655665

XML 8

相关文章

网站地图xml地图