Я разрабатываю приложение Java, используя Netbeans, который будет получать отчеты с сервера BI на OBIEE 10G и отображать их клиенту с помощью приложения Java. Может ли кто-нибудь предложить мне соответствующие шаги для этого, а также как начать с этого.Доступ к отчетам в OBIEE из Java-программы
ответ
Прежде всего, вы получите отчет из служб презентаций, а не с сервера BI. Сервер BI - это база данных с инструкцией SELECT, тогда как Presentation Service использует этот SELECT для создания и форматирования отчетов.
Чтобы интегрировать отчет службы Presentation BI в другом приложении, вы можете использовать:
веб-службы: http://docs.oracle.com/cd/E23943_01/bi.1111/e16364/methods.htm#i1008939
или GO URL: http://docs.oracle.com/cd/E23943_01/bi.1111/e16364/apiwebintegrate.htm#CACCHBHC
Ссылки приводятся в той же документации (Руководство интегратора). Это написано для 11g, но оно также будет работать в 10g.
Приветствия Нико
Ваш вопрос не понятен; Вы пытаетесь вызвать метод Java из OBIEE?
Если да: Вы можете сделать это, создав агента, связанного с действием. Действие может вызывать Java-метод (в EJB). Подключив агента к действию, вы можете назначить его как задание.
Хотя для создания вашего веб-приложения можно использовать веб-службы и URL-адрес GO, это очень трудный способ сделать это. Если у вас есть выбор, используйте последний JDeveloper 11g, а затем используйте these steps, чтобы перетащить отчеты об ответах или панели мониторинга на страницу .jspx. Это просто, может быть сделано за несколько минут, а не дней, если вы знакомы с JDeveloper.
EDIT: Если вы все еще хотите использовать 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);
Я реализую приложение Java, которое использует HTMLViewService из OBIEE. XMLViewService работает правильно, но в HTMLViewService показан только вращающийся загрузчик, а затем отображается отчет (с ошибкой в источнике «Ошибка встроенного отчета»). Сервер OBI и приложение Java находятся в разных доменах, поэтому я думаю, что это возможно. Я полагаю, что для решения этой проблемы мне нужно использовать метод setBridge(). Может кто-нибудь помочь с этим? Пример кода был бы оценен. – Josh
Исправление к моему последнему комментарию: отчет никогда не загружается, вращающийся загрузчик просто держится бесконечно. – Josh