RF.jsp (Run Function)
Posted on November 5, 2008
在Oracle EBS中,不论是Form还是OAF,只要定义成功能了,就可以通过RF.jsp进行调用。这种方式有个最大的方便就是,你可以把链接放到任何你想放置的地方,比如说邮件正文。事实上,Oracle标准的调用方式也是如此。
一种标准的创建URL的方式是利用标准函数fnd_run_function.get_run_function_url。如:
DECLARE
l_url VARCHAR2(2000);
BEGIN
l_url := fnd_run_function.get_run_function_url(p_function_id => 28142,
p_resp_appl_id => -1,
p_resp_id => -1,
p_security_group_id => -1,
p_parameters => 'ID=1',
p_override_agent => NULL,
p_org_id => NULL,
p_lang_code => 'ZHS');
END;
该函数返回类似如下的字符串:
http://host:port/OA_HTML/RF.jsp?function_id=28142&resp_id=-1&resp_appl_id=-1&security_group_id=-1&lang_code=ZHS¶ms=sj.duQd23zUdctTO-mG7b-T9WvvraxSBe-pGkPnFPbo&oas=nQRSW-NeNOUj7qtLxIOmIA..
你看到URL末尾两个参数是加密的,其实与其说是加密,不如说是编码过的。Oracle使用WebSessionManagerProc对参数进行编码。个中玄机可以通过下面两个函数得到答案:
-- 加密 function URLEncrypt(key in varchar2, value in varchar2) return varchar2 as language java name 'oracle.apps.fnd.security.WebSessionManagerProc.URLEncrypt(java.lang.String,java.lang.String) return java.lang.String'; -- 解密 function URLDecrypt(key in varchar2, value in varchar2) return varchar2 as language java name 'oracle.apps.fnd.security.WebSessionManagerProc.URLDecrypt(java.lang.String,java.lang.String) return java.lang.String';
这里的key,实际上就是DBID,可以通过fnd_web_config.database_id来获取。加密和解密必须针对同一个数据库,否则会导致CRC校验失败。
Related Posts
» Filed Under E-Business Suite
Print This Post
Comments
Leave a Reply
