Bloggers recientes

 

[ Blog ]
[ Wiki ]
[ Slideshare ]
[ Twitter ]
[ YouTube ]
Cesar Capillas Mensajes: 153
Estrellas: 7
Fecha: 18/08/14
Gustavo Fernandez Mensajes: 62
Estrellas: 7
Fecha: 12/05/14

Archivo

Tags

noBlogo - El blog de zylk.net

Procesos de importación masiva de datos en Alfresco con Filesystem Bulk Import
Uno de los procesos más usuales en la implantación o migración de un gestor documental es la carga de contenidos. Esta carga (inicial o no) puede requerir desplegar una estructura de espacios y documentos en Alfresco, y en casos avanzados de una migración de sus permisos (de owner y heredados), metadatos y versiones. Una herramienta que viene de serie con Alfresco es el módulo de importación de Filesystem Bulk, que permite migrar datos desde unidades locales en el servidor, estructuras de directorios y documentos a través de unos servicios REST expuestos por el módulo. Los tiempos de carga son realmente mejores que mediante cualquier otro método basado en CIFS, Webdav o via API (como CMIS o WS) o incluso ACPs (Alfresco Content Package).
 
La importación se realizar a través de un webscript en la url:
 
http(s)://alfrescoserver/alfresco/service/bulkfsimport
 
donde se especifican principalmente:
  • El directorio de contenidos a importar (Import directory): Directorio local del servidor a importar.
  • El espacio objetivo (Target space): Espacio de Alfresco o nodo de Alfresco donde se va a importar la estructura local especificacda. Dispone de una búsqueda live query de espacios sobre el repositorio.

Dispone de opciones para:

  • Deshabilitar las reglas de contenido.
  • Reemplazar los archivos, que indica si está permitido modificar documentos en caso de que ya existan en la carpeta destino.
  • El tamaño del batch en una transacción (tipicamente el número de cores *2 = p.ej 4)
  • El número de hilos paralelos a ejecutar durante el proceso (por ejemplo 100). Si hay un error fallará todo el batch.

Se puede ejecutar via el formulario o incluso via curl. Hay ciertas restricciones como comenta la documentación del módulo.

  • No hay soporte de AVM.
  • Sólo un import puede hacerse cada vez (debido al JobLockService).
  • El acceso a la herramienta de importación está restringida a los administradores de Alfresco y no a los usuarios potenciales del ECM. 
 
Os dejo algunas recomendaciones a la hora de hacer una importación:
 
- Parametrizar el alfresco-global.properties para que no haga esfuerzos durante las cargas.
 
# ECM content usages/quotas
system.usages.enabled=false
system.enableTimestampPropagation=false
 
- Parametrizar los batches de carga (también se especifican en el formulario).
 
# Numero de threads: numero de cores * 2 
bulkImport.batch.numThreads=4 
# Tamaño del batch
bulkImport.batch.batchSize=100
 
- Configurar el logger de la carga en el custom-log4j.properties en el directorio extension para obtener más información sobre la carga realizada y los errores:
 
log4j.logger.org.alfresco.repo.batch.BatchProcessor=info
log4j.logger.org.alfresco.repo.transaction.RetryingTransactionHelper=info
 
- Minimizar los postprocesos cuando sea posible, porque no van a ser lo adecuado de cara al rendimiento. Por ejemplo, reglas de contenido que realizan transformaciones de determinados espacios.
 
- Deshabilitar SOLR durante la carga: Cada 15 segundos el tracker de SOLR está indexando los contenidos por defecto, y esto hace el proceso más lento. Para ello es necesario editar los archivos solrcore.properties y setear la variable enable.alfresco.tracking a false. Tambien se puede hacer via JMX o Alfresco Share Admin Console.
 
- No dejar que se actualice continuamente la página de status del proceso. Aunque es interesante en la actualización continua del proceso se puede perder algo de rendimiento.
 
- Si los procesos de carga son continuos, puede ser adecuado montar un servidor dedicado de carga que no interfiera con el servicio de los usuarios.
 
