如何通过BO API获取报告Universe路径? universe path显示null

时间:2014-08-27 08:35:55

标签: path business-objects business-objects-sdk

我想通过api获取报告Universe,步骤如下所述

  1. 打开报告文档
  2. DataProvider dp = dps.getItem(i); //get report data providers
  3. DataSource ds = dp.getDataSource(); //get data source
  4. universe.setFilePath(ds.getDomainName() + "/"+dp.getSource()+".unv"); //get datasource -- universe domain/path
  5. 主要是,我得到了像/DEV_folder/testUNV.unv

    这样的正确数据

    很少,结果为null/testUNV.unv\DEV_folder\testUNV.unv

    任何想法为什么?

    Business Objects服务器版本是Enterprise XI 3.1 SP7,使用java SDK


    谢谢 Joe 。 但这可能无法解决我的问题,你提供3种可能性,请参阅下面的评论

    • Universe不在文件夹中 - 不,报告使用相同的Universe,一个可以获取路径,另一个不能

    • Universe位于您无权访问的文件夹中(尽管您可以访问Universe) - 否,报告使用相同的Universe,我已经读过和写过特权。

    • 数据源不是Universe - 它是一个Universe。

    抱歉,由于缺乏声誉,我无法提供截图。

      

    合同 - 第四方供应商同意书报告

         

    /eSourcing_Dev/Contract.unv

         

    / eSourcing_Dev / Project Save.unv

         

    合同第四方供应商同意书报告

         

    空/ Contract.unv

         

    null / Project Save.unv

    合同 - 第四方供应商同意书报告和合同第四方供应商同意书报告连接到相同的Universe,Contract.unv和Project Save.unv,但路径显示为null。

    如果我在BO Infoview上打开合同第四方供应商同意书报告并再次保存报告,那么我可以获得正确的路径。

      

    报告名称

         

    项目?里程碑

         

    宇宙

         

    / eSourcing / Project Save.unv

         

    \ eSourcing / Project Save.unv

    项目?里程碑报告得到2个不同的路径

    /eSourcing/Project Save.unv
    
    \eSourcing/Project Save.unv
    

    它们应该是一个报告,2个查询(2个数据提供者),使用相同的Universe。

    我已经提供了我使用的实际代码/ API,循环省略了。请检查我描述的步骤。 我想要做的是批量获取所有报告及其Universe。

2 个答案:

答案 0 :(得分:1)

“null”有几个原因:

  • Universe不在文件夹中。
  • Universe位于您无权访问的文件夹中(尽管您可以访问Universe)
  • 数据源不是Universe

尝试打印出ds.getUniverseID()的结果,然后对该ID运行CMS查询。这可以让您更深入地了解问题。

我无法解释“\”。如果您可以提供更多代码以及您获得的实际结果,我可能会提供帮助。

答案 1 :(得分:0)

我查看了Report Engine API的API文档,但无法确定getDomainName()调用应返回的内容。 ,其中有一个在XI之前版本中使用的概念; AFAIK这个概念在XI版本中不再存在。

如果您想获取宇宙的路径,请执行以下操作:

  1. 使用getID()界面的DataSource方法获取数据源ID。
  2. 使用步骤1中的ID检索InfoObject(使用BusinessObjects Enterprise API)。
  3. 使用getParentID()接口的IInfoObject方法检索Universe的父ID,检查这是否为文件夹对象并强制转换为IFolder接口。
  4. 使用getPath()界面的IFolder方法返回完整路径。
  5. 请记住,有时Webi报告会报告它没有链接到任何Universe,即所谓的未绑定报告。有关此问题的详情,请参阅this blog post