Skip Headers
Oracle® Business Intelligence New Features Guide
Release 10.1.3.3.3
Part No. E10416-04
  Go To Documentation Library
Library
Go To Product List
Product
Go To Table Of Contents
Contents

Previous
Previous
 
Next
Next
 

23 Oracle Business Intelligence Publisher Web Services

This chapter explains the Oracle Business Intelligence Publisher (Oracle BI Publisher) Web services APIs and related information. This chapter assumes a basic understanding of Web services and application programming interfaces. It contains the following topics:

23.1 Overview of the Oracle BI Publisher Web Services

23.1.1 Functionality Overview

PublicReportService is the Web service that wraps the Oracle BI Publisher public APIs. Starting with release 10.1.3.3.1, the following operations are supported. These operations can be grouped into three categories:

  • Operations for validation of privileges

  • Operations to get information about reports and the repository

  • Operations to run and schedule reports

23.1.2 WSDL Definition for PublicReportService

After you have installed or deployed Oracle BI Publisher, there is a unique URL associated with PublicReportService:

http://<host>:<port>/xmlpserver/services/PublicReportService?wsdl

Enter this URL in your browser, substituting in the correct host and port number, to display the full Web Service Description Language definition for the publicly supported BI Publisher Web service.

On some J2EE servers, this URL may not correctly display the WSDL for this Web service. Please refer to the section Section 23.5, "Oracle BI Publisher Web Services WSDL" to see the full definition.

23.2 Oracle BI Publisher Web Services Data Types

This section covers the following topics:

23.2.1 Base Data Types

Oracle BI Publisher Web services use the following base data types:

Base Type Description Example(s)
xsd:boolean Boolean true, false
xsd:dateTime Date and Time 2007-10-26T21:32:52
xsd:int Integer 23
xsd:string String /Home/Shared/HR Reports/Salary Report
xsd:base64Binary 64 bit binary A document in PDF, HTML, etc. format

23.2.2 XML-to-Java Data Type Mappings

BI Publisher Web Services use RPC-encoded formats. The mapping between Web service XML schema data types and Java data types depends on the SOAP development environment. The following table shows mappings for the Oracle JDeveloper environment:

XML Schema Oracle JDeveloper
xsd:boolean java.lang.Boolean
xsd:dateTime java.util.Date
xsd:int java.lang.Integer
xsd:string java.lang.String
xsd:base64Binary java.lang.Byte

23.2.3 Complex Types

Oracle BI Publisher Web services define and use the following complex types:

ArrayOf_xsd_string
<complexType name="ArrayOf_xsd_string">
 <complexContent>
  <restriction base="soapenc:Array">
   <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
  </restriction>
 </complexContent>
</complexType>

Description: an array of strings used in other complex types.

ParamNameValue
<complexType name="ParamNameValue">
 <sequence>
  <element name="multiValuesAllowed" type="xsd:boolean" /> 
  <element name="name" nillable="true" type="xsd:string" /> 
  <element name="values" nillable="true" type="impl:ArrayOf_xsd_string" /> 
 </sequence>
</complexType>

Description: a parameter name and array of parameter values.

ArrayOfParamNameValue
<complexType name="ArrayOfParamNameValue">
 <complexContent>
  <restriction base="soapenc:Array">
   <attribute ref="soapenc:arrayType" wsdl:arrayType="impl:ParamNameValue[]" />  </restriction>
 </complexContent>
</complexType>

Description: an array of ParamNameValues.

ReportDefinition
<complexType name="ReportDefinition">
 <sequence>
  <element name="defaultOutputFormat" nillable="true" type="xsd:string" /> 
  <element name="defaultTemplateId" nillable="true" type="xsd:string" /> 
  <element name="parameterNames" nillable="true" 
    type="impl:ArrayOf_xsd_string" /> 
  <element name="reportParameterNameValues" nillable="true" 
    type="impl:ArrayOfParamNameValue" />
  <element name="templateIds" nillable="true" type="impl:ArrayOf_xsd_string" /> 
 </sequence>
</complexType>

Description: object returned from getReportDefinition.

ItemData
<complexType name="ItemData"> <sequence>
  <element name="absolutePath" nillable="true" type="xsd:string" /> 
  <element name="creationDate" nillable="true" type="xsd:dateTime" /> 
  <element name="displayName" nillable="true" type="xsd:string" /> 
  <element name="fileName" nillable=
"true" type="xsd:string" /> 
  <element name="lastModified" nillable="true" type="xsd:dateTime" />   <element name="lastModifier" nillable="true" type="xsd:string" /> 
  <element name="owner" nillable="true" type="xsd:string" /> 
  <element name="parentAbsolutePath" nillable="true" type="xsd:string" /> 
  <element name="type" nillable="true" type="xsd:string" />  </sequence>
</complexType>

Description: description of an object contained in the report repository.

ArrayOfItemData
<complexType name="ArrayOfItemData">
 <complexContent>
  <restriction base="soapenc:Array">
   <attribute ref="soapenc:arrayType"
 wsdl:arrayType="impl:ItemData[]" />   </restriction>
 </complexContent>
</complexType>

Description: an array of ItemData - objects contained in the report repository.

ReportRequest
<complexType name="ReportRequest"> <sequence>
  <element name="attributeFormat" nillable="true" type="xsd:string"/>
  <element name="attributeLocale" nillable="true" type="xsd:string"/>
  <element name="attributeTemplate" nillable="true" type="xsd:string"/>
  <element name="parameterNameValues" nillable="true"    type="impl:ArrayOfParamNameValue"/>
  <element name="reportAbsolutePath" nillable="false" type="xsd:string"/>
 </sequence>
</complexType>

Description: the collection of settings needed to run a report. Note that allowable values for attributeFormat will vary according to the type of template used (for example, PDF templates can only generate PDF output.)

ReportResponse
<complexType name="ReportResponse">
 <sequence>
  <element name="reportBytes" nillable="true" type="xsd:base64Binary" /> 
  <element name="reportContentType" nillable="true" type="xsd:string" /> 
  <element name="reportLocale" nillable="true" type="xsd:string" /> 
 </sequence>
</complexType>

Description: the document (in whatever file format attributeFormat is set to in ReportRequest), document type, and document locale that is returned from the runReport operation.

EMailDeliveryOption
<complexType name="EMailDeliveryOption">
 <sequence>
  <element name="emailBCC" nillable="true" type="xsd:string"/>
  <element name="emailBody" nillable="true" type="xsd:string"/>
  <element name="emailCC" nillable="true" type="xsd:string"/>
  <element name="emailFrom" nillable="false" type="xsd:string"/>
  <element name="emailReplyTo" nillable="true" type="xsd:string"/>
  <element name="emailSubject" nillable="false" type="xsd:string"/>
  <element name="emailTo" nillable="false" type="xsd:string"/> </sequence>
</complexType>

Description: the options to set for e-mail delivery of a report.

FaxDeliveryOption
<complexType name="FaxDeliveryOption">
 <sequence>
  <element name="faxNumber" nillable="false" type="xsd:string"/>
  <element name="faxServer" nillable="false" type="xsd:string"/> </sequence>
</complexType>

Description: the options to set for facsimile (fax) delivery of a report.