- Cuando el proceso de bulk acaba puede ser necesario comprobar los nodos con un script como este (tambien es posible obtener más información sobre esto aquí).
 
- Puedes migrar metadatos a través ficheros XML adjuntos en la estructura de documentos y carpetas. Incluso es posible trasladar aquellos que tienen que ver con el aspecto auditable de Alfresco (nombre, creador, fechas de modificación), lo cual es muy interesante. Con los ACPs también es posible pero no mediante métodos de carga basados en APIs CMIS, REST o WS. 
 
- Para la versión Enterprise también existe un modo inplace (en vez del comentado streaming en donde el repositorio ya esta consolidado). 
 
Por último recordar que muchos de los errores habituales en las cargas estánrelacionados con el juego de datos de origen: por ejemplo, con los encodings de los ficheros, con los permisos de acceso, con documentos corruptos cuyo mimetype no coincide con su extensión, con documentos de tamaño cero, o con documentos y carpetas ocultas en el directorio origen. También apuntar que rsync es tu amigo a la hora de sincronizar un determinado contenstore vivo con el directorio de importacion en nuestro servidor.
Consejos a la hora de implantar Alfresco ECM

Os dejo aquí algunos consejos a la hora de implantar Alfresco antes de cogerme unos días de vacaciones.

  • Utiliza siempre un Stack certificado de Alfresco Enterprise (o la plataforma soportada más cercana). Si puedes o tienes que elegirlo, a pesar de la multitud de opciones que tienes en una arquitectura java, elige aquel que está más probado y testado por la comunidad (en el caso de Alfresco Community) o el más utilizado en proyectos y entornos productivos (en el caso de Alfresco Enterprise consulta con tu partner). Personalmente prefiero trabajar en Alfresco con Tomcat que con Jboss, con la JVM de Sun antes que con la de IBM, o con Mysql o Oracle, en vez de DB2 o SQL Server. En la elección del stack intervienen muchos factores como el coste de licencias, infraestructura existente o el equipo de soporte. Existen entornos gubernamentales y de empresa en que el stack completo debe estar licenciado, en alta disponibilidad de cada una de sus partes y con soporte de la matriz. En otros la premisa será ajustar al máximo el presupuesto o ajustarse a lo que ya tienen en la casa.
  • Revisa tu implantación con un test de validación EVT para obtener información de la instalación, recursos de hardware, sistema operativo, JVM, base de datos, software de terceros. Este test te dará unas pautas básicas sobre la instancia. En este artículo de Toni te cuenta algo más.
  • Plantea una solución de disco escalable y adecuada para tu entorno de Alfresco. En primera aproximación plantea soluciones de disco basadas en SAN, descartando soluciones NAS, y con un acceso rápido de lectura/escritura en disco a través de protocolos como CIFS o NFS. En ciertos entornos de alta disponibilidad, puedes necesitar además de un cluster de filesystem OCFS, GFS o incluso GlusterFS.
  • En la implantación de una infraestructura de cluster, ten en cuenta que una cosa es un cluster del repositorio de Alfresco, y otra cosa muy distinta un cluster de Alfresco Share.
  • Define claramente los casos de uso de tu repositorio, por ejemplo, Alfresco como intranet colaborativa, sistemas de unidad compartida, repositorio de documentos para aplicaciones, repositorio de imágenes y vídeos. No habilites todas las capacidades, canales de entrada y servicios de Alfresco en el minuto uno si no los vas a utilizar, por ejemplo el auditado o los sistema de cuota de usuario. Esto hará que tu sistema tenga un mejor rendimiento y mejor parametrización con respecto al servicio que tiene que dar.
  • Centraliza la configuración de Alfresco en el directorio de extensiones de manera que en ningún caso se hagan modificaciones por debajo de WEB-INF. Intenta centralizar la configuración en el  alfresco-global.properties y utiliza la consola JMX para reiniciar los subsistemas de Alfresco, o para lanzar ciertas tareas programadas o trabajos típicos del administrador de Alfresco. Edita los valores de las propiedades de Alfresco via JMX sólo cuando sea estrictamente necesario. Para saber qué es parametrizable y configurable en Alfresco out of the box, bucea por los archivos de properties por debajo de WEB-INF o bien a partir de un dump JMX.
  • Configura un frontal que haga de proxy java y balanceo a las peticiones de Alfresco. Cuando puedas separa las instancias de Share y del repositorio, tanto en desarrollo como en producción. Separarás las capas (aplicación y repositorio) y mejorarás seguramente el rendimiento sobre todo si los recursos del repositorio son escasos. Lo mismo con respecto a SOLR (aunque esto pueda tener costes de licencia).
  • A la hora de programar utiliza las APIs, estrategias y arquitecturas más alineadas con el producto, como CMIS o REST / Webscripts.
  • Utiliza un sistema de control de versiones como subversion, para guardar el código de tus desarrollos y la configuración de tus instancias, y un gestor de despliegues como Jenkins para desplegar componentes de Alfresco en múltiples entornos de manera sistemática. Si vas a utilizar módulos de Alfresco, utiliza los más testados y conocidos posibles.
  • Parametriza y dimensiona bien los recursos JVM que le das a tus instancias.

