Events

Liferay Symposium North America 2013
Oct 20-22 2013,  San Franscisco, CA

Great opportunity for learning, knowledge sharing, and networking about Liferay.

A Free Template from Joomlashack

A Free Template from Joomlashack

Advertisement

OBIEE Integration with WebSphere Portal PDF Print E-mail
Written by Administrator   
Friday, 10 October 2008 22:05

OBIEE (Oracle Business Intelligence Enterprise Edition) previously known as Siebel Web Analytics

When we try to integrate anything with portal, we try to first figure out if any out of box portlet is available from the vendor or in the IBM catalog. If its not available we would try to find out if the vendor provides some api to integrate.

The most common requirement for OBIEE integration is the following

  • Should be able to pull existing report.
  • Should be able to pull dashboard.
  • Should be able to pull list of report or dashboard.
  • SSO support (Siteminder or OAM)


Before we look into the details, lets understand the Oracle Web Services api and what information can be pulled from OBIEE.

Oracle Web Services provide the following services. We will see only the services which are commonly used.

  • HtmlViewService - Use this service to embed Oracle BI html results. Best candidate to display the report or page from OBIEE as it is within portal.
  • SAWSessionService - Use this service to provide authentication methods such as logon and logoff.
  • XMLViewService - Use this service to retrieve results in xml format.
  • WebCatalogService - Use this service to read and write presentation catalog objects.


For more details on the services, please refer the documentation

Out of Box Portlet provided by Oracle

Oracle provides out of box portlet which uses HtmlViewService to pull a report from OBIEE. It uses Credential vault to store credentials which is used to connect to OBIEE. You can download the portlet war file sawjsr168portlets.war and the documentation to configure the portlet.

Custom Portlet using Web Services api

If you are planning to develop the portlet using the web services api, you might want to know whether you need the report to be displayed exactly the same as in OIEE or you want just the data for the report and you would take care of the presentation.

Lets look at the steps of how to connect and access the appropriate web service

The WSDL document can be accessed at the following URL

http://<hostnamre>/analytics/saw.dll?WSDL

Sample XML Service

   SAWSessionServiceLocator awsessionservicelocator = new SAWSessionServiceLocator();
   XmlViewServiceLocator  xmlViewServiceLocator = new XmlViewServiceLocator();
   
   SAWSessionServiceSoap m_Session = sawsessionservicelocator.getSAWSessionServiceSoap(new URL("http://<host_name>:<port>/analytics/saw.dll?SoapImpl=nQSessionService"));
   XmlViewService xmlService = xmlViewServiceLocator.getXmlViewServiceSoap(new URL("http://<host_name>:<port>/analytics/saw.dll?SoapImpl=xmlViewService"));
   
    AuthResult authresult = m_Session.impersonateex("<userid>", "<password>", "<userid>", new SAWSessionParameters());
    String  m_sessionID = authresult.getSessionID();

   String query = "<Report Query>";

    QueryResults results = xmlService.executeSQLQuery(query, XMLQueryOutputFormat.fromString("SAWRowsetData"), new XMLQueryExecutionOptions(), m_sessionID);
    String xmlResult = results.getRowset();

Sample Html View Service 

  SAWSessionServiceLocator awsessionservicelocator = new SAWSessionServiceLocator();
  HtmllViewServiceLocator  htmlViewServiceLocator = new HtmlViewServiceLocator();

   SAWSessionServiceSoap m_Session = sawsessionservicelocator.getSAWSessionServiceSoap(new URL("http://<host_name>:<port>/analytics/saw.dll?SoapImpl=nQSessionService"));
   HtmlViewService htmlService = htmlViewServiceLocator.getHtmlViewServiceSoap(new URL("http://<host_name>:<port>/analytics/saw.dll?SoapImpl=htmllViewService"));

   ReportRef reportref = new ReportRef();
   reportref.setReportPath("<Report_Path>");

   StartPageParams startpageparams = new StartPageParams();
   startpageparams.setIdsPrefix("<OBIEE_REPORT_ID_PREFIX>");//This can be any auto generated ID - should be unique for the report
   startpageparams.setDontUseHttpCookies(true);

  //SAWLocale and SAWSessionParameters are quite important for the OBIEE report to be displayed. Many have tried and have seen only the rotating clock instead of the report.   We too went through the same problem and realized that the OBIEE report javascript file paths are dependent on the Locale and the User-Agent.

   SAWLocale sawlocale = new SAWLocale();
   sawlocale.setLanguage(request.getLocale().getLanguage());
   sawlocale.setCountry(request.getLocale().getCountry());

   SAWSessionParameters sessionparams = new SAWSessionParameters();
   sessionparams.setUserAgent(request.getProperty("User-Agent"));
   sessionparams.setLocale(sawlocale);
   sessionparams.setAsyncLogon(false); 

   AuthResult result = htmlService.impersonateex("<admin_user>", "<admin_pass>", "<logged_in_user>", sessionparams); //It need not be admin user but should be a user who has more privileges than normal user

   String sessionID = result.getSessionID(); 
   String reportID = "<Report_ID>"; // this is user generated ID 
   String pageID = m.startPage(null, sessionID);

   htmlService.setBridge(request.getContextPath() + "/BridgeServlet", sessionID); // This method will set the path to the servlet which will act like a bridge to retrieve all the OBIEE resources like the javascript, CSS and the report.

   htmlService.addReportToPage(pageID, reportID, reportref, null, null, null, sessionID);

   String reportViewName = "<Report_Name>";
   String reportHtml = htmlService.getHtmlForPageWithOneReport(reportID, reportref, reportViewName, null, null, startpageparams, sessionID);

 The bridge servlet needs to be set for the report to come up while using HtmlViewService.
 The bridge servlet does the following

  • Read the RedirectURL argument of the request which will contain the absolute path to the OBIEE resources.
  • Make a URLConnection to the URL and read the content.
  • Write to the output stream.

After all this is done, the report should be displayed on the browser. 


For HtmlViewService, Oracle provides a sample implementation of the few classes. Download the sample. This can be used to develop and customize the portlet which Oracle provides.

If in the enterprise there are any external security manager then the big question is whether the OBIEE web services api provides a facility  to pass the token to OBIEE for SSO.

We did try to find out if Portlet Factory provides any builders. But currently it does not, but future release might come up with one. if you have any questions, please email me and i would be able to help you out.

Recently we tested SSO with Oracle access manager. This we acheived by using the impersonate configuration on OBIEE. I'll be writing another article on this with more details and architecture of how to achieve SSO.



Add this page to your favorite Social Bookmarking websites
Reddit! Del.icio.us! Mixx! Free and Open Source Software News Google! Live! Facebook! StumbleUpon! TwitThis Joomla Free PHP
Last Updated on Saturday, 20 June 2009 20:17
 
 
Joomla 1.5 Templates by Joomlashack