Consuming OBIEE HTMLView Service(Analytics) in ADF - 12c. WORKING !!!

1
Step 1  : Create Web Service client for HtmlViewService and SAWSessionService .



Step 2 : Create HttpServlet .

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        StringBuffer outPutHtml = callReport(request, response);
        out.println(outPutHtml);
    }


    private StringBuffer callReport(HttpServletRequest request, HttpServletResponse response) {
        try {
            String userName=JSFUtils.getStringFromBundle("OBIEE_USER_NAME");
            String password=JSFUtils.getStringFromBundle("OBIEE_PASSWORD");
            String host=JSFUtils.getStringFromBundle("OBIEE_HOST");
            String OBIEEUrl=JSFUtils.getStringFromBundle("OBIEE_ANALYTICS_URL");
            String OBIEEQname=JSFUtils.getStringFromBundle("OBIEE_ANALYTICS_QNAME");
            String OBIEEContext=JSFUtils.getStringFromBundle("OBIEE_ANALYTICS_CONTEXT");
         
         
            SAWSessionService sAWSessionService = new SAWSessionService(new URL(OBIEEUrl), new QName(OBIEEQname,"SAWSessionService"));
            SAWSessionServiceSoap sAWSessionServiceSoap = sAWSessionService.getSAWSessionServiceSoap();
         
            HtmlViewService htmlViewService = new HtmlViewService(new URL(OBIEEUrl), new QName(OBIEEQname,"HtmlViewService"));
            HtmlViewServiceSoap htmlViewServiceSoap = htmlViewService.getHtmlViewService();
         
         
            String reportPath = request.getParameter("reportLocation");
         
            //sAWSessionServiceSoap.logon(userName, password);
            SAWLocale sawlocale = new SAWLocale();
            sawlocale.setLanguage(request.getLocale().getLanguage());
            sawlocale.setCountry(request.getLocale().getCountry());
            SAWSessionParameters sessionparams = new SAWSessionParameters();
            String userAgent = request.getHeader("User-Agent");
            sessionparams.setUserAgent(userAgent);
            sessionparams.setLocale(sawlocale);
            sessionparams.setAsyncLogon(false);
            AuthResult result = sAWSessionServiceSoap.logonex(userName, password, sessionparams);
            String sessionID = result.getSessionID();
            List<String> li = new ArrayList<String>();
            li.add(sessionID);
            sAWSessionServiceSoap.keepAlive(li);


            Cookie cookie = new Cookie("ORA_BIPS_NQID", sessionID);
            cookie.setDomain(host);
            cookie.setPath(OBIEEContext);
            cookie.setComment("user is not eligible to take the survey this time");
            cookie.setMaxAge(24 * 60 * 60);
            response.addCookie(cookie);


            //start page
         
         
            StartPageParams option = new StartPageParams();
            option.setIdsPrefix("fzz");
            option.setDontUseHttpCookies(true);

            Random r = new Random(System.currentTimeMillis());

            //Report to page
            String pageID = htmlViewServiceSoap.startPage(option, sessionID);
            String randomValue = "fz" + (1 + r.nextInt(2)) * 10000 + r.nextInt(10000);
            ReportRef ref = new ReportRef();
            ref.setReportPath(reportPath);
            //ref.setReportXml("");

            //htmlViewServiceSoap.setBridge(request.getContextPath() + "/bridgeservlet" , sessionID);

            ReportHTMLOptions htmlOptions = new ReportHTMLOptions();
            htmlOptions.setEnableDelayLoading(false);

            htmlViewServiceSoap.addReportToPage(pageID, randomValue, ref, null, null, htmlOptions, sessionID);

            //getHeadersHtml
            String outputHeader = htmlViewServiceSoap.getHeadersHtml(pageID, sessionID);

            //getHtmlForReport
            String outputhtml = htmlViewServiceSoap.getHtmlForReport(pageID, randomValue, sessionID);

            StringBuffer output = new StringBuffer();
            output.append("<HTML>");
            output.append("<HEAD>");

            output.append(outputHeader);

            output.append("</HEAD>");
            output.append("<BODY>");

            output.append(outputhtml);

            output.append("</BODY>");
            output.append("</HTML>");
            return output;

        } catch (Exception ex) {
            ex.printStackTrace();
            StringBuffer erroutput = new StringBuffer();
            return erroutput.append(ex.getMessage());

        }


Step 3 : Access report using below sample url.

http://host:port/ADFOBIEEReport/faces/analyticsservlet?reportLocation=<Report Location>


Sample URL and QNAME:
OBIEE_ANALYTICS_URL=http://host:port/analytics/saw.dll/wsdl/v7
OBIEE_ANALYTICS_QNAME=urn://oracle.bi.webservices/v7
OBIEE_ANALYTICS_CONTEXT=/analytics

Note:

To display report in IFRAME follow below steps.

Setp 1 : Change below configuration in OBIEE server.

<InIFrameRenderingMode>allow</InIFrameRenderingMode>

Step 2 : Add below lines in web.xml 

<context-param>
<param-name>oracle.adf.view.rich.security.FRAME_BUSTING</param-name>
<param-value>never</param-value>
</context-param>

Happy Coding !!!!!!!

1 comment: