OAF_OAF Framework页面分析(概念)

简介: 20150506 Created By BaoXinjian 1. 页面基础 在浏览器层,OAF页面和其它页面一样,是标准的HTML页面。 在中间层,OAF页面实际是由内存中的JAVABEAN结构来实现的,和传统的JAVA客户端界面相同。

20150506 Created By BaoXinjian

1. 页面基础


在浏览器层,OAF页面和其它页面一样,是标准的HTML页面。

在中间层,OAF页面实际是由内存中的JAVABEAN结构来实现的,和传统的JAVA客户端界面相同。

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

当浏览器请求一个新页面时,OAF读取页面中的声明的元数据来建立WEB BEAN的结构。

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

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

 

当浏览器提交一个FORM(如:用户选择了搜索区的GO按钮),如有必要,OAF重新建立WEBBEAN结构(BEAN结构在请求之间是缓存了的,只有在意外的情况下需要重新建立),然后调用你在PAGEBEAN中写的处理事件的代码。当页面处理结束,HTML页面重新建立并发送到浏览器。

 

二、模型


1. 模型封装了指定的应用中的数据和商业逻辑。它也提供了真实的商业对象和商务服务的抽象。

注意:要完全正确和一致,本图需包括以下的实现

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

 

2. 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时使用这个特点。

 

3. 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),这样一来,就必须考虑到所有的验证规则以便客户端就不用再关注这些了。

 

4. Association Objects(关联实体)

如果你有一个复杂的实体(如三层采购定单,在头、行、发运地之前是一对多的关系),你可以使用association object来定义实体间的关系,

你可以定义弱连接(一个定单引用了已经存在的供应商)和强连接(一个定单包括它的行,行不能独立于头存在)。

 

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

在简单的情况下,一个BC4J视图对象封装了一个数据库查询。查询执行后,一个视图对象循环访问结果集。结果集包含一个或多个视图行,一个视图行的不同属性对应数据库查询的行。

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

每个视图对象都可以配置用以下的方法来查询数据:

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

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

(3). 一些属性对应到实体,一些属性直接对应SQL(用来增强实体对象的不能从实体对象查询的临时数据,如显示的计算值)。

在OAF中,在下面的情况下会用到视图对象。

(1). 为详细的用户界面展示最优化的数据。如果用户界面支持实体对象的插入、更新、删除,你应该使用视图对象来完成这些任务。

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

(3). 为商业逻辑建立有效的“验证查询”。如:在采购定单头实体对象中,你可能要使用一个验证视图对象来取得这个采购定单的最大行号,以便于它可以被缓存而在新行插入时可以增加。

最后,你可能不只需要定义视图对象,还可能要为它们编写代码。典型情况下,代码应该实现复杂的查询的数据绑定并执行查询(所以视图对象知道如何查询它自己)。

 

6. View Link(视图连接)

就像连接实体对象一样,你也可以创建视图对象的关联,这叫做视图连接。如:你在采购定单头视图对象和行视图对象之间建立了一个视图连接,这可以用来在访问头的时候自动查询行。

 

7. 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。

 

3. 视图


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

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的结构。

 

2. 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

 

3. 组件重用

如果想组合页面中的共享对象,你可以简单的继承它们

如:在OAF的ToolBox示例中,我们建立了一个通用的REGION(叫PoSummaryRN),所以这个组件可以被多个页面包含而不用重写代码。

要添加一个region到页面,我们只要简单的建立一个新的region,将Extends属性设为:/oracle/apps/fnd/framework/toolbox/tutorial/webui/PoSummaryRN

注意:这个共享的REGION在引用它的页面中是不能修改的,所以在Jdeveloper的Structure面板中的灰色的。

 

4. 数据源绑定

对于有数据库交互(插入、更新、删除、查询)的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”这个名称。

 

5. 定义菜单

你应该使用oracle application菜单和功能的表单中定义菜单。

正像OAF将定义的UI布局翻译成运行时的BEAN结构,它也包含了菜单定义的WEB BEAN。

 

6. 定义页面流

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

 

7. 客户化页面

OAF也包括了一个可定义的客户化架构,叫做:OA Personalization Framework。这是为了支持最终用户所需的客户化和产品传输链(区域化和垂直化(没懂什么意思)等)。

注意:如你在开发指南中的见的,建立REGION和item声明比编程更可取。实际上,你应该只在不能用声明的方式来建立的时候才采用编程的方式,这样客户就能客户化你的页面了。

 

4、控制器


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

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

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

你可以在控制器中实现WEB BEAN的功能。

你可以编写代码用来:

(1). 在运行时操作和初始化(包括可编程的你不能以声明的方式建立的布局)

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

 

2. 处理请求

当浏览器为你的页面发布一个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来处理。

 

3. 处理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并发送到浏览器。

 

4. 处理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()方法中没有异常,则页面被刷新。

 

5. OAPageContext

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

