Oracle EBS环境下查找数据源(OAF篇)
八月 12, 2009 in Oracle EBS二次开发
在OAF页面的查找后台的数据源相对于在Form中显得更加麻烦,同时也无法像Form中那样能够较为准确的定位,但是也能够查找出大部分的内容。
本文介绍如何使用OAF提供的诊断功能来快速查找OAF页面对应的数据库对象:
- 关于本页功能(About this Page)
- SQL Trace功能
八月 12, 2009 in Oracle EBS二次开发
在OAF页面的查找后台的数据源相对于在Form中显得更加麻烦,同时也无法像Form中那样能够较为准确的定位,但是也能够查找出大部分的内容。
本文介绍如何使用OAF提供的诊断功能来快速查找OAF页面对应的数据库对象:
八月 11, 2009 in Oracle EBS二次开发
在 Oracle E-Business Suite的二次开发中,基于OAF的开发在JDeveloper OA Extension中进行,完成后使用XMLImporter工具导入页面定义到数据库中,
之后上传相关的Java Class文件到JAVA_TOP下便可以使用OAF应用了,下面我们来看看OAF的页面导入数据库中发生了什么?
下面以采购订单类型定义页面为例来进行剖析。
八月 5, 2009 in Oracle EBS二次开发
Oracle EBS 12应用中的所有JSP页面都预先编译到$OAD_TOP/_pages目录下,如果需要清除Cache的JSP,则需要删除此目录下的文件,然后从新进行编译。
cd $FND_TOP/patch/115/bin
./ojspCompile.pl –compile –flush -p 2
下面是一个系统编译的日志
[appl02@ebs001 bin]$ ./ojspCompile.pl –compile –flush -p 2
logfile set: /d02/inst/apps/VIS02_ebs006/logs/appl/rgf/ojsp/ojspc_error.log
starting…(compiling all)
using 10i internal ojsp ver: 10
synchronizing dependency file:
loading deplist…8048
enumerating jsps…8048
updating dependency…0
initializing compilation:
eliminating children…5979 (-2069)
translating and compiling:
translating jsps…5979/5979 in 3m42s
compiling jsps…5979/5979 in 5m53s
Finished!
–
十二月 20, 2008 in Oracle EBS二次开发
OA Framework使用Query Region来创建查询,可以创建简单的查询、高级查询和保存用户个性化的查询。query Region有三种构建方式:
1,resultsBasedSearch
OA Framework根据查询结果表格(或HGrid)中定义的可查询的Item自动生成查询面板。OA Framework在用户选择查询按钮后自动根据用户输入的值,生成Where子句,并执行查询。
2,autoCustomizationCriteria
OA Framework根据开发者定义的简单查询和高级查询Region生成查询面板。OA Framework在用户选择查询按钮后,根据用户输入的值,生成Where子句,并执行查询。
利用这种模式可以更改查询项的类型,比如使用LOV、Poplist等,还可以加入结果表(或HGrid)中不存在的查询项目。
3,None
OA Framework根据开发者定义的简单查询和高级查询Region生成查询面板。开发人员需要自己实现视图对象的查询逻辑。这种方式一般用于无法使用query Region所提供的功能的情况。
本文主要介绍在autoCustomizationCriteria模式下如何控制query的查询。比如对于日期的查询一般用区间范围进行查询,而默认情况下,OA Framework生成的Where子句做相等比较。
1 2 3 4 5 6 7 8 9 10 11 12 | OAQueryBean querybean = (OAQueryBean)webBean.findIndexedChildRecursive("QueryRN"); // 判断用户是否选择了查询按钮 if (pageContext.getParameter(querybean.getGoButtonName()) != null) { String dateFrom = pageContext.getParameter("SearchDateFrom"); String dateTo = pageContext.getParameter("SearchDateTo"); OAApplicationModule am = pageContext.getApplicationModule(webBean); Serializable[] params = {dateFrom, dateTo}; am.invokeMethod("bindDateRangeWhereClause", params); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | public void bindDateRangeWhereClause(String dateFrom, String dateTo) { OAViewObject vo = getXxxVO1(); String clause = null; String joinStr = ""; if (vo.getWhereClause() != null) { joinStr = "AND"; } if ((dateFrom != null) && (!("".equals(dateFrom.trim())))) { clause = " RECEIPT_DATE >= :"; whereClause.append(++bindCount); parameters.addElement(Date.valueOf(dateFrom)); clauseCount++; } // 条件:接收日期至 if ((dateTo != null) && (!("".equals(dateTo.trim())))) { if (clauseCount > 0) { whereClause.append(" AND "); } whereClause.append(" RECEIPT_DATE <= :"); whereClause.append(++bindCount); parameters.addElement(Date.valueOf(dateTo)); clauseCount++; } |
–
十二月 20, 2008 in Oracle EBS二次开发
OAF页面要新开窗口,可以在带有导航功能的Item,如link和button(非提交按钮),指定Target Frame属性为”_blank“,就可以新开窗口打开Destination URI属性指定的路径。
如果用户希望新开的窗口能隐藏地址栏、工具栏、菜单栏或者想控制窗口大小,那么在上面所说的Destination URI属性中使用
javascript:window.open(‘OA.jsp?page=XXX’,'<windowName>’, ‘<params>’)
注意:在对按钮的Destination URI属性使用Javascript的新开窗口时,需要在首选项中设置可访问功能为标准可访问性,否则Javascript将无法执行。
虽然以上的方法能够实现新开窗口,但还有很多的限制,比如如果在新开窗口前需要执行某些特定操作、或者新开窗口的URL是需要通过执行某些逻辑才能得到的,那么上面的方法就无法实现了。
在OAF中,Oracle不建议在OAF中使用Javascript,但是OAF还是提供了API用于执行Javascript:
1 2 3 4 | OAPageContext.putJavascriptFunction(String name, String function) OAPageContext.removeJavascriptFunction(String name) OAPageContext.putJavascriptLibrary(String name, String library) OAPageContext.removeJavascriptLibrary(String name) |
假设用户提交了请求(点击链接、提交按钮等等触发事件的情况)需要新开窗口,在processFormRequest方法中,按一下步骤进行:
1、首先执行pageContext.removeJavascripFunction()
这是非常重要的一点,因为一旦Javascript注册到OAPageContext之后,就一直存在于OAPageContext中,这样会导致每次页面的刷新时都会执行Javascript。
2、在特定的事件中,执行程序逻辑,注册Javascript到OAPageContext对象中
1 2 3 4 5 6 7 8 9 | if (pageContext.getParameter("Open") != null) { // 执行其它处理 ... // 定义Javascript String jScript = "window.open('OA.jsp?page=XXX')"; pageContext.putJavascriptFunction("FunctionName", jScript) } |
注意:在调用putJavascriptFunction()时,必须指定Name参数,只有这样才可以调用removeJavascriptFunction()。
–