Understanding Providing WSDL Documents

This section provides an overview of provided WSDL documents provided by the Provide Web Service wizard.

Provided WSDL documents include support WS-interoperability standards for WSDL and include:

  • WS-Addressing header elements for asynchronous request/response operation types.

  • WS-Security elements UsernameToken and SAMLToken.

In addition, provided WSDL documents feature PartnerLinkType elements.

Integration Broker can provide WSDL documents in WSDL 1.1 or WSDL 2.0 format. By default, the Provide Web Service wizard used to provide WSDL documents generates WSDL in 1.1 format and features and option to generate WSDL documents in WSDL 2.0 format.

See Step 1: Select Services for providing Non-REST web services, Step 1: Select Services for providing REST web services, and Step 1: Select Services for providing OpenAPI REST web services.

The following graphic illustrates the differences between WSDL 1.1 and WSDL 2.0 documents at the abstract and concrete layers:

This diagram illustrates the differences between the abstract and concrete layers of the WSDL 1.1 and WSDL 2.0 specifications.

Abstract and concrete layers of WSDL 1.1 and WSDL 2.0 documents

Additional information about the elements in WSDL 1.1 documents and WSDL 2.0 documents is provided elsewhere in this topic.

See Provided WSDL Documents.

The Provide Web Service wizard can create WSDL documents for service operations having the following operation types:

  • Synchronous.

  • Asynchronous one-way.

  • Asynchronous request/response.

This section discusses requirements and considerations for creating nonrowset-based message schemas for service operations in order to generate WSDL documents using the Provide Web Service wizard.

Note: The PeopleSoft system automatically generates message schemas for rowset-based messages.

Target Namespace

Nonrowset-based message schemas must contain a target namespace. If no target namespace exists in the schema an error occurs when the system generates the WSDL document.

You may define multiple schema imports to the same target namespace, but different schema locations must be defined.

Multiple Root Element and Complex Type Tags

If the PeopleSoft system finds multiple root <element> or <complexType> tags in nonrowset-based message schemas, only the first one is referenced in the WSDL document or container message schema.

In addition, the WSDL would allow schema imports to the same target namespace but different schema locations and use <xsd:include> when the schema Namespace is same as the WSDL namespace.

Using the Provide Web Service wizard, you can publish WSDL documents to the follow locations:

  • PeopleSoft WSDL repository. (Application database.)

    The PeopleSoft WSDL repository is the default publishing location. All generated WSDL documents are published to the PeopleSoft WSDL repository. You may publish WSDL documents to a UDDI repository in addition to the WSDL repository.

  • Universal Description, Discovery, and Integration (UDDI) repositories.

    Services published to UDDI repositories are available to other PeopleSoft and external systems. If another PeopleSoft system wants to invoke an exported service from UDDI, it can consume the WSDL document from the UDDI reference into its system to create a service and routing definition.

When publishing a WSDL document to a UDDI repository, the PeopleSoft system publishes the current endpoint value defined in the Target Location field in the Service Configuration page.

The endpoint value in the actual WSDL document is a dynamic one, since you can change the target location value, for example, when you move from development to production.

If you change the target location you should change the endpoints of previously published WSDL documents, either manually in the UDDI registry or by republishing the WSDL documents to your UDDI repository using the changed endpoint.

After you a publish a WSDL document using the Provide Web Service wizard, the system displays a WSDL URL. The URL provided is the path to the WSDL document location in the WSDL repository in the PeopleSoft Pure Internet Architecture. The URL is used by external systems that will be invoking a PeopleSoft service.

The default URL format is path style. The following example shows a WSDL URL in path format:

http://localhost/PSIGW.war/PeopleSoftServiceListeningConnector/PT_WORKLIST.1.wsdl

The path style URL is generated by appending the WSDL document name to the target location value specified in the Service Configuration page.

PeopleSoft Integration Broker also supports a query parameter format. The following example shows a WSDL URL in query parameter format:

http://PeopleSoftServiceListeningConnector?Operation=GetWSDL&wsdl=PT_WORKLIST.1

The query parameter style URL is generated by passing either the WSDL document name or service name.version or service alias.version as a query parameter.

PeopleSoft still supports the query parameter format, however path format is preferred. Note that if using query parameter format, manual intervention may be required if the schema target location is changed.

