20150506 Created By BaoXinjian

XML 11.
页面基础


在浏览器层,OAF页面和任何页面壹样,是正经的HTML页面。

在中间层,OAF页面实际是由内部存款和储蓄器中的JAVABEAN结构来促成的,和历史观的JAVA客户端界面相同。

每一个页面中的用户界面(UI)组件(按钮、标签、图片等)实际都对应一个或几个布局中的JAVABEAN。

当浏览器请求三个新页面时,OAF读取页面中的注明的元数据来树立WEB
BEAN的布局。

对每3个带有UI控制器的BEAN,OAF调用你写的代码来起首化页面。

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

 

当浏览器提交三个FO揽胜M(如:用户挑选了搜索区的GO按钮),如有供给,OAF重新确立WEBBEAN结构(BEAN结构在央浼之间是缓存了的,唯有在不测的气象下须求再行树立),然后调用你在PAGEBEAN中写的处总管件的代码。当页面处理完结,HTML页面重新建立并发送到浏览器。

 

XML 2二、模型


一.
模子封装了钦点的利用中的数据和经济贸易逻辑。它也提供了实在的小购买销售对象和商务服务的悬空。

专注:要完全正确和均等,本图需包涵以下的完毕

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

 

  1. Application
    Modules

三个BC四J应用模型是管理和提供BC四J模型对象的底子容器,在那个上下文中,同壹职责的靶子是由多方关系的。例如:全部的BC肆J对象都富含二个均等职分的工作。甚至用户界面包蕴七个页面。

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

每多少个OAF页面都有三个事关到顶层REGION(pageLayout
region)的ROOT application module。这一个root application
module提供了事务处理的上下文,封闭了数据库的连接。

(1).
倘使七个页面在一个作业中,它们应该共享3个root application
module。

(二).
假如贰个页面和其他页面不妨,它应当有自身的application module。

专注:三个root application
module大概嵌套多少个application module(也足以再嵌套多层)。

在那种情景下,root application
module能够访问它所嵌套的富有的数量、对象和颇具的ROOT包罗的加入同三个事务的子对象。你能够在您想成立重用的与数据库交互的UI
region时选取那天性子。

 

  1. Entity
    Objects(和Association Objects)实体和事关实体

BC4J实体封装了事关到多少表行的商务规则(验证、动作等)。如:OAFSample
Library包含了FWK_TBX_SUPPLIE凯雷德S表,用来储存供应商的概念。

我们能够为那几个表定义3个实体对象(SupplierEO),用来贯彻的全数的购买销售规则,新建、更新、删除3个供应商。

专注:Entity
Object也得以依照视图、同义词和快速照相。

OAF支持JAVA和PLSQL实体。

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

在数据库和实体之间是一定的涉及,全数的ORACLE
Applicaiotn 实体都应有包含它们关联的表的全部列。

实业使用表明来在它们的特性和点名的数据列之间映射,来自动达成查询、插入、更新和删除。超越十一分之伍动静下,你须求加上验证逻辑。

实体能够被别的须求与表交互的次第选拔(不仅是OAF),那样一来,就非得思量到具有的证实规则以便客户端就绝不再关怀这个了。

 

  1. Association
    Objects(关联实体)

比方你有二个繁杂的实业(如三层购买销售定单,在头、行、发运地在此之前是1对多的涉嫌),你能够采取association
object来定义实体间的涉及,

你能够定义弱连接(三个定单引用了曾经存在的供应商)和强连接(3个定单包含它的行,行不能够独立于头存在)。

 

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

在不难的景况下,1个BC四J视图对象封装了2个数据库查询。查询执行后,一个视图对象循环访问结果集。结果集带有三个或多个视图行,一个视图行的比不上属性对应数据库查询的行。

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

各样视图对象都得以配备用以下的格局来询问数据:

(一).
属性对应SQL语句的列(常常用于较小、只读的视图对象)

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

(叁).
1些质量对应到实体,一些性质直接对应SQL(用来升高实体对象的无法从实体对象查询的暂且数据,如出示的总结值)。

在OAF中,在上面包车型大巴景况下会用到视图对象。

(一).
为详细的用户界面展现最优化的多少。假若用户界面帮忙实体对象的插入、更新、删除,你应有运用视图对象来成功那一个职务。

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

(三).
为生意逻辑建立可行的“验证查询”。如:在购买定单头实体对象中,你也许要利用3个认证视图对象来赢得这些购买销售定单的最大行号,以便于它能够被缓存而在新行插入时得以增添。

终极,你大概不只必要定义视图对象,还恐怕要为它们编写代码。典型气象下,代码应该完结复杂的询问的数量绑定并推行查询(所以视图对象通晓怎么查询它自身)。

 

  1. View
    Link(视图连接)

