Form开发中组件控制的几个常用方法
转自:http://oracleseeker.com/2009/09/01/graphical_component_control_in_oracle_ebs_form/
在Oracle EBS 的Form二次开发中,经常需要灵活的来控制某些组件是否可用、是否可见;有时希望某些字段的值自动生成或者手动输入;有时又希望能够根据不同的职责、不同的用户等来设置不同的行为控制。常见的需求:
- 只有某些角色的人才能看到销售订单中“登记订单”这个按钮
- 只有某些角色的人才可以切换到某个标签页
- 实现订单号码根据需要自动生成编号或者手工录入
- 快速编码的值即可以录入所有应用下的,也可以只能录入某个应用,更可以只能录入某个应用下某个类型下的值
- 在某些情况下Form需要只能够查询
- ……
在Oracle EBS环境中有很多方法来实现这些功能,但是使用预置文件(Profile)、子功能(Subfunction)和功能参数(Function Parameter)是最常用最方便有效的3种方式,
一,子功能(Subfunction)
子功能是实际上是一个特殊的功能,利用子功能的方式其实就是使用了Oracle EBS的功能权限控制来实现安全性的控制,其实质就是某个用户能够执行一个被授权的功能,一般情况下会使用子功能来控制某些按钮是否显示,进而实现了用户是否可以操作Form中的某些功能,所以Oracle EBS的开发人员经常使用子功能来通过显示/隐藏或者有效/失效界面上的组件来实现功能的有效或无效,如上面常见需求中的1,2使用子功能最适合。
如下我希望只有授权的用户才能看到Book Order这个按钮,看不到的自然也无法进行这个操作了
实现步骤:
[postads468x60]
1,为Book Order按钮组件定义一个子功能
2,Form代码中根据功能来控制组件
在PRE-FORM触发器中,来判断用户是否有权限看到这个操作,如果有就显示否则不显示
1 |
IF (fnd_function.test('XHUORDER_BOOK_ORDER')) THEN |
3,将子功能授权给有权的用户
如果某个用户需要显示这个按钮,只要将子功能XHUORDER_BOOK_ORDER添加用户拥有的职责对应的菜单里面,把子功能XHUORDER_BOOK_ORDER添加为一个菜单项,但是Prompt留空就可以
定义的时候需要将Prompt栏位留空,这样在菜单显示的时候就看不到这个菜单项,实际关键的是最后的Grant列,默认都是勾上的,代表了授权给相关的职责用户
二、功能参数
功能参数的方法实际上和子功能是一致的控制方法,都是使用功能权限来进行控制, 它通过针对同一个Form定义多个Function,不同Function参数的值不同来实现控制,Oracle EBS中最典型的应用就是Form中的仅仅查询功能和快速编码(Lookup Code)定义界面
在快速编码定义界面中,可以通过APPL_SHORT_NAME参数来控制只能查询特点应用的快速编码;LOOKUP_TYPE参数来控制特点类型的快速编码。实现了参数值不同界面的行为也不同
实现步骤:
1,在Form设计器中定义参数
像快速编码定义的Form中,定义了如下图的参数
2,在Form程序代码中引用参数的值来控制
根据业务需求和功能设计的要求,通过参数的值来编写代码,如
1 |
if (:parameter.lookup_type is not null) then |
parameter的参数值在Form运行的时候会从Function定义中传入
3,定义Function时设置具体的参数值
如上面显示的DEMAND_CLASS的快速编码,参数为:VIEW_APPLICATION=”AU” LOOKUP_TYPE=”DEMAND_CLASS”
为Function定义了参数,在运行的时候就会到form的parameter中去查找同名的参数,并将等号(=)后的值传给参数,多个参数间用空格隔开。因此可以采用功能参数值的不同定义不同的功能,并赋给对应用户的职责就实现了不同的控制
[postads300x250]
三、预置文件(Profile)
预置文件的控制是这些方法中最灵活最强大的一种方法,通过预置文件可以实现到站点层、应用层、职责层和用户层的控制,预置文件相当于Oracle EBS系统中根据的一个全局变量,这个全局变量在不同的上下文可以设置为不同的值,因此在Form的开发中可以使用它来实现业务逻辑的控制,上面列出的常见需求都可以使用预置文件的方法来实现,只是预置文件太过灵活,所以有的需求则显得大材小用,因此只要需要较灵活层次控制并符合站点层、应用层、职责层和用户层这样层次控制的时候才采用。
实现步骤:
1,定义预置文件
在Application Developer职责下定义预置文件,就像在Oracle EBS系统中定义一个变量的感觉,SQL Validation区域就是预置文件可以定义的值列表
2,Form中根据预置文件值进行控制
1 |
l_order_num_mode := fnd_profile.value('DEMO_ORDER_NUMBER_MODE'); if :parameter.order_number_mode = 'AUTOMATIC' then |
上面的代码代表了如果预置文件DEMO_ORDER_NUMBER_MODE的值是AUTOMATIC的话,进行ORDER_NUMBER的控制
3,设置预置文件的值
Form程序中根据预置文件值的不同进行了不同的控制,而预置文件的值则是根据需要进行设置
通过以上预置文件值设置的不同,Form控制的项就会根据设置的不同表现出不同的行为。
上面描述的3个方法是Oracle EBS Form二次开发中最常用的方法,根据功能需求的不同选择最适合的方法。
Form开发中组件控制的几个常用方法的更多相关文章
- 038——VUE中组件之WEB开发中组件使用场景与定义组件的方式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JAVA 图形开发中组件对齐方法及界面开发
/*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 1978702969@qq.com*/ 在上篇博客中提到了JAVA图形界面开发时的两种布局,流式布局和边框布局. 在实际使用中可能会发现,往 ...
- FORM开发中Profiles的使用
用户配置文件相当于系统参数,可以在不同层级(Site层.应用模块层.责任层.用户层)设置不同的值:作用范围小的覆盖范围大的层,系统已经预设了很多user profile; 开发人员也可以定义 在EBS ...
- .net开发中常用的第三方组件
.net开发中常用的第三方组件 2013-05-09 09:33:32| 分类: dotnet |举报 |字号 订阅 下载LOFTER 我的照片书 | RSS.NET.dll RSS. ...
- input file 在开发中遇到的问题 类似ajax form表单提交 input file中的文件
最近在做项目的过程中遇到个问题,在这里做个记录防止日后忘记 现今的主流浏览器由于ajax提交form表单无法把文件类型数据提交到后台,供后台处理,可是开发中由于某些原因又不得不用ajax提交文件, 为 ...
- java 组件开发中的日志记录问题
今天帮别人写封装几个url 请求,打成jar 包,可以以java接口的方式提供给外部访问. 遇到两个问题: 1. 是否把依赖的jar包也 打入 我要生成的jar包中,如果你不打入,别人直接调用接口会报 ...
- [转]页游开发中的 Python 组件与模式Presentation Transcript
转: 页游开发中的 Python 组件与模式Presentation Transcript 1. 页游开发中的 Python 组件与模式 赖勇浩( http://laiyonghao.com ) 20 ...
- 在WePY中实现了小程序的组件化开发,组件的所有业务与功能在组件本身实现,组件与组件之间彼此隔离,上述例子在WePY的组件化开发过程中,A组件只会影响到A所绑定的myclick
wepyjs - 小程序组件化开发框架 https://tencent.github.io/wepy/document.html#/?id=%e5%be%ae%e4%bf%a1%e5%b0%8f%e7 ...
- Angular 项目开发中父子组件传参
在项目开发中经常会遇到 组件之间传参的问题.今天总结下在使用angular的项目中父子组件传参的问题: 1.父组件向子组件传参: 然后在父组件中 然后在父组件的html中 然后就可以在子组件中使用了 ...
随机推荐
- GL_INTERFACE
prompt ****************************************************************************** 总账接口主要完成其他模块的总 ...
- hdu4681String
http://acm.hdu.edu.cn/showproblem.php?pid=4681 枚举A串和B串包含C串的区间 枚举区间端点算左右两端最长公共子序 #include <iostre ...
- POJ_1064_Cable_master_(二分,假定一个解并判断是否可行)
描述 http://poj.org/problem?id=1064 有n条绳子,长度分别为l[i].如果从它们中切割出k条长度相同的绳子的话,这k条绳子每条最长能有多少? Cable master T ...
- EFI脚本
https://software.intel.com/en-us/articles/efi-shells-and-scripting
- 【转】iTunes下载速度太慢?两招帮你提速!-- 不错
原文网址:http://bbs.app111.com/thread-275-1-1.html 不用说,很多朋友都发现在大陆,下载 iTunes 上的东西实在是慢如蜗牛,小一点的软件还能坚持一下,大一点 ...
- 从零开始学习jQuery (七) jQuery动画-让页面动起来!
一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍. 开发人员一直痛疼做动画. 但是有了jQuery你 ...
- ZOJ 3791 An Easy Game
思路:dp+记忆化搜索,设dp[n][m]表示s1与s2不同字符个数为n,还需要变m步的方法数,那么: dp[n][m] = (c[n][i]*c[N-n][K-i]) * dp[n-i+(K-i ...
- 怎样从官网下载Spring的jar包
第一种,简单粗暴直接http://repo.springsource.org/libs-release-local/org/springframework/spring/3.2.4.RELEASE/s ...
- eclipse tomcat内存溢出,加大内存
保存图片失败,请点击这里获得详细信息. 加入 -Xms256M -Xmx512M -XX:PermSize=256m -XX:MaxPermSize=512m
- vijosP1049 送给圣诞夜的礼品
vijosP1049 送给圣诞夜的礼品 链接:https://vijos.org/p/1049 [思路] 快速幂+矩阵转换. 将m次矩阵的转换看作是一次快速幂中的乘法操作,这样可以用O(log(k/m ...