Habilitación de destinos de cooperación

La habilitación de destinos de cooperación incluye las actividades siguientes:
  1. Habilitación de destino de cooperación
  2. Implementación de la acción
  3. Traducciones

Para habilitar un destino de cooperación:

  1. Habilite el destino de cooperación, como se describe en los pasos siguientes:
    1. En la vista Explorador de proyectos, seleccione un portlet o el Descriptor de despliegue de portlet. Los portlets se visualizan al ampliar el nodo Descriptor de despliegue de portlet en la carpeta del proyecto de portlet.
    2. Pulse en el portlet que desee con el botón derecho del ratón y seleccione Cooperación > Habilitar destino en el menú emergente. Se abre el diálogo Habilitar destino de cooperación. De forma alternativa, abra un archivo JSP, asegúrese de que sea el archivo que está activo, y seleccione Página > Cooperación > Habilitar destino en la barra de herramientas.
      Diálogo Habilitar destino de cooperación
    3. Introduzca valores en los campos siguientes:
      Tipo de datos (obligatorio)
      Especifique un nombre de tipo de datos para los datos que va a transferir el portlet de origen. De forma alternativa, si el tipo de datos que desea publicar ya está declarado, pulse el botón Examinar para abrir el diálogo Seleccionar tipo y seleccione el tipo de datos WSDL que desee publicar. El tipo de datos y el espacio de nombres del archivo WSDL se especificarán en cada campo. El valor especificado se utilizará para declarar el tipo de datos en el elemento <types> del archivo WSDL.
      Espacio de nombres
      Especifique el espacio de nombres para el tipo. Por ejemplo, "http:/www.yourco.com/c2a". Cuando se especifica debajo un archivo WSDL existente, el campo queda deshabilitado. El valor especificado se almacenará en el archivo WSDL y se utilizará con atributos de tipo para hacer corresponder datos con acciones en destinos mediante el tiempo de ejecución de cooperación.
      [Acción de destino] Nombre (obligatorio)
      Especifique el nombre de acción del portlet. Si hay disponible alguna acción Faces asociada a controles de mandatos y alguna acción Struts definida en archivos de configuración de Struts, puede seleccionarla en el diálogo Seleccionar acción. Para abrir este diálogo, pulse el botón Examinar. El valor especificado se almacenará en el archivo WSDL como atributo de nombre del elemento <portlet:action>.
      Parámetro de nombre (opcional para los portlets JSR 168)
      Especifique el parámetro de nombre de acción del portlet. Para los portlets Struts JSR 168, el parámetro de nombre de acción debe especificarse como spf_strutsAction.
      [Parámetro] Nombre (obligatorio)
      Especifique el nombre de los parámetros consumidos o producidos por la acción de portlet. El valor especificado se almacenará en el archivo WSDL como atributo de nombre del elemento <portlet:param>.
      Título (opcional)
      Especifique el nombre de título de los parámetros consumidos o producidos por la acción del portlet.
      Enlazado a
      Especifique dónde está enlazado el valor de parámetro. Actualmente, este atributo sólo puede especificar uno de los valores siguientes:
      • request-parameter: especifica que el valor está enlazado como parámetro en el objeto PortletRequest. Éste es el valor por omisión si se ha omitido el atributo boundTo. Tenga en cuenta que para los parámetros de salida normalmente debe especificarse un valor distinto, ya que la implementación PortletRequest por omisión proporcionada por WebSphere Portal no permite establecer parámetros durante el proceso de acciones.
      • request-attribute: especifica que el valor está enlazado como un atributo en el objeto PortletRequest.
      • session: especifica que el valor está enlazado al objeto PortletSession.
      Etiqueta
      Especifique una cadena de caracteres corta con la acción más adecuada para su visualización en la interfaz de usuario del portlet. Para los títulos traducidos, especifique el nombre de la clave en los paquetes de recursos mediante un punto (.) en lugar de un espacio entre las palabras de este campo. Especifique los títulos traducidos en el formato key=título traducido en que aparece en los recursos de paquetes especificados en el campo Paquete de recursos de este diálogo. El valor especificado se almacenará en el archivo WSDL como atributo título del elemento <portlet:action>.
      Captura de pantalla cuando se visualiza el título C2A
      Descripción
      Especifique una descripción de texto de la acción. Para las descripciones traducidas, especifique el nombre de la clave en los paquetes de recursos mediante un punto (.) en lugar de un espacio entre las palabras de este campo. Especifique la descripción traducida en el formato key=descripción traducida en que aparece en los paquetes de recursos especificados en el campo Paquete de recursos de este diálogo. El valor especificado se almacenará en el archivo WSDL como atributo de descripción del elemento <portlet:action>.
      Paquete de recursos
      Especifique el nombre base de un archivo de recursos NLS que contenga textos traducidos que correspondan a etiquetas y descripciones de acciones y propiedades. El nombre base especificado se definirá mediante el parámetro de configuración c2a-nls-file en el descriptor de despliegue de portlet, y se generará un paquete de recursos vacío bajo el nodo Recursos Java. Por ejemplo, si especifica nls.shippingc2a, editará el paquete de recursos específico de idioma: nls\shippingc2a<_lang>.properties en el nodo JavaSource para especificar títulos y descripciones traducidos en el formato key=texto traducido.
      Portlet de destino (obligatorio)
      Especifique el portlet concreto que debe habilitarse como destino de cooperación.
    4. Pulse Aceptar. El portlet con Click-to-Action habilitado se muestra con un icono de portlet de destino Icono de portlet de destino Click-to-Action) en la vista Explorador de proyectos.
  2. Asegúrese de que el código de la clase de portlet de destino cumpla los requisitos siguientes:
    • La acción se debe implementar como una acción de portlet, de Faces o de Struts. Para las acciones de portlet, deben utilizarse cadenas de acciones sencillas en vez de la clase obsoleta PortletAction.
    • Las acciones de portlet deben aceptar un solo parámetro. El parámetro puede aparecer como un parámetro de petición, una atributo de petición, un atributo de sesión o un atributo de acción (obsoleto), según se especifica en el registro o declaración de acción.

    En el ejemplo siguiente se muestra el método actionPerformed() de OrderDetailPortlet.java en la aplicación Cooperative Portlets de ejemplo de Sample Gallery (Galería de ejemplos). Este portlet acepta el parámetro ORDER_ID en su método actionPerformed(). Este parámetro corresponde a un parámetro de entrada del apartado de enlace (binding) del archivo WSDL del portlet (OrderDetailC2A.wsdl en este ejemplo).

    ...
    
       private static final String PREFIX = "";
       public static final String ORDER_ID = PREFIX + "orderId";
       public static final String TRACKING_ID = PREFIX + "trackingId";
    
    ...
        
        public void actionPerformed (ActionEvent event) 
        {
    //        DefaultPortletAction action = (DefaultPortletAction) event.getAction();
       String actionName = event.getActionString();
    
            PortletRequest request = event.getRequest();
    
            // Una acción hace que se modifique el estado
            ShippingUtils.setLastModified(request);
    
           if( getPortletLog().isDebugEnabled() ) {
               getPortletLog().debug("OrderDetailActionListener - Action called");
           }
           
            if (actionName.equals(ORDER_DETAILS)) {
                request.getPortletSession().setAttribute(ACTION_NAME, ORDER_DETAILS);
                            request.getPortletSession().setAttribute(ORDER_ID, request.getParameter(ORDER_ID));
    
           // Esto se hace ya que el ID de seguimiento (tracking id) es un parámetro de salida del archivo C2A WSDL
           // El "tracking id" se escribe en la petición, de forma que puede ser publicado por parte del
           // intermediario en el mismo ciclo de suceso
                String orderId = (String) request.getPortletSession().getAttribute(ORDER_ID);
           OrderDetail od = ShippingDB.getOrderDetail(request.getParameter(ORDER_ID));
                request.getPortletSession().setAttribute(ORDER_DETAIL, od);
           request.setAttribute(TRACKING_ID, od.getTrackingId());
    
            }  else if (actionName.equals(ORDER_ID_ENTRY)) {
                request.getPortletSession().setAttribute(ACTION_NAME, ORDER_ID_ENTRY);
       }
        }
    ...
  3. Es necesario proporcionar un texto traducido que corresponda a la etiqueta y la descripción de los archivos de paquetes de recursos. El nombre base del paquete de recursos se especifica en el campo Paquete de recursos y se almacena mediante el parámetro de configuración c2a-nls-file en el descriptor de despliegue de portlet. Edite los paquetes de recursos específicos de idioma bajo el nodo JavaSource. Para especificar los títulos y las descripciones traducidos, utilice el formato key=texto traducido y las claves especificadas como Etiqueta y Descripción.