Every WSDL document you generate using PeopleSoft Integration Broker is divided into sections. This section describes the WSDL document sections and provides an example of the WSDL template that the PeopleSoft system uses to generate WSDL, as well as example WSDL documents for each of the supported operation types.

Sections of Provided WSDL Documents

WSDL documents that you provide using PeopleSoft Integration Broker contain the following sections:

Section

WSDL 1.1 Description

WSDL 2.0 Description

<definitions>

Specifies the namespaces for the WSDL document, W3C XML Schema and SOAP. A unique namespace will be captured from the Service definition, which will be used to define the WSDL namespaces. The format of this namespace is as follows: http://xmlns.oracle.com/Enterprise/<App Name>/<Service Name>.

When a service is defined within an application database, the namespace field is defaulted to the service namespace defined on the Service Configuration page.

NA.

The <description> element serves the same purpose in WSDL 2.0 documents.

See <description>.

<description>

NA.

The <definitions> element serves the same purpose in WSDL 1.1 documents.

See <definitions>.

Specifies the namespaces for the WSDL document, W3C XML Schema and SOAP. A unique namespace will be captured from the Service definition, which will be used to define the WSDL namespaces. The format of this namespace is as follows: http://xmlns.oracle.com/Enterprise/<App Name>/<Service Name>.

When a service is defined within an application database, the namespace field is defaulted to the service namespace defined on the Service Configuration page.

<partnerLinktype>

A partnerLinkType defines the role of services and the port Type.

No change from WSDL 1.1.

See WSDL 1.1 description.

<types>

Captures the simple and complex types required by the schema of the request and response message definitions of the service operations. For services with component interface handlers, some of the system methods, such as Create and Get, will require complex message types resembling the structure of the component interface buffer.

No change from WSDL 1.1.

See WSDL 1.1 description.

<message>

Defines the abstract messages required for the selected operations. The data types for these are obtained from the Types section of the WSDL document.

There are no <message> elements in WSDL2.0. Instead, the operations within the interface refer to the schema elements directly.

<portType>

Features a named set of abstract operations and the abstract messages involved. This section includes all operations of the service selected for export.

NA.

See <interface>

<interface>

NA

See <portType>

WSDL 2.0 features an <interface> element that replaces the <portType> element in WSDL 1.1.

Unlike the <portType> element in WSDL 1.1, the operations within the <interface> element do not point to messages, but instead point to the schema elements contained within the <types> element.

<binding>

Specifies the network protocol and data format of messages used for a specific port type. For providing web services PeopleSoft utilizes SOAP packaging and HTTP transport protocols. The data format of messages is the Document style format.

No change from WSDL 1.1.

See WSDL 1.1 description.

<operation>

This is an abstract definition of a service operation, which specifies request/response/fault messages.

No change from WSDL 1.1.

See WSDL 1.1 description.

<service>

A service groups together endpoints that implement a common interface.

No change from WSDL 1.1.

See WSDL 1.1 description.

<port>

In WSDL 1.1 the <port> element contains the definition of the address to which the client should request the service. The <port> element also has reference to binding used by the service

NA.

See <endpoint>.

<endpoint>

NA.

See <port>.

In WSDL 2.0 the <port> element is replaced by the <endpoint> element. The location attribute of endpoint contains the definition of the address to which the client should request the service. The <endpoint> element also has reference to binding used by the service

Note: In WSDL documents generated by the PeopleSoft system, WS-Security policies are assigned to the bind operation section.

Example 1: WSDL Template

The following example is the WSDL document template that the PeopleSoft system uses when it generates WSDL documents. The elements in bold are WSDL document sections discussed in the previous section:


               definitions name="DefinitionsName"
  targetNamespace="NamespaceURI"
  xmlns:prefix="NamespaceURI"
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns="http://schemas.xmlsoap.org/wsdl/">
  <plnk:partnerLinkType name="PartnerLinkTypeName">
    <!-- Provider Role -->
       <plnk:role name="ProviderRoleName"> 
	      <plnk:portType name="ProviderPortTypeReference">
        </plnk:role>
  <!-- In case of Async Request/Response this role is also required -->
  <plnk:role name="RequestorRoleName"> 
	   <plnk:portType name="CallbackPortTypeReference">
     </plnk:role>
    </plnk:partnerLinkType>
