Question: How can I get user-specific data results for Xcelsius dashboards viewed through BusinessObjects InfoView?
Answer: There are a few application variables that BusinessObjects provides for use when a user logs into InfoView, one of which is BOUSER. BOUser is the variable for the userId that is logged in and can be used when Xcelsius is aware of the user session. The user session is passed to Xcelsius via a flash variable that has been made available in XI for this purpose. It is called, CELogonToken.
BOUSER contains the value of the userId of the user logged in. It can be used to provide user-specific row-level security through the universe design by adding a self join to a field containing the userIds in your data. With XI3.1 Designer, this can be applied at the class level (across all objects in a class), or through the traditional method of being applied just when objects from that specific table are used in the query.
Here is an example of how this variable is applied:
Note that the self join is applied against the Manager field.
The Manager field for eFashion contains usernames like “Queen” and “Tuttle”. For this example, we have added these as users into our CMC.
In QAAWS, I have created a web service to return Manager and their corresponding Store. This query automatically prompts for the BOUSER since the SQL contains the @Variable(‘BOUSER’) restriction.
In Xcelsius, I have referenced this QAAWS with the appropriate connection defined and entering Name of Manager and Store name results into cells that are viewable through a spreadsheet component.
IMPORTANT: QAAWS will return a promptValue invalid error message if a valid value is not declared as a default for bouser. Make sure you point bouser to a cell in the Excel spreadsheet of your Xcelsius design and input a valid userId as a default.
In order for Xcelsius to know the BOUSER userId of the user logged into BO, Xcelsius needs to be aware of the session. If you enter a login and password to the QAAWS connection, that username will be used all the time. Instead, these entries should be left blank.
If they are left blank, then the users will be prompted to log into QAAWS when they attempt to refresh the QAAWS query from the dashboard.
For both performance and ease of use, it is usually desired that the users continue using their existing session for a single-sign on method. To do this, a flash variable connection should be added which includes the range name CELogonToken. This hands the existing session token over to Xcelsius seamlessly.
The BOUSER or userId is not viewable in the token value as displayed. The token, however, makes this application variable available for use as the Login value passed to the QAAWS connector upon refresh.
In the end, my excel spreadsheet design looks like this:
I export the Xcelsius dashboard to the SAP BusinessObjects Platform (note that an Enterprise license is required for this functionality).
Then, I log into InfoView as Tuttle and view the dashboard. When I click the refresh button, the Manager Tuttle and his/her store gets returned.
Incidentally, the default value of Queen is never used. The default is only to allow the bouser variable to load with the QAAWS definition, but only the actual user logged in ever gets passed to the query.