Video del webinar sobre “Clustering y escalabilidad en Alfresco”

Este es el video del webinar en el que hablamos sobre los componentes de la arquitectura que intervienen en Alfresco y que nos permiten escalar la plataforma ECM horizontal y verticalmente, así como conceptos y configuración de Alfresco en cluster para alta disponibilidad.

Recuerda que puedes encontrar más webinars en la sección ondemand de www.alfresco.com/es

Video “Empezar con Alfresco”, recursos clave para empezar con buen pie

Hace unos días vi en Twitter un enlace a la web de Bluefishgroup, partner de Alfesco, el artículo se llamaba “Where to go to learn Alfresco” (donde ir para aprender sobre Alfresco). Me ha gustado y hemos decidido hacer esta breve presentación con los recursos más importantes para empezar a trabajar con Alfresco.

En esta presentación hacemos una recopilación de recursos tanto en inglés como en español, y también orientados al usuario final, al administrador o al programador. Para acceder de forma sencilla a todos los enlaces que se enumeran en la presentación puedes descargar el documento desde aquí http://bit.ly/hp1o6e o http://dl.dropbox.com/u/357018/Empezando%20con%20Alfresco.pdf.

Video del webinar sobre “Alfresco Web Quick Start” en español

Aquí os dejo el video del webinar que hicimos el pasado 19 de enero sobre Alfresco Web Quick Start.

Webinar sobre Alfresco Web Quick Start en español from Alfresco Spain Portugal on Vimeo.

Alfresco Web Quick Start es un conjunto de plantillas de diseño de sitios web, creadas sobre la potente plataforma de gestión de contenido y colaboración Alfresco Share. Con Quick Start, los desarrolladores pueden crear rápidamente aplicaciones Web personalizadas y dinámicas con potentes funciones de gestión de contenido para los usuarios de empresas, sin necesidad de empezar de cero.

Dos nuevos libros sobre Alfresco: Business Solutions y Records Management

La editorial Packtpub nos trae este 2011 dos nuevos títulos relacionados con Alfresco, se trata de los libros Alfresco 3 Business Solutions y Alfresco 3 Records Management. Aún no los he podido leer ya que he hecho el pedido hoy mismo pero a modo de resumen os cuento de que van cada uno de ellos.

Alfresco 3 Business Solutions, escrito por Martin Bergljung, arquitecto ECM de Ixxus y que ha hecho proyectos con Alfresco en clientes como Virgin Money, ITF, Unibet o BNP Paribas. Este libro cubre casos reales de implementación de Alfresco contemplando toma de requisitos, autenticación y sincronización con diferentes sistemas, integración con dispositivos móviles, automatización de tareas y flujos de trabajo, integración con Liferay, desarrollo de extensiones, diseño de soluciones basadas en gestión documental y configuración personalizada del modelo de datos entre otros temas.

Alfresco 3 Records Management, cuyo autor es Dick Weisinger , Vice President y Chief Technologist en Formtek, Inc. con más de 20 años de experiencia en el mundo ECM y experto en Records Management. Este es el primer libro que cubre de forma exclusiva todo lo relacionado con Records Management en Alfresco, partiendo de la instalación y configuración, buenas prácticas entorno a los estándares ISO-15489 y DoD 5015.2, archivado de registros usando las diferentes interfaces que nos brinda Alfresco, configuración del modelo de datos, seguridad, etc.

Estos libros se unen a la ya extensa familia de publicaciones sobre Alfresco tanto en papel como en formato ebook:

Configuración de correo saliente desde Alfresco

Aunque ya hablé de esto hace tiempo, quiero hacer un update de esta información, a modo de nota mental.

Para notificaciones, invitaciones y demás avisos, Alfresco se puede configurar para que se conecte a un servidor de correo y envíe esos mensajes. Desde las versiones 3.3 y 3.4 esto es más fácil de configurar. Vamos a ver como se configura el correo saliente mediante SMTPS (seguro), si quieres hacer los envíos mediante los servidores de Gmail de forma autenticada y cifrada.

Simplemente añadiendo las siguientes  lineas en alfresco-global.properties:

