有幸参见了Oracle OPN 举办的Oracle Application Framework 的培训,现将笔记分享一下:
<仅供初学者参考,有些地方未必是正确的,如您发现,敬请指正>
名词解释:
- OAF(Oracle Application Framework) : 是针对EBS12的新的框架,UI比其他版本(form)要好,功能也有所增强, 12里不少新的功能都是基于OAF开发的
- BC4j(Business Component for java) : 业务组件,和“业务”相关的一些java 对象(entity object)
- DBC file (Database connection file): 数据库链接文件, 里面会存储一些权限的信息
- UIX (Oracle XML user interface framework) : 解析和处理XML文件的framework (Oracle XML user interface framework leveraged by the OA Framework for rendering and interacting with HTML web beans)
- LOV (list of values) : A user interface control that lets users choose a value from a predefined list of values for the purpose of populating one or more fields on a page.
- 一种就是下拉框 (需要获得一个field)
- 另一种就是根据某一个值搜索记录,然后选中记录而得到一系列的值 (见下面的例子)
<一个普通的search页面> 点击那个搜索(象放大镜的图片),会弹出下面的LOV的页面>
<LOV> 页面,根据一些key,搜索记录,然后选择记录,可以将值传回上一个search页面
- 另外一个图例解释什么是LOV
零星记录:
- OAF 是MVC结构 (BC4J – Module) EO (entity object对应DB 表的object) VO (view object , 可以认为是反映业务级别的object,VO可以包括几个EO)
- [经验] Control 的class 一定不要读取数据库,可能会出现性能的问题,在OAF的架构里,使用Module 来处理和DB相关的东西的,control直接调用相应module的方法来实现
- 设置“授权的”时候,(允许使用一定的用户链接EBS 的instance)一定要给相应的用户分配responsibility,否则会链接不上
- 如果使用oracle EBS 内置的用户,这种用户默认已经设置了权限,所以可以正常链接
- 但如果建立一个新的用户,就必须要设置权限,才保证能够连接上 (或者新建立的新的instance,都需要配置相应的权限)
- EBS 服务有两个组成
- 一个是application 安装EBS整个系统
- 另一个是数据库的,可以用不同的服务器
- OAF的开发需要使用特定的Jdeveloper (需要在metalink上下载),这个版本才是支持EBS的,并且一定要对应正确的EBS版本号(包括小版本) (根据一个DOC ID来对应)
- 客户端调试的时候,需要使用DBC 文件(需要从服务器端获得),这个文件里包含用户信息和一些认证信息 (XXX.dbc)
- 一个页面只能使用一个application module
- OAF 主要的参考文档(可以看到详细的说明,javadoc和例子)支持EBS 的JDeveloper 安装之后,可以看到jdevdoc ,下面就有相关的详细文档:
- R12 已经很好地支持了Flexfield (弹性域)可以查看JDeveloper下面的文档(search即可)
- OAF是新的技术,拥有很漂亮的界面,但是UI上有很多的局限性,虽然支持一些自定义,但有些看似简单的UI,实现起来很麻烦,或者根本无法实现,所以答应客户更改UI的时候一定要谨慎,不能仅凭自己的直觉来决定,需要和技术顾问探讨,并且了解支持的一些UI布局等
- OAF 有page flow 的概念 (和form的tab 页面可以随意切换是类似的), Step By Step 注册那种,相应的Page 之间可以设置依赖关系
- Page flow 解释一下: 比如需要创建一个含有20个field的数据记录,如果放置在一个页面会使页面很大,所以会将这些字段分类放置到不同的页面,会出现几个页面(页面直接是有一定的联系,比如,必须创建了第一个页面,才能创建第二个页面)
- 对于页面删除-》 确认删除-》最终删除 ,也属于类似的
- OAF 和 Form的差别
- 3GL是第三代编程语言的意思(3 Generation Language),他包括C,PASCAL等
- 4GL是第四代编程语言的意思(4 Generation Language),他包括JAVA,VB,C++等 (有些分的不是很清楚)
OAF | Form |
Java SQL | PL SQL |
OAF 页面修改比较麻烦 新建一个页面还可以 | |
新的页面,用户比较喜欢 | |
对于没有form经验的人,上手更容易一些 | |
R12 使用的新的框架,刚刚发展,不是很成熟 | 已经发展几年了,技术比较成熟,目前的技术人员比较喜欢,这个比较灵活 |
可以在本机调试 | Form 无法再本机直接调试 |
非所见即所得(4GL) | 所见即所得(3GL) |
- MDS 目录仅仅放置了page相关的UI页面,(PAGE / Region)
- IMPORT 一个新的OAF 页面 ,重新deploy可以生效 ,建议还是重启服务器
- 但是更改class(CO / EO/VO ) 等,必须要 Adoacall 重启这个命令, 最保险的方式重启所有的服务
- [经验]建议;oaf , 分开开发和测试环境分开,因为开发可能频繁地重启server
- OAF 可以在本机调试
- 避免影响“功能顾问”进行测试
- 页面更改,可以不重启服务器,但必须import (上传到server不行)
- My classes 文件更改,一般需要重启服务器 (除非可以清空java class的cache)
- XMLImporter 命令,引入一些文件
- 引入到MDS respotiry (数据库) (注意这个机制,页面相关的那些XML文件,实际都是存储到sever端的数据库里的,仅仅数据库里的值被更改,才可能生效的)
- 上传到服务器(作为备份,不能更改,更改不起作用)
- Deploy Step
- Copy myclasses into JAVA_TOP
- Import page (进入到数据库或者文件)
- Restart middleware