Form的个性化是EBS的比较好用的一个东西。好像很少人研究它的工作原理,都是直接用。最近有个同事问我问题,说他在个性化编写的代码无效果。解决之后,才发现,原来传说中的EBS的Form的个性化是这样子实现的。(题外话,了解工作原理之后,我可以编写一些实用的个性化作为补充了(要修改包APP_STANDARD.EVENT)。因为现在个性化可用的触发器实在是太少了。以后再说。)

说正题。

简而言之,Form个性化的工作原理是触发器代码的“添加”。那添加在哪里呢?什么时候会被执行?是这样子的,我们在个性化编写的条件(包括触发器名称,条件等等),系统先会自动将对应的代码“添加”在APP_STANDARD.EVENT对应的触发器代码里面(其实是APP_STANDARD.EVENT会寻找个性化里面的代码去执行),然后Form级触发器调用代码的时候,会自动执行对应的触发器的增加在个性化里面的代码,从而达到个性化实现效果的目的。

举个简单的例子。我在个性化WHEN-VALIDATE-RECORD编写了一堆条件。

在Form打开的时候,做对应的操作之后,就会触发Form级的WHEN-VALIDATE-RECORD触发器(如果块级没有Override的同样的触发器的话),接着会执行里面的APP_STANDARD.EVENT ('WHEN-VALIDATE-RECORD');代码。

然后,由于APP_STANDARD.EVENT ('WHEN-VALIDATE-RECORD')代码“包括”了我增加在个性化里面写的条件和执行的内容等等,所以,个性化就被执行,可以有效果出来。

所以,当你在个性化里面添加了触发器和对应的执行条件,如果都不会被执行,而且你确认你的条件是满足的前提下,你可以打开对应的Form,确认Form级触发器有没有对应的触发器名称,还有,里面的是否有代码:APP_STANDARD.EVENT(对应的触发器名称)。

如果没有,赶忙增加,然后。。。

----

啰嗦一点,了解上面的原理之后,相信大家都想到一点:触发器的执行层次可能也会影响到个性化的触发!

为什么?

因为,我们一般在Form的Block里面添加的触发器,其执行层次一般是:Override。

这样子会导致一个后果:你在对应的块,再用个性化编写对应的触发器代码(上面的例子就是WHEN-NEW-RECORD-INSTANCE),那这个个性化的代码永远不会被执行。为什么?因为块级的WHEN-NEW-RECORD-INSTANCE触发器的执行层次已经覆盖了Form级的执行层次!而个性化的代码是添加在Form级的触发器的。

所以,在客制开发Form的时候就要注意这点了。如果你还想用对应触发器的个性化添加代码的话,最好将执行层次改为:Before。

备注:如果对Form的触发器执行层级不了解的话,可以看看下面的例子。

同样的触发器,在Item级,Block级,Form级都建一个。

对应的触发器的属性设定不一样的时候,测试的结果:

Item:Before/Block: Before /Form: Before

执行效果: Item-->Block-->Form

设为Before,执行顺序正常,从小到大。



Item:After/Block:Override/Form:Override

执行效果:Block-->Item-->Form级不执行

设为Override,则就是对应层次的触发器的断点。上一级的不会被执行。



Item:After/Block:Override/Form:After

执行效果:Block-->Item-->Form级不执行



Item:After/Block:Override/Form: Before

执行效果:Block-->Item-->Form级不执行



Item:After/Block: After/Form:After

执行效果:Form-->Block-->Item

设为After的话,执行的顺序会颠倒。



Item:After/Block: After/Form:Override

执行效果:Form-->Block-->Item

设为After的话,执行的顺序会颠倒。



Item:After/Block: Before/Form:Override

执行效果:Block -->Form-->Item

来自:http://www.itpub.net/thread-1809982-1-7.html

EBS Form个性化的工作原理的更多相关文章

  1. Ajax工作原理

    在写这篇文章之前,曾经写过一篇关于AJAX技术的随笔,不过涉及到的方面很窄,对AJAX技术的背景.原理.优缺点等各个方面都很少涉及null.这次写这篇文章的背景是因为公司需要对内部程序员做一个培训.项 ...

  2. AJAX工作原理及其优缺点

    1.什么是AJAX?AJAX全称为"Asynchronous JavaScript and XML"(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术.它 ...

  3. 关于Ajax工作原理

    1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax ...

  4. Oracle EBS Form 发布到Server端的注意事项

    前段时间在本地XP系统上测试了一些整合javabean的Form例子,想着发布到服务器段去看看能否运行正常,一开始以为会和本地XP系统一样,部署到相关的目录下进行一些配置就可以了,但实际过程却和想象的 ...

  5. C#微信开发小白成长教程一(公众平台的工作原理与调试环境部署,附视频)

    黑夜给了我黑色的眼睛,我决定录视频到天明.半年前的现在,我还在苦逼着加着班,半年后的今天我依旧苦逼着加着班.不过现在的是为自己加班,作为一个资深程序小白,一个月前我光荣的成了一个不称职的资本家,不称职 ...

  6. Ajax工作原理(转)

    1.ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth.google suggest以及gmail等对ajax技术的广泛应用,催生了ajax ...

  7. Sturts2 工作原理

    上图来源于Struts2官方站点,是Struts 2 的整体结构. 一个请求在Struts2框架中的处理大概分为以下几个步骤(可查看源码:https://github.com/apache/strut ...

  8. NativeScript工作原理

    NativeScript是一个runtime,它提供一些机制可以使用JavaScript构建原生的IOS.Android甚至WP(未来会加入)应用.NativeScript有很多非常酷的功能,比如MV ...

  9. AJAX的工作原理及其优缺点

    1.什么是AJAX?AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术.它使用:使用XHTML ...

随机推荐

  1. Mac 上Tomcat装载

    I recently installed Tomcat 7 and got it working with Eclipse Helios on Mac OSX Lion.Install Homebre ...

  2. 一口一口吃掉Hibernate(四)——多对一单向关联映射

    hibernate对于数据库的操作,全部利用面向对象的思维来理解和实现的.一般的单独表的映射,相信大家都没有问题,但是对于一些表之间的特殊关系,Hibernate提供了一些独特的方式去简化它. 今天就 ...

  3. js原生获取元素的css属性

    习惯了用jQuery的css()的方法获取元素的css属性,突然不用jquery了,当要获得元素的css时候,我瞬间停顿了一下,咦?咋获取元素的css值?比如获取元素的width.是这样么?docum ...

  4. CentOS7 YUM 安装NGINX

    1.先添加源: nano /etc/yum.repos.d/nginx.repo 把下边这段代码添加到nginx.repo中去.[nginx] name=nginx repo baseurl=http ...

  5. 05_CRUD操作

      1.Params拦截器: 作用:Parameters拦截器将把表单字段映射到ValueStack栈的栈顶对象的各个属性中, 注意:如果某个字段在栈顶对象中没有对应的属性,则Params拦截器将尝试 ...

  6. MyBatis 查询映射自定义枚举

    背景                  MyBatis查询若想映射枚举类型,则需要从 EnumTypeHandler 或者 EnumOrdinalTypeHandler 中选一个来使用         ...

  7. log file sync 因为数据线有问题而造成高等侍的表现

    这是3月份某客户的情况,原因是服务器硬件故障后进行更换之后,业务翻译偶尔出现提交缓慢的情况.我们先来看下awr的情况. 我们可以看到,该系统的load profile信息其实并不高,每秒才21个tra ...

  8. Unity 资源管理插件

    之所以写这个插件呢,就是为了方便整理项目中的资源文件,我记得之前好像也用了这么一个插件,但是也没去找,还是自己动手写一个吧,需要什么功能就看自己的需求. 在项目的过程中呢,已经写了一个插件来管理材质, ...

  9. Apache shiro集群实现 (四)shiro授权(Authentication)--访问控制

    Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...

  10. 微信开发之使用java获取签名signature(贴源码,附工程)

    一.前言 微信接口调用验证最终需要用到的三个参数noncestr.timestamp.signature: 接下来将会给出获取这三个参数的详细代码 本文的环境eclipse + maven 本文使用到 ...