[bash]
### Outbound mail SMTP ###
mail.host=smtp.gmail.com
mail.port=465
mail.protocol=smtps
mail.smtps.auth=true
[email protected]
mail.password=contraseña
mail.encoding=UTF-8
[email protected]
mail.smtp.starttls.enable=true
[/bash]

También se puede configurar un mensaje de test para que nos envíe un correo cada vez que arranca Alfresco y asegurarnos que el servicio funciona correctamente. Añadiríamos a alfresco-global.properties las siguientes líneas:

[bash]
### Test message when Alfresco starts ###
mail.testmessage.send=true
[email protected]
mail.testmessage.subject=Outbound mail from Alfresco, server started.
mail.testmessage.text=Outbound SMTP email subsystem is working. Installed on ${dir.root}
[/bash]

Aprovecho para poner este anuncio de la disponibilidad de Alfresco Community 3.4c y Enterprise RC1 en ESPAÑOL!!!

Alfresco EVT, herramienta para validación del entorno antes de instalar

Mi compañero en AlfrescoPeter Monks (Technical Director for Business Development), ha desarrollado un pequeño programa que permite validar el entorno donde se va a desplegar Alfresco tanto Enterprise como Community, aunque sin duda es más útil para Enterprise. Desde blyx.com quiero mostraros qué es y cómo funciona. Y dadas las fechas en las que estamos, a modo de regalo de Navidad.
Esta útil herramienta llamada Alfresco Environmente Validaton Tool (EVT) , comprueba varios puntos del sistema, base de datos y entorno específico, y nos muestra un informe donde podemos ver qué parámetros debemos cambiar para asegurarnos que Alfresco funcionará correctamente en nuestra red y enlaces donde encontrar esos recursos o recomendaciones. Básicamente analiza los puntos que desde Alfresco entendemos son más críticos o donde podemos encontrar problemas, de esta forma los evitamos.
Usarla es muy sencillo y funciona tanto en LINUX/UNIX como en windows ejecutando un script desde la línea de comandos. Claro, debe estar Java instalado en el sistema. Descomprimimos el zip que descargamos de la web del proyecto, ejecutamos  evt.sh o evt.cmd.

[bash]
# ./evt.sh -help

Usage: evt[.sh|.cmd] [-?|–help] [-v] [-V|-vv]
-t databaseType -h databaseHost [-r databasePort]
[-d databaseName] -l databaseLogin [-p databasePassword]

where: -?|–help – display this help
-v – produce verbose output
-V|-vv – produce super-verbose output (stack traces)
databaseType – the type of database. May be one of:
mysql, postgresql, oracle, mssqlserver, db2
databaseHost – the hostname of the database server
databasePort – the port the database is listening on (optional –
defaults to default for the database type)
databaseName – the name of the Alfresco database (optional –
defaults to ‘alfresco’)
databaseLogin – the login Alfresco will use to connect to the
database
databasePassword – the password for that user (optional)
[/bash]

Aquí vemos un ejemplo de la ejecución en un servidor Linux CentOS 5.5. No voy a usar la opción -vv porque no se ve bien en el blog, pero en tu caso ¡úsala! porque mostrará más información y recomendaciones para solucionar los problemas o alertas que detecte (INFO, WARN! y FAIL!!):
[bash]

# ./evt.sh -t mysql -h localhost -d alfresco -l alfresco -p alfresco

Alfresco Environment Validation Tool (for Alfresco Enterprise 3.3)
——————————————————————

Validating JVM
Vendor : Sun Microsystems Inc. …………………..PASS
Version : 1.6.0_21 ………………………………PASS
JVM Architecture : 32 bit ………………………………..INFO
Java Home : /usr/java/jre1.6.0_21 …………………..PASS

Validating Operating System
OS : Linux …………………………………PASS
Distribution : CentOS release 5.5 (Final) ………………WARN!
OS Architecture : 32 bit ………………………………..INFO
File Descriptors : 65535 …………………………………PASS

