Cognos SDK 研究学习手册(一)

Cognos SDK 研究学习手册(一)
   最近进了新公司的数据挖掘与分析组,因公司需求开始学习Cognos,前几个星期看了下Cognos的主要设计器,没想到经理马上就要我搞Cognos的sdk,这个东西国内用的人很少,网上的资料也相当少,只能硬着头皮自己看官方的文档和例子。
   这里就把东西都记录下来。
  
   首先,根据看的一些资料,所谓sdk其实是Cognos公布了一些自己在设计产品时候留下的接口,可以让客户从程序端灵活的调用。但是Cognos本身具有的设计功能已经灰常强大了,一般会用到sdk的公司基本上都是遇到很J8的甲方。不过这次也给了我很大的学习机会。
   那么我这里写了一个用java访问Cognos建立的维度和量度,来生成报表。
   一、准备工作
      1.建立一个叫 zj_cognos_inter javaweb 项目, 我这里比较熟悉用 struts 于是自己把 struts 的框架也导进来了
      2.找到Cognos自带的例子, 示例位置在 cognos 安装目录 "c8"webapps"samples"WEB-INF"src"com"cognos"jspSample.
      在这里可以看到一些工具类
     

我们把这些类考到项目中来

这些类是非常重要的,很多类如API.JAVA,LogonException等都是封装的方法类,一般不需要用,不过里面有很多的方法,可供我们学习。
在这里我们用的比较多的是CognosConnection和ReportBuilder这两个类。
这里我用了一个配置文件来保存一些静态参数
<? xml version="1.0" encoding="gb2312" ?>
< cognos  version ="8.3" >
    
< url_home >
        
<![CDATA[
                http://localhost/cognos8
            
]]>
    
</ url_home >
    
< url_report_prefix >
        
<![CDATA[
                /cgi-bin/cognos.cgi?b_action=cognosViewer&ui.action=run&ui.object=
            
]]>
    
</ url_report_prefix >
    
< url_report_suffix >
        
<![CDATA[
                &run.outputFormat=&run.prompt=true&cv.header=false&cv.toolbar=false
            
]]>
    
</ url_report_suffix >
    
< url_logoff >
        
<![CDATA[
                /cgi-bin/cognos.cgi?b_action=xts.run&m=portal/logoff.xts&h_CAM_action=logoff
            
]]>
    
</ url_logoff >
    
< url_cm > http://localhost:9300/p2pd/servlet/dispatch </ url_cm >
    
< namespace > my cognos </ namespace >
</ cognos >

ServletContext application  =  getServlet().getServletContext();
    HttpSession session 
=  request.getSession();
    String cfgPath 
=  application.getRealPath( " /WEB-INF/cfg.xml " );
    String cmUrl 
=  ConfigUtil.parseXml(cfgPath, " url_cm " );
    
// 连接cognos服务
    CognosConnection conn  =   new  CognosConnection(cmUrl,application,session);
    
// -----如果是用匿名认证登陆就不需要这句话,如果是用的自己的认证就需要登陆一下
    
// bb是我的表空间,zhangyuan是我本机用户名,123是我本机的密码
    conn.logon( " bb " " zhangyuan " " 123 " );
    
// 创建一个报表生成器的实力类
    ReportBuilder rb  =   new  ReportBuilder(conn);
    
// 指定生成报表的包
    String packageSp  =       " /content/package[@defaultName='mbase'] " ;
    rb.createReport(packageSp);
    
// 用Cognos sql来指定生成的列
    String[] colRef  =   { " [business layer].[date].[mdate].[year] " , " [business layer].[date].[mdate].[day] " , " [business layer].[measures].[psend] " };
    String[] titles 
=  { " year " , " day " , " psend " };
    rb.addColumns(titles, colRef);
    
// 指定生成的报表名
    String name   =   " ReportWizardReport  " ;
    
// 增加报表
    rb.saveReport(name);

你可能感兴趣的:(Cognos SDK 研究学习手册(一))