就好像连接实体对象1样,你也足以创立视图对象的涉嫌,那叫做视图连接。如:你在购买定单头视图对象和行视图对象之间创立了三个视图连接,那能够用来在访问头的时候自动查询行。

 

  1. OADBTransaction

如上海体育场所所示:OADBTransaction在你的模型中的一个为主剧中人物,它包裹了JDBC的数据库连接会话和root
application module的涉嫌。

与此同时直接容纳了您建立的富有实体对象(视图对象由root
application
module容纳,并在视图行中引用了实体对象)。你将在您的模型中平常使用OADBTransaction,基于以下原因:

(壹). 建立callable
statement来施行PLSQL函数的历程。

(2).
访问session级别的利用上下文,如用户名、id、当前任务等。

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

root application
module能够访问OADBTransaction。

 

XML 33.
视图


视图用来为用户格式化和展示模型数据。

  1. 概念页面

在布置时,你能够行使评释的点子来树立BEAN的组织。在oracle开发进度中,你将对XML文件举行定义。当你计划到客户站点时,OAF从数据库中运作页面定义。

为了不难表明,Jdeveoper定义的页面由REGION和ITEM组成。

(1).
ITEM是一个简易的零件,如按钮、输入框、图下等不包蕴子成分的零部件。

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

(3).
你定义的各样REGION和ITEM都有八个STYLE属性,用来指明OAF在运行时采取哪个WEB
EBAN对象来为它实例化(那会指明发生什么要瓣HTML代码),

如:假设您定义了1个STYLE为table的REGION,OAF会用oracle.apps.fnd.framework.webui.beans.table.OATablebean来实例化。

(四).
全体的页面必须包括1个顶层的REGION(叫做root
region),它的STYLE是pageLayout,它是oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean的实例。

(伍).
在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都得以选用质量集来继承壹组属性,3个属性集是通过命名可选拔的品质的聚集,它能够被任何UI对象使用,包涵region\item和其余属性集。

不论是曾几何时你建立3个用到属性集的UI组件,你都足以覆盖它的继续的属性(纵然这在OAF中是不引入的)。

为了声明那或多或少,在应用开发中,每一种表格必须为他的每一列关联到属性集,那几个属性集如提示标签、显示上涨幅度等。

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

(二).
那一个表格有二个事关的习性集:FwkTbxHeaders,是二个XML包文件,里面包涵了装有的表列的属性(每一列3个属性)。当中3本品质叫做HeaderId。

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

(肆).
当大家树立一个页面包蕴购销定单的order number
那几个ITEM时,大家也应该钦赐属性集为/oracle/apps/fnd/framework/toolbox/attributessets/FwkTbxheaders/Headerid

 

  1. 组件重用

若是想结合页面中的共享对象,你可以大概的继承它们

如:在OAF的ToolBox示例中,大家建立了叁个通用的REGION(叫PoSummaryCRUISERN),所以那么些组件能够被多少个页面包蕴而不用重写代码。

要添加二个region到页面,大家只要不难的创造1个新的region,将Extends属性设为:/oracle/apps/fnd/framework/toolbox/tutorial/webui/PoSummary安德拉N

在意:这几个共享的REGION在引用它的页面中是不能修改的,所以在Jdeveloper的Structure面板中的玫瑰紫的。

 

  1. 数据源绑定

对于有数据库交互(插入、更新、删除、查询)的BEAN,你还要钦命1个数据源绑定到贰个视图实例和涉及的视图属性名称。那几个绑定相当首要,因为OAF用它来询问数据、写回用户输入的多少。

(1). View Instance
Name指的是在application
module中的视图对象(全部的视图对象都存活于application
module中并经过它们的名号来调用),

如:假设一个SuppliersVO视图对象由页面中的root
application
module通过“MySupVO”来调用,则在此间您应当内定MySupVO那个名字。

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

如:假使您的SuppliersVO有三本性质“SupplierId”(映射到列SUPPLIEMurano_ID),那里你应该钦命“SupplierId”这一个名号。

 

  1. 概念菜单

你应该接纳oracle
application菜单和效劳的表单中定蒿子单。

正像OAF将概念的UI布局翻译成运维时的BEAN结构,它也蕴藏了菜单定义的WEB
BEAN。

 

  1. 概念页面流

拍卖多页面事务流时,OAF提供了1个可定义的(可客户化)给复杂的、硬编码的支配逻辑。

 

  1. 客户化页面

OAF也囊括了1个可定义的客户化架构,叫做:OA
Personalization
Framework。那是为了支持最终用户所需的客户化和成品传输链(区域化和垂直化(没懂什么看头)等)。

专注:如您在开发指南开中学的见的,建立REGION和item注脚比编制程序更可取。实际上,你应当只在不能够用表明的格局来确立的时候才使用编制程序的方法,那样客户就能客户化你的页面了。

 

