我想通过api获取报告Universe,步骤如下所述
DataProvider dp = dps.getItem(i); //get report data providers
DataSource ds = dp.getDataSource(); //get data source
universe.setFilePath(ds.getDomainName() + "/"+dp.getSource()+".unv"); //get datasource -- universe domain/path
主要是,我得到了像/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。
答案 0 :(得分:1)
“null”有几个原因:
尝试打印出ds.getUniverseID()的结果,然后对该ID运行CMS查询。这可以让您更深入地了解问题。
我无法解释“\”。如果您可以提供更多代码以及您获得的实际结果,我可能会提供帮助。
答案 1 :(得分:0)
我查看了Report Engine API的API文档,但无法确定getDomainName()
调用应返回的内容。 域,其中有一个在XI之前版本中使用的概念; AFAIK这个概念在XI版本中不再存在。
如果您想获取宇宙的路径,请执行以下操作:
getID()
界面的DataSource
方法获取数据源ID。InfoObject
(使用BusinessObjects Enterprise API)。getParentID()
接口的IInfoObject
方法检索Universe的父ID,检查这是否为文件夹对象并强制转换为IFolder
接口。getPath()
界面的IFolder
方法返回完整路径。请记住,有时Webi报告会报告它没有链接到任何Universe,即所谓的未绑定报告。有关此问题的详情,请参阅this blog post。