OAF_OAF页面元数据结构MDS的解析(概念)

2014-06-06 BaoXinjian

一、摘要



在OAF编译文件时,系统会通过XMLImport将所编译的XML文件,编译到数据库中,也就是MDS(Meta data Service),元数据库

而在OAF在展现给用户时,系统将存放MDS的内容,再通过程式组合成XML页面定义文件,并进行渲染

所以MDS可以存放了OAF页面的定义,所以二次开发时,在编译XML文件后,并不需要XML文件存放在服务器上

这个和Form Builder的fmx 和 fmb文件有类似性,fmx为编译后的问题,fmb是代码文件,在执行时只需要fmx文件

而OAF在页面文件做的更加彻底,直接存放在数据库中,但是很多java class包还是通过文件调用的方式,本文只做页面定义文件相关的MDS的解释

  • 与MDS相关的Table

    • jdr_paths                 --存储OAF页面路径(目录树)
    • jdr_components         --存储OAF组件树
    • jdr_attributes            --存储OAF组件的attribute
    • jdr_attributes_trans   --存储OAF组件的翻译,多语言或国际化的实现基础
  • 与MDS相关的script
    • jdr_mds_internal
    • jdr_utils
    • jdr_custom_internal
    • jdr_docbuilder

二、导出OAF页面设计的XML定义



在OAF页面开发中,开发人员使用JDeveloper可视化工具来设计Web页面,页面有一个个组件嵌套组合而成,最后形成一个XML格式的页面定义文件。

在EBS中可以通过Abort this Page 的功能来查找出页面相关的信息,如页面结构、个性化、页面上下文、Java系统属性、预置文件等等,

利用这个功能查询出页面的路径:

然后切换到Output标签页,可以看到OAF页面的XML定义,如果页面定义信息过多,可以增加Buffer Size后再次运行,如下便是PO Document Types页面的定义信息,

从页面定义信息中可以得知OAF页面的组成,所使用的AM, Region使用的CO等信息,通过这个方法可以分析和查看标准的OAF页面和功能.

Step1. 使用About This Page

Step2. 获取Page的定义link

Step3. 通过jdr_util.print_documents查看Page定义的xml文件

三、OAF页面元信息存储结构



实现上在使用XMLImporter导入OAF页面信息的时候,XMLImporter解析OAF页面定义XML文件,然后将页面信息分别存储在下图的几个表中。

OAF页面元数据主要存储在上图中的3个表中:

1. JDR_PATHS:存储了页面路径的结构以及OAF页面个性化的结构信息

/bxj/oracle/apps/ap/expense/webui/ExpenseSummaryPG这是OAF页面的路径,它会被拆分为树型结构存储在JDR_PATHS表中,请看下面:

其中/bxj/oracle/apps/ap/expense/webui都是属于PACKAGE类型, 而最后的ExpenseSummaryPG是DOCUMENT,即是一个XML文档

通过最后这个一系列的父子关系关联,组合成了一个完整的Page的路径

2. JDR_COMPONENTS:存储了页面组件信息,OAF页面组件被分解后存储在此表中

上面从JDR_PATHS表中查询出来类型为DOCUMENT的节点DocumentTypesPG,查询它的组件属性如下:

对比上面查询出来的结果和通过jdr_utils.printDocument(‘/bxj/oracle/apps/ap/expense/webui/ExpenseSummaryPG’)工具导出的XML文件内容就会发现,

JDR_COMPONENTS中的数据是将XML文件中的OAF组件分解得到的

3. JDR_ATTRIBUTES:存储了页面各组件的属性

使用下面的SQL查询出页面组件的属性信息

4. JDR_ATTRIBUTES_TRANS

存放了语言定义,之后再做OAF多语言开发中会详细介绍

5. 总结

从上面的OAF元数据存储不难看出,OAF开发完成后,使用XMLImporter工具导入OAF页面的时候,XMLImport工具将页面定义XML文件按照组件进行分解,

  • 将文档的结构信息存储到JDR_PATHS中;
  • 将组件信息保存到 JDR_COMPONENTS中;
  • 组件的属性保存到JDR_ATTRIBUTES中;
  • 多语言信息保存到JDR_ATTRIBUTES_TRANS中;

而当运行OAF页面的时候,

  • OAF引擎根据 Function定义中的URL地址,即OAF页面的页面路径;
  • 首先到JDR_PATHS表中查询出 DOCUMENT的节点;
  • 然后再从JDR_COMPOENTS 和 JDR_ATTRIBUTES表中取得组件和属性信息后输出Web页面;
  • 再根据语言环境确定是否要从JDR_ATTRIBUTES_TRANS中取值多语言信息;

所以发布OAF应用的时候, 页面定义文件是无需上传到JAVA_TOP下的.

熟悉了JDR相关的结构之后,对于我们理解OAF的工作原理,以及解决一些疑难杂症非常有帮助. 同时对于OAF页面的个性化也会涉及到这几张表.

Thanks and Regards

参考: 张礼军 http://oracleseeker.com/2009/08/11/explained_meta_data_for_page_of_oracle_application_framework/

