Habilitación de orígenes de cooperación

Para habilitar un origen de cooperación, realice 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, en el menú emergente, seleccione Cooperación > Habilitar origen. Se abre el diálogo Habilitar origen de cooperación. De forma alternativa, abra una página JSP, asegúrese de que sea la página que está activa, y seleccione Página > Cooperativo > Habilitar origen en el menú.
    Diálogo Habilitar origen de cooperación
  3. Introduzca valores en los campos siguientes:
    Tipo de datos
    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. El valor especificado se almacenará en un archivo WSDL y se utilizará como espacio de nombres para especificar la propiedad de salida.
    [Acción de origen] Nombre
    Especifique el nombre de acción del portlet.
    Parámetro de nombre (opcional para los portlets JSR 168)
    Especifique el parámetro de nombre de acción. Para los portlets Struts JSR 168, el parámetro de nombre de acción debe especificarse como spf_strutsAction.
    [Parámetro] Nombre
    Especifique el nombre de los parámetros consumidos o producidos por la acción de portlet.
    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:
    • render-parameter: [sólo la API JSR 168] especifica que el valor está enlazado como un parámetro de presentación en ActionResponse (sólo los parámetros de salida).
    • request-parameter: especifica que el valor está enlazado como un 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.

    También es posible utilizar este atributo, sin utilizar la interfaz Click-to-Action proporcionada, al habilitar el portlet de origen.

    En el ejemplo siguiente se muestra el método actionPerformed() de OrderDetailPortlet.java en la aplicación Portlets de cooperación de ejemplo de Sample Gallery (Galería de ejemplos). El portlet pasa el parámetro TRACKING_ID al intermediario de propiedad en su método actionPerformed(). Este parámetro corresponde a un parámetro de salida en el apartado de enlace del archivo WSDL del portlet ( OrderDetail.wsdl, en este ejemplo).

    OrderDetailPortlet.java
    OrderDetailPortlet.java
    
    
    ...
    	private static final String PREFIX = ""; //$NON-NLS-1$
    	public static final String ACTION_NAME = PREFIX + "actionName"; //$NON-NLS-1$
    	public static final String ORDER_DETAILS = PREFIX + "orderDetails"; //$NON-NLS-1$
    	public static final String ORDER_ID_ENTRY = PREFIX + "orderIdEntry"; //$NON-NLS-1$
    	public static final String ORDER_ID = PREFIX + "orderId"; //$NON-NLS-1$
    	public static final String ORDER_DETAIL_BEAN = PREFIX + "orderDetailBean"; //$NON-NLS-1$
    	public static final String ORDER_DETAIL = PREFIX + "orderDetail"; //$NON-NLS-1$
    	public static final String TRACKING_ID = PREFIX + "trackingId"; //$NON-NLS-1$
    ...
    	public void actionPerformed(ActionEvent event) {
    		String actionName = event.getActionString();		PortletRequest request = event.getRequest();		//Una acción provoca que se modifique el estado
    		ShippingUtils.setLastModified(request);		if (getPortletLog().isDebugEnabled()) {
    			getPortletLog().debug(Messages.getString("OrderDetailPortlet_action_entry")); //$NON-NLS-1$
    		}		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 el intermediario
    			 *  puede publicarlo en el mismo ciclo de suceso
    			 */
    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);
    		}
    	}
    ...
    OrderDetail.wsdl (el intermediario de propiedad recibe el parámetro "tracking ID" que le envía el atributo de petición.)
    ...
    <binding 
        name="OrderDetailBinding" 
        type="tns:OrderDetail_Service">
      <portlet:binding></portlet:binding>
      <operation name="order_Detail">
        <portlet:action name="orderDetails" type="simple" caption="Order.Details" description="Get.details.for.specified.order.id"/>
        <input>
          <portlet:param name="orderId" partname="order_Id" caption="order.id"/>
        </input>
        <output>
          <portlet:param name="trackingId" partname="tracking_Id" boundTo="request-attribute" caption="tracking.id"/> 
        </output>
      		</operation>
    </binding>
    
    ...
    Paquete de recursos (opcional)
    Especifique el nombre base de un archivo de recursos de idioma nacional que contenga títulos 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, edite los paquetes de recursos específicos de idioma adecuados: nls\shippingc2a<_lang>.properties 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 habilitado por cooperación se muestra con un icono de portlet de origen ( Icono de portlet de origen de cooperación) en la vista Explorador de proyectos.

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>servlet-class</param-value>
    </init-param>
  2. Modifica portlet.xml para añadir parámetros de configuración a cada portlet concreto que expone acciones al intermediario de propiedad a través del archivo WSDL, y especifica 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>
  3. Importa una biblioteca adicional, pbportlet.jar, en/WEB-INF/lib en el proyecto de portlet para que lo utilice el intermediario de propiedad.
  4. Crea el archivo WSDL especificado 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.

Conceptos relacionados
Desarrollo de portlets de cooperación

Tareas relacionadas
Habilitar cooperación para portlets existentes
Habilitación de orígenes de cooperación con una acción Faces
Habilitación de destinos de cooperación
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.