« Back to a new XMLP home Main | Open World is coming to town ... with lots of XMLP »

Accessing XMLP Enterprise Reports via a URL

I have seen several questions around accessing a report via a URL for the XMLP Enterprise release, some of you have teased apart the mechanism and gotten it working, heres the 101 for the rest of you. Now Im assuming that you are trying to call a report via a URL from another application, that might be from a portal or maybe an APEX application.


Security


As you know the reports are placed in folders and those folders are then secured to a role and a role assigned to a user. So first off you're going to need to ensure that a user actually has access to a report in the first place and if they do then you'll need to call XMLP to render it. There are two options.
1. Use the Guest folder - this can be enabled via the server configuration file, any report in this folder is open for all to see and run. Not the best solution but if the report is not sensitive then it will work no problem.
2. Use SSO - you can hook the XMLP server up to an SSO server as a partner application to the calling application and use LDAP for both application to minimize the user maintenance. This way you call any report via a URL and as long as the user has rights to see/run the report then XMLP will render it without the need for the user to log in. Setting up LDAP and SSO are covered in the user guide now available on OTN.


Building the URL


So the basic URL for a report is as follows:
http://server:port/xmlpserver/ReportDirectory/ReportName.xdo


where


  • server:port - is the name of the server and port number where xmlp is running
  • xmlpserver - a required string, this is the name of the application
  • ReportDirectory - the folder path to the report
  • ReportName - the name of the report

This will render the complete report inside the XMLP page with all the report controls. The default template, output and parameters will be used to render the report.
For example:
http://xdopf.us.oracle.com/xmlpserver/Private/Salary+Report/Salary+Report.xdo

URL1:

If you want some more control then we need to start adding some name/value pairs to the URL. The easiest way to generate the URLs is too just export the report, the URL generated will look similar to the basic URL but the name/value pairs will be added. For example:

http://xdopf.us.oracle.com/xmlpserver/Private/Salary Report/Salary Report.xdo?_xpf=&_xpt=1&_xdo=%2FPrivate%2Fkfabian%2FSalary+Report%2FSalary+Report.xdo&dep=10&_xt=Standard&_xf=html


Lets ignore the first part of the URL, its the same as before, so we have:

?_xpf=&_xpt=1&_xdo=%2FPrivate%2Fkfabian%2FSalary+Report%2FSalary+Report.xdo&dept=10&_xt=Standard&_xf=html

Breaking this string up we have the following parameters on the URL:


  • _xpf - for internal use - just leave it as is
  • _xpt - defines whether the report output should be rendered in the full XMLP window (as above) use a value of 0 or a 1 for just the document itself.
  • _xdo - this provides the path to the current report, its optional so you can leave it out.
  • dept - this is a parameter value for the report, in this case the department for the data, notice it takes the department id. The parameter definition is to show the user the department name and then pass the id to the query. Of course you can have multiple parameters and their values on the URL
  • _xt - this controls the template to be used, this is the template name i.e. Standard not the template file name.
  • _xf - this controls the format of the output to be generated e.g. PDF, HTML, etc


Of course you'll need the obligatory '?' for the first parameter and '&' for the subsequent ones. So you can now create a URL to point to the required report and pass parameter values, output format and template.


Good Luck!
 



 

Comments (6)

nene:

Hai..

Does reports in BI Publisher allows to passing parameter to others applications for example Oracle Portal?
Could you advise me how?

Tim:

Hi Nene

Something like portal ought to be passing params to Publisher, not the other way round right?
Publisher is a reporting tool accepting parameters, unless you mean to be able to pass parameters thru to another system. In the current release its not supported. In 10.1.3.4 the new layer of web services will have this. We will also have a post report trigger that you can code to and pass whatever you like to other programs.
Tim

Ram Chaitanya:

Is it possible to pass datasource name of the data block as a part of the url?

I want to be able to point to two different schemas for the same report depending upon where i call the report from. I dont want to look at the option of maintaining 2 different reports because the # of sources might go up in number.

sandeep:

Is there any way that i can open publisher report by using URL, but the publisher shouldn't prompt for user name and password.

Thanks
Sandeep

Tolu:

Sandeep,

You will not have to pass the url if you enable single sign-on for the bi-publisher reports server AND you also enable SSO for the apache server that the url request is coming from, of course this requires Oracle IDm suite which is an extra piece. I think you might be able to pass user/passwd in the url request but that might be a security risk unless you do a POST instead of GET. Using POST brings its own set of headaches though :-(

Kleig:

In the document apear that "BI Publisher allows to passing parameter" and "multiple parameters" too.
But, how can I do this? If the parameter is "dept" i must be like this? &dept=10,12,14

Thanks.

Post a comment