问题描述: 由于我们目前已经有比较成熟的内部门户网站(HTML/JSP),所以要求我们开发的COGNOS页面也要集成到内部门户中。我们采取的一个简单的办法就是将直接访问COGNOS页面时候的地址栏上面的地址拷贝到一个静态的HTML中,然后提交这个静态的页面,类似于
=========================================
<%
String Str_action ="cognos.cgi?b_action=xts.run&m=portal/report-viewer.xts&method=execute&m_obj=%2fcontent%2fpackage%5b%40name%3d%27New%20Package%207%27%5d%2freport%5b%40name%3d%27ooo%27%5d&backURL=%2fcrn%2fcgi-bin%2fcognos.cgi%3fb_action%3dxts.run%26m%3dportal%2fcc.xts%26m_path2%3dCAMID(%2522%253a%253aAnonymous%2522)%252ffolder%255b%2540name%253d%2527%25e6%2588%2591%25e7%259a%2584%25e6%2596%2587%25e4%25bb%25b6%25e5%25a4%25b9%2527%255d%252ffolder%255b%2540name%253d%2527%25e9%25a1%25b5%25e9%259d%25a2%2527%255d%26m_path%3d%252fcontent%252fpackage%255b%2540name%253d%2527New%2520Package%25207%2527%255d";
Str_action=Str_action+"&p_level=2&p_haha=4000";
%>
======================
上面的 第一个 Str_action = 后面的内容是拷贝的COGNOS的地址
第二个 Str_action = 是我们增加的两个参数,已经再COGNOS页面中作为筛选条件的参数。
目前的问题是:如果我是再内部信息网中第一次提交这个页面的时候,一切都是正常的,按照我们的逾期显示,接受我们静态HTML传递的参数,显示COGNOS的第一个页面,叫我们选择参数,然后在提交COGNOS的第二个页面(真正的报表页面)。但是如果我们进行了第二次操作,好像直接跳过COGNOS的第一页面(这样就没有办法选择参数了),直接显示COGNOS第二个页面的结果(显示的结果使用的参数和第一次选择的一样)。
请问各位老大,这是什么原因造成的呢?非常感谢各位能够提供帮助!
---------------------------------
---------------------------------
参数有缓存
假设你还有两个参数不是静态HTML提交的(简单说不是p_level和p_haha),是COGNOS的第一个页面上让你选择的参数,为p_a和p_b.
在第一次操作之后,p_level,p_haha,p_a,p_b已缓存在服务器中,在第二次操作的时候有传入p_level,p_haha,但是p_a,p_b没有传入,COGNOS自己会去调用缓存,这个问题让我头痛了好久,问了不少人没办法搞定
最后只好p_a,p_b一起传
也就是设了多少个参数在构造URL的时候就要放多少参数
如果你想做到参数可传也可不传,请查看文档Create Prompts Useing SQL
------------------------------------------------------------
---------------------------------------------------------
加一个虚拟的参数,参数每次不同,例如与时间相关。
----------------------------------------------------
-----------------------------------------------------
首先感谢二位的解答。在咨询了Cognos工程师以后,得到了以下的解决方案:ReportNet会把提示值保存下来,作为下一次访问的缺省选项。如果我们禁止ReportNet保存提示值,那么就不会出现提示缓存的现象。具体操作是:1,把该报表访问者去掉除“执行”以外的所有权限;2,在报表的运行选项中点“清除”,去掉已保存的提示值;3,重启浏览器。
3步走完以后,通过该用户访问报表时,就不会产生提示缓存现象。
阅读(4697) | 评论(1) | 转发(0) |