从 Java 程序访问 OBIEE 中的报告
Posted
技术标签:
【中文标题】从 Java 程序访问 OBIEE 中的报告【英文标题】:Accessing reports in OBIEE from a Java Program 【发布时间】:2012-04-29 14:53:42 【问题描述】:我正在使用 Netbeans 开发一个 Java 应用程序,它将从 OBIEE 10G 上的 BI 服务器获取报告并使用 Java 应用程序将其显示给客户端。谁能建议我执行此操作的适当步骤以及如何开始。
【问题讨论】:
【参考方案1】:首先,您将从 Presentation Services 而不是从 BI 服务器获取报告。 BI 服务器是一个只有 SELECT 语句的数据库,而 Presentation Service 使用此 SELECT 来创建和格式化报告。
要将来自 BI Presentation 服务的报告集成到其他应用程序中,您可以使用:
网络服务:http://docs.oracle.com/cd/E23943_01/bi.1111/e16364/methods.htm#i1008939
或 GO 网址:http://docs.oracle.com/cd/E23943_01/bi.1111/e16364/apiwebintegrate.htm#CACCHBHC
链接指向相同的文档(集成商指南)。这是为 11g 编写的,但它也适用于 10g。
干杯 妮可
【讨论】:
【参考方案2】:您的问题不清楚;您是否尝试从 OBIEE 调用 Java 方法?
如果是: 您可以通过创建链接到操作的代理来做到这一点。 Action 可以调用 java 方法(在 EJB 中)。通过将代理挂钩到操作,您可以将其安排为作业。
【讨论】:
【参考方案3】:虽然可以使用 web 服务和 GO url 来创建您的 web 应用程序,但这样做是一种非常困难的方法。如果您有选择,请使用最新的 JDeveloper 11g,然后使用 these steps 将您的 Answers Reports 或 Dashboards 拖放到 .jspx 页面。这很简单,只要您熟悉 JDeveloper,只需几分钟而不是几天即可完成。
编辑:如果您仍想使用 Netbeans,这里有一段代码可以帮助您入门。请记住在将其投入生产之前阅读并理解 htmlViewService SOAP API in the OBIEE integration doc。
import oracle.bi.services.soap.*
SAWSessionParameters sessionParams = new SAWSessionParameters();
sessionParams.setUserAgent("Mozilla/...."); //Copy the exact agent from your Firefox menu Help > About
javax.xml.rpc.ServiceFactory factory = ServiceFactory.newInstance();
SAWSessionServiceSoap sessionService = ((SAWSessionService) factory.loadService(SAWSessionService.class)).getSAWSessionServiceSoap();
HtmlViewServiceSoap htmlService = ((HtmlViewService) factory.loadService(HtmlViewService.class)).getHtmlViewService();
AuthResult authResult = sessionService.logonex("replace_with_your_username", "replace_with_your_password", sessionParams); //You should reuse the session for multiple HTTP Requests from the same user
String sessionID = authResult.getSessionID();
StartPageParams pageParams = new StartPageParams();
pageParams.setIdsPrefix("replace_with_your_prefix");
String pageID = htmlService.startPage(pageParams, sessionID);
ReportRef report = new ReportRef();
report.setReportPath("replace_with_full_path_to_your_report");
htmlService.addReportToPage(pageID, "replace_with_your_report_name", report, null, null, null, sessionID);
String reportHTML = htmlService.getHtmlForReport(pageID, "replace_with_your_report_name", sessionID);
System.out.println(reportHTML); //Here's the report that you are looking for
htmlService.endPage(pageID, sessionID);
【讨论】:
我正在实现一个使用 OBIEE 的 HTMLViewService 的 Java 应用程序。 XMLViewService 工作正常,但 HTMLViewService 只是显示旋转加载程序,然后呈现报告(在“加载嵌入式报告错误”的源中出现错误)。 OBI 服务器和 Java 应用程序位于不同的域中,所以我认为可能是这样。我假设我必须使用 setBridge() 方法来解决这个问题。有人可以帮忙吗?代码示例将不胜感激。 更正我最后的评论:报告永远不会加载,旋转的加载器只是无限期地旋转。以上是关于从 Java 程序访问 OBIEE 中的报告的主要内容,如果未能解决你的问题,请参考以下文章
从 OBIEE 12c 仪表板将参数传递给 OBIEE 12c rpd 中的存储过程
如何在通过 OBIEE 中的代理发送报告时编辑电子邮件名称?