Skip Headers
Oracle® Business Intelligence New Features Guide
Release 10.1.3.4.2

Part Number E10416-07
Go to Documentation Home
Home
Go to Book List
Book List
Go to Table of Contents
Contents
Go to Feedback page
Contact Us

Go to previous page
Previous
Go to next page
Next
View PDF

27 BI Publisher Web Services, Releases 10.1.3.3.1, 10.1.3.3.2, and 10.1.3.3.3

This chapter explains the Oracle BI Publisher Web Services APIs and related information for Releases 10.1.3.3.1 through 10.1.3.3.3. Information about the complete set of Oracle BI Publisher Web Services APIs that you can use with Release 10.1.3.4 is provided in the chapter: "Using the BI Publisher Web Service APIs" in the Oracle Business Intelligence Publisher Administrator's and Developer's Guide.

This chapter assumes a basic understanding of Web services and application programming interfaces. It contains the following sections:

27.1 Overview of the Oracle BI Publisher Web Services

This section provides an overview of the Oracle BI Publisher Web Services.

27.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

27.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 the 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 might not correctly display the WSDL for this Web service. See the section Section 27.5, "Oracle BI Publisher Web Services WSDL" to see the full definition.

27.2 Oracle BI Publisher Web Services Data Types

This section covers the following topics:

27.2.1 Base Data Types

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

  • xsd:boolean = Boolean (example: true, false)

  • xsd:xsd:dateTime = Date and Time (example: 2007-10-26T21:32:52)

  • xsd:int = Integer (example: 23)

  • xsd:string = String (example: /Home/Shared/HR Reports/Salary Report)

  • xsd:base64Binary = 64 bit binary (example: A document in a format such as PDF or HTML)

27.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 list shows mappings for XML schema data types and the Oracle JDeveloper ones:

  • 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

27.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 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.

27.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.

27.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, ensure that you have included the prerequisite files in your classpath and generated the required BI Publisher stub classes to import into the project.

Include the Required jar Files

The following list describes the jar files to include:

  • 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 specification ensures that you have all the required request and response objects. This way you need not generate response and request stub objects.

Generate the Required BI Publisher Stub Classes

To generate the required BI Publisher stub classes to import to the 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 command generates 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;

27.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 27-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 27.3.5, "Messages for Errors" for descriptions of the possible exceptions.

Example 27-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");
    }

27.3.3 Operations to Get Information About Reports and the Repository

getFolderContents

Use getFolderContents to get all of the items in a folder. This command returns all the reports and folders that are contained in the specified folder. You can then use these items to determine what reports you might want to execute or what folders you might 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 27.3.5, "Messages for Errors" for descriptions of the possible exceptions.

Example 27-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. When you have a list of template IDs, you might want 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 27.3.5, "Messages for Errors" for descriptions of the possible exceptions.

Example 27-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. When 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 27.3.5, "Messages for Errors" for descriptions of the possible exceptions.

Example 27-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");
    }

27.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 27.3.5, "Messages for Errors" for descriptions of the possible exceptions.

Example 27-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.

inputmessage = 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> 

outputmessage = scheduleReportResponse

<wsdl:message name="scheduleReportResponse">
  <wsdl:part name="scheduleReportReturn" type="xsd:string"/>
</wsdl:message> 

Possible exceptions:

InvalidParametersException
AccessDeniedException
OperationFailedException 

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

Example 27-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");
    }

27.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>

27.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 is 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 Figure 27-1:

Figure 27-1 TCPMonitor Window

TCPMonitor window

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

Figure 27-2 shows the connection tab of the TCPMonitor window:

Figure 27-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%

27.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>