FTPDeliveryOption
<complexType name="FTPDeliveryOption">
 <sequence>
  <element name="ftpServerName" nillable="false" type="xsd:string"/>
  <element name="ftpUserName" nillable="false" type="xsd:string"/>
  <element name="ftpUserPassword" nillable="false" type="xsd:string"/>
  <element name="remoteFile" nillable="false" type="xsd:string"/>
  <element name="sftpOption" type="xsd:boolean"/>
 </sequence>
</complexType>

Description: the options to set for FTP delivery of a report.

LocalDeliveryOption
<complexType name="LocalDeliveryOption">
 <sequence>
  <element name="destination" nillable="false" type="xsd:string"/>
 </sequence>
</complexType>

Description: the options to set for delivery of a report to the BI Publisher repository.

PrintDeliveryOption
<complexType name="PrintDeliveryOption">
 <sequence>
  <element name="printNumberOfCopy" nillable="true" type="xsd:string"/>
  <element name="printRange" nillable="true" type="xsd:string"/>
  <element name="printSide" nillable="true" type="xsd:string"/>
  <element name="printTray" nillable="true" type="xsd:string"/>
  <element name="printerName" nillable="false" type="xsd:string"/>
 </sequence>
</complexType>

Description: the options to set for printer delivery of a report.

WebDAVDeliveryOption
<complexType name="WebDAVDeliveryOption">
 <sequence>
  <element name="deliveryAuthType" nillable="true" type="xsd:string"/>
  <element name="deliveryAuthTypeBasic" nillable="true" type="xsd:string"/>
  <element name="deliveryAuthTypeDigest" nillable="true" type="xsd:string"/>
  <element name="password" nillable="true" type="xsd:string"/>
  <element name="remoteFilePath" nillable="false" type="xsd:string"/>
  <element name="server" nillable="false" type="xsd:string"/>
  <element name="userName" nillable="true" type="xsd:string"/> </sequence>
</complexType>

Description: the options to set for Web-based Distributed Authoring and Versioning (WebDAV) delivery of a report.

DeliveryRequest
<complexType name="DeliveryRequest">
 <sequence>
  <element name="emailOption" nillable="true" type="impl:EMailDeliveryOption"/>
  <element name="faxOption" nillable="true" type="impl:FaxDeliveryOption"/>
  <element name="ftpOption" nillable="true" type="impl:FTPDeliveryOption"/>
  <element name="localOption" nillable="true" type="impl:LocalDeliveryOption"/>
  <element name="printOption" nillable="true" type="impl:PrintDeliveryOption"/>
  <element name="webDAVOption" nillable="true" 
    type="impl:WebDAVDeliveryOption"/>
 </sequence>
</complexType>

Description: an object that provides the options to deliver a report to multiple destinations.

ScheduleRequest
<complexType name="ScheduleRequest">
 <sequence>
  <element name="deliveryRequest" nillable="false" 
    type="impl:DeliveryRequest"/>
  <element name="endDate" nillable="true" type="xsd:dateTime"/>
  <element name="jobCalendar" nillable="true" type="xsd:string"/>
  <element name="jobLocale" nillable="true" type="xsd:string"/>
  <element name="jobTZ" nillable="true" type="xsd:string"/>
  <element name="notificationTo" nillable="true" type="xsd:string"/>
  <element name="notifyWhenFailed" type="xsd:boolean" />
  <element name="notifyWhenSuccess"  type="xsd:boolean" />
  <element name="notifyWhenWarning"  type="xsd:boolean" />
  <element name="repeatCount" type="xsd:int"/>
  <element name="repeatInterval" type="xsd:int"/>
  <element name="reportRequest" nillable="false" type="impl:ReportRequest"/>
  <element name="saveDataOption"  type="xsd:boolean" />
  <element name="saveOutputOption"  type="xsd:boolean" />
  <element name="scheduleBurstringOption"  type="xsd:boolean" />
  <element name="schedulePublicOption"  type="xsd:boolean" />
  <element name="startDate" nillable="true" type="xsd:dateTime"/>
  <element name="useUTF8Option"  type="xsd:boolean" />
  <element name="userJobName" nillable="true" type="xsd:string"/>
 </sequence>
</complexType>

Description: the options to schedule a report.

AccessDeniedException
<complexType name="AccessDeniedException">
 <sequence /> 
</complexType>

Description: message returned when the user credentials do not have adequate privileges to complete an operation.

OperationFailedException
<complexType name="OperationFailedException">
 <sequence /> 
</complexType>

Description: the message returned when an operation fails.

InvalidParametersException
<complexType name="InvalidParametersException">
 <sequence /> 
</complexType>

Description: message returned when invalid parameters are supplied for a Web service operation.

23.3 Oracle BI Publisher Web Services Operations

The operations available in the Oracle BI Publisher Web services can be described by the following categories:

This section describes the input message, output message, possible exception messages and also provides sample code for each operation.

23.3.1 About Using the Code Samples

Each operation listed in the following section includes sample code. The sample code is based on Apache Axis technology. Before working with the examples you must ensure you have included the prerequisite files in your classpath and generated the required BI Publisher stub classes to import into your project.

Include the Required jar Files

  • Include the following jar files in your classpath (these files can be obtained from the Web):

    • activation.jar

    • mail-1.4.jar

  • Include xmlpserver.jar file (installed with Oracle BI Publisher) in your classpath. This is to ensure that you have all the required request and response objects. This way you will not need to generate response and request stub objects.

Generate the Required BI Publisher Stub Classes

To generate the required BI Publisher stub classes to import to your project for this sample, perform the following:

  1. Download the BI Publisher Web services WSDL.

  2. Run the following in a command file:

    export CLASSPATH="D:/bin/axis-1_4/lib/axis.jar;D:/bin/axis-1_4/lib/jaxrpc.jar;D:/bin/axis-1_4/lib/saaj.jar;D:/bin/axis-1_4/lib/commons-logging.jar;D:/bin/axis-1_4/lib/commons-discovery.jar;D:/bin/axis-1_4/lib/wsdl4j.jar"echo $CLASSPATH
    java org.apache.axis.wsdl.WSDL2Java PublicReportService.wsdl
    

This will generate the following BI Publisher stub classes for you to import into your project:

import com.oracle.xmlns.oxp.service.PublicReportService.ItemData;
import com.oracle.xmlns.oxp.service.PublicReportService.ReportRequest;
import com.oracle.xmlns.oxp.service.PublicReportService.ReportResponse;
import com.oracle.xmlns.oxp.service.PublicReportService.ParamNameValue;
import com.oracle.xmlns.oxp.service.PublicReportService.ReportDefinition;
import com.oracle.xmlns.oxp.service.PublicReportService.ScheduleRequest;
import com.oracle.xmlns.oxp.service.PublicReportService.DeliveryRequest;
import com.oracle.xmlns.oxp.service.PublicReportService.EMailDeliveryOption;

Import the Required Apache Axis and Java Stub Classes

In addition to importing the BI Publisher Web service stub classes that you generated, you must also import the following Apache Axis and Java classes:

import  java.io.FileOutputStream;
import  java.io.OutputStream;
import  java.util.Calendar;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
import org.apache.axis.encoding.ser.BeanSerializerFactory;
import  javax.xml.namespace.QName;
import  javax.xml.rpc.ParameterMode;
import  java.net.URL;

23.3.2 Operations for Validation of Privileges

validateLogin

