Form Builder开发中Form Moudle中各种对象的介绍
(版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处;否则请与本人联系,违者必究)
Form Builder 中最高层次的对象如下表所示
对象名 |
描述 |
Forms |
就是form Module,对应的就是fmb文件,Form Builder开发最常用的Module,编译后为fmx文件。Oracle Applications看到的除了菜单文件都是form. |
Menus |
Menu Module,对应的是菜单,就是mmb文件,编译后的是mmx文件。 |
PL/SQL Library |
是PL/SQL package库,服务于fmb文件,可以为多个fmb文件共享,对应的pll文件,编译后为plx文件,存储于应用服务器,而不是数据库。这和数据库的PL/SQL package稍有不同。 |
Object Library |
对象库,用于创建一些标准的对象,以便为全组人员公用和在以后的开发中使用,对应的是olb文件。 |
Built in Packages |
这里存储的是Oracle Form Builder内置的package. |
Database Objects |
这里是在连接了数据库之后才能展开,里面存储的是相应的数据库里的所有对象,按照schema分类的。 |
在下一个层次最主要的就是Forms下面的对象,也就是每个fmb文件下面的,其它的都比较简单,或者和Forms下面的一样,接下来主要介绍Forms下面的对象。
对象名 |
描述 |
Triggers |
触发器,就是对用户的动作做相应处理的PL/SQL块. |
Alerts |
在特定条件下,用于给操作人员展示消息的模态窗口。 |
Attached Libraries |
就是上面描述的pll文件,如果fmb文件需要调用pll文件里面的PL/SQL,就要把pll文件加入到这里。 |
Data Blocks |
数据块,Block是每个fmb文件必不可少的对象,是fmb的逻辑分组对象,所有的Item都必须存在于一个Block。fmb所有的操作都是对应一个block或者item. |
Canvases |
画布对象,是所有的item都必须放在画布上才能展现给用户,画布作为展现的容器。 |
Editors |
编辑器,在运行时有三个可用的编辑器,默认编辑器,系统编辑器和用户定义的编辑器。就是在菜单选择”编辑”->”编辑”时所出现的编辑器。 |
LOVs |
LOV就是一个弹出窗口,里面提供用户可以选择的值列表。 |
Object Groups |
对象组,是一组对象的容器。用于打包相关的对象到一起以便别的模块更容易subclass(继承)或者拷贝使用。 |
Parameters |
就是form在启动可以提供参数值,并可以在Block间共享使用,Parameters也算是一个form内置的Data Block. |
Popup Menus |
附加于item或者画布上的依赖于上下文的菜单,以便用户可以快速执行某些操作或者命令。 |
Program Units |
自定义的PL/SQL包,procedure和function,主要是为fmb内共享的PL/SQL块。 |
Property Classes |
属性类,是一个包含一组属性和相应设置的命名对象,别的对象可以subclass它以继承其中的属性设置。 |
Record Groups |
是Oracle Forms内部的一种数据结构,它拥有类似数据库表的行列结构。在开发中,最常用的用法是为LOVs作为数据源。 |
Reports |
报表,就是rdf文件,就是Report Builder里创建的对象。 |
Visual Attributes |
可视属性组,里面主要包含了可视属性和相应设置。对于用户可见的对象,可以设置可视属性组属性。 |
Windows |
窗口,是Canvas的容器,所有的Canvas都必须存在于窗口,我们在Oracle Applications看到的fmb都是它的一个或者多个窗口。 |
PL/SQLLibraries, Program Units和数据中的PL/SQL 包的区别
总体来说,主要看共享的层次高低和范围所决定。
1. 如果PL/SQL块是只是单个Form内共享的,那就适合建立Program Units,保证模块的整体和可维护性更高。而且只能由所属的Form模块访问。
2. 如果是多个Form内共享,那么可以建立PL/SQL Libraries或者数据库中的PL/SQL 包,但如果只是Form间共享,还是PL/SQL Libraries更好一些。特别的是PL/SQL Libraries是可以直接访问Form内的对象及其属性,如果是要建立这样的PL/SQL块,自然要选择PL/SQL Libraries而不是数据库PL/SQL包。
3. 如果不仅仅是Form内共享,而且为的其它程序,如JAVA,PL/SQL和C语言共享,那自然只能建立数据库PL/SQL包,但注意这是没有办法访问Form模块内的信息。
属性组(PropertyClasses)和可视属性集的区别
请参考http://blog.csdn.net/tavor/article/details/17615357
对象组(ObjectGroups)和对象库(ObjectLibraries)的区别
个人理解,区别还是主要在于共享的层次,如果是全公司统一的标准,适合建立对象库;如果只是几个或小部分应用共享的对象,建立对象组更适合。