On Chapter 11 of the Oracle BI 11g book, Customizing Oracle BI with Skins and Styles we provide a step by step tutorial on the basics of how to brand your business intelligence application. Taking it to a more advanced level is the use of the fmap syntax if using the /analyticsRes application as the deployed source for custom images (other files of course can be referenced via this method). In the book chapter you deploy the /analyticsRes application in WebLogic Server so that any custom files (images, etc.) are available from a URL on the server such as http://mybiserver.org:9704/analyticsRes/myimage.png, where the port number and server names is the same as your /anlaytics application running your Oracle BI Presentation Service, etc.
The fmap syntax has been used for a long time in Oracle BI / Siebel Analytics when referencing images inherent in the application as well as custom images. This syntax is used on Analysis requests an dashboards. The syntax is usually fmap:images/myimage.png or just images/myimage.png in some fields when developing. In legacy Oracle BI environments custom images were usually tossed in the \web\res\ folder and referencing custom images using fmap worked the sames as it did for those inherent images. If the legacy OBIEE environment was scaled-out in a cluster then most integrations just deployed the custom images or files to each server in the cluster and called it a day. There are better practices to this latter approach.
In a high availability environment or any environment you’ve set up for scalability you will most likely want to deploy the analyticsRes folder/application (folder that includes the WEB-INF) file from a shared storage path such as UNC or a SAN resource on a neutral server or storage system not dependent upon the servers on which any part of the Oracle BI cluster is installed. Although if your server or storage space is limited you could use a folder on one of the servers to act as the central storage repository for your custom resources but you then take a way the failover and scalability factor of those resources.
If you simply deploy the /analyticsRes application (regardless of what storage location) the fmap functionality references the file system location from the server on which the Oracle BI server is installed. That path is <BI_INSTANCE>\bifoundation\OracleBIPresentationServices\analyticsRes\. The earlier URL path http://mybiserver.org:9704/analyticsRes/myimage.png example will work in a single node Oracle BI environment after the /analyticsRes application is deployed and the fmap reference will be in sync. it is in sync because fmap picks up the default file system path shown above, not the URL virtual path. So this mean that in a HA environment, simply placing custom resources in the /analyticsRes file path on Server A of a HA cluster will not allow the images to be referenced by Server B of the HA cluster.
This is because the fmap reference is actually controlled by attributes of <URL> element within the instanceConfig.xml file. This <URL> element is not listed in the instanceConfig.xml by default, however usage of implementing this element is well documented by the Oracle BI documentation, http://docs.oracle.com/cd/E23943_01/bi.1111/e10541/configloadproxy.htm
If this is not changed in the instanceConfig.xml file(s) in a scaled-out, high-availability environment then any custom images will have to be duplicated on all nodes of the scaled out cluster which is not optimal. Instead, if in an HA environment, place all custom images and files on a SAN or Shared Storage location, deploy the /analyticsRes application in WLS using the shared storage path and ensure that the application is referenced from that location, and then modify the instanceConfig.xml file on all instances to use the <URL> element configuration to point to that reference. Once that has been accomplished and the presentation services system components restarted, the FMAP reference will correctly point to the single custom shared storage location. Your syntax should look similar to what is seen below:
<serverinstance> <url> <customerresourcephysicalpath>\\mySANSvr01\obieeprod\analyticsRes</customerresourcephysicalpath> <customerresourcevirtualpath>/analyticsRes</customerresourcevirtualpath> </url> </serverinstance>
Looking at the elements beneath the URL parent element just think of the “Customer” prefix as “Custom” meaning that the OBIEE presentation server will still reference the default resource location, \web\res, for the native file and images such as icons, etc. but it will also pick up any custom resource files in the location which you reference between the “Customer…” elements. If you look at the reference link at the bottom of this blog post you will see that there is another element tag that you can configure here to change the default location for those inherent resource files which you most likely would not want to do if just adding a few files unique to your environment.
If you really need to see the possible syntax available in the instanceConfig.xml file or any of the other XML structures such as a dashboard or report underlying structure you can access
the XSD files in <ORACLE_BI_HOME>\web\schemas. Robin over at RM recently did a great post on referencing these XSD files if you need more insight on what can be accomplished by referencing those files.
Update: I just saw, after I wrote this post that Venkat over at RM had written a similar post a while back. I’ve focused more on a high availability OBIEE deployment here so hopefully if you’d read his in the past you’ve learned something new here.