martes, 28 de diciembre de 2010

Importación masiva de documentos en Alfresco

Una de las cuestiones habituales en los proyectos de implantación de un gestor documental es la carga inicial de documentos o la migración de los mismos desde el sistema documental anterior. En el caso de Alfresco hay varias alternativas para encarar este problema.
Los clientes web de Alfresco ofrecen un conjunto de herramientas para la gestión documental muy amplio y cómodo para los usuarios pero presentan una importante carencia cuando se trata de cargar grandes volúmenes de documentos. Alfresco Explorer sólo permite la importación de ficheros .acp, que es un formato propio de Alfresco y sólo se puede generar desde otro sistema Alfresco. Alfresco Share ofrece un mecanismo de upload de múltiples ficheros pero no es práctico para mucho ficheros no para estructuras más complejas (carpetas).
La solución habitual para cargar una gran cantidad de documentos en Alfresco es utilizar alguna de las interfaces de acceso proporcionadas por el servidor JLAN que lleva incorporado. Normalmente, en sistemas Windows, se opta por la interfaz CIFS o por la WebDAV, y en otros sistemas se utiliza FTP. Estas soluciones permiten utilizar estratégias más finas para la carga de documentos pero requieren de un esfuerzo de desarrollo considerable y en algunos casos el rendimiento puede no ser el mejor.
Hay una tercera vía que es la utilización de herramientas de importación como OpenMigrate o alfresco-bulk-filesystem-import. Detrás de este nombre tan largo se encuentra una solución sencilla y elegante que permite cargar documentos y metadatos de una forma eficiente y con poco coste.
alfresco-bulk-filesystem-import
Esta herramienta se distribuye como un fichero AMP de Alfresco por lo que instalarla es muy sencillo. Es suficiente con:
1. Descargarse el módulo adecuado a la versión de Alfresco y copiarlo en /amps
2. Ejecutar el comando apply_amps en la raíz del Alfresco.
Este módulo permite cargar toda un estructura de ficheros (documentos y carpetas) de un disco en un espacio de Alfresco, respetando la estructura original. Además permite también cargar metadatos asociados a los documentos importados. Cómo funciona esta carga de metadatos es bien sencillo. Primero hay que crear un fichero de metadatos para cada documento que se vaya a importar. Este fichero se ha de llamar exactamente igual que el fichero del documento añadiendo la extensión .metadata.properties. Por ejemplo, si el documento se llama my_document.docx el fichero de metadatos se tendrá que llamar my_document.docx.metadata.properties.
La estrucutra interna del fichero de metadatos sigue la estructura de los fichero de propieades de Java. Primero hay que incluir una referencia al tipo que queremos que tenga el documento cuando se cargue, luego la lista de aspectos que hay que añadir al documento y por último cada una de las propiedades que queramos añadir, siempre respetando el formato de QName. Por ejemplo:
type=cm:content
aspects=kb:article
kb\:articletype=FAQ
kb\:status=Draft
Este ejemplo importa un documento de tipo cm:content, le añade el aspecto kb:article e informa dos propiedades kb:articletype y kb:status.
Hay algunas limitaciones a la hora de definir metadatos como que no están soportadas las propiedades multivaluadas o las asociaciones y que el formato de las fechas ha de cumplir el estándar ISO8601.
La ejecución del módulo se hace a través de un webscript que está disponible en la URL http:///alfresco/service/bulk/import/filesystem . Este webscript tiene tres parámetros:
- Import directory: que es el directorio donde se encuentra la estructura de ficheros que hay que importar. Ha de ser un directorio local al Alfresco.
- Target space: que es el espacio de Alfresco donde se va a importar la documentación. El webscript lleva incorporado una ayuda contextual que facilita la elección del espacio destino.
- Update existing files: que es un flag que indica si está permitido modificar documentos en caso de que ya existan en la carpeta destino.
El resultado de la importación se muestra como un cuadro resumen que informa del número de documentos y carpetas creados, el tiempo empleado y los fallos, si los hubiera.

8 comentarios:

Antonio Miguel dijo...

Alejandro,

estoy iniciándome con Alfresco y una de las primeras piedras con las que me he tropezado es la de la carga masiva de documentos.

He estado estos últimos días probando el módulo bulk import filesystem.

Obviando algunas limitaciones, cómo la de que no se puedan cargar multivalores en los metadatos (aunque en la incidencia http://code.google.com/p/alfresco-bulk-filesystem-import/issues/detail?id=20 se propone una solución temporal para esto), el módulo resulta bastante útil.

Pero me estoy encontrando con problemas a la hora de cargar categorías (elementos cm:taggable). Por lo que he visto para cargar las categorias hay que usar el NodeRef de la categoría, pero no se como averiguar cual es el NodeRef de las categorías que he creado en mi Alfresco.

¿Sabrías decirme como obtener el NodeRef de una categoría?

Gracias

Cristina Martín dijo...

Buenas Antonio Miguel.

Para saber el nodeRef, vete a la consola de administración en alfresco, pincha en explorador de nodos, selecciona la penúltima opción (la de workspace). Una vez carque, en el desplegable que por defecto pone nodeRef, selecciona lucene e introduce la siguiente query: +TYPE:"cm:category" +PATH:"cm:generalclassifiable//*" +@cm\:name:"Nombre_Categoria" Y encontrarás la categoría que buscas, ahí te vienen todas las propiedades de ese nodo, entre ellas el nodeRef ;)

Si quieres que te saque un listado de todas las categorias que tiene tu alfresco quitale el cm:name para que no te filtre por el nombre y listo ;)

Un saludo!!

Victor Manuel Gomez dijo...

Hola buen dia a todos...

Tengo un problema con el modulo "alfresco-bulk-filesystem-import", lo que pasa es que al subir algun archivo con su archivo de metadatos no me reconoce los metadatos...

Necesito saber cual es mi problema, si estoy haciendo mal algo...

Alguien tiene idea por que no me los reconoce? se los agradeceria muchisismo.

Alejandro Ugartondo dijo...

Hola Victor Manuel

El fichero de metadatos está en la misma carpeta que el documento y tiene el nombre que le corresponde? Has utilizado metadatos estándar de Alfresco o los has definido a medida?

Victor Manuel Gomez dijo...

Hola Alejandro Ugartondo,

Gracias por contestar, y ya pude subir el archivo con sus metadatos.

Estoy utilizando metadatos a medida, pero tengo un problema, al intentar buscar por esos nuevos metadatos no me busca nada, solo por los metadatos estandar de alfresco, tienes alguna idea de como resolver mi problema.

Fernando dijo...

Hola, hay la posibilidad de hacer esa importación pero teniendo un archivo .txt y q los campos se encuentren separados por comas?

Alejandro Ugartondo dijo...

Fernando, te refieres a usar algo estilo CSV para subir metadatos? Sé que se pueden importar usuarios utilizando un CSV pero no me suena que haya nada parecido para los documentos

Daniel Nicolás Gil Romero dijo...

Hola, ¿alguien sabría al hacer una subida masiva de documentos, que se les añadan las etiquetas que queramos a un grupo y no tener que hacerlo uno a uno?
un saludo.