Ha quedado un poco ladrillo pero espero que os sirva un poco en vuestras nuevos proyectos con Alfresco.

--C.

Performing a full reindex with Solr for Alfresco ECM

In a shell script:

#! /bin/bash
 
export ALF_HOME=/opt/alfresco
export SOLR_HOME=/opt/alfresco/alf_data/solr
 
$ALF_HOME/alfresco.sh stop
 
sleep 10
 
rm -rf $SOLR_HOME/workspace/SpacesStore/*
rm -rf $SOLR_HOME/archive/SpacesStore/*
rm -f $SOLR_HOME/workspace-SpacesStore/alfrescoModels/*
rm -f $SOLR_HOME/archive-SpacesStore/alfrescoModels/*
 
$ALF_HOME/alfresco.sh start
 

https://docs.alfresco.com/4.1/tasks/solr-reindex.html

Dokufinder CMIS Demo

The demo for dokuFinder (elFinder CMIS client for Alfresco ECM) is available online

You can ask for demo credentials here.

Links:

More about JMXTerm and Alfresco
One of the multiple possibilities for JMXTerm client is scripting for defined tasks in your Alfresco Enterprise Server (as pointed out in the previous post). Let's check it with some simple examples. Consider the next shell script called (run-jmx.sh) 
 
#!/bin/bash
java -jar jmxterm-1.0-alpha-4-uber.jar -l service:jmx:rmi:///jndi/rmi://localhost:50500/alfresco/jmxrmi -p change_asap -u controlRole -i $1
 
And then the following text file (show-users.jmx)
 
domain Alfresco
bean Alfresco:Name=RepoServerMgmt
get UserCountAll
run listUserNamesAll
close
 
The result is something like:
 
$ ./run-jmx.sh show-users.jmx
 
Welcome to JMX terminal. Type "help" for available commands.
#domain is set to Alfresco
#bean is set to Alfresco:Name=RepoServerMgmt
#mbean = Alfresco:Name=RepoServerMgmt:
UserCountAll = 3;
 
#calling operation listUserNamesAll of mbean Alfresco:Name=RepoServerMgmt
#operation returns: 
[ admin, zylk, alfresco ]
#disconnected
 
You can prepare then other useful jmx scripts such as (ldap-resync.jmx)
 
domain Alfresco
bean log4j:logger=org.alfresco.repo.security.sync
set priority DEBUG
bean Alfresco:Category=Synchronization,Type=Configuration,id1=default
run stop
run start
bean log4j:logger=org.alfresco.repo.security.sync
set priority INFO
close
 
Finally you also may use it for monitoring purposes, for example, for a nagios monitoring (in the same way that Alfresco Nagios Icinga plugin does it with check_jmx.jar).
 
Some references of this are:
Mostrando el intervalo 1 - 5 de 244 resultados.
Resultados por página 5
de 49