我一直对form 都感觉比较困惑, 特别是form 里面的trigger, 像PRE-QUERY, POST-QUERY 一直都弄不清情况. 这个trigger 是什么时候触发的呢? 看名字知道在QUERY 之前或之后触发的. 那么QUERY 什么呢? 搞不清楚.
今天就看下代码, 弄明白点了 "find" 之后做了什么事情, 那些数据库里面的值怎么到form 界面上去的.
我们知道, 每一个form 上的数据块都是绑定一个table 或者 view 的. EBS绑定的都是 view. 像下面那样:
我们可以认为, 一个数据块就是一个view. 而数据块上的字段, 通常也和view 里面的字段一一对应. 注意, 这里说的是通常. 在我们刚开始学习做form 的时候, 选择一个view, 然后把view 里面的字段一一对应于数据块的字段, 这样编译运行的时候, 在form 界面菜单上 view -> query by -> run, 就可以直接做查询的动作, 在form 界面上就会显示出数据库的记录.
这里就做了一次QUERY 的动作, 查询数据库, 然后把记录的值填到对应的 field 里面去.
但是这样的逻辑是简单的, 没有办法应付EBS 复杂的业务逻辑. 因此在实际的做法中, 并没有用这样简单直接的方式. 我们去看EBS 里面的form, 数据库上的字段和view 里面的字段几乎没有对应关系. 似乎是两个不相关连的东西, 只是名字很像.
这样做的结果就是几乎所有的行为都要自己写代码实现.