BI Services Run Time Configuration Explained

SAP BusinessObjects BI Services are a class of web services that can be easily created by converting web intelligence (webi) report blocks into web services. A simple GUI wizard guides the report developer through a few simple steps that publish the report block as a web service and provide a WSDL that can be used to interact with the report block data. As i wrote in an older post, the BI Services combine the power of Live Office in leveraging webi full capabilities (using variables, filters, formulas, cross tabs, etc) with the power of QaaWS web services (good caching capabilities for enhanced performance).
The BI Services publish with two default methods. A GetReportBlock method and a Drill method. For this post, i will examine the GetReportBlock configuration and describe some of the refinements you can apply to the web service as you consume it in your application.
First, a word about the difference between prompts and filters: BI Services introduce a powerful concept of filters. Basically, any object in the report can be used as a filter in the web service. Filters can be applied at the database level during query time, or to a saved report instance data. Prompts are only applicable at the database level and cannot be applied to saved instances.
Next, there are two main input parameters that control the GetReportBlock behavior with regards to filtering and running against the DB vs running against saved reports instances: refresh and getFromLastDocumentInstance (or getFromUserInstance in “bursting” schedules scenarios). All these parameters are boolean types and setting them to true or false will result in different behavior from the web service during consumption time. Here are some example:
The initial setup is a simple report that returns the Years object from the e-Fashion universe. The report has an optional prompt on the Year object. The simple report block was published as a BI Service. When we run the report, it looks like so in webi:

 We can test the web service configuration right from within webi

In our first test, we set the refresh parameter to true and send the request. This is because we set the report to refresh, we did not specify a prompt value, and since our prompt is optional, it was ignored, and we did not specify any filter value.

In the second test, we still use the refresh parameter to hit the database, but this time we specify a prompt value. We get back the year row we expect.


 
To demonstrate the interoperability of the filter and the prompt in a refresh scenario, we clear out the prompt value and use a filter that is set to equal a different year now.

Now, let’s try review what options are available when we schedule the report and save it with data. Let’s schedule our report with two years (rows) of data: 2004 and 2005.

This time, when we go to test our web service, let’s use the saved report instance, and see what happens. First, let’s change our test settings to use the getFromLastDocumentInstance instead of refresh, and leave the filter value empty (since we are working with a saved instance, the prompt value will be ignored even we if we try to use it). This time, we will get the saved instance results, just two rows of data.

If we apply a filter for say, year 2005, we get the data from the report instance

We will not hit the database, so even if we try to filter for a value we know to exist in the DB, such as 2006, since we are only getting data from the saved report, we will not get any result back.

 

Also, if during testing you lose the state of your service between cached and non-cached versions, or need to reset the service state for any other reason, you can set the resetState parameter to true.

So all in all, the BI Services provide a lot of configuration options to address a wide range of reporting use cases from all saved data to no saved data used.

This entry was posted in BusinessObjects 4.0, Web Intelligence, Xcelsius and tagged , . Bookmark the permalink.

9 Responses to BI Services Run Time Configuration Explained

  1. Santosh says:

    Thanks for great detail Ron and team.

  2. Ingmar says:

    Interesting post!
    Do you see a way to incorporate row-level security when using this kind of filtering?

    • Ron Keler says:

      Thank you Ingmar. Row-level security in a BO system is typically applied at the universe level. As long as your BI Services connections are set to run against the DB (and not used cached instances of reports), BO will enforce the row-level security based on the user credentials that is running the service.

  3. nirav says:

    few question for this post:
    1. what i can use as index value if i use prompt of webi?
    2.and Interval Bex prompt is working on this?
    3.if i want to use less than or greather this date then how it will work?

    • Ron Keler says:

      Thank you Nirav, as for your questions:
      1. If you are using a single value prompt, you do not need to use the index, you can simply omit it (leave blank)
      2. Which version of bo are you working with?
      3. Yes, that will work, however, dates have other issues in web services. Null dates can cause the web service to error out and return no results. Also, you may have better results using filters in the web service, then prompts. The net result is the same.

  4. Andy Caroll says:

    Hi,
    We are using BO 4.0. In this I created a BI service on a WebI report. I set option refresh = true. I tried using this BI service in Dashboard design 4.0 SP2 and in dashboard design connection options, I set refresh=True. But When I change prompt value and click on the refresh, it won’t fetch data from the database. It is still showing report data.
    The other options like getFrom Last Document instance and GetFromUserInstance options are set blank.
    Our WebI report is based on BEx query universe.

    Thanks,
    Andy

    • Ron Keler says:

      Hi Andy, there could be many reasons why your connection isn’t working as expected, all related to the dashboard configuration. I would suggest starting your test with the webi report itself and making sure it behaves as expected. Then use the BI Service test interface in webi, to make sure the web service returns the correct response when you change the prompt value (setting refresh=true). You can also try to set the reset option to true. Up to at least patch 12 of BI 4 SP 2, i know that the web services error out on null date field with an oracle back end, there might be some other problems like this, but the way to find them is with the BI Service test interface. If that is not working properly for you, you can also try to test the WSDL using a soap tool, like SOAPUI. Finally, also make sure your Xcelsius model and connection in Xcelsius are properly configured, connection refresh option, component insert option, etc, to properly “fire” a query..

  5. Priya says:

    Could you please let me know how we can use/consume the published report block data in a java application? Should we use any SDK?

    • Ron Keler says:

      Yes, you will need the BO enterprise SDK to authenticate and obtain a session. When you publish the block, a SOAP web service is created with a WSDL. You can examine the WSDL to see exactly how to invoke the service and what parameters it accepts.

Leave a Reply to Andy Caroll Cancel reply

Your email address will not be published. Required fields are marked *