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 
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=htmlBreaking 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)
Hai..
Does reports in BI Publisher allows to passing parameter to others applications for example Oracle Portal?
Could you advise me how?
Posted by nene | August 4, 2008 3:31 AM
Posted on August 4, 2008 03:31
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
Posted by Tim | August 4, 2008 7:52 AM
Posted on August 4, 2008 07:52
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.
Posted by Ram Chaitanya | August 25, 2008 3:26 PM
Posted on August 25, 2008 15:26
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
Posted by sandeep | September 25, 2008 10:18 AM
Posted on September 25, 2008 10:18
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 :-(
Posted by Tolu | February 5, 2009 11:37 AM
Posted on February 5, 2009 11:37
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.
Posted by Kleig | October 14, 2009 12:42 AM
Posted on October 14, 2009 00:42