Use validateLogin to validate that a UserID and Password have the privilege to access the Oracle BI Publisher report server.

input message validateLoginRequest
<wsdl:message name="validateLoginRequest">
  <wsdl:part name="userID" type="xsd:string"/>
  <wsdl:part name="password" type="xsd:string"/>
</wsdl:message>
output message validateLoginResponse
<wsdl:message name="validateLoginResponse">
  <wsdl:part name="validateLoginReturn" type="xsd:boolean"/>
</wsdl:message>

Example 23-1 Sample Code for validateLogin

    public static void validateLogin() throws Exception {
 
        final String bipEndpoint = "http://mycompany.com:9999/xmlpserver/services/PublicReportService?wsdl";
        final String bipNamespace = "http://xmlns.oracle.com/oxp/service/PublicReportService";
        final String reportPath = "/HR Manager/Employee Salary Report/Employee Salary Report.xdo";
 
        service = new Service();
        call = (Call) service.createCall();
        call.setTargetEndpointAddress(new URL(bipEndpoint));
 
        System.out.println("TESTING login Service BEGIN");
 
        call.setOperationName(new QName(bipNamespace, "validateLogin"));
        call.addParameter("userID", XMLType.XSD_STRING, ParameterMode.IN);
        call.addParameter("password", XMLType.XSD_STRING, ParameterMode.IN);
        call.setReturnType(XMLType.XSD_BOOLEAN);
 
        // issue the request
        Boolean valid = (Boolean) call.invoke(
            new Object[] {"administrator", "Administrator"});
 
        if (valid) { System.out.println("user valid"); }
        else { System.out.println("user invalid");  }
        System.out.println("Success for validateLogin");
    }
 
hasReportAccess

Use hasReportAccess to validate that a UserID and Password have the privilege to access a specific report.

input message hasReportAccessRequest
<wsdl:message name="hasReportAccessRequest">
  <wsdl:part name="reportAbsolutePath" type="xsd:string"/>
  <wsdl:part name="userID" type="xsd:string"/>
  <wsdl:part name="password" type="xsd:string"/>
</wsdl:message>
output message hasReportAccessResponse
<wsdl:message name="hasReportAccessResponse">
  <wsdl:part name="hasReportAccessReturn" type="xsd:boolean"/>
</wsdl:message>

Possible exceptions:

InvalidParametersException

See Section 23.3.5, "Messages for Errors" for descriptions of the possible exceptions.

Example 23-2 Sample Code for hasReportAccess

    public static void hasReportAccess(String reportPath) throws Exception {
 
        final String bipEndpoint = "http://mycompany.com:9999/xmlpserver/services/PublicReportService?wsdl";
        //final String bipEndpoint = "http://12.123.8232.107/xmlpserver/services/PublicReportService?wsdl";
        final String bipNamespace = "http://xmlns.oracle.com/oxp/service/PublicReportService";
 
        service = new Service();
        call = (Call) service.createCall();
        call.setTargetEndpointAddress(new URL(bipEndpoint));
 
        System.out.println("TESTING hasReportAccess BEGIN");
 
        call.setOperationName(new QName(bipNamespace, "hasReportAccess"));
        call.addParameter("reportAbsolutePath", XMLType.XSD_STRING, ParameterMode.IN);
        call.addParameter("userID", XMLType.XSD_STRING, ParameterMode.IN);
        call.addParameter("password", XMLType.XSD_STRING, ParameterMode.IN);
        call.setReturnType(XMLType.XSD_BOOLEAN);
 
        // issue the request
        Boolean valid = (Boolean) call.invoke(
            new Object[] {reportPath, "administrator", "Administrator"});
 
        if (valid==true) { System.out.println("User has access."); }
        else { System.out.println("User does not have access");  }
        System.out.println("Success for AccessLogin");
    }
 

23.3.3 Operations to Get Information About Reports and the Repository

getFolderContents

Use getFolderContents to get all of the items in a folder. This will return all the reports and folders contained in the specified folder. You can then use these items to determine what reports you might want to execute or what folders you may want to further search to identify a report.

input message getFolderContentsRequest
<wsdl:message name="getFolderContentsRequest">
  <wsdl:part name="folderAbsolutePath" type="xsd:string"/>
  <wsdl:part name="userID" type="xsd:string"/>
  <wsdl:part name="password" type="xsd:string"/>
</wsdl:message>
output message getFolderContentsResponse
<wsdl:message name="getFolderContentsResponse">
  <wsdl:part name="getFolderContentsReturn" type="impl:ArrayOfItemData"/>
</wsdl:message>

Possible exceptions:

InvalidParametersExceptionAccessDeniedException
OperationFailedException

See Section 23.3.5, "Messages for Errors" for descriptions of the possible exceptions.

Example 23-3 Sample Code for getFolderContents

    public static void getFolderContent(String reportPath) throws Exception {
 
        final String bipEndpoint = "http://mycompany.com:9999/xmlpserver/services/PublicReportService?wsdl";
        final String bipNamespace = "http://xmlns.oracle.com/oxp/service/PublicReportService";
 
        service = new Service();
        call = (Call) service.createCall();
        call.setTargetEndpointAddress(new URL(bipEndpoint));
 
        System.out.println("TESTING getFolderContent Service BEGIN");
        // register the ReportDefinition class
        QName reportDef = new QName(bipNamespace, "ReportDefinition");
        call.registerTypeMapping(ReportDefinition.class, reportDef,
                        BeanSerializerFactory.class, BeanDeserializerFactory.class);
 
        // register the ParamNameValue class
        QName nmvals = new QName(bipNamespace, "ParamNameValue");
        call.registerTypeMapping(ParamNameValue.class, nmvals, BeanSerializerFactory.class, BeanDeserializerFactory.class);
 
        call.setOperationName(new QName(bipNamespace, "getFolderContents"));
        call.addParameter("reportAbsolutePath", XMLType.XSD_STRING, ParameterMode.IN);
        call.addParameter("userID", XMLType.XSD_STRING, ParameterMode.IN);
        call.addParameter("password", XMLType.XSD_STRING, ParameterMode.IN);
        call.setReturnClass(ItemData [].class);
 
        // issue the request
        ItemData items[] =  (ItemData []) call.invoke(
            new Object[] { reportPath, "administrator", "Administrator"});
 
        for (int i=0; i<items.length; i++) {
            System.out.println(items[i].getDisplayName());
        }
        System.out.println("Success for GetFolderContent");
    }
 
getReportDefinition

Use getReportDefinition to get information about a report such as default template, output type and a listing of template IDs. Once you have a list of template IDs you may wish to generate a report with a template other than the default.

input message getReportDefinitionRequest
<wsdl:message name="getReportDefinitionRequest">
  <wsdl:part name="reportAbsolutePath" type="xsd:string"/>
  <wsdl:part name="userID" type="xsd:string"/>
  <wsdl:part name="password" type="xsd:string"/>
</wsdl:message>
output message getReportDefinitionResponse
<wsdl:message name="getReportDefinitionResponse">
  <wsdl:part name="getReportDefinitionReturn" type="impl:ReportDefinition"/>
</wsdl:message>

Possible exceptions:

InvalidParametersException
AccessDeniedException
OperationFailedException

See Section 23.3.5, "Messages for Errors" for descriptions of the possible exceptions.

Example 23-4 Sample Code for getReportDefinition

 
    public static void getReportDef(String xdofile) throws Exception {
 
        final String bipEndpoint = "http://mycompany.com:9999/xmlpserver/services/PublicReportService?wsdl";
        final String bipNamespace = "http://xmlns.oracle.com/oxp/service/PublicReportService";
 
        service = new Service();
        call = (Call) service.createCall();
        call.setTargetEndpointAddress(new URL(bipEndpoint));
 
        System.out.println("BEGIN TESTING getReportDefinition");
 
        // register the ReportDefinition class
        QName reportDef = new QName(bipNamespace, "ReportDefinition");
        call.registerTypeMapping(ReportDefinition.class, reportDef,
                        BeanSerializerFactory.class, BeanDeserializerFactory.class);
 
        // register the ParamNameValue class
        QName nmvals = new QName(bipNamespace, "ParamNameValue");
        call.registerTypeMapping(ParamNameValue.class, nmvals, BeanSerializerFactory.class, BeanDeserializerFactory.class);
 
        call.setOperationName(new QName(bipNamespace, "getReportDefinition"));
        call.addParameter("reportAbsolutePath", XMLType.XSD_STRING, ParameterMode.IN);
        call.addParameter("userID", XMLType.XSD_STRING, ParameterMode.IN);
        call.addParameter("password", XMLType.XSD_STRING, ParameterMode.IN);
        call.setReturnClass(ReportDefinition.class);
 
        // issue the request
        ReportDefinition reportDefn = (ReportDefinition) call.invoke(
            new Object[] { xdofile, "administrator", "Administrator"});
 
        System.out.println("Report Definition Returns with \n Default Output Format = " + reportDefn.getDefaultOutputFormat());
        ParamNameValue params [] = reportDefn.getReportParameterNameValues();
 
        if (params != null) {
            for (int i = 0; i < params.length; i++) {
                System.out.print("Parameter " + params[i].getName() + ":");
                if (params[i].getValues() != null) {
                    for (int j = 0;  j < params[i].getValues().length; j++)
                        System.out.print(" " + params[i].getValues()[j]);
                } else
                    System.out.print(" null");
                System.out.println(" - multiple values? " + params[i].isMultiValuesAllowed());
            }
        }
        System.out.println("END TESTING getReportDefinition");
    }
getReportParameters

Use getReportParameters to get an array of report parameters and their default values. Once you have the list of parameters you can set parameter values before running or scheduling a report.

input message getReportParametersRequest
<wsdl:message name="getReportParametersRequest">
  <wsdl:part name="reportRequest" type="impl:ReportRequest"/>
  <wsdl:part name="userID" type="xsd:string"/>
  <wsdl:part name="password" type="xsd:string"/>
</wsdl:message>
output message getReportParametersResponse
<wsdl:message name="getReportParametersResponse">
  <wsdl:part name="getReportParametersReturn"  
    type="impl:ArrayOfParamNameValue"/>
</wsdl:message>

Possible exceptions:

InvalidParametersException
AccessDeniedException
OperationFailedException

See Section 23.3.5, "Messages for Errors" for descriptions of the possible exceptions.

Example 23-5 Sample Code for getReportParameters

    public static void getParameters(String xdofile) throws Exception {
 
        //final String bipEndpoint = "http://10.138.232.107/xmlpserver/services/PublicReportService?wsdl";
        final String bipEndpoint = "http://mycompany.com:9999/xmlpserver/services/PublicReportService?wsdl";
        final String bipNamespace = "http://xmlns.oracle.com/oxp/service/PublicReportService";
 
        service = new Service();
        call = (Call) service.createCall();
        call.setTargetEndpointAddress(new URL(bipEndpoint));
        System.out.println("BEGIN TESTING: getParameters Service");
 
        // register the ReportRequest class
        QName reportReq = new QName(bipNamespace, "ReportRequest");
        call.registerTypeMapping(ReportRequest.class, reportReq,
                        BeanSerializerFactory.class, BeanDeserializerFactory.class);
 
        // register the ParamNameValue class
        QName nmvals = new QName(bipNamespace, "ParamNameValue");
        call.registerTypeMapping(ParamNameValue.class, nmvals, BeanSerializerFactory.class, BeanDeserializerFactory.class);
 
        // Define parameters
        ParamNameValue[] paramNmVals = new ParamNameValue[2];
        paramNmVals[0] = new ParamNameValue(false, false, "dept", null) ;
        paramNmVals[1] = new ParamNameValue(false, false, "emp", new String[] {"*"}) ;
        ReportRequest req = new ReportRequest("pdf", "en-US", "Simple", paramNmVals, xdofile);
 
 
        call.setOperationName(new QName(bipNamespace, "getReportParameters"));
        call.addParameter( "ReportRequest", reportReq, ParameterMode.IN );
        call.addParameter("userID", XMLType.XSD_STRING, ParameterMode.IN);
        call.addParameter("password", XMLType.XSD_STRING, ParameterMode.IN);
        call.setReturnClass(ParamNameValue [].class);
 
        // issue the request
        ParamNameValue params [] = (ParamNameValue []) call.invoke(
            new Object[] { req, "administrator", "Administrator"});
 
        if (params != null) {
            for (int i = 0; i < params.length; i++) {
                System.out.print("Parameter " + params[i].getName() + ":");
                if (params[i].getValues() != null) {
                    for (int j = 0;  j < params[i].getValues().length; j++)
                        System.out.print(" " + params[i].getValues()[j]);
                } else
                    System.out.print(" null");
                System.out.println(" - multiple values? " + params[i].isMultiValuesAllowed());
            }
        }
        System.out.println("END TESTING: getParameters");
    }
 

23.3.4 Operations to Run and Schedule Reports

runReport

Use runReport to execute a report and return a generated document. Note that the document is returned in the specified file format.

input message runReportRequest
<wsdl:message name="runReportRequest">
  <wsdl:part name="reportRequest" type="impl:ReportRequest"/>
  <wsdl:part name="userID" type="xsd:string"/>  <wsdl:part name="password" type="xsd:string"/>
</wsdl:message>
output message runReportResponse
<wsdl:message name="runReportResponse">
  <wsdl:part name="runReportReturn" type="impl:ReportResponse"/>
</wsdl:message>

Possible exceptions:

InvalidParametersException
AccessDeniedException
OperationFailedException

See Section 23.3.5, "Messages for Errors" for descriptions of the possible exceptions.

