随笔-15  评论-79  文章-0  trackbacks-0
   最近进了新公司的数据挖掘与分析组,因公司需求开始学习Cognos,前几个星期看了下Cognos的主要设计器,没想到经理马上就要我搞Cognos的sdk,这个东西国内用的人很少,网上的资料也相当少,只能硬着头皮自己看官方的文档和例子。
   这里就把东西都记录下来。
  
   首先,根据看的一些资料,所谓sdk其实是Cognos公布了一些自己在设计产品时候留下的接口,可以让客户从程序端灵活的调用。但是Cognos本身具有的设计功能已经灰常强大了,一般会用到sdk的公司基本上都是遇到很J8的甲方。不过这次也给了我很大的学习机会。
   那么我这里写了一个用java访问Cognos建立的维度和量度,来生成报表。
   一、准备工作
      1.建立一个叫 zj_cognos_interjavaweb项目, 我这里比较熟悉用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);
posted on 2010-05-25 12:02 张元Won 阅读(4983) 评论(8)  编辑  收藏 所属分类: Cognos

评论:
# re: Cognos SDK 研究学习手册(一) 2010-05-31 23:07 | zzz
你的COGNOS是哪个版本的,我的是8.4的,装了sample安装包,咱没你那个jspSample包  回复  更多评论
  
# re: Cognos SDK 研究学习手册(一) 2010-06-01 10:47 | え经理え
@zzz
那个sample包是一个安装包,需要安装才有。  回复  更多评论
  
# re: Cognos SDK 研究学习手册(一) 2010-06-01 10:47 | え经理え
@zzz
那个sample包是一个安装包,需要安装才有。  回复  更多评论
  
# re: Cognos SDK 研究学习手册(一) 2010-06-02 15:48 | zzzz
我安装了,没看到如你那的SAMPLE包下的jspSample内容,不知你的版本号是多少  回复  更多评论
  
# re: Cognos SDK 研究学习手册(一) 2010-07-29 17:35 | え经理え
这个包是要安装的sdk包的~@zzzz
  回复  更多评论
  
# re: Cognos SDK 研究学习手册(一) 2010-08-23 21:10 | 某某学习者
第一张和第二张截图看不到,博主能不能把你说的那些类写出来看看啊  回复  更多评论
  
# re: Cognos SDK 研究学习手册(一)[未登录] 2010-08-23 21:20 | Hope
能否把你说的sample里面的项目类贴出来,第一张和第二张图都看不到啊,拜托了  回复  更多评论
  
# re: Cognos SDK 研究学习手册(一)[未登录] 2013-05-15 15:24 |
请教一下 生成报表后,是否要把conn logoff啊,如果不关闭连接,不停的执行这个操作,会不会引起COGNOS服务死机啊  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: