Cognos学习之六:前端与服务器参数传递
前端与服务器参数传递
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对报表进行调用: cgi-bin/ppdscgi.exe?DC=R&E=%2Ftestreport
如果用户要求访问的是一个可动态分析的cube,那么相应的url为
cgi-bin/ppdscgi.exe?DC=Q&E=%2Fcubename
其中:%2F是一个URL使用的转意符,它的原型是符号“\”。
如果报表或Cube是发布于一个文件夹test中的,那么相应的url为:
cgi-bin/ppdscgi.exe?DC=R&E=%2Ftest%2Ftestreport
通过以上的接口可以访问到任意发布到Powerplay Enterprise Server的报表或Cube。如果要向报表或Cube传递过滤条件,可采用下面的调用标准。
例如在Enterprise Server发布有报表ICBC,该报表开放了四个传参接口(Years,Products,Locations,Channles)。用户可以选择向其中的某几个接口传参。
如果选择“Products”为“Outdoor Products”则调用
其中&DM=Products //表示要过滤维度Products
&FC=0%09Outdoor%20Products //表示维度Products的过滤值
如果是过滤两个维度,例如过滤“Products”和“Locations”则调用
其中&DM=Products%09Locations //维度间用%09分开
&FC=0%09Outdoor%20Products%091%09Europe //维度值从0开始标号
如果是过滤三个维度,例如过滤“Products”和“Locations”及“Channels”则调用
其中&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动态决定需要传递的参数。
PowerPrompts Interface Demo