Example 23-6 Sample Code for runReport

    public static void runReport() throws Exception {
 
        final String bipEndpoint = 
          "http://mycompany.com:9999/xmlpserver/services/PublicReportService?wsdl";
        final String bipNamespace = "http://xmlns.oracle.com/oxp/service/PublicReportService";
        final String xdofile ="/HR Manager/Employee Salary Report/Employee Salary Report.xdo";
 
        // set up the call object
        service = new Service();
        call = (Call) service.createCall();
        call.setTargetEndpointAddress(new URL(bipEndpoint));
 
        //  TEST Run Report
        System.out.println("TESTING runReport Service BEGIN");
 
        // register the ReportRequest class
        QName reportReq = new QName(bipNamespace, "ReportRequest");
        call.registerTypeMapping(ReportRequest.class, reportReq,
                        BeanSerializerFactory.class, BeanDeserializerFactory.class);
 
        // register the ParamNameValue class
        QName nmvals = new QName(bipNamespace, "ParamNameValue");
        call.registerTypeMapping(ParamNameValue.class, nmvals, BeanSerializerFactory.class, BeanDeserializerFactory.class);
 
        // register the BIPReportResponse class
        QName reportRespqn = new QName(bipNamespace, "ReportResponse");
        call.registerTypeMapping(ReportResponse.class, reportRespqn, 
          BeanSerializerFactory.class, BeanDeserializerFactory.class);
 
        // Default return type based on what we expect
        call.setOperationName( new QName(bipNamespace, "runReport" ));
        call.addParameter( "ReportRequest", reportReq, ParameterMode.IN );
        call.addParameter("userID", XMLType.XSD_STRING, ParameterMode.IN);
        call.addParameter("password", XMLType.XSD_STRING, ParameterMode.IN);
        call.setReturnClass(ReportResponse.class);
 
        ParamNameValue[] paramNmVals = new ParamNameValue[2];
        paramNmVals[0] = new ParamNameValue(false, "dept", null) ;
        paramNmVals[1] = new ParamNameValue(false, "emp", new String[] {"*"}) ;
 
        ReportRequest req = new ReportRequest("pdf", "en-US", "Simple", paramNmVals, xdofile);
 
        // issue the reques
        ReportResponse reportResp = (ReportResponse) call.invoke(
            new Object[] {req, "Administrator", "Administrator"} );
        System.out.println("Return ReportResponse: ContentType = " + reportResp.getReportContentType());
 
        // Save the report
        byte[] binaryBytes = reportResp.getReportBytes();
        OutputStream out = new FileOutputStream("D:\\temp\\out.pdf");
        out.write(binaryBytes);
        out.close();
        System.out.println("Success for Run Report");
    }
 
scheduleReport

Use scheduleReport to schedule a report for execution and delivery to either printer, fax, email, WebDAV, ftp or simply save in the report repository. Jobs can be scheduled to run immediately, once, or on a recurring pattern and can have an end date to stop the recurrence. This operation returns JobID upon successfully scheduling the report job.

input message scheduleReportRequest
<wsdl:message name="scheduleReportRequest">
  <wsdl:part name="scheduleRequest" type="impl:ScheduleRequest"/>
  <wsdl:part name="userID" type="xsd:string"/>
  <wsdl:part name="password" type="xsd:string"/>
</wsdl:message>
output message scheduleReportResponse
<wsdl:message name="scheduleReportResponse">
  <wsdl:part name="scheduleReportReturn" type="xsd:string"/>
</wsdl:message>

Possible exceptions:

InvalidParametersException
AccessDeniedException
OperationFailedException

See Section 23.3.5, "Messages for Errors" for descriptions of the possible exceptions.

Example 23-7 Sample Code for scheduleReport

    public static void scheduleReport() throws Exception {
 
        final String bipEndpoint = "http://mycompany.com:9999/xmlpserver/services/PublicReportService?wsdl";
        final String bipNamespace = "http://xmlns.oracle.com/oxp/service/PublicReportService";
        final String xdofile ="/HR Manager/Employee Salary Report/Employee Salary Report.xdo";
 
        // set up the call object
        service = new Service();
        call = (Call) service.createCall();
        call.setTargetEndpointAddress(new URL(bipEndpoint));
 
        //  TEST Run Report
        System.out.println("TESTING scheduleReport Service BEGIN");
 
        // register the ReportRequest class
        QName reportReq = new QName(bipNamespace, "ReportRequest");
        call.registerTypeMapping(ReportRequest.class, reportReq,
                        BeanSerializerFactory.class, BeanDeserializerFactory.class);
 
        // register the ParamNameValue class
        QName nmvals = new QName(bipNamespace, "ParamNameValue");
        call.registerTypeMapping(ParamNameValue.class, nmvals, BeanSerializerFactory.class, BeanDeserializerFactory.class);
 
        // register the BIPReportResponse class (part of Schedule Request)
        QName reportRespqn = new QName(bipNamespace, "ReportResponse");
        call.registerTypeMapping(ReportResponse.class, reportRespqn, BeanSerializerFactory.class, BeanDeserializerFactory.class);
 
        // register the Schedule Request class
        QName scheduleReq = new QName(bipNamespace, "ScheduleRequest");
        call.registerTypeMapping(ReportRequest.class, reportReq,
                        BeanSerializerFactory.class, BeanDeserializerFactory.class);
 
        // Default return type based on what we expect
        call.setOperationName( new QName(bipNamespace, "scheduleReport" ));
        call.addParameter( "ScheduleRequest", scheduleReq, ParameterMode.IN );
        call.addParameter("userID", XMLType.XSD_STRING, ParameterMode.IN);
        call.addParameter("password", XMLType.XSD_STRING, ParameterMode.IN);
        call.setReturnType(XMLType.XSD_STRING);
 
        // Define Report Request Object
        ParamNameValue[] paramNmVals = new ParamNameValue[2];
        paramNmVals[0] = new ParamNameValue(false, "dept", null) ;
        paramNmVals[1] = new ParamNameValue(false, "emp", new String[] {"*"}) ;
        ReportRequest report = new ReportRequest("pdf", "en-US", "Simple", paramNmVals, xdofile);
 
        // Define Email Delivery Options
        EMailDeliveryOption email =
            new EMailDeliveryOption("manager@mycompany.com", "Body", // bcc, boddy
            "manager@mycompany.com", // cc
            "bipublisher@oracle.com", "bipublisher@oracle.com", // from, reply to
            "Test Email Subject", "manager@mycompany.com" // subject, to
            );
 
        // Define only email delivery
        DeliveryRequest delivery = new DeliveryRequest(email, null, null, null, null, null);
 
        ScheduleRequest req = new ScheduleRequest(
            delivery,               // delivery options
            null,                   // enddate (Calendar.getInstance())
            null,                   // job calendar
            "en-US", null,          // job locale, timezone
            null, false, false, false, // notifications
            1, 1,                   // repeat count, repeat interval
            report,                 // Report and Parameters
            "true", "true",         // Save Data, Save Output
            "false", "true",        // Bursting, Public
            null,                   // start date
            "true",                 // Use UTF-8
            "my Job4"               // job name
            );
 
        // issue the request
        String result = (String) call.invoke(
            new Object[] {req, "Administrator", "Administrator"} );
        System.out.println("Success for Schedule Report");
    }
 

23.3.5 Messages for Errors

One of the following messages may be returned to any of the operations if there is an error that occurs in the execution of the operation.

OperationFailedException
<wsdl:message name="OperationFailedException">
  <wsdl:part name="fault" type="impl:OperationFailedException"/>
</wsdl:message>
AccessDeniedException
<wsdl:message name="AccessDeniedException">
  <wsdl:part name="fault" type="impl:AccessDeniedException"/>
</wsdl:message>
InvalidParametersException
<wsdl:message name="InvalidParametersException">
  <wsdl:part name="fault" type="impl:InvalidParametersException"/>
</wsdl:message>

23.4 Debugging Web Service Applications

As a Web service developer you may need to see the SOAP request messages being used to invoke Web services along with the SOAP response to those request messages. Oracle BI Publisher bundles the Apache Axis SOAP Monitor utility to monitor the SOAP message flow without requiring any special configuration or restarting of the server.

