Oracle之OAF开发参考(8)

2019-06-11 17:49

ORACLE ERP最佳实践 Doc Ref:

错误!未找到引用源。

7. OAF_EO对象详解

ORACLE核心应用技术 OAF开发

342555394.doc (v. 1.0 )

7.1 EO对象创建

创建一个应用->点击Application Sources展开->选择包右键新建一个EO对象

从数据库里面找到操作的数据对象

一般会默认主键,如果没有主键则设置一个ID为主键

OAF_EO对象详解 34 of 69

Company Confidential – For internal use only

ORACLE ERP最佳实践 ORACLE核心应用技术 OAF开发

342555394.doc (v. 1.0 )

Doc Ref:

错误!未找到引用源。

选中Create Method、Remove Method 、Validation Method 点击完成

7.2 Validation数据校验验证机制

概述:

在Update数据之前,我们对要更新的记录进行有效性的校验,校验级别包括 1)

字段级的校验 (只涉及单个字段的校验)

OAF_EO对象详解 35 of 69

Company Confidential – For internal use only

ORACLE ERP最佳实践 ORACLE核心应用技术 OAF开发

342555394.doc (v. 1.0 )

Doc Ref:

错误!未找到引用源。

字段级别的校验一般情况下写在EO的set()方法中, 根据传入的value来决定是执行setAttributeInternal() 还是throw Exception.(代码应写在setAttributeInternal()之前); 伪代码:

public void setPoTotalNum(Number value) { // 字段级验证异常 如果采购订单数量为0抛出异常 if(value.isZero()){

throw new OAAttrValException(OAAttrValException.TYP_COMPONENT_OBJECT, //对象类型 getEntityDef().getFullName(), //对象名称 getPrimaryKey(),//对象主键 \ //字段名 value, //错误的字段值 \ //消息应用短名

\ //消息名称 }else{

setAttributeInternal(POTOTALNUM, value); } } 2)

记录级的校验(涉及多个字段的组合校验)

当校验涉及多个Attribute时,你就不能使用字段级的校验了,需使用记录级的校验,即Entity Level Validation. 此校验在validateEntity()方法中实现; 伪代码:

protected void validateEntity() { super.validateEntity();

String status =getOrderStatus(); if (\

Number oldordertotal=(Number)getPostedAttribute(POTOTALNUM); Number newordertotal=(Number)getPoTotalNum(); if (oldordertotal.compareTo(newordertotal)!=0) {

throw new OARowValException(OARowValException.TYP_ENTITY_OBJECT, getEntityDef().getFullName(), getPrimaryKey(), \

\ null); } } }

OAF_EO对象详解 36 of 69

Company Confidential – For internal use only

ORACLE ERP最佳实践 ORACLE核心应用技术

OAF开发

342555394.doc (v. 1.0 )

Doc Ref:

错误!未找到引用源。

7.3 Initialize data(数据初始化)

1.普通默认值设定

我们在创建好一个EO后,如果你选择生成了JAVA文件,我们在该EO下会发现有个EOImpl.java的节点,双击打开后,里面

双击打开后,里面已经有了一些方法了,主要有如下几类:

1. DML Operation Class

2. Set Attribute Value Class 3. Get Attribute Value Class 4. Validation Class

1). 那我们要初始化,很明显是要用到其中的Set Attribute Value Class. 这些方法名字都是 set +. 例如:

public void setHeaderId(Number value) { setAttributeInternal(HEADERID, value); }

传入参数是value, 然后利用setAttributeInternal 方法把value 赋给HEADERID(注意, 这个HEADERID是 EO Attributes 的别名. 在EO中为Attribute赋值主要有如下两个方法: setAttribute(int index, String lang , object val)

index代表Attribute在EO中的位置(注意,只在显示在Page上的Attribute中排序),也可用EO Attributes 的别名代替.

val 代表传入的值,lang 代表语言,可省略。例如:

Number price = new Number(100); setAttribute(5, price);

按照FORM的习惯,我们可能会写成 setAttribute(5,100),

请注意,这是错误的,因为JAVA会认为这个100 是基本类型中int 类型,而不是object 类型。 2). 我们可以自已写个CLASS,把所有需要初始化的Attributes全部在里面设定好.如下:

public void setallAttribute(){

Number v_id = new Number(100); setLineId(v_id);

String v_desc = new String(“ABCD”); setItemDesc(v_desc); }

3). 然后在其中的一个DML Operation class: create()中加入上述方法:

public void create(AttributeList attributeList){

OAF_EO对象详解 37 of 69

Company Confidential – For internal use only

ORACLE ERP最佳实践

ORACLE核心应用技术 OAF开发

342555394.doc (v. 1.0 )

Doc Ref:

错误!未找到引用源。

super.create(attributeList); setallAttribute(); }

这样,当你在Page上执行新增记录的动作时,你会发现有些字段就有了初始值了…

3、特殊的默认值设定

在初始值的定义中,有下面几个比较特殊的:

? Primary Key的初始化 ? WHO字段的初始化 ?

需要动态指定字段的初始化

1). Primary Key 的初始化

调用OADBTransaction来取得Sequence值,并通过SetAttribute( ) 方法赋予Primary Key即可. 代码如下:

public void create(AttributeList attributeList){ super.create(attributeList);

OADBTransaction transaction = getOADBTransaction();

Number lineid = transaction.getSequenceValue(\ setLineId(lineid); }

上面的代码是写在EO 的 create( )方法里的,这样的话,当你新增一个空记录时,在lineid字段上就有了一个初始值,即序列

取得的值,如果你不保存这条记录的话,就会出现跳号的情况,因此可把这个语句放在提交的方法里.

2). WHO字段的初始化

正常情况下,如果你的EO中包含了WHO字段的话,当你提交时,OAF会自动帮你初始化WHO字段,是不需要编写代码的,

如果你需要自已来获取WHO 信息的话, 仍可以利用OADBTransaction的方法来获取,主要有如下几个.

OADBTransaction transaction = getOADBTransaction(); transaction.getUserId()

transaction.getCurrentDBDate()

transaction.getResponsibilityApplicationId() transaction.getResponsibilityId()

OAF_EO对象详解 38 of 69

Company Confidential – For internal use only


Oracle之OAF开发参考(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:苏装配式混凝土结构施工监理实施细则

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: