Path 如何通过BO API获取报表范围路径?宇宙路径显示为空

Path 如何通过BO API获取报表范围路径?宇宙路径显示为空,path,business-objects,business-objects-sdk,Path,Business Objects,Business Objects Sdk,我想通过api获取报告宇宙,步骤如下所述 打开报告文档 DataProvider dp=dps.getItem(i)//获取报告数据提供程序 DataSource ds=dp.getDataSource()//获取数据源 universe.setFilePath(ds.getDomainName()+“/”+dp.getSource()+“.unv”)//获取数据源--宇宙域/路径 大多数情况下,我都得到了正确的数据,比如/DEV\u folder/testUNV.unv 很少,结果是null/

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

  • 打开报告文档
  • DataProvider dp=dps.getItem(i)//获取报告数据提供程序
  • DataSource ds=dp.getDataSource()//获取数据源
  • universe.setFilePath(ds.getDomainName()+“/”+dp.getSource()+“.unv”)//获取数据源--宇宙域/路径
  • 大多数情况下,我都得到了正确的数据,比如
    /DEV\u folder/testUNV.unv

    很少,结果是
    null/testUNV.unv
    \DEV\u folder\testUNV.unv

    知道为什么吗

    业务对象服务器版本为企业席3.1 SP7,使用java SDK


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

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

    • 宇宙在一个你无权访问的文件夹中(尽管你有权访问宇宙)-不,报告使用同一个宇宙,我有读写权限

    • 数据源不是一个宇宙-它是一个宇宙

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

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

    /eSourcing_Dev/Contract.unv

    /eSourcing_Dev/Project Save.unv

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

    null/Contract.unv

    null/Project Save.unv

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

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

    报告名称

    项目?里程碑

    宇宙

    /电子采购/项目保存.unv

    \电子采购/项目保存.unv

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

    /eSourcing/Project Save.unv
    
    \eSourcing/Project Save.unv
    
    它们应该是一个报表,两个查询(两个数据提供者),使用相同的宇宙

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

    出现“空”的原因有两个:

    • 宇宙不在文件夹中
    • 宇宙位于您无权访问的文件夹中(尽管您有权访问宇宙)
    • 数据源不是一个宇宙
    尝试打印ds.getUniverseID()的结果,然后对该ID运行CMS查询。这可能会让您对问题有更多的了解


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

    我已经查看了的API文档,无法确定
    getDomainName()
    调用应该返回什么。在XI之前版本中使用的概念的域;这一概念不再存在于席译本中。 如果你想知道宇宙的路径,我会做以下事情:

  • 使用
    datasource
    接口的
    getID()
    方法获取数据源ID
  • 使用步骤1中的ID检索
    InfoObject
    (使用)
  • 使用
    IInfoObject
    接口的
    getParentID()
    方法检索宇宙的父ID,检查这是否是文件夹对象,并强制转换到
    IFolder
    接口
  • 使用
    IFolder
    接口的
    getPath()
    方法返回完整路径

  • 请记住,有时候Webi报告会报告它没有链接到任何宇宙,即所谓的未绑定报告。有关此问题的更多信息,请参阅。

    如果您能指出您正在使用的BusinessObjects的版本以及API(.NET,COM,…),将有所帮助。谢谢您的回答。但这可能无法解决我的问题,您提供了3种可能性,请参见下面我的评论•宇宙不在文件夹中//不,报告使用相同的宇宙,一个可以获取路径,另一个不能•宇宙位于您无权访问的文件夹中(尽管您可以访问宇宙)//不,报告使用相同的宇宙,我有读写权限。•数据源不是一个宇宙//它是一个宇宙。让我在问题中插入一些屏幕截图我还没有解决你的问题,但我已经缩小了一点。根据我的测试,有时宇宙域的前缀是“\”,有时不是。我还没有找到一个模式。对于显示为“null”的报告,它们是从旧版本的BO迁移来的吗?是的,不知道何时会发生“\”。我想知道我是否使用了错误的API方法,但我没有找到另一个。重新升级“null”,我们将BO服务器升级到SP7,但只有1/30的报告存在“null”问题。我猜这是由网络智能导出引起的,但我尝试了这个案例,我可以找到正确的路径。嗨,克里斯托夫,谢谢!此外,您知道如何直接获取数据源cuid吗?由于dataSource.getID()方法返回一个长字符串,如“DS0.univguid=M08xU2AACvD_AhcA4gAAQkUAAqmtID0AAAA;UnivID=339394;ShortName=Project Save;UnivName=Project Save”,因此需要substr。如果您只对Webi文档使用的universes感兴趣,还可以使用IWebi接口的
    getUniverses()
    。这将为您提供一组宇宙ID。这样,您就不需要查看单个数据提供者或报表引擎API的用户。我试图做的是获取报表链接到的所有领域,并查看它们的路径。正如我所说,在这种情况下,您不需要