Durante los últimos dos meses un equipo mixto de zylk y Bilbomatica ha estado
desarrollando, conjuntamente con personal de la UPV/EHU (Gabriel
Maqueda y Alberto Soto), un portlet para la sincronización
de usuarios en las comunidades de Liferay(version 6 EE). El
escenario es el de una organización o universidad con miles de
usuarios potenciales, administrados y centralizados en un
sistema de directorio activo o LDAP corporativo, que
necesita asignar de una manera flexible, ágil y programada un
conjunto de usuarios en las diferentes comunidades de un
portal Liferay.
Los requisitos que se pretendía cubrir eran los siguientes:
- Poder delegar en los administradores de las
comunidades la sincronización de los usuarios que pertenezcan a las
mismas, siendo el origen de la sincronización el LDAP corporativo de
la UPV/EHU. - Permitir que los administradores de las comunidades puedan, sin
tener conocimientos de la estructura del LDAP ni de la sintaxis de
las querys, definir filtros para realizar la
sincronización de dichos usuarios - Permitir la planificación de las sincronizaciones con
periodicidad variable y seleccionable por el
propio administrador de la comunidad. -
Enviar informes cada vez que se ejecute una
sincronización a una lista de usuarios definidos por el propio administrador. -
Traducción al euskera, tanto del interfaz como del asistente
para las querys del LDAP, así como del informe resultante
tras la sincronización de los usuarios de comunidades.
Nos planteamos primero resolver la duda técnica que teníamos antes
de empezar el proyecto
- Usar o no el planificador de tareas que Liferay
integra, basado en quartz.
La conclusión fue que se podría hacer uso del
planificador de tareas de Liferay con su modelo, lo cual permitía
no tener que instanciar dos planificadores y que el
propio portal sea capaz de gestionar parte de las tareas de manera
transparente. Para ello el porltet se desplegó implementando el
scheduler de Liferay con una periodicidad diaria y en la
implementación del scheduler es donde se realiza la lógica de qué
tareas de sincronización se deben ejecutar cada día.
Una vez decidida la arquitectura de la solución
procedimos a su implementación. Desde un punto de vista funcional las
características del desarrollo son las siguientes:
- Altas en comunidad
- Bajas en comunidad.
- Importar del LDAP
El portlet permite personalizar los informes de la siguiente forma:
- Seleccionar el idioma en que se generarán los informes. Los
informes se podrán obtener tanto en castellano como en euskera. - Seleccionar el momento preciso en el que se va a realizar el
informe o informes dependiendo del modo en que este se configure. - Obtener informes personalizados atendiendo a características y
a valores concretos. - Gestionar y añadir destinatarios. Estos destinatarios recibirán
los informes a través de su correo electrónico. - Enviar el mismo informe a múltiples destinatarios.
- Seleccionar los datos que mostrará el informe.
En cuanto a la gestión de la expresión de LDAP de
la cual se obtienen los usuarios que se van a sincronizar, el portlet
dispone de un editor, desde donde el administrador de la comunidad
puede seleccionar una característica y un valor. Además el usuario
dispone de operadores lógicos ( AND, OR & NOT ),
para poder realizar expresiones más complejas.
Cada comunidad
dispone de una tarea que puede configurar para la sincronización como
se muestra en la siguiente imagen:
El portlet está accesible desde el panel de control de cada
comunidad, para los usuarios con rol de administrador de la comunidad.
La configuración se realiza desde la siguiente pantalla:
Además se puede definir la query de LDAP que nos devolverá
los usuarios que se vayan a sincronizar:
También se pueden gestionar los destinatarios de las notificaciones:
Como temas destacables habría que resaltar:
- La gestión de los atributos del LDAP es fácilmente
extendible para que se pueda utilizar en un conjunto amplio de
estructuras de LDAP. En el caso de la UPV/EHU el LDAP
está basado en atributos, pero se podría usar en una estructura
jerárquica. En zylk lo hemos probado con nuestro LDAP con resultados satisfactorios. - En una evolución de este desarrollo, se podría ampliar la parte
de edición de receptores del informe, de manera que se pudieran
añadir nuevos receptores a partir de los usuarios
existentes en el portal. Así pues, la selección del
idioma del informe se realizaría de manera transparente para el
usuario del portlet y a partir de la configuración personal de
idioma seleccionada por el usuario. - Se intentó crear un hook para que el portlet se
integrara como una nueva acción en el portlet de
comunidades pero no funcionó correctamente, así que se
descartó esa posibilidad. Nos faltó mirar los listas blancas de
portlets que se pueden añadir en tiempo de ejecución para ver si esa
opción era viable.