<types>
    <!-- One or more schemas -->
  </types>
  <message name="MessageName">
    <part name="PartName" type="TypeNameReference"/>
  </message>
  <portType name="PortName">
    <operation name="OperationName">
      <input message="MessageNameReference"/>
      <output message="MessageNameReference"/>
      <fault message="MessageNameReference"/>
    </operation>
  </portType>
  <binding name="BindingName" type="PortNameReference">
    <soap:binding style="rpc|document"
      transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="OperationName">
      <soap:operation soapAction="ActionValue"/>
      <input>
        <soap:body
          encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
          namespace="TargetNamespace"
          use="encoded"/>
     </input>
     <output>
      <soap:body
        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
        namespace="TargetNamespace"
        use="encoded"/>
     </output>
    </operation>
  </binding>
  <service name="ServiceName">
    <port name="PortName" binding="BindingNameReference">
      <soap:address location="URL"/>
   </port>
  </service>
</definitions>

Example 2: Synchronous WSDL Example

The following example shows a synchronous WSDL document provided by the PeopleSoft system:

<?xml version="1.0" ?> 
<wsdl:definitions name="PT_WORKLIST.1" 
  targetNamespace="http://xml.namespace.oracle.com/services" 
  xmlns:GetWorklistEntryStatusRequest.v1="http://xmlns.oracle.com/
   Enterprise/Tools/schemas/PT_WL_GET_INSTANCE_REQ_CONT.v1" 
  xmlns:GetWorklistEntryStatusResponse.v1="http://xmlns.oracle.com/
   Enterprise/Tools/schemas/PT_WL_GET_INSTANCE_RESP_CONT.v1" 
  xmlns:OperationFault.V1="http://xmlns.oracle.com/schemas/Fault" 
  xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" 
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http:
   //xml.namespace.oracle.com/services" 
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
  xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy">
  <wsp:UsagePolicy wsdl:Required="true" /> 
  <plnk:partnerLinkType name="PT_WORKLIST_PartnerLinkType">
    <plnk:role name="PT_WORKLIST_Provider">
      <plnk:portType name="tns:PT_WORKLIST_PortType" /> 
    </plnk:role>
  </plnk:partnerLinkType>
  <wsdl:types>
    <xsd:schema elementFormDefault="qualified" 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <xsd:import namespace="http://xmlns.oracle.com/Enterprise/Tools/
       schemas/PT_WL_GET_INSTANCE_REQ_CONT.v1" schemaLocation="Get
        WorklistEntryStatusRequest.v1.xsd" /> 
      <xsd:import namespace="http://xmlns.oracle.com/Enterprise/Tools/
        schemas/PT_WL_GET_INSTANCE_RESP_CONT.v1" schemaLocation="
         GetWorklistEntryStatusResponse.v1.xsd" /> 
      <xsd:import namespace="http://xmlns.oracle.com/schemas/Fault" 
       schemaLocation="OperationFault.V1.xsd" /> 
     </xsd:schema>
    </wsdl:types>
  <wsdl:message name="GetWorklistEntryStatusRequest.v1">
    <wsdl:part element="GetWorklistEntryStatusRequest.v1:GetWorklist
     EntryStatusRequest" name="parameter" /> 
  </wsdl:message>
  <wsdl:message name="GetWorklistEntryStatusResponse.v1">
    <wsdl:part element="GetWorklistEntryStatusResponse.v1:GetWorklist
     EntryStatusResponse" name="parameter" /> 
  </wsdl:message>
  <wsdl:message name="OperationFault.V1">
    <wsdl:part element="OperationFault.V1:OperationFault" name="parameter" /> 
  </wsdl:message>
  <wsdl:portType name="PT_WORKLIST_PortType">
  <wsdl:operation name="GetWorklistEntryStatus">
    <wsdl:documentation>Get worklist keys and status</wsdl:documentation> 
    <wsdl:input message="tns:GetWorklistEntryStatusRequest.v1" name=
     "GetWorklistEntryStatusRequest.v1" /> 
    <wsdl:output message="tns:GetWorklistEntryStatusResponse.v1" name=
     "GetWorklistEntryStatusResponse.v1" /> 
    <wsdl:fault message="tns:OperationFault.V1" name="OperationFault.V1" /> 
   </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="PT_WORKLIST_Binding" type="tns:PT_WORKLIST_PortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/
      soap/http" /> 
    <wsdl:operation name="GetWorklistEntryStatus">
      <soap:operation soapAction="GetWorklistEntryStatus.V1" style=
       "document" /> 
      <wsp:Policy wsu:Id="UsernameTokenSecurityPolicyPasswordOptional" 
        xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-
        wss-wssecurity-utility-1.0.xsd">
        <wsp:ExactlyOne>
          <wsp:All>
            <wsse:SecurityToken wsp:Usage="wsp:Required" xmlns:wsse="
             http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
             wssecurity-secext-1.0.xsd">
             <wsse:TokenType>wsse:UserNameToken</wsse:TokenType> 
             <Claims>
               <SubjectName MatchType="wsse:Exact" /> 
               <UsePassword wsp:Usage="wsp:Optional" /> 
             </Claims>
            </wsse:SecurityToken>
          </wsp:All>
        </wsp:ExactlyOne>
      </wsp:Policy>
     <wsdl:input name="GetWorklistEntryStatusRequest.v1">
       <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
        use="literal" /> 
     </wsdl:input>
     <wsdl:output name="GetWorklistEntryStatusResponse.v1">
       <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
        use="literal" /> 
     </wsdl:output>
     <wsdl:fault name="OperationFault.V1">
       <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/
         encoding/" name="OperationFault.V1" use="literal" /> 
     </wsdl:fault>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="WorklistServices">
    <wsdl:documentation>Peopletools Worklist</wsdl:documentation> 
    <wsdl:port binding="tns:PT_WORKLIST_Binding" name="PT_WORKLIST_Port">
      <soap:address location="http://sbandyop-pc/PSIGW.war/PeopleSoftService
       ListeningConnector" /> 
      </wsdl:port>
    </wsdl:service>
  </wsdl:definitions>

