Professional Documents
Culture Documents
Liferay 6.2: Desarrollo de Plugins (Parte 1)
Liferay 6.2: Desarrollo de Plugins (Parte 1)
Liferay 6.2: Desarrollo de Plugins (Parte 1)
2
Desarrollo de Plugins (Parte 1)
Instalación
Instalar JDK 1.7
URL Bundle y SDK:
• https://sourceforge.net/projects/lportal/files/Liferay%20Portal/
6.2.5%20GA6/
Descargar:
• liferay-plugins-sdk-6.2-ce-ga6-20160112152609836.zip
• liferay-portal-tomcat-6.2-ce-ga6-20160112152609836.zip
URL Liferay IDE:
• https://sourceforge.net/projects/lportal/files/Liferay%20IDE/2.2.4%
20GA5/
Descargar:
• liferay-ide-eclipse-windows-x64-2.2.4-ga5-201507230603.zip
Instalación
Descomprimir el archivo de eclipse: liferay-ide-eclipse-
windows-x64-2.2.4-ga5-201507230603.zip
Descomprimir el archivo liferay-plugins-sdk-6.2-ce-ga6-
20160112152609836.zip en el directorio del eclipse
Instalación
Descomprimir el archivo: liferay-portal-tomcat-6.2-ce-
ga6-20160112152609836.zip
Instalación
Configurar Plugin SDK
Instalación
Configurar Runtime Environment
Instalación
Configurar Nuevo Servidor
Instalación
Ajustes finales:
• Editar: <PLUGIN_SDK_PATH>\build.properties
• Cambiar el valor del parámetro "ivy.jar.url", para que apunte a
la siguiente URL:
ivy.jar.url=https://repository.liferay.com/nexus/content/repo
sitories/liferay-public-
snapshots/com/liferay/org.apache.ivy/${ivy.version}/org.apac
he.ivy-${ivy.version}.jar
Plugins
Actualmente existen 6 tipos de plugins:
• Portlets
• Themes
• Layout Templates
• Web Modules
• Hooks
• Ext Plugins
Plugins
Plugins SDK:
• Entorno simple para el desarrollo de plugins de Liferay
• El desarrollo de portlets, themes y layouts se llevaba a
cabo en el ambiente Ext.
• Desde Liferay 6.0, el EXT environment no es soportado,
ya que fue reemplazado por los hot-deployables
portlets, themes y layouts.
• Plugins SDK requiere que un bundle de Liferay Portal
esté presente para compilar contra los jars incluidos en
el portal.
Developer’s Liferay Portal +
Plugins
Hot Deploy App Server
SDK
Folder Bundle
Plugins
Plugins SDK:
Componente Directorio
Portlets /portlets
Themes /themes
Layouts /layouttpl
Web applications /web
Hooks /hooks
Ext plugins /ext
Ant scripts / (scripts para la generación de los componentes)
Plugins
Portlets
<LIFERAY_BUNDLE>\tomcat-7.0.62\lib\ext\portal-service.jar y otros
jars contenidos en el directorio WEB-INF/lib del portlet
Archivo <nombre_proyecto>/docroot/WEB-INF/liferay-plugin-
package.properties permite referenciar (importar) librerías de
Liferay, para importar librerías externas o propias, se deben
copiar al directorio <nombre_proyecto>/docroot/WEB-INF/lib
INIT PHASE:
RENDER PHASE:
• URL Generada:
<a
href="http://localhost:8080/group/guest/parts?p_p_id=jsr286demoportlet_
WAR_jsr286demoportlet_INSTANCE_A2Gc9caIEGIx&p_p_lifecycle=0&
amp;p_p_state=normal&p_p_mode=view&p_p_col_id=column-
1&p_p_col_count=1">Click to invoke Render Phase</a>
Portlets
Fases de los Portlets
RENDER PHASE:
Portlets
Fases de los Portlets
ACTION PHASE:
ACTION PHASE:
ACTION PHASE:
• URL Generada:
<a
href="http://localhost:8080/group/guest/parts?p_auth=DccEXRwN&p_
p_id=jsr286demoportlet_WAR_jsr286demoportlet_INSTANCE_A2Gc9caIEG
Ix&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&a
mp;p_p_col_id=column-1&p_p_col_count=1">Click to invoke Action
Phase</a>
• Ej:
Portlets
Fases de los Portlets
EVENT PHASE:
• Útil para:
Crear imágenes y otros binarios dinámicamente
Retornar XML, JSON, fragmentos HTML de llamadas
Ajax, etc.
• Los portlets entran en la fase invocando una Resource URL
que puede generarse de la siguiente forma:
<a href=""
onclick="loadXMLDoc('<portlet:resourceURL/>'); return
false">Click to invoke Resource Serving Phase</a>
Portlets
Fases de los Portlets
• URL Generada:
<a
onclick="loadXMLDoc('http://localhost:8080/group/guest/parts?p_
p_id=jsr286demoportlet_WAR_jsr286demoportlet_INSTANCE_A2G
c9caIEGIx&p_p_lifecycle=2&p_p_state=normal&p_p
_mode=view&p_p_cacheability=cacheLevelPage&p_p_c
ol_id=column-1&p_p_col_count=1'); return false" href="">Click
to invoke Resource Serving Phase</a>
Portlets
Fases de los Portlets
DESTROY PHASE:
Portlet Modes
Windows States
Portlet Preferences
Standard Inter Portlet Communication (IPC)
• Public Render Parameters
• Events
Resource Serving
• AJAX Support
• Binary Data Support
Portlets
Características de los Portlets
Portlet Modes
• Cada portlet tiene un modo actual, el cual indica la función que está
realizando
• Todos los portales compatibles con Java deben soportar los modos View,
Edit y Help
• Los portlet modes son definidos en el archivo portlet.xml
En el Edit Mode, las configuraciones son representadas como un set
persistente de pares nombre-valor, y son llamadas «portlet preferences».
Portlets
Características de los Portlets
Portlet Modes
• Look and Feel Mode
(Liferay Extension)
• Configuration Mode
(Liferay Extension)
Portlets
Características de los Portlets
Windows States
• Indican la cantidad de espacio que ocupará el portlet
en la página
• Todos los portales compatibles deben soportar los
estados: minimizado, maximizado y normal
Portlets
Características de los Portlets
Remove Window
• Liferay provee la opción de remover el portlet de la
página mediante la opción “Remove”
Portlets
Desarrollo de Portlets
Liferay Portlet
• Liferay agrega dos descriptores más que extienden
las opciones de portlet.xml:
liferay-portlet.xml
liferay-display.xml
liferay-display.xml
Portlets
Desarrollo de Portlets
Liferay Portlet
También es posible agregar el archivo liferay-plugin-
package.properties, para describir las versiones de
Liferay que son compatibles con el portlet, como así
también otras opciones.
Portlets
Desarrollo de Portlets
Llamada:
O también con:
portletURL.removePublicRenderParameter(name)
Portlets
Inter Portlet Communication (IPC)
Método 2: Eventos
• Utiliza un patrón Producer-Listener
Un portlet genera un evento
Cero o más portlets pueden estar escuchando y reaccionar
ante el evento
• Eventos permiten la comunicación entre portlets de
diferentes aplicaciones
• Los portlets pueden publicar eventos desde processAction
usando el método: actionResponse.setEvent(event,
eventPayLoad)
• Publicar un evento causa una o más invocaciones del
nuevo método processEvent en el mismo u otros portlets
Portlets
Inter Portlet Communication (IPC)
Método 2: Eventos
• Desde la implementación del processEvent, también
pueden lanzarse nuevos eventos, usando el método:
eventResponse.setEvent(event, eventPayload)
• No se garantiza el orden de entrega de los eventos
• Para que la aplicación participe en el procesamiento
de eventos, es necesario decirle al contenedor cuales
eventos nos interesan.
• Adicionalmente necesitamos agregar el evento a
nuestro descriptor, de manera que Liferay conozca
qué portlet puede enviar el evento y qué portlet
puede recibirlo.
Portlets
Inter Portlet Communication (IPC)
Método 2: Eventos
• Definiendo el evento:
• En portlet.xml se debe agregar dentro del tag
<portlet-app> al final, el siguiente tag que indica el
namespace, el nombre del evento, y el tipo de dato
que irá en el payload:
Portlets
Inter Portlet Communication (IPC)
Método 2: Eventos
• Definiendo el sender:
• Ahora necesitamos decirle al contenedor, qué portlet
envía el evento, para esto se define el siguiente tag
dentro de la definición del portlet (tag portlet):
Portlets
Inter Portlet Communication (IPC)
Método 2: Eventos
• Para publicar el evento se realiza de la siguiente manera dentro de un
método processAction:
Portlets
Inter Portlet Communication (IPC)
Método 2: Eventos
Para escuchar el evento en un portlet, se debe crear un método de la
siguiente manera:
Portlets
Inter Portlet Communication (IPC)
Service Layer
• Liferay posee una herramienta de generación de código
llamada Liferay’s Service Builder
• Liferay posee un robusto set de servicios
• Los portlets son consumidores de estos servicios
• Los servicios pueden ser locales o remotos
• Los servicios locales son expuestos como API a clientes
ejecutándose en la misma JVM
• Los servicios remotos son expuestos como Web Services a
clientes fuera de la JVM del portal o en una máquina
remota
• Nota: Las tablas del servicio se crean al momento de
deployar el plugin
Portlets
Ejemplo de Aplicación Funcional