APLICACIONES COMPUESTAS: DISEÑO Y GESTIÓN


Sintaxis del archivo WSDL
Para poder utilizar los tipos, las propiedades y las acciones definidos en los archivos WSDL de una aplicación compuesta, debe guardar una copia del archivo WSDL dentro de la aplicación compuesta basada en NSF.

Se suele utilizar el lenguaje WSDL (del inglés Web Services Description Language, lenguaje de descripción de servicios Web) en el contexto de los servicios Web con objeto de definir las interfaces implementadas por un servicio Web. Normalmente se utiliza un enlace SOAP para especificar la realización concreta de la interfaz mediante un servicio Web que dé soporte al protocolo SOAP. La sintaxis WSDL que se utiliza en los archivos creados por el Editor del intermediario de propiedades de Domino Designer es similar a la soportada en WebSphere Portal.

Nota Si desea información más completa sobre el uso de los archivos WSDL en WebSphere Portal, consulte la documentación de WebSphere Portal.

Para guardar una copia del archivo WSDL dentro de la aplicación compuesta basada en NSF, abra la aplicación en IBM® Lotus® Domino(TM) Designer y desplácese a Aplicaciones compuestas > Propiedades de conexiones en el panel de diseño. Utilice el botón Importar WSDL para seleccionar el archivo WSDL en el disco y crear un elemento de diseño "Propiedades de conexiones". Este elemento de diseño puede almacenarse en las plantillas y heredarse de ellas, o bien puede protegerse para evitar que se actualice cuando cambie la plantilla, al igual que ocurre con cualquier otro tipo de elemento de diseño de Notes.

También puede crear sus propios archivos WSDL "desde cero" mediante el uso del Editor del intermediario de propiedades. Si desea más información, consulte "Uso del Editor del intermediario de propiedades en Domino Designer".

Las secciones siguientes de este tema proporcionan más información sobre la sintaxis de los archivos WSDL utilizados en Domino Designer y WebSphere Portal. En concreto, este ejemplo muestra el modo en que una operación de Click-to-Action entre portlets utiliza algunos de los elementos del documento WSDL. Se describen las extensiones al elemento <binding> y se incluye el esquema completo para las extensiones WSDL.

Sintaxis WSDL

Las secciones siguientes proporcionan información específica sobre la sintaxis de los archivos WSDL utilizados en Domino Designer y WebSphere Portal.

<types>

Para los componentes de las aplicaciones compuestas, declara el tipo de datos de los datos que se van a transferir. El tipo de datos se declara utilizando XSD (del inglés XML Schema Datatypes, tipos de datos de esquema XML); consulte la especificación XSD. Es posible que existan múltiples tipos definidos en el documento WSDL. A continuación, se muestra un ejemplo de declaración para un tipo de datos de ejemplo denominado TrackingIDType:

<types>

     <xsd:simpleType name="TrackingIDType">

        <xsd:restriction base="xsd:string">

        </xsd:restriction>

      </xsd:simpleType>

</types>

<message>

Los mensajes de entrada sólo pueden contener una parte.

<operation>

Proporciona una definición abstracta de una operación de Click-to-Action. Tenga en cuenta la restricción anterior sobre los mensajes de entrada.

<portType>

Define una colección abstracta de operaciones. Las operaciones deben definirse en el documento. En los portlets habilitados para Click-to-Action a cada acción le corresponde una operación. Sólo deben declararse las acciones que tengan que activarse para Click-to-Action.

<binding>

El elemento binding se amplía para asociar acciones de portlet con operaciones. Para cada operación debe proporcionarse el nombre de la acción de portlet. El nombre de la acción de portlet puede especificarse utilizando el atributo name de la etiqueta de acción en la sección binding del archivo WSDL. Si se omite, el atributo name de la etiqueta operation se utiliza como nombre de la acción de portlet. Para cada parámetro operation debe proporcionarse el nombre del parámetro action. El nombre del parámetro portlet puede especificarse utilizando el nombre de la etiqueta param de la sección de enlace del archivo WSDL. Si se omite, el atributo name de la etiqueta part asociado con la etiqueta param se utiliza como nombre del parámetro de portlet.

Además, se puede utilizar el atributo boundTo para especificar dónde se enlazará el parámetro. Las opciones son: el parámetro request, el atributo request, el atributo session o el atributo action.

El elemento <binding> incluye extensiones de portlet de cooperación, que se describen en las extensiones al elemento <binding>, como se muestra en el ejemplo de WSDL.

