Monday, August 12, 2013

How-to: Automatically Refreshing Dashboards in OBIEE 11g via iFrame Bursting- The Flat Screen TV Use Case

9:05 AM

Share it Please
With production costs associated to flat screen LCD/plasma/LED TVs dropping into the 100s of dollars over the past few years, these TVs are no longer relegated to the home theater space. Now enterprises can utilize these products as part of their campaign to bring analytics to the forefront of their business. Consider the following scenarios:
  • A call center needs a mechanism to communicate performance metrics to the office without daily emails, meetings and paper-printed dashboards
  • An IT organization needs to track hardware utilization 'in real time' with passive notifications activated during peaks and irregular activities
  • The firm's testing team needs the ability to communicate defect and resolution metrics against service level agreements across multiple teams
Short of daily emails and unnecessary meetings, it was up to the individual worker to take the initiative to stay informed. The above scenarios can be effectively resolved through the use of 'Dashboard Displays' on flat screen TVs strategically placed throughout the office to keep leadership informed and team members accountable.

When we think of how OBIEE is used, the typical scenario that comes to mind is a user logging into the analytics front page. While little documentation exists, it is certainly possible to transform OBIEE from a 'user-based interactive analytics tool' to a 'dashboard style display fitted to large monitors'.

The main issue OBIEE Architects face is how resolve the issue of stale data across the technology stack. Stale data can exist within the BI Server, BI Presentation Services and even in the browser. Each component has its own resolution technique as well as potential issues. When a dashboard is displayed on a static monitor, a mechanism must be in place to ensure it's refreshed and timed correctly with existing agents.

 This guide is going to outline the steps required to implement OBIEE for the above scenarios. The technology used includes:
  1. iFrame Bursting (disabled by default in OBIEE 11g)
  2. Oracle WebLogic to redeploy modified XML components
  3. goURL
  4. HTML  (Meta Tags)
  5. Oracle BI 11.1.1.7.0
Some blogs on the web recommend using javascript to achieve this but I do not recommend this approach as javascript execution is based on the permission of the browser and has the potential to be disabled. At the very least a pop up box will appear asking the user if they authorize the javascript function to execute - not a pleasant end user experience.

Furthermore, Oracle has acknowledged that the mechanism they developed for auto-refresh does not work and no known resolution exists - see Doc ID 1416002.1 and  Bug 13058029. What is interesting is that Oracle's method used to work in OBIEE 10g!

Step 1: Enable iFrame Bursting


By default, OBIEE 11g server does not allow dashboards to be displayed in an iFrame. The reason this is done is to better secure the dashboards and prevent hackers from using an iFrame to overlay malicious content.

Step 1.1. Navigate to export/obiee/11g/instances/instance1/config/OracleBIPresentationServicesComponent/coreapplication_obips1 and modify instanceconfig.xml 

Add the following red code to the file:
 <Security>
<InIFrameRenderingMode>allow</InIFrameRenderingMode>
 </Security>
Step 1.2 Download analytics.ear

Navigate to:
/export/obiee/11g/Oracle_BI1/bifoundation/jee and download analytics.ear
The analytics.ear file contains two war files that house the web.xml that needs to be modified.

Step 1.3 Modify web.xml

Decompress the analytics.war and analytics-ws.war file using 7zip and modify the web.xml in each war file by adding the red code to the file:
<servlet-name>RelatedContent</servlet-name>
<url-pattern>/RelatedContent</url-pattern> </servlet-mapping>
<context-param> <param-name>oracle.adf.view.rich.security.FRAME_BUSTING</param-name> <param-value>never</param-value> </context-param><login-config> <auth-method>CLIENT-CERT</auth-method> </login-config>
Step 1.4 Upload & Recompress the war files
Upload the two war files back to /export/obiee/11g/Oracle_BI1/bifoundation/jee

Step 1.4.1 Recompress analytics.war

Navigate to:
 /export/obiee/11g/Oracle_BI1/bifoundation/jee/analytics/analytics
Execute:
 jar cvf0 ../analytics.war 
(Note: Include the space and period at the end of the command)
Navigate up one level to:
/export/obiee/11g/Oracle_BI1/bifoundation/jee/analytics
Delete the analytics folder so that the only files that remain in that directory are: 
(1) META_INF, (2) analytics.war, and (3) analytics-ws

Step 1.4.2 Recompress analytics-ws.war 

