Accessing XMLP Enterprise Reports via a URL
By Tim Dexter-Oracle on Jul 18, 2006
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.
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:
- 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.
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.