Si está familiarizado con WSDL, puede haber notado que la sección de servicio (incluida en el elemento <service> de WSDL) no se utiliza en el archivo de declaración de ejemplo. Esto se debe a que el archivo está asociado con un portlet específico que implementa las operaciones definidas en el archivo a través de medios externos (una entrada en el archivo portlet.xml asociado con el portlet).

Extensiones al elemento <binding>

El elemento <binding> se ha ampliado para dar soporte a componentes y portlets de cooperación. Los ejemplos siguientes hacen referencia al uso con portlets.

Cada elemento de extensión tiene el prefijo "portlet:", que hace referencia al espacio de nombres de C2A (Click-to-Action), http://www.ibm.com/wps/c2a. El prefijo "portlet:" se utiliza para identificar los elementos de extensión en esta sección, pero se puede utilizar otro nombre para el prefijo siempre que haga referencia al espacio de nombres de C2A. Los elementos se describen a continuación. Consulte también la información de sobre el esquema de extensiones WSDL más adelante en este tema.

<portlet:binding>

Debe ser el primer elemento de nivel inferior del elemento <binding> de WSDL. Su presencia identifica la sección como extensión de enlace de C2A para la invocación de acciones de portlet. El elemento tiene el atributo siguiente.


<portlet:action>

Debe ser el primer elemento de nivel inferior de cualquier elemento <operation> de WSDL de la sección de enlace. Contiene los atributos siguientes:


  <binding name="TrackingBinding" type="tns:Tracking_Service">

      <portlet:binding/>

      <operation name="trackingDetails">

        <portlet:action caption="Detalles de seguimiento"

               description="Obtener los detalles de seguimiento para

               el id de seguimiento especificado"

               selectOnMultipleMatch="true"/>

        <input>

          <portlet:param name="trackingId" partname="trackingId"/>

        </input>

        <output>

          <portlet:param name="customerName" partname="custName" boundTo="session"/>

        </output>

      </operation>

      <operation name="routingDetails">

        <portlet:action caption="Detalles de transferencia"

                        description="Obtiene los detalles de transferencia para el id de seguimiento especificado"/>

        <input>

          <portlet:param name="trackingId" partname="trackingId"/>

        </input>

      </operation>

</binding>

<portlet:param>

Debe aparecer como elemento de nivel inferior en los subelementos <input> u <output> del elemento <operation> en el enlace. Especifica los parámetros consumidos (si se incluyen en el elemento <input>) o generados (si se incluyen en el elemento <output>) por la acción de portlet. Actualmente, se restringe el número de parámetros consumidos como máximo a uno. El número de parámetros generados puede ser cualquiera. Tiene los atributos siguientes:

Esquema de extensiones WSDL utilizado en WebSphere Portal

A continuación, se muestra el esquema de los elementos de extensión introducidos para la invocación de acciones de portlets mediante Click-to-Action. Las líneas se han fragmentado para facilitar la lectura.

<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"

     xmlns:xsd="http://www.w3.org/2001/XMLSchema

targetNamespace="http://www.ibm.com/wps/c2a"

xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://schemas.xmlsoap.org/wsdl/

    http://schemas.xmlsoap.org/wsdl/

    http://www.w3.org/2001/XMLSchema

    http://www.w3.org/2001/XMLSchema.xsd"

xmlns:portlet="http://www.ibm.com/wps/c2a">

   <!-- El elemento de enlace (binding) indica que la sección de enlace contiene
  extensiones personalizadas que describen una correlación de operaciones en
  las acciones de portlet. Debe colocarse dentro de un elemento de enlace WSDL. -->

   <element name="binding" type="portlet:bindingType"/>

   <complexType name="bindingType">

    <!-- EN DESUSO, retenido para la compatibilidad con la versión 4. Utilice en
   su lugar el atributo type con el elemento action. Establezca el valor para que
   sea "struts" para un portlet implementado utilizando Struts Framework. -->

      <attribute name="style" type="string" use="optional"/>

   </complexType>

   <!-- El elemento action se utiliza para proporcionar toda la información
  sobre la acción del portlet necesaria para que el intermediario de propiedades la
  invoque. Debe colocarse
  dentro de un elemento wsdl:operation en la sección wsdl:binding. -->

   <complexType name="actionType">

       <sequence>

       <!-- El elemento param se utiliza para indicar información
      sobre la propiedad de entrada o salida asociada a la
      acción y el mecanismo para transmitir parámetros desde o a la acción.
      Debe colocarse dentro de un elemento wsdl:input o wsdl:output. -->

          <element name="param" type="portlet:paramType"
             minOccurs="0"maxOccurs="unbounded"/>

