この章では、Oracle BI PublisherのWebサービスAPIとリリース10.1.3.3.1〜10.1.3.3.3の関連情報について説明します。リリース10.1.3.4で使用できるOracle BI Publisher用WebサービスAPIの詳細は、『Oracle Business Intelligence Publisher管理者および開発者ガイド』の「BI PublisherのWebサービスの使用」を参照してください。
この章では、Webサービスとアプリケーション・プログラミング・インタフェースに関して基本的な知識があることを前提にしています。この章の内容は次のとおりです。
この項では、Oracle BI PublisherのWebサービスの概要について説明します。
PublicReportServiceは、Oracle BI Publisherの公開APIがラップされているWebサービスです。リリース10.1.3.3.1から、次の操作がサポートされるようになりました。これらの操作は、次の3つのカテゴリにグループ化できます。
権限を検証する操作
レポートとリポジトリに関する情報を取得する操作
レポートの実行とスケジュールを行う操作
Oracle BI Publisherのインストールやデプロイを行うと、PublicReportServiceに関連付けられた一意のURLがあります。
http://<host>:<port>/xmlpserver/services/PublicReportService?wsdl
このURLをブラウザに入力(その際に、適切なホストとポート番号に置換)すると、BI Publisherでサポートされている公開Webサービス用のフルWSDL(Web Services Description Language)定義が表示されます。
J2EEサーバーによっては、このURLではこのWebサービスのWSDLが適切に表示されないサーバーがあります。フル定義の詳細は、第27.5項「Oracle BI PublisherのWebサービスWSDL」を参照してください。
この項の内容は次のとおりです。
基本データ型
XMLデータ型とJavaデータ型とのマッピング
複合型
Oracle BI PublisherのWebサービスでは、次の基本データ型が使用されます。
xsd:boolean = ブール(例: true、false)
xsd:xsd:dateTime = 日付と時間(例: 2007-10-26T21:32:52)
xsd:int = 整数(例: 23)
xsd:string = 文字列(例: /Home/Shared/HR Reports/Salary Report)
xsd:base64Binary = 64ビットのバイナリ値(例: PDFやHTMLなどの形式のドキュメント)
BI PublisherのWebサービスでは、RPCでエンコードされたフォーマットが使用されます。WebサービスのXMLスキーマ・データ型とJavaデータ型とのマッピングは、SOAP開発環境によって異なります。XMLスキーマ・データ型と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
Oracle BI PublisherのWebサービスでは、次の複合型が定義されて使用されます。
<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>
説明: ParamNameValueの配列。
<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>
説明: getReportDefinitionから返されるオブジェクト。
<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>
説明: ItemDataの配列(レポート・リポジトリに格納されているオブジェクト)。
<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>
説明: レポートの実行に必要な設定の集合。attributeFormatの許容値は、使用されるテンプレートのタイプによって異なります(たとえば、PDFテンプレートではPDF出力の生成のみ可能)。
<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>
説明: runReport操作から返されるドキュメント(ReportRequest内でattributeFormatに設定されているファイル形式)、ドキュメントのタイプ、およびドキュメントのロケール。
<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>
説明: レポートを電子メールで配信するために設定するオプション。
<complexType name="FaxDeliveryOption"> <sequence> <element name="faxNumber" nillable="false" type="xsd:string"/> <element name="faxServer" nillable="false" type="xsd:string"/> </sequence> </complexType>
説明: レポートをFAXで配信するために設定するオプション。
<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>
説明: レポートをFTPで配信するために設定するオプション。
<complexType name="LocalDeliveryOption"> <sequence> <element name="destination" nillable="false" type="xsd:string"/> </sequence> </complexType>
説明: レポートをBI Publisherリポジトリに配信するために設定するオプション。
<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>
説明: レポートをプリンタに配信するために設定するオプション。
<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>
説明: レポートをWeb-based Distributed Authoring and Versioning(WebDAV)で配信するために設定するオプション。
<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="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>
説明: レポートをスケジュールするためのオプション。
<complexType name="AccessDeniedException"> <sequence /> </complexType>
説明: 操作を実行するための適切な権限がユーザー資格証明にない場合に返されるメッセージ。
<complexType name="OperationFailedException"> <sequence /> </complexType>
説明: 操作が失敗した場合に返されるメッセージ。
<complexType name="InvalidParametersException"> <sequence /> </complexType>
説明: 無効なパラメータがWebサービスの操作で渡された場合に返されるメッセージ。
Oracle BI PublisherのWebサービスで実行できる操作は、次のカテゴリに分類できます。
権限を検証する操作
レポートとリポジトリに関する情報を取得する操作
レポートの実行とスケジュールを行う操作
この項では、入力メッセージ、出力メッセージおよび発生する場合がある例外メッセージについて説明します。また、各操作に対応するサンプル・コードも記載しています。
次の項に記載されている各操作には、サンプル・コードが記述されています。サンプル・コードは、Apache Axisテクノロジに基づいています。サンプル・コードを操作する前に、前提条件のファイルがCLASSPATHに記述されていることを確認し、必要なBI Publisherスタブ・クラスが生成されてプロジェクトにインポートされていることを確認する必要があります。
必須jarファイルの記述
記述するjarファイルを次に示します。
次のjarファイルをCLASSPATHに記述します(これらのファイルはWebから入手可能)。
activation.jar
mail-1.4.jar
xmlpserver.jarファイル(Oracle BI Publisherでインストールされている)をCLASSPATHに記述します。これによって、すべての必要なリクエスト・オブジェクトとレスポンス・オブジェクトが用意されます。この方法により、リクエストとレスポンスのスタブ・オブジェクトを生成する必要がなくなります。
必要なBI Publisherスタブ・クラスの生成
必要なBI Publisherスタブ・クラスを生成してサンプル用プロジェクトにインポートするには、次を実行します。
BI PublisherのWebサービスWSDLをダウンロードします。
コマンド・ファイルで次を実行します。
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
これによって、次のBI Publisherスタブ・クラスが生成されてプロジェクトにインポートされます。
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;
必要なApache AxisクラスとJavaスタブ・クラスのインポート
生成されたBI Publisher Webサービス用スタブ・クラスをインポートすることに加えて、次のApache AxisクラスとJavaクラスもインポートする必要があります。
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;
validateLoginを使用して、Oracle BI Publisherレポート・サーバーにアクセスする権限がUserIDとPasswordにあることを検証します。
入力メッセージ = validateLoginRequest
<wsdl:message name="validateLoginRequest"> <wsdl:part name="userID" type="xsd:string"/> <wsdl:part name="password" type="xsd:string"/> </wsdl:message>
出力メッセージ = validateLoginResponse
<wsdl:message name="validateLoginResponse"> <wsdl:part name="validateLoginReturn" type="xsd:boolean"/> </wsdl:message>
例27-1 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を使用して、特定のレポートにアクセスする権限がUserIDとPasswordにあることを検証します。
入力メッセージ = 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>
出力メッセージ =hasReportAccessResponse
<wsdl:message name="hasReportAccessResponse"> <wsdl:part name="hasReportAccessReturn" type="xsd:boolean"/> </wsdl:message>
発生する場合がある例外:
InvalidParametersException
発生する場合がある例外の詳細は、第27.3.5項「エラー用メッセージ」を参照してください。
例27-2 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");
}
getFolderContentsは、フォルダ内のすべてのアイテムを取得します。この操作では、指定されたフォルダ内のすべてのレポートとフォルダが返されます。これらのアイテムを使用して、実行するレポートや、さらに検索を行ってレポートを特定するフォルダを決定できます。
入力メッセージ = 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>
出力メッセージ = getFolderContentsResponse
<wsdl:message name="getFolderContentsResponse"> <wsdl:part name="getFolderContentsReturn" type="impl:ArrayOfItemData"/> </wsdl:message>
発生する場合がある例外:
InvalidParametersExceptionAccessDeniedException OperationFailedException
発生する場合がある例外の詳細は、第27.3.5項「エラー用メッセージ」を参照してください。
例27-3 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を使用して、レポートに関する情報(デフォルトのテンプレート、出力タイプ、テンプレートIDのリストなど)を取得します。テンプレートIDのリストを取得すると、デフォルト以外のテンプレートでレポートを生成することができます。
入力メッセージ = 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>
出力メッセージ = getReportDefinitionResponse
<wsdl:message name="getReportDefinitionResponse"> <wsdl:part name="getReportDefinitionReturn" type="impl:ReportDefinition"/> </wsdl:message>
発生する場合がある例外:
InvalidParametersException AccessDeniedException OperationFailedException
発生する場合がある例外の詳細は、第27.3.5項「エラー用メッセージ」を参照してください。
例27-4 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を使用して、レポート・パラメータとそれらのデフォルト値の配列を取得します。パラメータのリストを取得すると、レポートの実行やスケジュールを行う前にパラメータ値を設定できます。
入力メッセージ = 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>
出力メッセージ = getReportParametersResponse
<wsdl:message name="getReportParametersResponse">
<wsdl:part name="getReportParametersReturn"
type="impl:ArrayOfParamNameValue"/>
</wsdl:message>
発生する場合がある例外:
InvalidParametersException AccessDeniedException OperationFailedException
発生する場合がある例外の詳細は、第27.3.5項「エラー用メッセージ」を参照してください。
例27-5 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");
}
runReportを使用してレポートを実行し、生成されたドキュメントを返します。ドキュメントは、指定されたファイル形式で返されます。
入力メッセージ = 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>
出力メッセージ = runReportResponse
<wsdl:message name="runReportResponse"> <wsdl:part name="runReportReturn" type="impl:ReportResponse"/> </wsdl:message>
発生する場合がある例外:
InvalidParametersException AccessDeniedException OperationFailedException
発生する場合がある例外の詳細は、第27.3.5項「エラー用メッセージ」を参照してください。
例27-6 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を使用して、レポートの実行と配信(プリンタ、FAX、電子メール、WebDAVまたはFTPへの配信)を行うためにスケジュールするか、単純にレポート・リポジトリに保存します。ジョブは、即座に実行するようにスケジュールしたり、一度か反復して実行するようにスケジュールできます。また、反復実行を停止する終了日を指定できます。レポート・ジョブのスケジュールが正常に実行されると、この操作によってJobIDが返されます。
入力メッセージ = 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>
出力メッセージ = scheduleReportResponse
<wsdl:message name="scheduleReportResponse"> <wsdl:part name="scheduleReportReturn" type="xsd:string"/> </wsdl:message>
発生する場合がある例外:
InvalidParametersException AccessDeniedException OperationFailedException
発生する場合がある例外の詳細は、第27.3.5項「エラー用メッセージ」を参照してください。
例27-7 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");
}
次のいずれかのメッセージが、操作の実行においてエラーが発生した場合に操作に対して返されることがあります。
<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="InvalidParametersException"> <wsdl:part name="fault" type="impl:InvalidParametersException"/> </wsdl:message>
Webサービス開発者として、SOAPリクエスト・メッセージを表示する必要が発生する場合があります。SOAPリクエスト・メッセージは、これらのリクエスト・メッセージに対するSOAPレスポンスとともにWebサービスを起動するために使用されます。Oracle BI PublisherにはApache Axis SOAP Monitorユーティリティがバンドルされており、サーバーを特別に構成したり再起動しなくても、これによってSOAPメッセージ・フローの監視が実現されます。
クライアントのサンプル・コードでSOAPリクエストがリスニング・ポート8888に対して送信されると、Axis TCPMonitorを使用することにより、SOAPリクエストがポート8080にルーティングされます。このポートではPublicReportServiceが実行しています。これは、Webサービス開発者にとって便利なデバッグ・ツールです。
Axis TCPMonitor(tcpmon)を起動するには、コマンドラインから次を入力します。
% java org.apache.axis.utils.tcpmon
これによって、「TCPMonitor」ウィンドウが起動します。オプションの引数なしで起動されたウィンドウの例を図27-1に示します。
このプログラムを使用するには、tcpmonで着信接続要求を監視するローカル・ポート、接続要求の転送先となるターゲット・ホスト、および接続要求の転送先(トンネリング先)となるターゲット・マシンのポート番号を選択します。「Add」をクリックすると、トンネリングされた新しい接続を示す別のタブが表示されます。このタブには、SOAPリクエスト・メッセージとレスポンス・メッセージが表示されます。これによってデバッグが容易になります。
図27-2に「TCPMonitor」ウィンドウの接続タブを示します。
TCPMonitorを実行するには、次を入力します。
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%
次は、BI Publisher PublicReportServiceのフルWebサービスWSDLです。これは、このWSDLを表示できないJ2EEサーバーにBI Publisherがデプロイされているインスタンスのために用意されています。
<?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>