XML 44、控制器


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

控制器能够提到到视图的REGION级别,(很多场所下,任何的OAF
web
bean达成了oracle.apps.fnd.framework.webui.beans.OAWebBeanContainer接口,能够提到到控制器)。

您建立的装有的控制器都应有为oracle.apps.fnd.framework.webui.OAControllerImpl的子类。

您可以在控制器中贯彻WEB
BEAN的职能。

您能够编写制定代码用来:

(一).
在运作时操作和开始化(包蕴可编制程序的你不能够以宣称的法门确立的布局)

(二). 截取和拍卖用户事件如按下按钮

 

  1. 处理请求

当浏览器为您的页面公布二个OA.jsp请求时:

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

这一个application module
也从连接池中取出JDBC连接,然后那个页面包车型大巴事务处理的上下文就规定了。

(二).
用户的SESSION被认证,借使不行,突显登录的页面。

(三).
假如用户是可行的,OAPageBean评估请求参数来规定当做HTTP
POST或GET来处理。

 

  1. 处理GET请求

当浏览器向服务器发送3个GET页面包车型大巴央浼时(也许你手工业的FOGL450WA库罗德D),OAF使用可注明的UI定义来建立web
bean结构

(一).
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()方法。

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

 

  1. 处理POST请求

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

(一). OAPageBean检查看web
bean是还是不是留存于内存中,假设未有(可能因为财富被另行布局了,用户按了后退按钮,

抑或POST是由二个会话框发出的),那就重新树立web
bean的布局,像下面执行GET时一致。

(贰).
OAPageBean在具有结构树中的bean上调用processFormDate(OAPageContext,OAWebBean),将form中的数据写入module(它调用pageLayout
region上的processFormData,

于是种种web
bean教递归的调用了它的子类的processFormData)。写入form数据到model自动的调用了属性级和实体级的注解。假设你抛出其余表达相当,执行会终止并展现错误新闻。

(三). 
固然在执行processFormData()进度中并未有拾分,OAPageBean调用全部的bean上的processFormRequest(OAPageContext,OAWebBean)方法,如下面所讲。

那些历程让您的控制器对用户的动作作出响应。

(4). 假使未有JSP
FO奥迪Q五WA汉兰达D只怕重定向,或然在processFormRequest()方法中并未有那些,则页面被刷新。

 

  1. OAPageContext

当OAF接收到贰个OA.jsp请求,OAPageBean建立1个oracle.apps.fnd.framework.webui.OAPageContext,那些类只在页面处理进程中才存在。

下边所说的多个首要办法(processRequest(),processFormData()和processFormRequest())都有二个OAPageContext参数,你编写的别的控制器总是要利用这几个第叁的类。

如上海教室所示,OAPageContext同时引述了request和root
applications mudule。

实际上OAPageContext被交给你的每种控制器的实施办法,在下边包车型地铁天职业中学您将使用OAPageContext:

 

  1. 走访请求参数

或是最要紧是,那是叁个您用来经过getParameter(String)方法来读取请数据的类(请求包括U奥迪Q5L中的参数,即便是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缓存了1个对root application
module的引用,它提供了访问它的视图对象和事务。

只要急需访问application mudule:

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

 

八.
导航介绍

您利用那一个类的主意来告诉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); } } 

 

九.
做客应用上下文新闻

有如模型中的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:

在视图和控制器中利用的1组常量。

(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. XML,实现

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

对其余web
bean属性,当将它交给1个完结上下文(完成上下文是UIX必要处理绑定数据的装有的音讯)时,UIX调它的getAttributeValue()方法。

对此一个加以的属性,如:完毕上下文知道哪位视图对象、视图属性和近来行是怎么样。

数码绑定值使用实现上下文提供的那些消息来打听数据源,并重临实际的值,所以它亦可生成对应的HTML。

 

XML 66、oracle.apps.fnd.framework


1.
oracle.apps.fnd.framework

归纳从model和用户界面或视图代码中能够安全访问的类和接口。

如:假设您在页面中要拜访2个root
application
module,你要使用oracle.apps.fnd.framework.OAApplicationModule接口(你永远不会造访3个客户端的落到实处)。

真实意况下,那几个包也囊括:

(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。你应当只在底下的场所中央银行使这些包中的类:

(壹). 二个类未有message
bean(如:OASubmitButtonBean只在这么些包中留存)

(二). 你不须要动用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,容器,列表,头,标准的单列或双列模板等。你应当在编辑用户界面控制器时选用这个类。

警戒:不要在model代码中调用这些包中的类。

 

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

包罗能够显示错误、警告或消息的HTML
FOLANDM控件。如用户在一个文本框中输入了错误的值,3个谬误图标会显示在它的标题下边。你应当在编辑用户界面控制器时利用这几个类。

留意:这么些包中的很多类了席卷在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地图