The client sample code sends a SOAP request to listening port 8888, and then takes advantage of Axis TCP monitor to route SOAP request to port 8080, where the PublicReportService is running. This will be a useful debugging tool for the Web service developer.

To start Axis TCP Monitor (tcpmon), from the command line enter the following:

% java org.apache.axis.utils.tcpmon 

This launches the TCP monitor window. A sample of the window without any of the optional arguments is shown in the following figure:

Figure 23-1 TCPMonitor Window

TCPMonitor window

To use the program, select a local port that tcpmon will monitor for incoming connections, a target host where it will forward such connections, and the port number on the target machine which should be "tunneled" to. Then click Add. Another tab will then display for your new tunneled connection. From there, you will see the SOAP Request and Response message, which facilitates debugging.

The following figure shows the connection tab of the TCPMonitor window:

Figure 23-2 TCP Monitor Window Connection Tab

TCPMonitor Connection Tab

To run tcpmonitor, enter the following:

set CLASSPATH=.
set CLASSPATH=%CLASSPATH%;%WEB_HOME%\PORTAL\WEB-INF\lib\axis.jar
set TCPMON_PORT=8081
if not %1.==. TCPMON_PORT=%1
java org.apache.axis.utils.tcpmon %TCPMON_PORT% %ADMINSERVER_HOSTNAME% %ADMINSERVER_PORT%

23.5 Oracle BI Publisher Web Services WSDL

