AnsweredAssumed Answered

Script para reparto de archivos en carpetas

Question asked by vlopez on Nov 20, 2009
Latest reply on Nov 20, 2009 by venzia
Por supuesto, este código no es perfecto y menos teniendo en cuenta de donde proviene (no soy programador), y es muy mejorable, por lo que agradecezco cualquier sugerencia.
Hay algunas cosas que es necesario aclarar y resumir:

    * La carpeta Clientes debe incluir la Carpeta que yo llamo Registro de Entrada que es la carpeta a la que se le aplica la regla.
    * La carpeta Registro de Entrada contiene otra carpeta que llamo pendientes, que es donde se incluirán aquellos archivos mal nombrados o cuya carpeta de cliente no exista.
    * De la carpeta Clientes cuelgan todas las carpeta de clientes que se identifican por [Código de 6 dígitos][Nombre del cliente], sin espacios entre el código y el nombre del cliente. Aunque de cara al script el nombre de la carpeta da igual porque como se ve a continuación se emplea el campo descripción.
    * Cada carpeta de un cliente debe tener como descripción Cliente [Código de 6 dígitos], con un espacio entre Cliente y código, que es el campo por el que realmente se realiza la búsqueda, y que como dijo Javier evita la codificación a ISO 9075, ya que ésta solo se aplica al nombre de la carpeta.
    * Los nombre de archivos se codifican comenzando siempre por el código del cliente, es decir, [Código de 6 dígitos][texto libre].
    * He hecho pruebas en dos Alfresco distintos (2.9 y 3.2), si bien, esto puede ser un problema de cara a la sintáxis de Lucene, creo que el problema me lo daba realmente que en la versión 2.9 el directorio de almacenamiento era variable y no fijo (el famoso dir.root). Aunque esto no lo puedo asegurar del todo.
    * Por otra parte con las funcionalidades propias de Alfresco se solventan otra serie de cosas, como la introducción de dos archivos con el mismo nombre en la misma carpeta, o la existencia de dos carpetas con el mismo campo descripción. En el primer caso, si la inclusión de documentos se realiza a través de la interfaz web, Alfresco lanza un error, si se hace a través de CIFS, lo pasa a la carpeta pendientes (esto último no lo he testado suficientemente). En el caso de que existan dos carpetas con la misma descrición, Alfresco introduce el documento en la primera carpeta con el mismo nombre que encuentre, que será aquella que primero se creó en el tiempo.

Este script creo que supone en si un modelo de organización de al menos una parte de cualquier empresa, puesto que si existe un sistema de codificación de los nombre de archivos y de los nombres de carpetas, la distribución de documentos es una tarea automatizada, y que además implica incrementar el grado de seguridad y confidencialidad, ya que aquellos que se encargan de la introducción de documentos de forma masiva (el registro de entrada), no tienen porqué tener acceso a las carpetas de los clientes, eliminando problemáticas de actuaciones por mala fe, o por descuido, y limando las responsabilidades sobre la documentación de cada cliente (esto no es superfluo, tal y como están las cosas en lo relativo a la LOPD, y tal como se van a poner).
En fin, espero que le sea útil a más gente, y al que le valga que por favor le mande el agradecimiento a Javier Martínez.
El script:

var documento   = document.name;
var codigo = documento.substr(0,6);
var nombre = "Cliente "+codigo;
var pendientes = space.childByNamePath("pendientes");
var carpetacliente = search.luceneSearch("+PATH:\"/app:company_home/cm:Clientes//*\" AND TYPE:\"cm:folder\" AND @cm\\:description:\""+nombre+"\"");

if (carpetacliente[0]!= null)
  {
     if(carpetacliente[0].hasPermission("CreateChildren"))
      {
        var copy = document.move(carpetacliente[0]);
        if (copy != null)
      {
          document.name = documento;
         document.save();
       }
      }
     }
else
{
  var copy = document.move(pendientes);
   if (copy != null)                                  
     {
    document.name = documento;
    document.save();
     }
}

Outcomes