La acción Habilitar destino de cooperación realiza automáticamente las tareas siguientes.

  1. Modifica web.xml para añadir una entrada de clase servlet que haga referencia a las clases de intermediario de propiedad.
    <servlet-class>com.ibm.wps.pb.wrapper.PortletWrapper</servlet-class>
    <init-param>
       <param-name>c2a-application-portlet-class</param-name>
       <param-value>clase de servlet</param-value>
    </init-param>
  2. Modifica portlet.xml:
    • Para añadir un parámetro de configuración a cada portlet concreto que reciba el intermediario de propiedad de entrada por medio del archivo WSDL y para especificar el nombre base de un archivo de recursos de idioma nacional.
      <config-param>
              	<param-name>c2a-action-descriptor</param-name>
              <param-value>archivo WSDL</param-value>
      </config-param>
      <config-param>
              	<param-name>c2a-nls-file</param-name>
              <param-value>nombre de paquete de recursos</param-value>
      </config-param>
    • Para añadir un parámetro de configuración para que un portlet Faces especifique el nombre de la acción de destino y el nombre de parámetro correspondiente.
  3. Importa una biblioteca adicional, pbportlet.jar, a /WEB-INF/lib en el proyecto de portlet para que lo utilice el intermediario de propiedades.
  4. Crea un archivo WSDL con los apartados siguientes:
    <definitions>
    Actúa como el directorio raíz.
    <types>
    El tipo de datos se declara utilizando los tipos de datos de esquema XML (XML Schema Datatypes - XSD).
    <message>
    Mensaje de salida
    <portType>
    Define un conjunto de operaciones abstracto. <output>.
    <binding>
    Siempre ampliado a <portlet:binding> para identificar el apartado como una extensión de enlace de cooperación para la invocación de acciones del portlet.
  5. Genera un archivo de paquetes de recursos que incluye el valor key (del formato de texto key=cadena traducida) especificado en el campo Etiqueta del diálogo Habilitar destino de cooperación.

Conceptos relacionados
Desarrollo de portlets de cooperación

Tareas relacionadas
Habilitar cooperación para portlets existentes
Habilitación de orígenes de cooperación
Habilitación de destinos de cooperación sin una acción Faces
Inserción de encodeProperty Click-to-Action
Inserción de encodeProperties Click-to-Action
Edición de encodeProperty Click-to-Action
Edición de encodeProperties Click-to-Action

Referencia relacionada
Web Services Description Language (WSDL) 1.1
Information Center de WebSphere Portal
Esquema XML Parte 2: Tipos de datos

(C) Copyright IBM Corporation 2002, 2005. Reservados todos los derechos.