En Alfresco se puede producir un problema si se activa CIFS y la edición en línea para crear y modificar documentos en MS-Office.
Problema:
Cuando se crea o modifica un documento en Word/Excel, Alfresco asigna el aspecto “ownable” con el valor de “owner” a null. Esto provoca que si dentro del espacio de trabajo, el usuario que lo ha creado o modificado tiene el rol “Editor”, no se puede borrar (no aparece el icono de la papelera ni se puede invocar a la acción de borrar).
Investigando un poco vemos que efectivamente al documento creado desde Word en la carpeta compartida de CIFS que controla Alfresco se le asigna el aspecto con el valor “owner” a null.
Este efecto puede observarse mejor en el explorador de nodos.
Entorno:
– Alfresco ECM 3.3.5
– RedHat 5
– MySQL 5
– Autenticación: Kerberos+SSO (Active Directory)
Solución:
He creado dos soluciones con scripts en JavaScript. Una de ellas lo que hace es eliminar el aspecto directamente y la segunda lo que hace es asignar el valor del campo “creator” al campo “owner” del aspecto “ownable”.
Ambas soluciones son válidas y solo hay que elegir la que mejor venga en cada ocasión. En mi caso, la primera es quizás más acorde con el funcionamiento normal del Alfresco, ya que al subir un nuevo documento, este no asigna nunca el aspecto “ownable”.
Implementación:
Tanto una como otra solución consisten en scripts en JavaScript que tienen que ser llamados por ejemplo desde una regla asignada al espacio donde se crean los documentos directamente en Word vía unidad compartida con CIFS. Deben crearse dos reglas, una para los nuevos documentos y otra para cuando sean modificados.
Scripts:
Fichero: removeAspect_ownable.js
if (document.properties[“cm:owner”] == null)
{
logger.log(“Eliminando owner vacío para el documento “+document.properties[“name”]);
document.removeAspect(“cm:ownable”);
}
Fichero: creatorToOwner.js
if (document.properties[“cm:owner”] == null)
{
logger.log(“Asignando “+document.properties[“cm:creator”]+” al owner vacío para el documento “+document.properties[“cm:name”]);
document.properties[“cm:owner”] = document.properties[“cm:creator”];
document.save();
}
De esta forma, queda solucionado este problema hasta que sea solucionado por parte de Alfresco en siguientes versiones.
Más información:
JavaScript API para Alfresco: http://wiki.alfresco.com/wiki/JavaScript_API
Reglas y acciones en Alfresco: http://wiki.alfresco.com/wiki/Actions_and_Rules
Crear reglas y acciones (en Share): http://www.youtube.com/watch?v=1NL8a-6dU7Y