Example 3: Asynchronous Request/Response WSDL Document

The following example shows an asynchronous request/response WSDL document provided by the PeopleSoft system:

<?xml version="1.0"?>
<wsdl:definitions name="PT_WORKLIST.1" 
targetNamespace="http://xml.namespace.oracle.com/services" 
xmlns:CreateWorklistEntryRequest.v1="http://xmlns.oracle.com/Enterprise/
  Tools/schemas/PT_WL_CREATE_REQUEST_CONT.v1" 
xmlns:CreateWorklistEntryResponse.v1="http://xmlns.oracle.com/Enterprise/
  Tools/schemas/PT_WL_CREATE_RESPONSE_CONT.v1" 
xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://xml.
  namespace.oracle.com/services" xmlns:wsa="http://schemas.xmlsoap.org/ws/
  2003/03/addressing" 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy">
  <wsp:UsagePolicy wsdl:Required="true"/>
  <plnk:partnerLinkType name="PT_WORKLIST_PartnerLinkType">
    <plnk:role name="PT_WORKLIST_Provider">
      <plnk:portType name="tns:PT_WORKLIST_PortType"/>
    </plnk:role>
    <plnk:role name="PT_WORKLIST_Requester">
      <plnk:portType name="tns:PT_WORKLIST_CallbackPortType"/>
    </plnk:role>
  </plnk:partnerLinkType>
  <wsdl:types>
    <xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/
      2001/XMLSchema">
      <xsd:import namespace="http://xmlns.oracle.com/Enterprise/Tools/
        schemas/PT_WL_CREATE_REQUEST_CONT.v1" schemaLocation="CreateWorklist
        EntryRequest.v1.xsd"/>
      <xsd:import namespace="http://xmlns.oracle.com/Enterprise/Tools/
        schemas/PT_WL_CREATE_RESPONSE_CONT.v1" schemaLocation="CreateWorklist
         EntryResponse.v1.xsd"/>
      <xsd:import namespace="http://schemas.xmlsoap.org/ws/2003/03/
        addressing" schemaLocation="http://schemas.xmlsoap.org/ws/2003/
        03/addressing/"/>
    </xsd:schema>
  </wsdl:types>
  <wsdl:message name="CreateWorklistEntryRequest.v1">
    <wsdl:documentation>Create worklist item Request</wsdl:documentation>
    <wsdl:part element="CreateWorklistEntryRequest.v1:CreateWorklist
      EntryRequest" name="parameter"/>
  </wsdl:message>
  <wsdl:message name="CreateWorklistEntryResponse.v1">
    <wsdl:part element="CreateWorklistEntryResponse.v1:CreateWorklist
      EntryResponse" name="parameter"/>
  </wsdl:message>
  <wsdl:message name="InitiateHeader">
    <wsdl:documentation>SOAP Header message for correlating Asynchronous 
       callback</wsdl:documentation>
    <wsdl:part element="wsa:MessageID" name="MessageID"/>
    <wsdl:part element="wsa:ReplyTo" name="ReplyTo"/>
  </wsdl:message>
  <wsdl:message name="CallbackHeader">
    <wsdl:documentation>SOAP Header message for callback Asynchronous 
       operation
    </wsdl:documentation>
    <wsdl:part element="wsa:RelatesTo" name="RelatesTo"/>
  </wsdl:message>
  <wsdl:portType name="PT_WORKLIST_PortType">
    <wsdl:operation name="CreateWorklistEntry">
      <wsdl:documentation>Create worklist Entry. This is the Request Operation 
        in a Asynchronous Request/Response pair. Callback Operation : 
          CreateWorklistEntry_CALLBACK</wsdl:documentation>
      <wsdl:input message="tns:CreateWorklistEntryRequest.v1" name="
         CreateWorklistEntryRequest.v1"/>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:portType name="PT_WORKLIST_CallbackPortType">
    <wsdl:operation name="CreateWorklistEntry_CALLBACK">
      <wsdl:documentation>Create worklist Entry - Callback. This is the 
         Callback Operation in a Asynchronous Request/Response pair.
      </wsdl:documentation>
      <wsdl:input message="tns:CreateWorklistEntryResponse.v1" name=
        "CreateWorklistEntryResponse.v1"/>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="PT_WORKLIST_Binding" type="tns:PT_WORKLIST_PortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.
      org/soap/http"/>
    <wsdl:operation name="CreateWorklistEntry">
      <soap:operation soapAction="CreateWorklistEntry.V1" style="document"/>
      <wsp:Policy wsu:Id="UsernameTokenSecurityPolicyPasswordOptional" 
        xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
         wssecurity-utility-1.0.xsd">
        <wsp:ExactlyOne>
          <wsp:All>
            <wsse:SecurityToken wsp:Usage="wsp:Required" xmlns:wsse=
              "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
                wssecurity-secext-1.0.xsd">
              <wsse:TokenType>wsse:UserNameToken</wsse:TokenType>
              <Claims>
                <SubjectName MatchType="wsse:Exact"/>
                <UsePassword wsp:Usage="wsp:Optional"/>
              </Claims>
            </wsse:SecurityToken>
          </wsp:All>
        </wsp:ExactlyOne>
      </wsp:Policy>
      <wsdl:input name="CreateWorklistEntryRequest.v1">
        <soap:header encodingStyle="" message="tns:InitiateHeader" part=
          "MessageID" use="literal" wsdl:required="false"/>
        <soap:header encodingStyle="" message="tns:InitiateHeader" part=
          "ReplyTo" use="literal" wsdl:required="false"/>
        <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
          use="literal"/>
      </wsdl:input>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:binding name="PT_WORKLIST_CallbackBinding" type="tns:
     PT_WORKLIST_CallbackPortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.
      org/soap/http"/>
    <wsdl:operation name="CreateWorklistEntry_CALLBACK">
      <soap:operation soapAction="CreateWorklistEntry_CALLBACK.V1" style=
        "document"/>
      <wsp:Policy wsu:Id="UsernameTokenSecurityPolicyPasswordOptional" 
         xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
           wssecurity-utility-1.0.xsd">
        <wsp:ExactlyOne>
          <wsp:All>
            <wsse:SecurityToken wsp:Usage="wsp:Required" xmlns:wsse=
               "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
                  wssecurity-secext-1.0.xsd">
              <wsse:TokenType>wsse:UserNameToken</wsse:TokenType>
              <Claims>
                <SubjectName MatchType="wsse:Exact"/>
                <UsePassword wsp:Usage="wsp:Optional"/>
              </Claims>
            </wsse:SecurityToken>
          </wsp:All>
        </wsp:ExactlyOne>
      </wsp:Policy>
      <wsdl:input name="CreateWorklistEntryResponse.v1">
        <soap:header encodingStyle="" message="tns:CallbackHeader" 
           part="RelatesTo" use="literal" wsdl:required="true"/>
        <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
           use="literal"/>
      </wsdl:input>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="WorklistServices">
    <wsdl:documentation>Peopletools Worklist</wsdl:documentation>
    <wsdl:port binding="tns:PT_WORKLIST_Binding" name="PT_WORKLIST_Port">
      <soap:address location="http://ORACLE_ENDPOINT"/>
    </wsdl:port>
  </wsdl:service>
  <wsdl:service name="WorklistServices_Callback">
    <wsdl:documentation>Peopletools Worklist - Callback</wsdl:documentation>
    <wsdl:port binding="tns:PT_WORKLIST_CallbackBinding" name=
       "PT_WORKLIST_Callback_Port">
      <soap:address location="http://Client.EndPoint.Set.By.Caller"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

