首页 > 解决方案 > Cognos SDK - 运行报告的连接参数

问题描述

我正在使用 Cognos SDK 运行报告。我能够传递标准参数,但在某些情况下,我必须在执行报告之前选择数据源连接。我知道有可能将数据源连接保存为 ParameterValue。

在我们的单一数据源环境中,我们有多个 DS 连接。每个 DS 连接只有一个用于登录数据库的登录。因此,我尝试通过以下方式为报表执行设置 ParameterValue:

  try {
    bc = cognosSDK.getCMservice().query(new SearchPathMultipleObject("CAMID(\":\")/dataSource[@name='DataSourceA']/dataSourceConnection[@name='ConnectionA']/dataSourceSignon[@name='SignonConA']"), props, new Sort[]{}, new QueryOptions());
       
   }catch (RemoteException ex) {
      ex.printStackTrace();
   }

    //set information for Connection and SignOn
    SimpleParmValueItem spv = new SimpleParmValueItem();
    spv.setDisplay("CAMID(\":\")/dataSource[@name='DataSourceA']/dataSourceConnection[@name='ConnectionA']");
    spv.setUse(((DataSourceSignon)bc[0]).getCredentials().getValue());
    spv.setInclusive(true);


    //Assign DataSource Info
    ParmValueItem[] con = new ParmValueItem[]{spv};
    ParameterValue ds = new ParameterValue();
    ds.setName("credential:DataSourceA");
    ds.setValue(con);

不幸的是,我无法通过这种方式运行报告。我想对 SimpleParmValueItem中的定义使用存在误解。您是否有任何想法如何在报表执行之前传递 DS 连接参数来处理数据源连接提示页面?我将不胜感激任何帮助。

谢谢!

标签: javacognos

解决方案


我终于为我们的用例找到了解决方案。它必须通过以下方式进行更改:

    //set information for Connection and SignOn
SimpleParmValueItem spv = new SimpleParmValueItem();
spv.setDisplay("CAMID(\":\")/dataSource[@name='DataSourceA']/dataSourceConnection[@name='ConnectionA']");
spv.setUse("<credential><dataSourceConnection>CAMID(\":\")/dataSource[@name='DataSourceA']/dataSourceConnection[@name='ConnectionA']</dataSourceConnection><dataSourceSignon/><username/><password/></credential>");
spv.setInclusive(true);


//Assign DataSource Info
ParmValueItem[] con = new ParmValueItem[]{spv};
ParameterValue ds = new ParameterValue();
ds.setName("credential:DataSourceA:password");
ds.setValue(con);

推荐阅读