La
consola de Javascript de Alfresco Share conforma una herramienta
precisa y eficaz, no sólo para desarrolladores de aplicaciones y
servicios via API Javascript y webscripts de Alfresco Share, sino para
otro tipo de tareas de mantenimiento de sistema, proporcionando una
potente shell con acceso a la información de nuestra instancia de
Alfresco via Javascript API.
La ultima versión de la consola de
Javascript disponible en el paquete Share Extras permite además el
acceso a los métodos de los principales objetos mediante la
combinación de Ctrl+Space. Esta empaquetada en un simple jar que se
añade al directorio tomcat/shared/lib de la instancia de alfresco.
A continuación muestro algunos ejemplos sencillos que pueden
ser interesantes en el contexto de una migración entre instancias de
Alfresco y que implementan busquedas en el repositorio.
El primer ejemplo permite exportar las categorias de una instancia a
un CSV (para hacer una carga posterior en otra instancia de Alfresco
via javascript API tambien):
var nodes = search.luceneSearch("PATH:"cm:generalclassifiable//*""); for each(n in nodes) { print(n.nodeRef + ";" + n.displayPath + '/' +n.name); }
También es posible facilmente exportar los usuarios a un CSV, que es
interesante en el contexto de una migración de una instancia de
Alfresco a otra, utilizando el
componente de importación de usuarios CSV de Share:
var nodes = search.luceneSearch("TYPE:"cm:person""); for each(n in nodes) { print(n.name+';'+n.properties["userName"]+';'+n.properties["email"]); }
Para esto también hay otros procedimientos:
http://code.google.com/p/share-import-export/
https://forums.alfresco.com/en/viewtopic.php?f=9&t=18732
Otra tarea similar atiende a los grupos de usuarios:
var nodes = search.xpathSearch("/sys:system/sys:authorities/*"); for each(n in nodes) { var aux = n.children; var users = "" for each(m in aux) { users = users + m.properties["userName"] + "," } users = users.substr(0,users.length-1); print(n.properties["authorityName"]+";"+users+";"+n.nodeRef) }
Para extraer las referencias de los nodos de los documentos del
repositorio se pueden invocar funciones recursivas como:
recurse(space, function(node) { if (node.type != "{http://www.alfresco.org/model/content/1.0}folder"){ print(node.nodeRef+";"+node.displayPath + "/" + node.name); } });
que se pueden utilizar para reports de permisos como se hace en:
http://www.techbits.de/2011/11/06/using-the-javascript-console-permission-reporting/
o para precargar una estructura de objetos documentales:
http://www.techbits.de/2011/10/18/using-the-javascript-console-creating-and-populating-datalists/