Example 4: Asynchronous One-Way WSDL Document

The following example shows an asynchronous one-way WSDL document provided by the PeopleSoft system:

<?xml version="1.0" ?> 
<wsdl:definitions name="QEPC_FLO_MSG.1" targetNamespace="http://xmlns.
oracle.com/Enterprise/Tools/services/QEPC_FLO_MSG.1" 
   xmlns QEPC_FLO_MSG.VERSION_1="http://xmlns.oracle.com/Enterprise/
     Tools/schemas/QEPC_FLO_MSG.VERSION_1" xmlns:plnk="http://schemas.
   xmlsoap.org/ws/2003/05/partner-link/" 
   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http:
     //xmlns.oracle.com/Enterprise/Tools/services/QEPC_FLO_MSG.1" 
   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
   xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy">
   <wsp:UsagePolicy wsdl:Required="true" /> 
   <plnk:partnerLinkType name="QEPC_FLO_MSG_PartnerLinkType">
     <plnk:role name="QEPC_FLO_MSG_Provider">
       <plnk:portType name="tns:QEPC_FLO_MSG_PortType" /> 
     </plnk:role>
   </plnk:partnerLinkType>
   <wsdl:types>
     <xsd:schema elementFormDefault="qualified" 
       targetNamespace="http://xmlns.oracle.com/Enterprise/Tools/schemas/
         QEPC_FLO_MSG.VERSION_1" 
       xmlns="http://xmlns.oracle.com/Enterprise/Tools/schemas/
         QEPC_FLO_MSG.VERSION_1" 
       xmlns:xsd="http://www.w3.org/2001/XMLSchema">
       <xsd:element name="QEPC_FLO_MSG" type="xsd:string" /> 
     </xsd:schema>
   </wsdl:types>
   <wsdl:message name="QEPC_FLO_MSG.VERSION_1">
     <wsdl:part element="QEPC_FLO_MSG.VERSION_1:QEPC_FLO_MSG" name=
       "parameter" /> 
   </wsdl:message>
   <wsdl:portType name="QEPC_FLO_MSG_PortType">
   <wsdl:operation name="QEPC_FLO_MSG">
     <wsdl:documentation>Test</wsdl:documentation> 
     <wsdl:input message="tns:QEPC_FLO_MSG.VERSION_1" name="QEPC_FLO_
      MSG.VERSION_1" /> 
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="QEPC_FLO_MSG_Binding" type="tns:QEPC_FLO_MSG_
    PortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.
      org/soap/http" /> 
    <wsdl:operation name="QEPC_FLO_MSG">
      <soap:operation soapAction="QEPC_FLO_MSG.v1" style="document" /> 
        <wsp:Policy wsu:Id="UsernameTokenSecurityPolicyPasswordOptional" 
          xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-
          wss-wssecurity-utility-1.0.xsd">
            <wsp:ExactlyOne>
              <wsp:All>
                <wsse:SecurityToken wsp:Usage="wsp:Required" xmlns:wsse="
                 http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-
                 wssecurity-secext-1.0.xsd">
                   <wsse:TokenType>wsse:UserNameToken</wsse:TokenType> 
                   <Claims>
                     <SubjectName MatchType="wsse:Exact" /> 
                     <UsePassword wsp:Usage="wsp:Optional" /> 
                   </Claims>
                   </wsse:SecurityToken>
              </wsp:All>
            </wsp:ExactlyOne>
        </wsp:Policy>
        <wsdl:input name="QEPC_FLO_MSG.VERSION_1">
          <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/
           encoding/" use="literal" /> 
        </wsdl:input>
      </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="QEPC_FLO_MSG">
      <wsdl:documentation>File Utilities Test</wsdl:documentation> 
      <wsdl:port binding="tns:QEPC_FLO_MSG_Binding" name="QEPC_FLO_MSG_Port">
        <soap:address location="http://sbandyop-pc/PSIGW.war/PeopleSoft
         ServiceListeningConnector" /> 
      </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

