OAF开发之EO:Definition定义

(一)摘要

EO:针对表、视图、快照封装商业规则、可用于多种客户端(不仅限于OA Framework),并包含所有的针对这些数据库对象的验证及行为。

EO在Module中的地位:EO处于DB上层,VO下层。这就决定了,EO可调用DB层的CLASS,而只有VO可调用EO层的CLASS。

下面是关于EO的一些描述:

1、每张表至多有一个EO,我的理解,你不能把一张表拆开两个部分,各建一个EO。

2、每个EO需包含表中的所有的Attribute(即字段)。

3、在EO中,你可以编写字段初始化,Attribute(字段级)校验,Entity(多字段联合)校验。

4、你可以建立EX(Entity Expert)实现多EO之间的校验。

EO又分为两种类型(主要从编程控制方法来分):

1、Java EO:基于Java语法实现数据操作的EO。

2、PL/SQL EO:基于PL/SQL Store Procedure来实现数据操作的EO。

(二)EO的建立过程

JDEV提供了Wizard来建立EO,你可以按照向导一步一步完成一个EO的建立:

Step 1:定义EO名称、路径及对应的数据库对象

Name:xxxxEO(应按照Object name standard 来命名)

Package:<yours company>.oracle.apps.<appl short name>.<component>.schema.server

Extends Entity:留空(除非你要继承一个已有的EO)。

Schema Object:根据应用选择表、视图、同义词或快照。

Database Schema:选择应用。

Step 2:选择EO包含的字段

(1)显示了表中所有的字段,在OAF中称为Attribute。

(2)建议不要Remove任何字段,除非基表已发生变化。

(3)如基表增加了字段,点击New from table…在EO中新增Attribute。

(4)如要增加非表中字段(比如计算字段),可点击New…。

(5)建议表中最好包括WHO字段,否则后面在编译时会报错...。

Step 3:定义字段的属性

(1)建议不要更改Attribute Name、Attribute Type、Database Column Name&Type,这是OAF从数据库中提取出来的,和表是一致的。请注意,这里的Attribute Name很重要,是我们在OAF将要使用的名称,而非Database Column Name。

(2)默认的,所有字段均需勾选Persistent(稳定)及Queriable(可查询)。

(3)如表中定义有Primary Key,则这里的Primary Key会自动勾选,如表中没有,你可以选择一个Attribute来勾选,PK Attribute中的值须具有唯一性,是操作Row的依据。勾选Primary Key后,请务必把Mandatory(强制)勾选。如果你没有勾选PrimaryKey,OAF会自动帮EO建一个ROWID列做为PK。

(4)不要勾选Unique, 这个选项不会影响PK的使用。

(5)Discriminator选项用于Polymorphic EO(多态EO)(后述)。

(5)Change Indicator用于Object version number Column,即这张表需要用此字段来记录更新版本(ERP标准表中常有这种字段,客户化系统中一般没有)。

(6)通过勾选Updateable中的选项来定义字段是否可修改。

(7)通过勾选Refresh After来定义在执行Database Trigger后是否刷新EO。

Step 4:生成Java文件及方法

除了Data Manipulation Methods不选外,其他都选(具体原因待研究)。勾选后,OAF会自动生成此EO对应的CLASS文件,并内置好相应的方法(标准方法,你可以按照需要进行扩展)。

Step 5:定义EO的Tuning属性

勾选Use Update Batching,并设定Threshold(上限)为100。

(1)此选项非常重要,如果你的EO是针对多语言表的时候(即表名后有_TL后缀的)。

(2)有些情况下,这个选项是不能勾的:

①如果你的EO是PL/SQL EO。

②EO中有BLOB或CLOB字段。

③没有PK或只有Rowid PK。

④当你勾选了Refresh After后的任一项。

User's Guide对此选项的说明是此选项可使OAF在一个提交动作中包含多个DML 处理,比如可一次更新多个Row。至此,一个EO就建好了,你就可以通过VO来调用它,在Page上对数据库表进行操作了。

(三)EO的建立过程向导

案例:建立一个Invoices Header对应的EO

Step 1:定义EO名称,路径及对应的数据库对象

Step 1 of 5:Name

图1:Step 1 of 5:Name

Step 2:选择EO包含的字段

Step 2 of 5:Attributes

图2:Step 2 of 5:Attributes

Step 3:定义字段的属性

Step 3 of 5:Attribute Settings

图3:Step 3 of 5:Attribute Settings

Step 4:生成Java文件及方法

Step 4 of 5:Java

图4:Step 4 of 5:Java

Step 5:定义EO的Tuning属性

Tuning

图5:Tuning

参考资料:

1. OAF_OAF EO系列 - Definition定义(概念)

本文标题:OAF开发之EO:Definition定义

本文链接:http://yedward.net/?id=218

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章