Validating Server Hardware
CPU Clock Speed : 2673Mhz ……………………………….PASS
CPU Count : 2 sockets, 2 cores ……………………..PASS
Installed RAM : 2032MB ………………………………..WARN!

Validating Network
Local Hostname : server ………………………………..PASS
IP Address : 10.10.100.100 ………………………….PASS
DNS Hostname : server.blyx.com ………………………..PASS
TCP 8005 (Tomcat) : available ……………………………..PASS
TCP 8080 (HTTP) : available ……………………………..PASS
TCP 50500 (RMI) : available ……………………………..PASS
TCP 21 (FTP) : available ……………………………..PASS
TCP 139 (NetBT) : available ……………………………..PASS
TCP 445 (SMB) : available ……………………………..PASS
TCP 7070 (Sharepoint) : available ……………………………..PASS
TCP 25 (SMTP) : available ……………………………..PASS
TCP 143 (IMAP) : available ……………………………..PASS
UDP 137 (NetBT) : available ……………………………..PASS
UDP 138 (NetBT) : available ……………………………..PASS
Database Hostname : resolved ………………………………PASS
Packet Loss : (please wait) 0% ……………………….PASS
Average Response Time : 0.186ms ……………………………….PASS
Response Time Std Dev : 0.042ms ……………………………….PASS

Validating 3rd Party Apps
Can fork OpenOffice : yes …………………………………..PASS
OpenOffice Version : unknown ……………………………….WARN!
Can fork ImageMagick : yes …………………………………..PASS
ImageMagick Version : 6.2 …………………………………..PASS
Can fork pdf2swf : yes …………………………………..PASS

Validating Database
Database Type : mysql …recognised …………………….PASS
JDBC Driver Loaded : yes …………………………………..PASS
Database Connectivity : connected ……………………………..PASS
Scrollable Result Sets: true ………………………………….PASS
JDBC Driver Version : 5.1 …………………………………..PASS
MySQL Version : 5.1.52 ………………………………..PASS
Default Storage Engine: InnoDB ………………………………..PASS
Case Sensitivity Level: 0 …………………………………….WARN!
Client Encoding : utf8 ………………………………….PASS
Connection Encoding : utf8 ………………………………….PASS
Database Encoding : latin1 ………………………………..FAIL!!
Filesystem Encoding : binary ………………………………..PASS
Results Encoding : utf8 ………………………………….PASS
Server Encoding : utf8 ………………………………….PASS
System Encoding : utf8 ………………………………….PASS

**** FINAL GRADE: FAIL!! ****

[/bash]

Como vemos en el report, se han analizado muchos puntos que pueden afectar al correcto funcionamiento de Alfresco:
  • Máquina virtual de Java.
  • Sistema Operativo (incluyendo file descriptors).
  • Hardware del servidor.
  • Información de la red, puertos disponibles y tiempos de respuesta con la base de datos.
  • Aplicaciones de terceros que necesita Alfresco para funcionar al 100%.
  • Configuración de la base de datos.
El ejemplo anterior tiene muchos errores para que veáis lo que puede detectar la herramienta. En ese sistema no sería recomendable instalar Alfresco.
Nota: recuerda ejecutar el comando antes de instalar Alfresco o con Alfresco parado, de lo contrario encontrarás muchos FAIL!! y WARN!

Espero que os sea útil.

A propósito, ¡Feliz Navidad a todos! ¡Y Feliz año 2011! Será el décimo aniversario de blyx.com (10 años desde que compré el dominio). Un año impar, seguro que es un buen año para todos.

Stores de Alfresco, qué son y para qué sirven

En respuesta a una pregunta que me han hecho esta mañana.
El conjunto de datos que gestiona Alfresco se almacenan en el file system, en la base de datos y en los índices, todos a la vez son necesarios para manejar todos los contenidos del repositorio. Alfresco usa el file system para almacenar los ficheros físicos y la base de datos para todo lo demás (metadatos, permisos asignados, espacios, reglas, workflows, etc.).
Teniendo en cuenta lo anterior, Alfresco ordena esa información internamente en Stores. Es una forma de agrupación lógica de los nodos que componen todo el sistema, cada uno contiene una raiz y una jerarquía de nodos. Podemos acceder a cada uno de esos Stores mediante el Node Browser (Acceder a Alfresco Explorer como admin -> Consola de Administración -> Node Browser) http://localhost:8080/alfresco/faces/jsp/admin/store-browser.jsp
  • archive://SpacesStore:
Papelera. Cuando se elimina un elemento (carpeta o contenido) en Alfresco, ese elemento no es eliminado del servidor, se mueve a store llamado Archive Space Store. Esto da la posibilidad de recuperar los ficheros borrados posteriormente. Más info aquí.
  • system://system:
Instalación e información del sistema. Encontramos información sobre la instalación de Alfresco, versiones del software, esquema de la aplicación e incluso el identificador único del repositorio (descriptor-current) que nos servirá para la configuración del Replication Service.
  • user://alfrescoUserStore:
Información de los usuarios. Aquí se almacenan los parámetros relativos a los usuarios, permisos, contraseñas (si autentica localmente), estado de la cuenta y otros parámetros internos de los usuarios.
  • workspace://lightWeightVersionStore:
Gestión de versiones. Es el store donde se ubicaban las versiones de los documentos en las versiones de Alfresco 1.X, 2.X y hasta Community Labs 3a. Este store es obsoleto ya que hacía un uso excesivo de propiedades y se producía una degradación del sistema en algunos casos. Desde la versión 3b Labs se utiliza el store workspace://version2Store que veremos a continuación.
  • workspace://version2Store:
Nuevo modelo de gestión de versiones. Es el store donde se ubicaban las versiones de los documentos y sus propiedades desde la versión Community Labs 3b en adelante. Una implementación más sencilla y completa. También aporta mayor rendimiento.
  • workspace://SpacesStore:
Almacén de contenidos. Donde encontramos la información de espacios, ficheros, sus metadatos, aspectos, permisos asignados, identificador único de cada elemento y otras propiedades internas. Muy útil para desarrollos, hacer llamadas a elementos, búsquedas, etc.
  • avm://sitestore:
WCM. Es donde se almacenan los contenidos que usa Alfresco WCM previos a la versión 3.3. Es un store que en las nuevas versiones de Alfresco WCM no se utiliza aunque puede ser opcional. AVM es donde se almacenan los Sandboxes principales y de usuarios, además de otra información de WCM.

Integración de OCR en Alfresco

Hace un par de semanas, Cesar Capillas y yo intercambiamos unos correos, ente los temas que tratamos hablamos sobre qué estábamos pensando escribir en los blogs respectivos y ambos coincidíamos con algo relacionado con Alfresco y OCR, algo sencillo pero que ofreciera una nueva funcionalidad al usuario final, así que quedamos unos días más tarde para profundizar en el tema y ponernos manos a la obra. Aquí está el resultado.

  • Introducción

En el siguiente artículo vamos a ver cómo configurar Alfresco para poder indexar automáticamente el contenido de un fichero TIF escaneado, subirlo al repositorio y poder localizarlo posteriormente buscando por el contenido del mismo. Todo ello pasándole a cada fichero TIF un OCR de forma transparente para el usuario.

En materia de escaneo y almacenamiento de información en Alfresco se ha escrito mucho y hay muchas soluciones disponibles de diferente índole que ya vimos aquí hace tiempo.

Cuando se va ha digitalizar una gran cantidad de contenidos en papel y se quiere extraer su contenido vía OCR para poderlo indexar con Alfresco, disponemos de varias herramientas empresariales que permiten revisión, OCR zonal, mayor escalabilidad, mapeo de metadatos, capacidades de integración, inyección masiva y otras funcionalidades propias de entornos donde se va a hacer un uso intensivo de estas características. Para eso se encuentra aplicaciones como las siguientes:

Kofax Ascent Capture: conector soportado con Alfresco Enterprise.

Introspeqt InstaCapture: guía.

Ephesoft: CMIS

Cobra Technologies: CMIS

Sira Systems.

  • Caso de uso

Como hemos comentado anteriormente, con las indicaciones que se explican a continuación conseguimos extraer la información OCR de un fichero TIF de forma transparente, el texto extraído del documento escaneado es indexado automáticamente.