A service may play a single or dual role in a partnership with a business process.

In a one-way partnership the service may play a single role of provider, whereas in a two-way partnership the service may play the roles of a provider as well as a requester (for callbacks).

A service may participate in different types of partnerships with a process or another service. In each of these partnerships, the service may play a single or dual role. This type of partnership is termed as a PartnerLinkType.

PartnerLinkType Structure

To ease the task of process developers consuming PeopleSoft services, a basic PartnerLinkType structure is provided in the PeopleSoft-provided WSDL. Process developers may or may not choose to use this PartnerLinkType structure.

The following table describes details of the PartnerLinkType structure for each service operation type:

Operation Type

PartnerLinkType Description

Synchronous

The PartnerLinkType has a single Provider role.

Asynchronous one-way

The PartnerLinkType has a single Provider role.

Asynchronous Request/Response

The PartnerLinkType has two roles for the Provider portType and the Requester Callback portType.

The following sections feature examples of the PartnerLinkType structures the PeopleSoft system generates for each service operation type.

Example 1: Synchronous PartnerLinkType Structure

The following example shows the PartnerLinkType structure that the PeopleSoft system generates for an inbound synchronous service operation:

<portType name="HelloWorldSync">
        <operation name="process">	
            <input message="client:HelloWorldSyncRequestMessage"/>
            <output message="client:HelloWorldSyncResponseMessage"/>
        </operation>
    </portType>

    <plnk:partnerLinkType name="HelloWorldSyncPLType">
        <plnk:role name="HelloWorldSyncProvider">
              <plnk:portType name="wsdl_target:HelloWorldSync"/>
        </plnk:role>
      </plnk:partnerLinkType>   

