Adobe Flex En Portlets

De Dos Ideas.
Saltar a: navegación, buscar

Las aplicaciones Flex son archivos flash desarrollados con un entorno orientado a aplicaciones RIA. Desplegar estas aplicaciones en un portal (JSR 168 - JSR 286) implica empaquetarlas en un fragmento de html y proveer la comunicación necesaria con el portal.

Un MXML

Este es un MXML simple que muestra un título, una frase y un botón. En este ejemplo se compilará con una tarea de ant.

Es un xml de flex que describe los elementos que tendrá la aplicación.

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

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="200">

<mx:Label x="10" y="10" text="Esta es un titulo" fontFamily="Courier New" fontSize="14" fontWeight="bold" fontStyle="normal"/> <mx:Label x="10" y="40" fontFamily="Courier New" fontSize="27" fontWeight="bold" fontStyle="normal" id="unaFrase"/>

       <mx:Button x="100" y="110" label="Este es un boton" />

</mx:Application>


El JSP

El SWF que resulta de la compilación del MXML se inserta en un JSP que generará el HTML necesario. El JSP sirve también para preparar atributos que envíe el portlet.

El portlet

El portlet no tiene ninguna particularidad, simplemente deriva el procesamiento de la vista al JSP.

public class FlexPortlet extends GenericPortlet {

   ...
   public void doView(RenderRequest request, RenderResponse response) {
       response.setContentType("text/html");
       PortletRequestDispatcher dispatcher = getPortletContext()
            .getRequestDispatcher("/WEB-INF/flex/flexPortletView.jsp");
       dispatcher.include(request, response);
   }
   ...

}

Tarea ant y compilación

Para compilar el MXML es necesario incluir un jar con los task de ant que viene en la distribución del SDK de flex: flexTasks.jar.

En el build de ant se agrega la definición de la tarea de flex y en el target apropiado se agrega la tarea <mxmlc/> que compila los mxml.

   <property name="FLEX_HOME" value="C:\flexSDK3.2.0\"/>
   <property name="APP_ROOT" value=".\src\flex"/>
   <taskdef resource="flexTasks.tasks" classpath="../lib/ext/flexTasks.jar" />
   <target name="compile.flex">
       <mxmlc file="${APP_ROOT}\flexPortlet.mxml" keep-generated-actionscript="false">

asdf

           <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/>
           <source-path path-element="${FLEX_HOME}/frameworks"/>
       </mxmlc>
   </target>


URLs Opacos

Teniendo en cuenta que las urls de un portal no son transparentes, debemos encontrar un mecanismo para poder comunicarnos con el portal. Esta comunicación puede ser a través de ActionURLs, RenderURLs o ResourceURLs. En cualquiera de los casos la mecánica es la misma, estos URLs deben construirse del lado del servidor en el objeto del portlet o dentro del JSP y pasarse como parámetros al objeto SWF de nuestra aplicación Flex.

Construcción de un URL

Pasarlo como parámetro

Eventos JSR 286

Evolucionando

Esta es una forma básica de desarrollar, integrar y comunicarse con aplicaciones Flex. Existen varias herramientas y frameworks que pueden facilitarnos el desarrollo. BlazeDS nos facilita la comunicación con objetos Java desplegados de diversas maneras. FlexBuilder 3 es un entorno que nos facilita el desarrllo de la aplicación Flex. LCDSES facilita el despliegue, interación y servicio de las aplicaciones Flex.

Ver también

BlazeDS LiveCycle Data Services ES FlexBuilder 3