Following is the full BI Publisher PublicReportService Web Services WSDL. It is provided for those instances where BI Publisher has been deployed to a J2EE server that is not able to display this WSDL.

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://xmlns.oracle.com/oxp/service/PublicReportService" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://xmlns.oracle.com/oxp/service/PublicReportService" xmlns:intf="http://xmlns.oracle.com/oxp/service/PublicReportService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--WSDL created by Apache Axis version: 1.3
Built on Oct 05, 2005 (05:23:37 EDT)-->
 <wsdl:types>
  <schema targetNamespace="http://xmlns.oracle.com/oxp/service/PublicReportService" xmlns="http://www.w3.org/2001/XMLSchema">
   <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
   <complexType name="ArrayOf_xsd_string">
    <complexContent>
     <restriction base="soapenc:Array">
      <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
     </restriction>
    </complexContent>
   </complexType>
   <complexType name="ParamNameValue">
    <sequence>
     <element name="multiValuesAllowed" type="xsd:boolean"/>
     <element name="name" nillable="true" type="xsd:string"/>
     <element name="values" nillable="true" type="impl:ArrayOf_xsd_string"/>
    </sequence>
   </complexType>
   <complexType name="ArrayOfParamNameValue">
    <complexContent>
     <restriction base="soapenc:Array">
      <attribute ref="soapenc:arrayType" wsdl:arrayType="impl:ParamNameValue[]"/>
     </restriction>
    </complexContent>
   </complexType>
   <complexType name="ReportRequest">
    <sequence>
     <element name="attributeFormat" nillable="true" type="xsd:string"/>
     <element name="attributeLocale" nillable="true" type="xsd:string"/>
     <element name="attributeTemplate" nillable="true" type="xsd:string"/>
     <element name="parameterNameValues" nillable="true" type="impl:ArrayOfParamNameValue"/>
     <element name="reportAbsolutePath" nillable="true" type="xsd:string"/>
    </sequence>
   </complexType>
   <complexType name="AccessDeniedException">
    <sequence/>
   </complexType>
   <complexType name="OperationFailedException">
    <sequence/>
   </complexType>
   <complexType name="InvalidParametersException">
    <sequence/>
   </complexType>
   <complexType name="ReportResponse">
    <sequence>
     <element name="reportBytes" nillable="true" type="xsd:base64Binary"/>
     <element name="reportContentType" nillable="true" type="xsd:string"/>
     <element name="reportLocale" nillable="true" type="xsd:string"/>
    </sequence>
   </complexType>
   <complexType name="ReportDefinition">
    <sequence>
     <element name="defaultOutputFormat" nillable="true" type="xsd:string"/>
     <element name="defaultTemplateId" nillable="true" type="xsd:string"/>
     <element name="parameterNames" nillable="true" type="impl:ArrayOf_xsd_string"/>
     <element name="reportParameterNameValues" nillable="true" type="impl:ArrayOfParamNameValue"/>
     <element name="templateIds" nillable="true" type="impl:ArrayOf_xsd_string"/>
    </sequence>
   </complexType>
   <complexType name="ItemData">
    <sequence>
     <element name="absolutePath" nillable="true" type="xsd:string"/>
     <element name="creationDate" nillable="true" type="xsd:dateTime"/>
     <element name="displayName" nillable="true" type="xsd:string"/>
     <element name="fileName" nillable="true" type="xsd:string"/>
     <element name="lastModified" nillable="true" type="xsd:dateTime"/>
     <element name="lastModifier" nillable="true" type="xsd:string"/>
     <element name="owner" nillable="true" type="xsd:string"/>
     <element name="parentAbsolutePath" nillable="true" type="xsd:string"/>
     <element name="type" nillable="true" type="xsd:string"/>
    </sequence>
   </complexType>
   <complexType name="ArrayOfItemData">
    <complexContent>
     <restriction base="soapenc:Array">
      <attribute ref="soapenc:arrayType" wsdl:arrayType="impl:ItemData[]"/>
     </restriction>
    </complexContent>
   </complexType>
   <complexType name="EMailDeliveryOption">
    <sequence>
     <element name="emailBCC" nillable="true" type="xsd:string"/>
     <element name="emailBody" nillable="true" type="xsd:string"/>
     <element name="emailCC" nillable="true" type="xsd:string"/>
     <element name="emailFrom" nillable="true" type="xsd:string"/>
     <element name="emailReplyTo" nillable="true" type="xsd:string"/>
     <element name="emailSubject" nillable="true" type="xsd:string"/>
     <element name="emailTo" nillable="true" type="xsd:string"/>
    </sequence>
   </complexType>
   <complexType name="FaxDeliveryOption">
    <sequence>
     <element name="faxNumber" nillable="true" type="xsd:string"/>
     <element name="faxServer" nillable="true" type="xsd:string"/>
    </sequence>
   </complexType>
   <complexType name="FTPDeliveryOption">
    <sequence>
     <element name="ftpServerName" nillable="true" type="xsd:string"/>
     <element name="ftpUserName" nillable="true" type="xsd:string"/>
     <element name="ftpUserPassword" nillable="true" type="xsd:string"/>
     <element name="remoteFile" nillable="true" type="xsd:string"/>
     <element name="sftpOption" type="xsd:boolean"/>
    </sequence>
   </complexType>
   <complexType name="LocalDeliveryOption">
    <sequence>
     <element name="destination" nillable="true" type="xsd:string"/>
    </sequence>
   </complexType>
   <complexType name="PrintDeliveryOption">
    <sequence>
     <element name="printNumberOfCopy" nillable="true" type="xsd:string"/>
     <element name="printRange" nillable="true" type="xsd:string"/>
     <element name="printSide" nillable="true" type="xsd:string"/>
     <element name="printTray" nillable="true" type="xsd:string"/>
     <element name="printerName" nillable="true" type="xsd:string"/>
    </sequence>
   </complexType>
   <complexType name="WebDAVDeliveryOption">
    <sequence>
     <element name="deliveryAuthType" nillable="true" type="xsd:string"/>
     <element name="deliveryAuthTypeBasic" nillable="true" type="xsd:string"/>
     <element name="deliveryAuthTypeDigest" nillable="true" type="xsd:string"/>
     <element name="password" nillable="true" type="xsd:string"/>
     <element name="remoteFilePath" nillable="true" type="xsd:string"/>
     <element name="server" nillable="true" type="xsd:string"/>
     <element name="userName" nillable="true" type="xsd:string"/>
    </sequence>
   </complexType>
   <complexType name="DeliveryRequest">
    <sequence>
     <element name="emailOption" nillable="true" type="impl:EMailDeliveryOption"/>
     <element name="faxOption" nillable="true" type="impl:FaxDeliveryOption"/>
     <element name="ftpOption" nillable="true" type="impl:FTPDeliveryOption"/>
     <element name="localOption" nillable="true" type="impl:LocalDeliveryOption"/>
     <element name="printOption" nillable="true" type="impl:PrintDeliveryOption"/>
     <element name="webDAVOption" nillable="true" type="impl:WebDAVDeliveryOption"/>
    </sequence>
   </complexType>
   <complexType name="ScheduleRequest">
    <sequence>
     <element name="deliveryRequest" nillable="true" type="impl:DeliveryRequest"/>
     <element name="endDate" nillable="true" type="xsd:dateTime"/>
     <element name="jobCalendar" nillable="true" type="xsd:string"/>
     <element name="jobLocale" nillable="true" type="xsd:string"/>
     <element name="jobTZ" nillable="true" type="xsd:string"/>
     <element name="notificationTo" nillable="true" type="xsd:string"/>
     <element name="notifyWhenFailed" type="xsd:boolean"/>
     <element name="notifyWhenSuccess" type="xsd:boolean"/>
     <element name="notifyWhenWarning" type="xsd:boolean"/>
     <element name="repeatCount" type="xsd:int"/>
     <element name="repeatInterval" type="xsd:int"/>
     <element name="reportRequest" nillable="true" type="impl:ReportRequest"/>
     <element name="saveDataOption" type="xsd:boolean"/>
     <element name="saveOutputOption" type="xsd:boolean"/>
     <element name="scheduleBurstringOption" type="xsd:boolean"/>
     <element name="schedulePublicOption" type="xsd:boolean"/>
     <element name="startDate" nillable="true" type="xsd:dateTime"/>
     <element name="useUTF8Option" type="xsd:boolean"/>
     <element name="userJobName" nillable="true" type="xsd:string"/>
    </sequence>
   </complexType>
  </schema>
 </wsdl:types>
 
   <wsdl:message name="runReportResponse">
 
      <wsdl:part name="runReportReturn" type="impl:ReportResponse"/>
 
   </wsdl:message>
 
   <wsdl:message name="scheduleReportResponse">
 
      <wsdl:part name="scheduleReportReturn" type="xsd:string"/>
 
   </wsdl:message>
 
   <wsdl:message name="getReportDefinitionRequest">
 
      <wsdl:part name="reportAbsolutePath" type="xsd:string"/>
 
      <wsdl:part name="userID" type="xsd:string"/>
 
      <wsdl:part name="password" type="xsd:string"/>
 
   </wsdl:message>
 
   <wsdl:message name="getReportParametersResponse">
 
      <wsdl:part name="getReportParametersReturn" type="impl:ArrayOfParamNameValue"/>
 
   </wsdl:message>
 
   <wsdl:message name="getReportParametersRequest">
 
      <wsdl:part name="reportRequest" type="impl:ReportRequest"/>
 
      <wsdl:part name="userID" type="xsd:string"/>
 
      <wsdl:part name="password" type="xsd:string"/>
 
   </wsdl:message>
 
   <wsdl:message name="InvalidParametersException">
 
      <wsdl:part name="fault" type="impl:InvalidParametersException"/>
 
   </wsdl:message>
 
   <wsdl:message name="getFolderContentsResponse">
 
      <wsdl:part name="getFolderContentsReturn" type="impl:ArrayOfItemData"/>
 
   </wsdl:message>
 
   <wsdl:message name="OperationFailedException">
 
      <wsdl:part name="fault" type="impl:OperationFailedException"/>
 
   </wsdl:message>
 
   <wsdl:message name="AccessDeniedException">
 
      <wsdl:part name="fault" type="impl:AccessDeniedException"/>
 
   </wsdl:message>
 
   <wsdl:message name="validateLoginResponse">
 
      <wsdl:part name="validateLoginReturn" type="xsd:boolean"/>
 
   </wsdl:message>
 
   <wsdl:message name="scheduleReportRequest">
 
      <wsdl:part name="scheduleRequest" type="impl:ScheduleRequest"/>
 
      <wsdl:part name="userID" type="xsd:string"/>
 
      <wsdl:part name="password" type="xsd:string"/>
 
   </wsdl:message>
 
   <wsdl:message name="runReportRequest">
 
      <wsdl:part name="reportRequest" type="impl:ReportRequest"/>
 
      <wsdl:part name="userID" type="xsd:string"/>
 
      <wsdl:part name="password" type="xsd:string"/>
 
   </wsdl:message>
 
   <wsdl:message name="getFolderContentsRequest">
 
      <wsdl:part name="folderAbsolutePath" type="xsd:string"/>
 
      <wsdl:part name="userID" type="xsd:string"/>
 
      <wsdl:part name="password" type="xsd:string"/>
 
   </wsdl:message>
 
   <wsdl:message name="getReportDefinitionResponse">
 
      <wsdl:part name="getReportDefinitionReturn" type="impl:ReportDefinition"/>
 
   </wsdl:message>
 
   <wsdl:message name="hasReportAccessRequest">
 
      <wsdl:part name="reportAbsolutePath" type="xsd:string"/>
 
      <wsdl:part name="userID" type="xsd:string"/>
 
      <wsdl:part name="password" type="xsd:string"/>
 
   </wsdl:message>
 
   <wsdl:message name="hasReportAccessResponse">
 
      <wsdl:part name="hasReportAccessReturn" type="xsd:boolean"/>
 
   </wsdl:message>
 
   <wsdl:message name="validateLoginRequest">
 
      <wsdl:part name="userID" type="xsd:string"/>
 
      <wsdl:part name="password" type="xsd:string"/>
 
   </wsdl:message>
 
   <wsdl:portType name="PublicReportService">
 
      <wsdl:operation name="getReportParameters" parameterOrder="reportRequest userID password">
 
         <wsdl:input message="impl:getReportParametersRequest" name="getReportParametersRequest"/>
 
         <wsdl:output message="impl:getReportParametersResponse" name="getReportParametersResponse"/>
 
         <wsdl:fault message="impl:InvalidParametersException" name="InvalidParametersException"/>
 
         <wsdl:fault message="impl:AccessDeniedException" name="AccessDeniedException"/>
 
         <wsdl:fault message="impl:OperationFailedException" name="OperationFailedException"/>
 
      </wsdl:operation>
 
      <wsdl:operation name="validateLogin" parameterOrder="userID password">
 
         <wsdl:input message="impl:validateLoginRequest" name="validateLoginRequest"/>
 
         <wsdl:output message="impl:validateLoginResponse" name="validateLoginResponse"/>
 
      </wsdl:operation>
 
      <wsdl:operation name="runReport" parameterOrder="reportRequest userID password">
 
         <wsdl:input message="impl:runReportRequest" name="runReportRequest"/>
 
         <wsdl:output message="impl:runReportResponse" name="runReportResponse"/>
 
         <wsdl:fault message="impl:InvalidParametersException" name="InvalidParametersException"/>
 
         <wsdl:fault message="impl:AccessDeniedException" name="AccessDeniedException"/>
 
         <wsdl:fault message="impl:OperationFailedException" name="OperationFailedException"/>
 
      </wsdl:operation>
 
      <wsdl:operation name="getReportDefinition" parameterOrder="reportAbsolutePath userID password">
 
         <wsdl:input message="impl:getReportDefinitionRequest" name="getReportDefinitionRequest"/>
 
         <wsdl:output message="impl:getReportDefinitionResponse" name="getReportDefinitionResponse"/>
 
         <wsdl:fault message="impl:InvalidParametersException" name="InvalidParametersException"/>
 
         <wsdl:fault message="impl:AccessDeniedException" name="AccessDeniedException"/>
 
         <wsdl:fault message="impl:OperationFailedException" name="OperationFailedException"/>
 
      </wsdl:operation>
 
      <wsdl:operation name="getFolderContents" parameterOrder="folderAbsolutePath userID password">
 
         <wsdl:input message="impl:getFolderContentsRequest" name="getFolderContentsRequest"/>
 
         <wsdl:output message="impl:getFolderContentsResponse" name="getFolderContentsResponse"/>
 
         <wsdl:fault message="impl:InvalidParametersException" name="InvalidParametersException"/>
 
         <wsdl:fault message="impl:AccessDeniedException" name="AccessDeniedException"/>
 
         <wsdl:fault message="impl:OperationFailedException" name="OperationFailedException"/>
 
      </wsdl:operation>
 
      <wsdl:operation name="scheduleReport" parameterOrder="scheduleRequest userID password">
 
         <wsdl:input message="impl:scheduleReportRequest" name="scheduleReportRequest"/>
 
         <wsdl:output message="impl:scheduleReportResponse" name="scheduleReportResponse"/>
 
         <wsdl:fault message="impl:InvalidParametersException" name="InvalidParametersException"/>
 
         <wsdl:fault message="impl:AccessDeniedException" name="AccessDeniedException"/>
 
         <wsdl:fault message="impl:OperationFailedException" name="OperationFailedException"/>
 
      </wsdl:operation>
 
      <wsdl:operation name="hasReportAccess" parameterOrder="reportAbsolutePath userID password">
 
         <wsdl:input message="impl:hasReportAccessRequest" name="hasReportAccessRequest"/>
 
         <wsdl:output message="impl:hasReportAccessResponse" name="hasReportAccessResponse"/>
 
         <wsdl:fault message="impl:InvalidParametersException" name="InvalidParametersException"/>
 
      </wsdl:operation>
 
   </wsdl:portType>
 
   <wsdl:binding name="PublicReportServiceSoapBinding" type="impl:PublicReportService">
 
      <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
 
      <wsdl:operation name="getReportParameters">
 
         <wsdlsoap:operation soapAction=""/>
 
         <wsdl:input name="getReportParametersRequest">
 
            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:input>
 
         <wsdl:output name="getReportParametersResponse">
 
            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:output>
 
         <wsdl:fault name="InvalidParametersException">
 
            <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="InvalidParametersException" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:fault>
 
         <wsdl:fault name="AccessDeniedException">
 
            <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AccessDeniedException" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:fault>
 
         <wsdl:fault name="OperationFailedException">
 
            <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="OperationFailedException" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:fault>
 
      </wsdl:operation>
 
      <wsdl:operation name="validateLogin">
 
         <wsdlsoap:operation soapAction=""/>
 
         <wsdl:input name="validateLoginRequest">
 
            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:input>
 
         <wsdl:output name="validateLoginResponse">
 
            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:output>
 
      </wsdl:operation>
 
      <wsdl:operation name="runReport">
 
         <wsdlsoap:operation soapAction=""/>
 
         <wsdl:input name="runReportRequest">
 
            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:input>
 
         <wsdl:output name="runReportResponse">
 
            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:output>
 
         <wsdl:fault name="InvalidParametersException">
 
            <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="InvalidParametersException" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:fault>
 
         <wsdl:fault name="AccessDeniedException">
 
            <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AccessDeniedException" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:fault>
 
         <wsdl:fault name="OperationFailedException">
 
            <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="OperationFailedException" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:fault>
 
      </wsdl:operation>
 
      <wsdl:operation name="getReportDefinition">
 
         <wsdlsoap:operation soapAction=""/>
 
         <wsdl:input name="getReportDefinitionRequest">
 
            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:input>
 
         <wsdl:output name="getReportDefinitionResponse">
 
            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:output>
 
         <wsdl:fault name="InvalidParametersException">
 
            <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="InvalidParametersException" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:fault>
 
         <wsdl:fault name="AccessDeniedException">
 
            <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AccessDeniedException" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:fault>
 
         <wsdl:fault name="OperationFailedException">
 
            <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="OperationFailedException" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:fault>
 
      </wsdl:operation>
 
      <wsdl:operation name="getFolderContents">
 
         <wsdlsoap:operation soapAction=""/>
 
         <wsdl:input name="getFolderContentsRequest">
 
            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:input>
 
         <wsdl:output name="getFolderContentsResponse">
 
            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:output>
 
         <wsdl:fault name="InvalidParametersException">
 
            <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="InvalidParametersException" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:fault>
 
         <wsdl:fault name="AccessDeniedException">
 
            <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AccessDeniedException" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:fault>
 
         <wsdl:fault name="OperationFailedException">
 
            <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="OperationFailedException" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:fault>
 
      </wsdl:operation>
 
      <wsdl:operation name="scheduleReport">
 
         <wsdlsoap:operation soapAction=""/>
 
         <wsdl:input name="scheduleReportRequest">
 
            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:input>
 
         <wsdl:output name="scheduleReportResponse">
 
            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:output>
 
         <wsdl:fault name="InvalidParametersException">
 
            <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="InvalidParametersException" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:fault>
 
         <wsdl:fault name="AccessDeniedException">
 
            <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AccessDeniedException" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:fault>
 
         <wsdl:fault name="OperationFailedException">
 
            <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="OperationFailedException" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:fault>
 
      </wsdl:operation>
 
      <wsdl:operation name="hasReportAccess">
 
         <wsdlsoap:operation soapAction=""/>
 
         <wsdl:input name="hasReportAccessRequest">
 
            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:input>
 
         <wsdl:output name="hasReportAccessResponse">
 
            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:output>
 
         <wsdl:fault name="InvalidParametersException">
 
            <wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="InvalidParametersException" namespace="http://xmlns.oracle.com/oxp/service/PublicReportService" use="encoded"/>
 
         </wsdl:fault>
 
      </wsdl:operation>
 
   </wsdl:binding>
 
   <wsdl:service name="PublicReportServiceService">
 
      <wsdl:port binding="impl:PublicReportServiceSoapBinding" name="PublicReportService">
 
         <wsdlsoap:address location="http://localhost:8080/xmlpserver/services/PublicReportService"/>
 
      </wsdl:port>
 
   </wsdl:service>
 
</wsdl:definitions>