En principio las pruebas las hemos hecho en Linux (Ubuntu y CentOS) usando Tesseract versión 2.04 y Alfresco 3.3/3.4 (tanto Community como Enterprise)

  • Usando Tesseract

Hemos elegido Tesseract por ser uno de los más comunes OCR en el mundo Open Source, pero se puede usar cualquier otro, e incluso añadiendo más características. Usando Tesseract 2.X hay que tener en cuenta que los TIF que se suben deben estar sin comprimir ya que es el único formato que soporta esta versión. Para soportar TIF comprimido hay que usar la versión 3 de Tesseract.

Hay otros OCR tanto libres como privativos, cada uno soporta unos ficheros de entrada u otros aunque en casi todos los casos el común denominador es el formato TIF. Algunos ejemplos de software alternativo a Tesseract son gocr, ocrad, ocropus o cuneiform. Para Windows hay otros como TigerOCR o incluso los mismos Tesseract y cuneiform tienen versiones para Windows.

Una vez instalado Tesseract bien sea compilando o mediante apt/yum. Podemos probar su correcto funcionamiento con el siguiente comando (especificamos el idioma aunque por defecto está en inglés, así que debes instalar el idioma correspondiente que viene con el paquete):

[php]# tesseract documento.tif documento -l spa[/php]

Recuerda que el documento.tif debería ser un fichero de un documento escaneado en español y con formato TIF sin comprimir, documento es la salida del comando, es decir, un fichero txt con el contenido detectado mediante el ocr. La opción –l permite especificar el idioma del documento escaneado para afinar el reconocimiento.

Si el comando anterior ha funcionado correctamente podemos seguir.

  • Creación del script

Ejecutando el comando anterior obtendremos en un archivo de texto el conjunto de palabras extraídas de la imagen en cuestión. Esto en principio no es una tarea sencilla para el motor de OCR y no siempre extraerá con éxito las palabras, a no ser que este bien entrenado.

Desde el punto de vista de Alfresco prepararemos un transformador, que invoca un script de shell que transforma un archivo tif a texto plano (extrae el texto identificado). Automaticamente el texto  obtenido se indexará en el motor de Lucene de Alfresco. Esta misma idea se ha utilizado en otros transformadores como la siguiente, donde extraiamos el texto de un texto XML via xmlstarlet:

El script va hacer algunas cosas más y está hecho en python (ocr-simple.py) y para su ejecución se necesita un interprete de python. El script hace algunas cosillas más que la ejecución del comando en cuestión. Por ejemplo, utiliza un diccionario de palabras donde cotejar las coincidencias. Por defecto utiliza una ruta que apunta al diccionario de palabras de ispell en Linux (paquete ispell o aspell dependiendo de la distribución), pero se puede utilizar otro archivo. Por otro lado, el script limpia y normaliza las palabras obtenidas por el ocr y recoge aquellas que tienen más de tres caracteres. Buena parte de estas acciones de limpieza y normalización seguro que las hace internamente Lucene pero nunca están de más. Aquí podemos ver el contenido del fichero ocr-simple.py (modifica las rutas según tu sistema y hazlo ejecutable):

[bash]
#!/usr/bin/python
from os import popen
from string import split,join
from pprint import *
import re
import sys

def uniq(seq):
# Not order preserving
keys = {}
for e in seq:
keys[e] = 1
return keys.keys()

# Tamano maximo
maxstr = 3

# Comando ocr en la salida estandar
#command = popen(‘/usr/bin/pngtopnm ‘+sys.argv[1]+’ | /usr/bin/ocrad’)
#command = popen(‘/usr/bin/pngtopnm ‘+sys.argv[1]+’ | /usr/bin/gocr -‘)
command = popen(‘/usr/bin/tesseract ‘+sys.argv[1]+’ /tmp/tesser-$$ 2> /dev/null; cat /tmp/tesser-$$.txt’)

