OAF 系列教程 四 新增CREATE

本节教程将会通过一个简单的新增功能,概要了解下基本的数据是如何通过前台录入并且保存到数据库中的。

主要包含以下几个方面的内容:

新增页面的开发;

新增页面对应的CO开发;

AM中对应的业务逻辑处理

通过以上几个步骤基本就可以完成一个简单的新增功能的开发。

 

 

创建CREATE页面

在webui节点上点击鼠标右键,选择“NEW”


然后在弹出的窗口中选择“OA Components”中的“PAGE”即可


接着输入页面的相关信息即可:

名字:CreatePG

对应的路径:cux.oracle.apps.ak.oaflessons.webui


创建完成之后修改页面的顶层REGION的Id属性为creatRN,同时设定页面的AM为当前工程中的AM信息和页面标题等等信息:

 

创建页面组件

创建页面上主要是为了让用户录入数据的,因此还需要创建相关的数据录入的组件信息。

说明:页面上的组件类型较多,此处过多介绍,后期准备有专门的章节进行讲解。

选中createRN节点,点击鼠标右键,选择“NEW”中的Region Using Wizard来创建页面上的组件及布局信息:


第一步,选择创建页面需要引用的AM中注册的VO信息,此处选择之前在VM中注册的EmpVO2


第二步,设置新建的REGION的Id信息及类型信息,此处创建的是TABLELAYOUT类型的RN,是页面组件的容器,用于布局组件信息

第三步,选择页面上需要显示的字段信息,此处根据实际需要来选择,后边也可以进行添加和修改

第四部,设置创建页面控件的属性信息,主要包括控件类型,提示信息等等

到此就基本完成了页面上的组件信息的创建,此处只是简单的做了一个表格布局,添加了控件,再添加控件步骤与此类似

 

此时便可以运行页面,看看实际的页面布局效果了:


目前只是展示页面,可以录入数据,但是还不能保存数据,还需进行对应的业务逻辑的处理,及CO和AM的开发,然后才能完成数据的保存操作。

 

2.       AM中业务逻辑处理

OAF中的业务逻辑处理主要包含两个方面:

AM中的业务逻辑,主要包括相关的VO初始化及数据的保存操作;

CO中的业务逻辑,主要包括获取用户输入信息以及调用AM中对应的方法响应用户的请求,向用户展示数据信息等等;

 

AM中的逻辑说明

AM是OAF程序中的业务层组件,主要用于注册VO及获取数据库连接等等,主要目的就是为了获取展示数据及同步数据的操作,一般包括VO的初始化、查询、保存、修改、删除等等操作,基本涉及到与数据库的操作都需要在AM中完成。

1. 新增初始化操作:

/**
* 新增初始化方法
*
*/
public void initCreate()
{
OAViewObject vo =this.getEmpVO2();
      
//增加过滤条件1=2 避免全查询
if(!vo.isPreparedForExecution())
{
   vo.setWhereClause("1=2");
   vo.executeQuery();   
}
Row row =vo.createRow();       
row.setNewRowState(Row.STATUS_INITIALIZED);
vo.insertRowAtRangeIndex(0,row);
}

以上方法主要是用于新增页面的初始化操作,一般主要是新增一个行的实例,还可以在此时对新增的VO行中的某些属性赋值,例如主键、当前用户等等,后边用于CO中进行调用;

2. 保存操作,主要用于响应前台用户事件,进行数据存储到数据库的保存操作: 

/**
*数据持久化操作,用于提交事务处理
*/
publicvoid apply()
{
this.getTransaction().commit();
}

3.       CO中业务逻辑处理

CO中的业务逻辑,主要包括获取用户输入信息以及调用AM中对应的方法响应用户的请求,向用户展示数据信息等等;

 

创建CO

选中创建页面的“creatRN”节点,右键选择“set new controler”,即可进行CO的创建。

在弹出的窗口中输入CO的相关信息即可,主要是名字和路径信息,一般CO是和页面在同一个路径下的:

 

 

CO说明

CO中主要包括两个方法:processRequest和processFormRequest,其中

processRequest 主要用于一些页面的初始化操作,即页面加载完成之前的操作;

processFormRequest 是用于页面加载之后响应用户的操作,即页面加载完成之后页面发生的事件都应该在processFormRequest中进行处理。

 

 

调用初始化方法

在CO中如果要调用AM中的方法,需要先获取AM信息,而获取AM的代码如下:

OAApplicationModule am = pageContext.getApplicationModule(webBean);

此例中需要在CreateCO 中的processRequest中添加如下代码:

OAApplicationModule am =pageContext.getApplicationModule(webBean);
//初始化VO
am.invokeMethod("initCreate"); 

可以看到此处调用的正式之前在AM中建立的初始化方法initCreate。CO中调用AM中的方法,均是通过am.invokeMethod的形式进行调用。

 

页面添加按钮

选中“creatRN”,创建一个类型为“pageButtonBar”类型的REGION,并修改其Id为“buttonRN”


选中“buttonRN”,右键选择“NEW”,“ITEM”,并修改生成的ITEM组件的Id为submit,类型为submitButton,propmt属性为“保存”

 

CO中调用保存方法

在CO的processFormRequest中添加如下代码: 

OAApplicationModule am =pageContext.getApplicationModule(webBean);
//初始化VO
am.invokeMethod("apply");

到此基本页面和业务逻辑的处理基本完成,可以运行页面进行测试。

 

 

运行CreatePG,可以看到页面结构基本完成

 

由于本例中没有进行新增初始化的VO属性的赋值操作,而是该为直接在页面录入,因此可以直接输入信息保存进行测试,是否可以完成数据的录入和保存操作:

 


可以看到保存的时候会出错,由于SCOTT用户下的EMP表没有以下几个字段:

CREATED_BY              NUMBER(15),

CREATION_DATE           DATE, 

LAST_UPDATED_BY         NUMBER(15),

LAST_UPDATE_DATE        DATE,

LAST_UPDATE_LOGIN        NUMBER(15)

因此保存的时候会出错,此处有两种处理方式,修改EMP表,添加上这几个字段;或者在APPS用户下创建一个同名的表,添加上这几个字段;

第一种方式需要修改系统表,但是比较省事儿;第二种方式需要创建新表,修改新表,还需要修改对应的EO,我们此处选择方式一(实际中也可以自己创建测试表来进行操作,更方便)

altertable scott.EMPadd CREATED_BY NUMBER(15);

altertable scott.EMPadd CREATION_DATEdate;

altertable scott.EMPadd LAST_UPDATED_BYNUMBER(15);

altertable scott.EMPadd LAST_UPDATE_DATEdate;

altertable scott.EMPadd LAST_UPDATE_LOGINNUMBER(15);

需要注意,job字段有约束,只能输入以下值:

job in ('CLERK','SALESMAN','MANAGER','ANALYST','PRESIDENT'));

修改表之后再次运行程序进行测试:

保存之后没有错误,后台查询新增数据也已经新增成功

 

到此新增功能基本完成,实际中还需要根据要求完善数据录入方式,以及保存之后进行页面跳转等等,后续会逐步完善。

 

 

 

a. 本系列教程为个人原创,基于实际工作中的使用情况及个人理解,以及参考Jdeveloper开发工具自带的参考文档所得,仅供学习交流之用,有不足之处还望批评指正,希望共同提高

b. 本系列教程的EBS及软件平台环境信息如下:

EBS版本:12.1

数据库:Oracle Database 11g

Jdeveloper:Oracle Jdeveloper10g

c. 参考文档:D:\EBSTools\jdevelopment\jdevdoc(工具自带)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值