Navigate to:
 /export/obiee/11g/Oracle_BI1/bifoundation/jee/analytics/analytics-ws
Execute: 
jar cvf0 ../analytics-ws.war . (Note: Include the space and period at the end of the command)
Navigate up one level to:
/export/obiee/11g/Oracle_BI1/bifoundation/jee/analytics
Delete the analytics-ws folder so that the only files that remain in that directory are:
 (1) META_INF, (2) analytics.war, and (3) analytics-ws.war

Step 1.5 Recompress the analytics.ear file

Navigate to:

 /export/obiee/11g/Oracle_BI1/bifoundation/jee/
 Rename the old analytics.ear file as a backup


Execute: jar –cf analytics.ear –C analytics . (Note: Include the space and period at the end of the command)e)Delete the analytics folder.

Make sure that the analytics.ear file was produced in the export/obiee/11g/Oracle_BI1/bifoundation/jee/ folder. 
Delete the analytics folder.

Step 2: Restart BI Services

This can be achieved by either running opmnctl stopall via command line or through Enterprise Manager as depicted below:

Step 3: Create a test HTML file with the embedded iFrame:

Open a text editor of your choice and paste in the following:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<HTML>
<HEAD>
<TITLE>Important Dashboard</TITLE>
<META http-equiv=no-cache>
<META content=900 http-equiv=refresh>

</HEAD>
<BODY>
<IFRAME style="Z-INDEX: 998; POSITION: absolute; WIDTH: 100%; HEIGHT: 100%; TOP: 0px; LEFT: 0px" src="http://yourdashboard.com/ImportantDashboard" frameBorder=no scrolling=auto> </IFRAME>
</BODY>
</HTML>

Note the two important components highlighted in red:

  1. The Meta tags forcing the automatic refresh every 900 seconds. 
  2. The iFrame that embeds the URL of your dashboard
So at the end of the day what do we have?

  1. The ability to display dashboards on a static device (large monitor) that will have little human interaction but requires up to second (or in this case every 900 seconds) data
  2. The ability to embed a dashboard in an iFrame.

 
keywords:  OBIEE 11g, iFrame, auto-refresh, answers, web.xml, instanceconfig.xml, goURL, analytics

6 comments:

  1. excellent piece of information, I had come to know about your website from my friend kishore, pune,i have read atleast 8 posts of yours by now, and let me tell you, your site gives the best and the most interesting information. This is just the kind of information that i had been looking for, i'm already your rss reader now and i would regularly watch out for the new posts, once again hats off to you! Thanx a lot once again, Regards, obiee training in hyderebad

    ReplyDelete
  2. I am trying to use the GO URL to display a report (table view with sorting, pagination, etc) and not a OBIEE dashboard in an IFRAME. I have been able to to display the Sampe Lite\Sample PKI dashboard in an IFRAME, but I can't get the URL syntax correct to display just the report and the not full dashboard page. I'm not having any success. Help!

    ReplyDelete
  3. Thanks for your update.
    Can I use this method ad BI publisher dashboard autorefresh?

    Many thanks

    ReplyDelete
  4. Oracle Business Intelligence Online Training, ONLINE TRAINING – IT SUPPORT – CORPORATE TRAINING http://www.21cssindia.com/courses/oracle-business-intellegence-online-training-124.html The 21st Century Software Solutions of India offers one of the Largest conglomerations of Software Training, IT Support, Corporate Training institute in India - +919000444287 - +917386622889 - Visakhapatnam,Hyderabad Oracle Business Intelligence Online Training, Oracle Business Intelligence Training, Oracle Business Intelligence, Oracle Business Intelligence Online Training| Oracle Business Intelligence Training| Oracle Business Intelligence| If you’re serious about a career in IT, 21st Century would like to provide you a guidance don’t hesitate to organize a free demo session. For any further information regarding the courses once go through our website Visit:http://www.21cssindia.com | Call Us +917386622889 - +919000444287 - contact@21cssindia.com

    ReplyDelete
  5. I am trying to follow the directions but I have a problem with 1.3 where you say to modify the web.xml file for analytics-ws.war. The code example that you provided does not exist in that file, only in the analytics.war path. Is there something missing?

    ReplyDelete
  6. Thanks for this blog. provided great information. All the details are explained clearly with the great explanation. Thanks for this wonderful blog. Step by step processes execution are given clearly.Know the details about different thing.
    SMO Services Chennai

    ReplyDelete