# Diccionario
dictwrd = open("/usr/share/dict/words","r")
s = dictwrd.read()
# Lineas ocr
lines = command.readlines()
#pprint(lines)
text = []
for i in lines:
# Quitar los saltos de linea
i = i.strip("\n")
# En minusculas
i = i.lower()
for j in i.split(" "):
# Quitar los puntos y comas….
myregex = re.compile(r"[^\w\s]")
j = myregex.sub(”, j)
# Tamano maximo de palabra
if len(j) >= maxstr:
if re.search(j, s):
text.append(j)
# print j, "Match!" # char literal
#else:
# print j, "upppss!"

zz = open("/tmp/ocr.log","w")
zz.write(sys.argv[1]+"\n")
zz.write(join(uniq(text), " "))

# Palabras unicas
outputf = open(sys.argv[2],"w")
outputf.write(join(uniq(text), " "))
[/bash]

Un sitio para alojarlo puede ser: $ALF_HOME/bin

HINT: Se pueden usar otros OCR, por ejemplo, sustituyendo el comando de tesseract e instalando el OCR correspondiente (ocrad, gocr)

[bash]

#command = popen(‘/usr/bin/pngtopnm ‘+sys.argv[1]+’ | /usr/bin/ocrad’)

[/bash]

o

[bash]

#command = popen(‘/usr/bin/pngtopnm ‘+sys.argv[1]+’ | /usr/bin/gocr -‘)

[/bash]

  • Creación del transformador

El transformador se configura en el directorio de extensiones de Alfresco es decir:

$ALF_HOME/tomcat/shared/classes/alfresco/extension

Se define el worker, la invocación al script ocr-simple.py (que tiene que tener permisos de ejecución) y el mimetype de los archivos sobre los que se aplica la transformación, en este caso, de tif a texto plano (revisa las rutas de este xml para que estén acorde a tu instalación):

[xml]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>

<bean id="transformer.OCRToText" class="org.alfresco.repo.content.transform.ProxyContentTransformer" parent="baseContentTransformer">
<property name="worker">
<ref bean="transformer.worker.OCRToText" />
</property>
</bean>

<bean id="transformer.worker.OCRToText" class="org.alfresco.repo.content.transform.RuntimeExecutableContentTransformerWorker">
<property name="mimetypeService">
<ref bean="MimetypeService"/>
</property>
<property name="transformCommand">
<bean class="org.alfresco.util.exec.RuntimeExec">
<property name="commandsAndArguments">
<map>
<entry key="Linux">
<list>
<value>/usr/bin/python</value>
<value>/opt/alfresco33/bin/ocr-simple.py</value>
<value>${source}</value>
<value>${target}</value>
</list>
</entry>
</map>
</property>
</bean>
</property>

<property name="explicitTransformations">
<list>
<bean class="org.alfresco.repo.content.transform.ExplictTransformationDetails">
<property name="sourceMimetype"><value>image/tiff</value></property>
<property name="targetMimetype"><value>text/plain</value></property>
</bean>
</list>
</property>

</bean>
</beans>
[/xml]

Por descontado el transformador se puede extender a otros mimetypes de tipo imagen aunque esto no lo detallaremos aquí. También se podría implementar fácilmente en Windows.

  • Ejemplo de uso

Una vez dispuesto el fichero ocr-context.xml en el directorio de extensiones y el script de python ocr-simple.py en el directorio bin y reiniciado el servidor, tan sólo tenemos que subir una imagen en formato tif (con extension .tif). Una vez subida podemos buscar alguno de los términos en el buscador de la parte superior derecha de Alfresco Explorer o Share, por ejemplo, las palabras lazy o fox. De este modo subimos el archivo simple.tif a Alfresco:

Y buscamos la palabra fox de la imagen:

El resultado es el siguiente, aparecen un conjunto de archivos indexados que contienen la palabra fox, entre ellos la imagen que acabamos de subir.

Para trazar lo que esta haciendo el transformador se puede activar el log4j ($ALF_HOME/tomcat/webapps/alfresco/WEB-INF/classes/log4j.properties)

[bash]
log4j.logger.org.alfresco.util.exec.RuntimeExec=DEBUG
log4j.logger.org.alfresco.repo.content.transform.ContentTransformerRegistry=DEBUG
[/bash]

  • Referencias:

