壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 278|回复: 0

前端与服务器参数传递

[复制链接]
发表于 2012/3/11 16:16:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
前端与服务器参数传递
Cognos的内容一般作为网页中某一特定的帧或者一个新开的窗口来展现的。我们可以在外部统一的用户交互界面中收集用户递交的查询条件(一般用JSP实现),在检查完用户输入的有效性之后,把这些参数按照Cognos约定的标准,以POST(或者GET)的方式传到某一帧中的Cognos的网关。Cognos网关就会把用户查询的结果返回到该帧中。
根据后端服务器的不同(PPES和IWR),有两种参数传递的规则。
调用PPES上的内容(CUBE/PPX)
      
主要用到的参数变量有
参数名称        解释
DC        报表的展示方式,Q为动态HTML,R为PDF
E        访问内容在PPES上的发布位置
DM        需要过滤的维度Code值
FC        过滤的维度对应过滤值的category code
ZZ        表示参数传递结束

下面是一个接口调用的实例:
      
假设服务器名称为:servername
ppx报表发布到enterprise server之后在enterprise server的根目录下,名称为:testreport
如果我们要对这个报表进行访问,可通过如下url对报表进行调用:http://test/cognos/ cgi-bin/ppdscgi.exe?DC=R&E=%2Ftestreport
如果用户要求访问的是一个可动态分析的cube,那么相应的url为
http://test/cognos/ cgi-bin/ppdscgi.exe?DC=Q&E=%2Fcubename
其中:%2F是一个URL使用的转意符,它的原型是符号“/”。
如果报表或Cube是发布于一个文件夹test中的,那么相应的url为:
http://test/cognos/ cgi-bin/ppdscgi.exe?DC=R&E=%2Ftest%2Ftestreport

通过以上的接口可以访问到任意发布到Powerplay Enterprise Server的报表或Cube。如果要向报表或Cube传递过滤条件,可采用下面的调用标准。
        
例如在Enterprise Server发布有报表ICBC,该报表开放了四个传参接口(Years,Products,Locations,Channles)。用户可以选择向其中的某几个接口传参。
如果选择“Products”为“Outdoor Products”则调用
http://test/cognos/cgi-bin/ppdsc ... 20Products&ZZ=X
其中&DM=Products                                                          //表示要过滤维度Products
&FC=0%09Outdoor%20Products                                        //表示维度Products的过滤值
               
如果是过滤两个维度,例如过滤“Products”和“Locations”则调用
http://info/cognos/cgi-bin/ppdsc ... 1%09Europe&ZZ=X
其中&DM=Products%09Locations                                        //维度间用%09分开
&FC=0%09Outdoor%20Products%091%09Europe        //维度值从0开始标号

如果是过滤三个维度,例如过滤“Products”和“Locations”及“Channels”则调用
http://info/cognos/cgi-bin/ppdsc ... ndependent&ZZ=X
其中&DM=Products%09Locations%09Channels                        //维度间用%09分开
&FC=0%09Outdoor%20Products%091%09Europe%092%09Independent     //维度值从0开始标号

在每条Url后添加&ZZ=X,表示参数传递结束。
注意:维度名称和维度过滤值都必须用各自的code属性,而不是name属性。
调用IWR上的内容
IWR接受参数的网关是/cognos/cgi-bin/imrap.cgi,接受的参数可分为两类:
1)报表参数:主要是指定IWR服务器,报表编号等
2)条件参数:主要传递用户的过滤条件。

报表参数有
参数名称        解释
RID        这是 Report 的序号,从 IWR Server Admin 中可以查到
IU        这是保留参数,固定取值 IMRAP
CD        这是报表展现方式,R 是 Run,V 是 View
PSRV        这是保留字符串,可以从任意报表的 URL 中获得
        
条件参数一般根据IWR报表的用户prompt来订,一般需要和cognos PowerPrompts中Script Manager中的设定一致。

例如上面的Script Editor中<%GetUserVar(“t10”)%>,表示要向网关imrap.cgi传递条件参数t10,然后这个参数值会作为报表的Promptu值(通过语句SetPromptValue)来过滤报表的数据。
      
下面是一个IWR参数传递的例子,为了说明问题,用一个HTML来传递需要的参数,实际环境中,往往是用JSP动态决定需要传递的参数。
<html>
<!-- 将这个网页放到安装有 IWR 的服务器的 webcontent 目录中,用 http://hostname/cognos/To_Report.htm 访问之 -->
<!-- 当然,你得先把附送的 Reports 打个包发布到 IWR 中,并设置好 Powerprompts 的指向 -->
<!-- 然后看看那个报表的 RID,并把这个网页中的 RID 参数改过来 -->
<!-- 通过 IE 访问本网页即可 -->
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<title>PowerPrompts Interface Demo</title>
</head>

<body>
<form name="mainform" method="POST" action="/cognos/cgi-bin/imrap.cgi"><!-- 提交到服务器上的 imrap.cgi -->

<!--下面几个参数是 imrap.cgi 需要的变量 -->
  <input type="hidden" name="RID" value="24">        <!-- 这是 Report 的序号,从 IWR Server Admin 中可以查到 -->
  <input type="hidden" name="IU" value="IMRAP"> <!-- 这是保留参数,固定取值  -->
  <input type="hidden" name="CD" value="R">        <!-- 这是报表展现方式,R 是 Run,V 是 View -->
  <input type="hidden" name="PSRV" value="1-43434F46464545-8020-0-2F636F676E6F73-13-0--"> <!-- 这是保留字符串,可以从任意报表的 URL 中获得 -->

        <!-- 下面几个参数就是在 PowerPrompts 中需要设置的报表中的 Prompts 的名字,在这里设置他们的取值 -->  
        <!-- 通过这个接口,就可以很灵活的设置每个 Prompt,不管用 ASP 还是 JSP,哪怕是这种普通网页都可以 -->
  <input type="hidden" name="OrderNumber" value="125">        <!-- 名叫 OrderNumber 的 Prompt 取值为 125-->

  <p><input type="submit" value="点击此处,可以看到结果。" name="B1"></p>
</form>
</body>
</html>



该贴已经同步到 xiaoerp的微博
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 07:43 , Processed in 0.012290 second(s), 16 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表