WSDL (V) – wsdl:portType

Esta entrada es la quinta dedicada al interesante mundo del WSDL. En esta entrada encontrarás en detalle el elemento wsdl:portType, que contiene la definición de las operaciones que se incluyen en el servicio web.

Descripción

Wsdl:portType forma parte del objeto wsdl:definitions.

El elemento wsdl:portType define un grupo de operaciones que forman parte del servicio web. Este elemento también es conocido como interface, de hecho en la nueva especificación WSDL 1.2 (que en el momento de escribir este artículo se encuentra en estado «draft«) se sustituye el termino «portType» por el de «interface«. 

Gramática

La gramática del elemento wsdl:types es la siguiente (? –> es opcional, * –> pueden ser de 0 a N elementos):

 <wsdl:portType name="nmtoken">
<wsdl:operation name="nmtoken" .... /> *
</wsdl:portType>

Atributos

El principal atributo del elemento wsdl:portType es name. Este nombre servirá para identificar este portType en el apartado wsdl:binding, de forma que cada portType pueda tener sus propias características de envío. 

SubElementos

El elemento wsdl:operation contiene la información de las diferentes operaciones que se incluyen en el portType. Este elemento wsdl:operation puede estar formado por los siguientes elementos:

  • wsdl:input para definir el mensaje de entrada 
  • wsdl:output para definir el mensaje de salida
  • wsdl:fault para definir el mensaje en caso de error. 

 El orden en el que se presentan estos elementos define el patrón de intercambio de mensajes utilizado. 

  • Patrón One-way. El endpoint recibe un mensaje. Se define solamente un elemento de entrada.
  • Patrón Request-response. El endpoint recibe un mensaje y envía la correspondiente respuesta. Se define un elemento de entrada seguido de uno de salida. 
  • Patrón Solicit-Response. El endpoint envía un mensaje y recibe la respuesta correspondiente. Se define un elemento de salida y seguido uno de entrada. 
  • Patrón Notification. El endpoint envia un mensaje. Se define un elemento de salida. 

 

Ejemplo

Este ejemplo muestra el portType AsistenteProducto

<wsdl:portType name="AsistenteProducto">
<wsdl:operation nameconsultaInteraccionesTratamientoCompleto«>
<wsdl:input messagetns:consultaInteraccionesTratamientoCompleto« nameconsultaInteraccionesTratamientoCompleto«></wsdl:input>
<wsdl:output messagetns:consultaInteraccionesTratamientoCompletoResponse« nameconsultaInteraccionesTratamientoCompletoResponse«></wsdl:output>
</wsdl:operation>

<wsdl:operation nameconsultaDuplicidadesTratamientoNuevo«>
<wsdl:input messagetns:consultaDuplicidadesTratamientoNuevo« nameconsultaDuplicidadesTratamientoNuevo«></wsdl:input>
<wsdl:output messagetns:consultaDuplicidadesTratamientoNuevoResponse« nameconsultaDuplicidadesTratamientoNuevoResponse«></wsdl:output>
</wsdl:operation>

<wsdl:operation nameconsultaInteraccionesTratamientoNuevo«>
<wsdl:input messagetns:consultaInteraccionesTratamientoNuevo« nameconsultaInteraccionesTratamientoNuevo«></wsdl:input>
<wsdl:output messagetns:consultaInteraccionesTratamientoNuevoResponse« nameconsultaInteraccionesTratamientoNuevoResponse«></wsdl:output>
</wsdl:operation>

<wsdl:operation nameconsultaDuplicidadesTratamientoCompleto«>
<wsdl:input messagetns:consultaDuplicidadesTratamientoCompleto« nameconsultaDuplicidadesTratamientoCompleto«></wsdl:input>
<wsdl:output messagetns:consultaDuplicidadesTratamientoCompletoResponse« nameconsultaDuplicidadesTratamientoCompletoResponse«></wsdl:output>
</wsdl:operation>
</wsdl:portType>

Como podemos observar  el portType está formado por 4 operaciones, cada una con su entrada y salida propias:

  • consultaInteraccionesTratamientoCompleto
  • consultaDuplicidadesTratamientoNuevo
  • consultaInteraccionesTratamientoNuevo
  • consultaDuplicidadesTratamientoCompleto 
Todas las operaciones definidas siguen el patrón Request – Response, de forma que para que cualquier operación de este servicio web devuelva información debe recibir primero una petición informada.
 
Si generamos un cliente con este portType obtendremos una estructura similar a la que se muestra en la siguiente imagen:
 
Operaciones incluidas en un portType y en un binding

Conclusión

El apartado wsdl:portType indica las operaciones que se van a incluir de forma pública en el servicio web.

Deja un comentario