</sequence>

         <!-- Nombre de la acción. Se establecerá como el nombre de la acción
        de portlet. Si se omite, el nombre del elemento de la operación
        correspondiente se utilizará como el nombre de la acción. -->

<attribute name="name" type="string" use="optional"/>

     <!-- Los valores que se reconocen actualmente son los valores predeterminados,
    simples, struts y estándar, siendo el valor predeterminado el que aparece por
    defecto. Se utiliza para especificar si se emplea el mecanismo
    DefaultPortletAction, acción de portlet simple o acción de Struts para
    invocar la acción del portlet. Tenga en cuenta que DefaultPortletAction
    está en desuso y que, de forma predeterminada, se utiliza este valor para la
    compatibilidad con versiones anteriores. Aconsejamos usar el valor
    simple para evitar problemas de migración en el futuro. -->

     <attribute name="type" type="string" use="optional" default="default"/>

     <!-- Nombre abreviado de la acción que se visualiza para el usuario final.
    Si se proporciona un archivo de recursos de mensaje para el portlet,
    el valor se utiliza como clave para recuperar una serie traducida -->

     <attribute name="caption" type="string" use="optional"/>

     <!-- Descripción de la acción que se visualiza para el usuario final. Si se proporciona un archivo de recursos de mensaje para el portlet,
    el valor se utiliza como clave para recuperar una serie traducida -->

     <attribute name="description" type="string" use="optional"/>

     <!-- Si más de una acción de portlet puede procesar simultáneamente
    un valor de propiedad, sólo se invocan aquellos valores con el atributo
    invokeOnMultipleMatch establecido en true -->

      <attribute name="selectOnMultipleMatch" type="boolean"
          use="optional" default="false"/>

      <!-- Si el atributo activeOnStartup es true, la acción para la invocación se
      puede seleccionar en cualquier momento a menos que se desactive mediante
      programación para cada sesión. Si activeOnStartup tiene el valor false,
      puede que la acción no se seleccione para la invocación, a menos que
      se active mediante programación para cada sesión -->

       <attribute name="activeOnStartup" type="boolean"
            use="optional" default="true"/>

       <!-- El elemento param indica el modo en que el parámetro se
      proporcionará a la acción del portlet o se recuperará de la
      acción una vez esta se haya ejecutado -->

    </complexType>

    <complexType name="paramType">

        <!-- Nombre del parámetro que se utilizará en la
        invocación de la acción. Si se omite, se utiliza partname.
        Este nombre también se establecerá como el nombre de la propiedad
        correspondiente. Consulte la descripción de las propiedades en el
        documento del modelo de programación. -->

        <attribute name="name" type="string" use="optional"/>

        <!-- Nombre de la parte correspondiente. Sólo se puede omitir si
       hay un solo parámetro para la acción, en cuyo caso
       será inferido desde la definición
       de la operación asociada -->

        <attribute name="partname" type="string" use="optional"/>

        <!-- En qué lugar debe colocarse el parámetro antes de invocar la acción
       (en caso de parámetros de entrada) o en qué lugar debe buscarse
       después de invocar la acción (en caso de parámetros de salida).
       Los valores permitidos son request-attribute, request-parameter, session
       y action. -->

        <attribute name="boundTo" type="string"
                    default="request-parameter"/>

        <!-- Clase java del parámetro. El valor predeterminado es
       java.lang.String. Actualmente no se utiliza, pero puede utilizarse
       en el futuro para la validación-->

       <attribute name="class" type="string" default="java.lang.String"/>

       <!-- Nombre abreviado de la acción que se visualiza
      para el usuario final. Si se proporciona un archivo de recursos
      de mensaje para el portlet, el valor se utiliza como clave para recuperar
      una serie traducida -->

       <attribute name="caption" type="string" use="optional"/>

       <!-- Descripción del parámetro que se visualiza para el usuario final. Si se proporciona un archivo de recursos de mensaje para el portlet,
      el valor se utiliza como clave para recuperar una serie traducida -->

       <attribute name="description" type="string" use="optional"/>

    </complexType>

</xsd:schema>

Puede utilizar archivos WSDL existentes como punto de partida para la creación de componentes NSF y componentes de Eclipse. No obstante, es aconsejable que utilice el Editor del intermediario de propiedades cuando trabaje con ellos.

Ejemplo de WSDL para aplicaciones compuestas en Domino Designer

