2014-06-02 Created By BaoXinjian


实现OAF的新增功能insert的具体解析

建立EO时,在向导中选择生产Create Method,则EOImpl中会包含标准create()

public void create(AttributeList attributelist)

{

super.create(attributeList);

}

在以上方法中可以加入初始化方法,在super.create后

当用户进行create record时,数据流向如下

Page Create Page Button->CO 中processFormRequest -> AM具体的create方法 ->VO具体的create的方法 ->EO 中的create方法

在Create时必须的VO进行初始化,新增Row以存放需create record的内容

1. 创建记录常用的两种方式

  • 在新增一个主界面上有个Create按钮,一旦触发该按钮,直接跳到一个明细页,用以新增记录
  • 在主Table上,有个Add New An Record按钮,一旦触发该按钮,直接在表后新增一个Record,用以新增记录

2. VO的数据的三个层次

  • View Object
  • Row
  • Attribute

3. EO Row的六个status

  • STATUS_NEW-> 新增记录状态
  • STATUS_DELETED-> 记录已被删除状态
  • STATUS_MODIFIED-> 记录已被修改状态
  • STATUS_UNMODIFED-> 记录未被修改或者已修改未提交
  • STATUS_DEAD-> 新增未提交即被删除
  • STATUS_INITALZIED -> 初始化状态

注意点:当执行EO的create()方法后,EO默认Row的状态为STATUS_NEW,这时,这条Row会被加入OAF的校验队列里,也就是说OAF会对这 条记录进行有效性的校验.这时,如果你的记录中有必填项,但新增时必然还没填入值,这校校验失败,OAF会返回错误信息,当然,新增动作也就失败了.因 此,我们可以加上row.setNewRowState(Row.STATUS_INITIALIZED)来设置记录状态为初始化状态,这样,这条记录将 不再进入校验队列,所以可以正常的建立,并输入值了

4. AM Create Date关键方法

public void createData()

{

OAViewObjectImpl vo1 = this.getOrderLineVO1(); //取得VO的实例

Row row = vo1.createRow();  //新增记录

vo1.insertRow(row); //插入记录

row.setNewRowState(Row.STATUS_INITIALIZED); //置EO Row的状态

}

5. AM Commit Date关键方法

public void applyDate()

{

getOADBTransaction().commit();

}


案例:从主页面ExpenseSummary.PG通过按钮Create,跳转至明细页面ExpenseCreate.PG,对Expense进行新增

1. 通过ExpenseSummary.PG主界面中的Create按钮进行跳转

2. 跳转至明细页面ExpenseCreate.PG

2.1 在导入页面过程中,触发CO的processRequest方法

2.2 在CO中调用AM中初始化方法

2.3 AM在初始化VO和Row时,系统会自动调用EOImpl中的方法

由他文进行介绍,在此略过

2.4 处理后系统跳转至ExpenseCreate明细页面

3. 输入数据后,点击保存save按钮,对数据进行处理进入database

3.1 输入数据

3.2 触发CO中processFormRequest方法

3.3 在CO中调用AM中方法,对Transaction进行Commit

4. Commit后数据进入数据库,进行查看


案例:再进一步,结合上面,在定义对Expense Line进行操作,通过Add an new line对表新增行

1. 在点击Add an new line后触发CO中的代码,在通过CO触发AM中的关键初始化代码

2.  有些步骤就略去,看下图,点击add an new line后,系统会自动增加一行expense line,实现了Expense Header和Line的主从关

3. 新增后查看数据

Thanks and Regards

OAF_EO系列4 - Create详解和实现(案例)的更多相关文章

  1. OAF_EO系列5 - Update详解和实现(案例)

    2014-06-14 Created By BaoXinjian

  2. OAF_EO系列3 - Initialize详解和实现(案例)

    2014-06-14 Created By BaoXinjian

  3. OAF_EO系列6 - Delete详解和实现(案例)

    2014-06-14 Created By BaoXinjian

  4. nginx高性能WEB服务器系列之四配置文件详解

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  5. mongo 3.4分片集群系列之六:详解配置数据库

    这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...

  6. mongo 3.4分片集群系列之五:详解平衡器

    这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...

  7. Hexo系列(二) 配置文件详解

    Hexo 是一款优秀的博客框架,在使用 Hexo 搭建一个属于自己的博客网站后,我们还需要对其进行配置,使得 Hexo 更能满足自己的需求 这里所说的配置文件,是位于站点根目录下的 _config.y ...

  8. css3系列之transform详解translate

    translate translate这个参数的,是transform 身上的,那么它有什么用呢? 其实他的作用很简单,就是平移,参考自己的位置来平移 translate() translateX() ...

  9. ThreeJS系列1_CinematicCameraJS插件详解

    ThreeJS系列1_CinematicCameraJS插件详解 接着上篇 ThreeJS系列1_CinematicCameraJS插件介绍 看属性的来龙去脉 看方法作用 通过调整属性查看效果 总结 ...

随机推荐

  1. Java设计模式之适配器设计模式

    1.适配器模式( Adapter)定义将一个类的接口转换成客户希望的另外一个接口.Adapter 模式使得原来由于接口不兼容而不能一起工作的 那些类可以一起工作. 现实案例如下:  墙上电源类(22 ...

  2. PHP pdao用法总结

    $sql = 'SELECT name, colour, calories     FROM fruit     WHERE calories < :calories AND colour =  ...

  3. freeswitch 1.4

    yum install git gcc-c++ autoconf automake libtool wget python ncurses-devel zlib-devel libjpeg-devel ...

  4. PHP-关于$_SERVER

    类似于Nginx中的请求头,所有header,都可以使用 $http_xxx来使用,比如$http_accept,甚至包括自定义的,比如,$http_x_forwarded_host proxy_se ...

  5. EJB 的理解

    引用源:http://blog.csdn.NET/cymm_liu/article/details/7760989 1.EJB 概念的剖析 我们先看一下,EJB 的官方解释: 商务软件的核心部分是它的 ...

  6. 使用swiper和吸顶效果代码

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  7. Unity3D 几个基本动画(控制物体移动、旋转、缩放)

    Transform基本移动函数: 1.指定方向移动: //移动速度 float TranslateSpeed = 10f; //Vector3.forward 表示"向前" tra ...

  8. 简单实用的Android ORM框架TigerDB

    TigerDB是一个简单的Android ORM框架,它能让你一句话实现数据库的增删改查,同时支持实体对象的持久化和自动映射,同时你也不必关心表结构的变化,因为它会自动检测新增字段来更新你的表结构. ...

  9. Castle

    Castle AOP 系列(一):对类方法调用的拦截(有源码) 标签: aopAOPCastle对类方法调用的拦截 2012-11-09 16:51 4207人阅读 评论(1) 收藏 举报  分类: ...

  10. 020. asp.net访问Excel文件

    <asp:GridView ID="GridView1" runat="server" BackColor="#DEBA84" Bor ...