时间: 2024-10-01 13:14:26

OAF_OAF页面元数据结构MDS的解析(概念)的相关文章

OAF_OAF页面的多语言开发国际化(案例)

2014-06-06 BaoXinjian 一.摘要 在做欧美项目时,对页面做全球化的定制的必须,本文介绍了OAF在页面上做多语言的开发 OAF多语言开发涉及两个方面 界面的多语言开发 底层数据库的多语言开发 界面的多语言开发一般也有两种方式实现 OAF个性化实施 OAF对MDS的xlf修改导入 二.案例1 - 通过定制xlf文件,实现页面的多语言 案例:对客制化的expense summary 的OAF页面进行页面多语言开发 1. 查看OAF对应的page xml的路径 /bxj/oracle

一个项目需要考虑的问题:项目路径,数据库设计和权限,安全策略,日志类实现,页面基本结构

整个项目的流程 1.构建整个项目的框架结构[基本常量的定义] [实现一个框架需要权衡和良好的包含体系] 2.数据库设计和权限控制[对访问数据库的用户权限控制:默认新创建的用户对库内的数据并没有操作权限:Grant语句进行全新啊管理] 在项目建立之初,对数据库表结构进行设计是项目的关键. 考虑到各个业务层面上,设计各自的表结构. 注意数据库的三范式结构: 数据不可分割:第一范式[关联型数据库][针对每一列字段] 每一行数据的独立性:第二范式[针对每一行数据] 数据表之间的数据不要重复冗余:第三范式

ext2元数据结构

概述 本篇博客主要描述ext2文件系统中的各种典型元数据结构,其中包括文件系统级别的元数据,如超级块,块组描述符等,也包括文件级的元数据,如文件目录项,文件inode等. ext2超级块 这里的超级块指的是ext2文件系统存储在磁盘上的超级块结构,之所以这么说是因为每个文件系统除了存储在磁盘上的超级块外,还在内存中也存储了一个超级块结构,基本上内存中的超级块是在磁盘超级块的基础上增加了一些额外的管理信息而成,因此,在这里我们主要关注的是ext2存储在磁盘上的超级块的数据结构. ext2磁盘超级块

JS动态更新HTML5 APP页面的结构(包括功能和布局)

HTML5 APP开发算是越来越流程了.当然,开发这样的HTML5 APP有什么好处呢.笔者认为:可以通过后台JS动态更新HTML5 APP页面的结构,是一大优势. 那如何实现该功能呢. 首先,得知道其原理:为什么可以通过后台JS就可以更新前台APP. 接着,得知道操作步骤是怎样的. 详细内容,可以查看如下链接: HTML5 APP 实现后台JS更新APP前端页面功能 HTML5 APP开发之动态调整页面布局 如需要源码,请@我 (一份完整的源代码,收费1元)

html页面基本结构

html页面基本结构 在工程路径下分为三个文件夹html,css,img.分别存放相对应的文件 html里边的样式外联css里边的样式 html的结构:在body部分分为 头,内容,脚,写上注释<div class="qiu"> <header></header> <!--头结束--> <div class="content"></div> <!--内容结束--> <foote

whistle——真机移动端页面调试【查看、修改真机端的页面DOM结构及样式】

1.查看.修改真机端的页面DOM结构及样式[参考——https://imweb.io/topic/5981a34bf8b6c96352a59401]: 1.0.需要配置的rule——域名 weinre://随便某个分类命名[如:wq.jd.com weinre://test2——test2只是作为weinre的分类,防止一个weinre调试页面出现太多的连接]: 1.1.真机上访问某个页面,如访问微信下的发现>购物页面: 1.2.点击weinre下的,刚创建的分类test2,跳到http://1

第126讲:Hadoop集群管理之Datanode目录元数据结构详解学习笔记

namenode是管理hdfs文件系统的元数据 datanode是负责当前节点上的数据的管理,具体目录内容是在初始阶段自动创建的.在用hdfs dfs namenode format时并没有对datanode进行format. 在datanode中目录是按文件信息存储的. datanode存在于具体节点上的hadoop-2.6.0/dfs/data/current中. datanode的VERSION内容与namenode的VERSION内容相似. storageID:在namenode与dat

通过heartbeat配置lustre元数据服务器mds高可用

本次试验环境 OS:5台RHEL6.4  x86_64 最小化安装 图1为本次试验示意图 其中上图DRBD为添加的5g硬盘,用来DRBD同步数据使用 oss1也添加一块5g的硬盘作为ost使用 MDS采用active-standby模式,示意图如下所示 所有节点的hosts文件如下 [[email protected]~]# cat /etc/hosts 127.0.0.1   localhost localhost.localdomain localhost4localhost4.locald

iframe页面三层结构框架搭建

iframe height设为100%,同时要使其所有父容器的height设为100%: <style type="text/css"> html, body { height: 100%; } </style> 头部导航固定: <div class="container-fluid"> <div class="navbar navbar-default navbar-fixed-top" role=&q