Utilice esta sintaxis de ejemplo y las anotaciones (en negrita) como referencia durante la creación de su propia aplicación compuesta de ejemplo con Lotus Notes.

<?xml version="1.0" encoding="UTF-8"?>

<definitions name="Property Broker WSDL"

targetNamespace="http://www.ibm.com/wps/c2a/testwsdl"

xmlns="http://schemas.xmlsoap.org/wsdl/"

xmlns:portlet="http://www.ibm.com/wps/c2a"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

xmlns:tns="http://www.ibm.com/wps/c2a/testwsdl"

xmlns:cus="com.ibm.compositeapps.samples" -de esta forma
puede agregar su propio espacio de nombres de ejemplo (1)

xmlns:cut="com.ibm.compositeapps.samples.2" -este es otro
espacio de nombres de ejemplo (2)

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<types>

<xsd:schema targetNamespace="com.ibm.compositeapps.samples">
-este es un espacio de nombres personalizado (1)

<xsd:simpleType name="SubjectType"> -este es el nombre del tipo

<xsd:restriction base="xsd:string"/>

</xsd:simpleType>

</xsd:schema>

<xsd:schema targetNamespace="com.ibm.compositeapps.samples.2">
aquí se muestra otro espacio de nombres (2)

<xsd:simpleType name="AccountType">

<xsd:restriction base="xsd:string"/>

</xsd:simpleType>

<xsd:simpleType name="IDType">

<xsd:restriction base="xsd:string"/>

</xsd:simpleType>

<xsd:simpleType name="CustomerType">

<xsd:restriction base="xsd:string"/>

</xsd:simpleType>

</xsd:schema>

</types>

<message name="New_Response_Action_Operation_Input">

<part name="SubjectPart" type="cus:SubjectType"/> -observe cómo
el "cus" apunta hacia el espacio de nombres (1)
 -- la asignación
va de la propiedad al tipo

</message>

<message name="New_Response_Action_Operation_Output">

<part name="AccountPart" type="cut:AccountType"/> -observe cómo
el "cut " apunta hacia el espacio de nombres (1)

<part name="IDPart" type="cut:IDType"/>

</message>

<message name="OnViewEntrySelectionChange_Property_Operation_Output">

<part name="CustomerPart" type="cut:CustomerType"/>

</message>

<portType name="NotesDB_Operations"> -esta sección es obligatoria de acuerdo con el estándar WSDL

<operation name="New_Response_Action_Operation">

<input message="tns:New_Response_Action_Operation_Input"/>

<output message="tns:New_Response_Action_Operation_Output"/>

</operation>

<operation name="OnViewEntrySelectionChange_Property_Operation">

<output message="tns:OnViewEntrySelectionChange_Property_Operation_Output"/>

</operation>

</portType>

<binding name="Notes_Binding" type="tns:NotesDB_Operations">

<portlet:binding/>

<operation name="New_Response_Action_Operation"> -esta es
una acción con una entrada y dos propiedades de salida.
Vea la nota siguiente.

<portlet:action name="New Response Action"
caption="NewResponseCaption"
-este es el nombre que se muestra en la interfaz de usuario de Domino Designer en el cuadro de propiedades de la acción
 description="NewResponseDesc.id"/>

<input>

<portlet:param name="Subject" -este es el nombre de la
propiedad; debe ser exclusivo dentro de cada archivo WSDL
partname="SubjectPart" -partname se emplea para
la correspondencia con "part name=" en <message> caption="subjectCaption"
description="subjectDesc.id"/>

</input>

<output> -puede tener 0-N propiedades de salida en una acción

<portlet:param name="Account" partname="AccountPart" caption="accountCaption" description="accountDesc.id"/>

<portlet:param name="ID" partname="IDPart" caption="id" description="idDesc.id"/>

</output>

</operation>

<operation name="OnViewEntrySelectionChange_Property_Operation"> -esta es una propiedad de salida

<portlet:action name="OnDocSelectionChange"
-aquí puede usar cualquier nombre, pero debe ser exclusivo dentro de cada archivo WSDL 
caption="DocSelectionCaption" description="DocSelectionDesc.id"/>

<output>

<portlet:param name="Customer" partname="CustomerPart" caption="customer" description="customer.id"/>

</output>

</operation>

</binding>

</definitions>

Directrices para los archivos WSDL

Utilice las directrices siguientes para crear archivos WSDL:


Nota Las propiedades y las acciones pueden conectarse si comparten el mismo tipo de datos y el mismo espacio de nombres.
Véase también

Glosario
¿Desea opinar sobre la Ayuda o sobre la utilidad del producto?