l 你定义的每个REGION和ITEM都有一个STYLE属性,用来指明OAF在运行时使用哪个WEB EBAN对象来为它实例化(这会指明产生什么要瓣HTML代码),如:如果你定义了一个STYLE为table的REGION,OAF会用oracle.apps.fnd.framework.webui.beans.table.OATablebean来实例化。
l 所有的页面必须包含一个顶层的REGION(叫做root region),它的STYLE是pageLayout,它是oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean的实例。
l 在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的结构。
Attribute Sets 属性集
每个REGION和ITEM都可以使用属性集来继承一组属性,一个属性集是经过命名可重用的属性的集合,它可以被任何UI对象使用,包括region\item和其它属性集。无论何时你建立一个使用属性集的UI组件,你都可以覆盖它的继承的属性(尽管这在OAF中是不推荐的)。
为了说明这一点,在应用开发中,每个表格必须为他的每一列关联到属性集,这些属性集如提示标签、显示宽度等。
l 在OAF的ToolBox示例中,有一个采购定单表(FWK_TBX_PO_HEADERS),HEADER_ID是NUMBER类型的主键,也作为采购定单号显示。
l 这个表格有一个关联的属性集:FwkTbxHeaders,是一个XML包文件,里面包括了所有的表列的属性(每一列一个属性)。其中一个属性叫做HeaderId。
l HeaderId属性设置Prompt为 Order Number,Display Length为15。
l 当我们建立一个页面包括采购定单的order number 这个ITEM时,我们也应该指定属性集为/oracle/apps/fnd/framework/toolbox/attributessets/FwkTbxheaders/Headerid
组件重用
如:在OAF的ToolBox示例中,我们建立了一个通用的REGION(叫PoSummaryRN),所以这个组件可以被多个页面包含而不用重写代码。要添加一个region到页面,我们只要简单的建立一个新的region,将Extends属性设为:/oracle/apps/fnd/framework/toolbox/tutorial/webui/PoSummaryRN
注意:这个共享的REGION在引用它的页面中是不能修改的,所以在Jdeveloper的Structure面板中的灰色的。
数据源绑定
对于有数据库交互(插入、更新、删除、查询)的BEAN,你还要指定一个数据源绑定到一个视图实例和关联的视图属性名称。这个绑定非常重要,因为OAF用它来查询数据、写回用户输入的数据。
l View Instance Name指的是在application module中的视图对象(所有的视图对象都存活于application module中并通过它们的名称来调用),如:如果一个SuppliersVO视图对象由页面中的root application module通过“MySupVO”来调用,则在这里你应该指定MySupVO这个名字。
l View Attribute Name 指的是映射到列的视图属性。如:如果你的SuppliersVO有一个属性“SupplierId”(映射到列SUPPLIER_ID),这里你应该指定“SupplierId”这个名称。
定义菜单
你应该使用oracle application菜单和功能的表单中定义菜单。
正像OAF将定义的UI布局翻译成运行时的BEAN结构,它也包含了菜单定义的WEB BEAN。
定义页面流
处理多页面事务流时,OAF提供了一个可定义的(可客户化)给复杂的、硬编码的控制逻辑。
客户化页面
OAF也包括了一个可定义的客户化架构,叫做:OA Personalization Framework。这是为了支持最终用户所需的客户化和产品传输链(区域化和垂直化(没懂什么意思)等)。
注意:如你在开发指南中的见的,建立REGION和item声明比编程更可取。实际上,你应该只在不能用声明的方式来建立的时候才采用编程的方式,这样客户就能客户化你的页面了。
作者“红豆加奶”