Example 2: Asynchronous One-Way PartnerLinkType Structure

The following example shows the PartnerLinkType structure that the PeopleSoft system generates for an inbound asynchronous one-way service operation.

<portType name="UpdateOrderAsync">
        <operation name="UpdateOrder">
            <input message="client:OrderRequestMessage"/>
        </operation>
    </portType>

    <plnk:partnerLinkType name="UpdateOrderAsyncPLType">
        <plnk:role name="UpdateOrderAsyncProvider">
              <plnk:portType name="wsdl_target:UpdateOrderAsync"/>
        </plnk:role>
      </plnk:partnerLinkType>   

Example 3: Asynchronous Request/Response PartnerLinkType Structure

The following example shows the PartnerLinkType structure that the PeopleSoft system generates for an inbound asynchronous request/response service operation:

<!--
  PortType definition
  -->

    <!-- portType implemented by the QuoteConsumer PeopleSoft service -->
    <portType name="QuoteConsumer">
        <operation name="GetQuote">
            <input message="tns:QuoteConsumerRequestMessage"/>
        </operation>
    </portType>

    <!-- portType implemented by the requester of QuoteConsumer PeopleSoft service
         for asynchronous callback purposes
         -->
    <portType name="QuoteConsumerCallback">
        <operation name="GetQuoteCallback">
            <input message="tns:QuoteConsumerResultMessage"/>
        </operation>
    </portType> <!--
  PartnerLinkType definition
  -->

    <!-- the QuoteConsumer partnerLinkType binds the service and
         requestor portType into an asynchronous conversation.
         -->
    <plnk:partnerLinkType name="QuoteConsumerPLType">
        <plnk:role name="QuoteConsumerProvider">
              <plnk:portType name="wsdl_target:QuoteConsumer"/>
        </plnk:role>
        <plnk:role name="QuoteConsumerRequester">
              <plnk:portType name="wsdl_target:QuoteConsumerCallback"/>
        </plnk:role>
      </plnk:partnerLinkType>   
</definitions>