上面所说的三个关键方法(processRequest(),processFormData()和processFormRequest())都有一个OAPageContext参数,你编写的任何控制器总是要使用这个关键的类。

如上图所示,OAPageContext同时引用了request和root applications mudule。

实际上OAPageContext被交给你的每个控制器的执行方法,在下面的任务中你将使用OAPageContext:

 

6. 访问请求参数

可能最重要是,这是一个你用来通过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... }
}

 

7. 访问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(); }

 

5、 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接口。

 

2. 内部bean结构

每个web bean都维护它自己以下的信息:

_indexedChildren 子web bean

_namedChildren UIX指定的子web bean

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

 

3. 数据绑定值

作为不是上图所示的情况,OAF web bean属性实际作为数据绑定值来实现。

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

 

4. 实现

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

对任何web bean属性,当将它交给一个实现上下文(实现上下文是UIX需要处理绑定数据的所有的信息)时,UIX调它的getAttributeValue()方法。

对于一个给定的属性,如:实现上下文知道哪个视图对象、视图属性和当前行是什么。

数据绑定值使用实现上下文提供的这些信息来询问数据源,并返回实际的值,所以它能够生成相应的HTML。

 

6、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实例化。

警告:不要在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,容器,列表,头,标准的单列或双列模板等。你应该在编写用户界面控制器时使用这些类。

警告:不要在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

ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
相关文章
|
Oracle 关系型数据库
OAF_开发系列20_实现OAF打印功能
ddddd   添加一个页面级的button区域:pagebuttonBar,在之下添加button item ,这里主要设置的参数有:采用默认的oaf的打印按钮的id名称: IcxPrintablePageButton,设置属性集为:/oracle/apps/fnd/attributesets...
1141 0
OAF_开发系列21_实现OAF事物控制TransactionUnitHelper(案例)
20150716 Created By BaoXinjian 一、摘要 TransactionUnitHelper用以创建一个被标记的Transaction,个人感觉类似PLSQL SavePoint用以Commit和Rollback特定交易的作用 主要用法 1.
1090 0
|
Oracle 关系型数据库
OAF_开发系列18_实现OAF页面跳转setForwardURL / forwardImmediately(案例)
20150716 Created By BaoXinjian 一、摘要 setForwardURL()与forwardImmediately() 1. forwardImmediately会停止当前页面的请求,直接跳转到新的页面; 2.
1536 0
|
测试技术
OAF_开发系列15_实现OAF组件重用和继承(案例)
20150717 Created By BaoXinjian 一、摘要 组件的重用和继承 如果你想包含共享对象到你的页面中,你可以简单继承它们。 比如,在OAFToolBox Sample Library/Tutorial中,我们创建了一个通用区域(名为OrganizationRN),因此同样的内容不需要编码就可以包含在多个页面中。
903 0
|
关系型数据库 Oracle
OAF_开发系列14_实现OAF代码动态新增控件
dERP技术讨论群: 288307890 技术交流,技术讨论,欢迎加入 Technology Blog Created By Oracle ERP - 鲍新建
1028 0
|
关系型数据库 测试技术
OAF_开发系列13_实现OAF通过Vector动态查询设置(案例)
20150715 Created By BaoXinjian 一、摘要 Oracle OAF Guide上介绍的标准客制化查询的方式,在多条件下进行查询 具体实现步骤如下 Step1.在controler中的processRequest 的方法中调用 (1).
1603 0
|
SQL Oracle 关系型数据库
OAF_开发系列10_实现OAF动态LOV设定
20150712 Created By BaoXinjian 一、摘要 要在OAF中动态创建LOV的功能是很复杂的一件事,本文所讲述的动态LOV创建场合用于事先不能知道页面上会有多少个LOV,而且LOV所使用的SQL查询,也是由用户交互而获得的。
896 0
|
测试技术
OAF_开发系列04_实现OAF查询4种不同的实现方式的比较和实现(案例)
2014-06-02 Created By BaoXinjian 一、摘要 OAF实现查询功能或需求,一般都会采用以下四种方式 (1). ResultBasedSearch 最简单的实现方式,将结果中某些栏位需要查询的栏位的属性search设定为true即可 (2).
1717 0
|
前端开发 Go
OAF_架构MVC系列4 - Control的概述(概念)
2014-06-18 Created By BaoXinjian 一、摘要 Control层位于Model层和View层的中间,连接了Model层和View层, 主要存在两个功能 操作/初始化UI和数据 接受和处理页面上的用户的各种事件,并进行分发 本文的基本结构 Design...
786 0
|
Web App开发 缓存 关系型数据库
OAF_OAF Framework状态分析(概念)
20150706 Created By BaoXinjian 1. 架构概述 架构概述 下图显示了基本的OAF状态管理组件的应用开发视图(它并没有反映所有的OAF细节)。  2. Root Application Module(数据库会话和事务状态) 在OAF页面中,每个页面都关联到一个root application module,提供了事务上下文和JDBC数据库连接(在OAF中,数据库会话是关联到JDBC连接的)。
1111 0