Entrada en el foro de Alfresco en Español:

http://forums.alfresco.com/es/viewtopic.php?f=11&t=2979&start=0&hilit=tesseract

Tesseract OCR:

http://code.google.com/p/tesseract-ocr/wiki/ReadMe

Ficheros usados en el artículo: ocr-files-web.

Nota: En Alfresco Share el comportamiento es el mismo, esta integración es independiente del cliente web.

Mi top 5 de plugins/add-ons para Alfresco

Como he visto que este tipo de listas dan mucho juego, y además se descubren cosas nuevas gracias a vuestros comentarios, quiero seguir con el tema.
La comunidad de usuarios y desarrolladores de Alfresco es bastante amplia y en constante crecimiento, esto se traduce en muchos casos, en una importante cantidad de desarrollos alrededor del software en forma de módulos, plugins, integraciones, también se mejora el software, ya que se notifican fallos y se solicitan nuevas funcionalidades.
Dicho lo anterior, voy a enumerar mis plugins, módulos o add-ons favoritos, para qué sirven y desde donde podemos descargarlos. Estos 5 son los que pienso pueden ser más útiles de forma genérica y desde mi punto de vista están muy bien enfocados. Nota: los siguientes desarrollos son válidos tanto para las versiones Community como Enterprise salvo algunas funcionalidades de Auditsurf.
Desarollado por Jared Ottley y Nathan McMinn, este módulo permite a Alfresco lidiar con ficheros PDF, podemos usarlos como acciones o en reglas y aporta características como:
-Merge: Unir varios ficheros PDF generando un nuevo PDF
-Split: Partir un fichero PDF dado un intervalo específico (2 páginas, 3 páginas, etc.), generando un PDF para cada sección.
-Split At: Partir un fichero PDF en una página específica generando dos nuevos PDFs.
-Insert PDF: Insertar un PDF en otro en una página específica.
-PDF Watermarking: Añade una marca de agua a un PDF, la marca puede ser texto o gráfico.
-PDF Encryption: Cifrar un fichero PDF.
-Digital Signatures: Permite firmar un fichero PDF almacenado en Alfresco mediante un fichero PKCS12
En Alfresco Explorer funciona muy bien y aún no funciona 100% en Share pero muy pronto estará listo.
Desarrollado por Will Abson. Este módulo es un conjunto de add-ons para Alfresco Share, algunos dashlets (componentes), temas, acciones y funcionalidades que vemos a continuación:
-Tag Cloud Dashlet
-Site Blog Dashlet
-Site Poll Dashlet
-Twitter Feed Dashlet
-Twitter Search Dashlet
-BBC Weather Dashlet
-Notice Dashlet
-Media Previews
-Red Theme
-Document Library Backup Action
-Sample Data Lists
Desarrollado por Peter Monks. Este módulo permite volcado masivo de contenidos desde un sistema de ficheros a Alfresco, en ese volcado también permite añadir algunos metadatos a los contenidos. Muy útil para migraciones desde sistemas que usan carpetas compartidas, etc.
Desarrollado por S. J. Green Baum, también he hablado por aquí de este módulo. Aunque en Alfresco Share Extras ya existe un “Media Previews”, este módulo me parece un ejemplo fantástico de lo positiva que es la colaboración en los foros.
Desarrollado por Atol gracias al soporte JMX de Alfresco Enterprise, esta aplicación permite extraer información del repositorio vía JMX y mostrarlo de forma gráfica vía web. Ya he hablado en blyx.com de esta útil herramienta.

La mayoría de desarrollos que existen para de Alfresco se pueden encontrar en Alfresco Forge, en Google Code o en Sourceforge, y por supuesto, también se publican en los foros (es / en).

Aprovecho para anotar que los partners de Alfresco realizan muchos desarrollos en sus proyectos y muchos de ellos los “productizan”, se puede ver un listado bastante completo en nuestro Alfresco Partner Showcase.

¿Tu has hecho algún desarrollo para Alfresco y quieres que lo comente por aquí?