Script para Regla de contenido en Alfresco Community 2.1.0

cancel
Showing results for 
Search instead for 
Did you mean: 
vlopez
Member II

Script para Regla de contenido en Alfresco Community 2.1.0

Saludos.
Como se puede sospechar esta instalación de Alfresco tiene 14 años, durante todo este tiempo ha estado funcionando perfectamente y actualmente sigue funcionando.
La forma de organizar los contenidos es sencilla:
- Existe un espacio llamado Clientes dentro del cual están los espacios de cada uno de los clientes. El nombre de cada espacio de cliente está compuesto por un Código de 6 dígitos mas el nombre del cliente.
Por ejemplo: 256500 Apellido1 Apellido2 , Nombre del cliente.
- También existe un espacio llamado Registro de Entrada en el que los usuarios depositan todos los documentos de los clientes. Estos documentos se nombran con un sistema de codificación que siempre empieza por el Código del cliente (6 dígitos).
En este espacio (Registro de Entrada) hay una regla de contenido que extrae los 6 primeros dígitos del nombre del documento, hace una búsqueda de espacios de clientes, y si hay coincidencia en el código de 6 dígitos entre el nombre del documento y el nombre del espacio de cliente entonces copia (mueve) el documento al espacio del cliente y lo quita del Registro de Entrada.
En caso de no localizar el espacio que coincida envía el documento a una carpeta llamada Pendientes que se encuentra dentro del espacio Registro de Entrada.
Es una regla de entrada que se aplica a todo el contenido y que ejecuta un script cuyo código es el siguiente:

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();
     }
}

La cuestión es que queremos modificar este script para que en lugar de extraer los primeros 6 dígitos del nombre del documento y localizar el espacio del cliente, lo haga por los 4 primeros, dejando los dos últimos dígitos para otro tipo de procedimiento pero ya dentro de la carpeta (espacio) del cliente.
Obviamente hemos hecho la prueba de modificar la variable "codigo" cambiando documento.substr(0,6) por documento.substr(0,4) pero no funciona. Pongo un ejemplo:
- Tengo el Espacio 256500 Apellido1 Apellido2 , Nombre del cliente
- Incluyo en Registro de entrada los documentos 256500T12022IP.pdf y 256501T12022HH.pdf (En el primero coinciden los 6 dígitos, pero en el segundo sólo los 5 primeros y con 4 debería ser suficiente)
El resultado es el mismo si aplico el script con la variable codigo = documento.substr(0,6) que si aplico el script con la variable documento.substr(0,4). El documento 256500T12022IP.pdf es movido al espacio del cliente y el documento 256501T12022HH.pdf es movido a la carpeta pendientes.

No soy experto en javascript, pero creo que no hay mucho más que modificar en el código para poder emplear sólo cuatro dígitos.
Otra cosa que he observado es que si realizo una búsqueda por 6 dígitos Alfresco si localiza el espacio del cliente, pero si busco por 4 no. No se si existe algún parámetro de configuración para la búsqueda, ya que he probado a crear un espacio usando la plantilla pero en lugar de 6 dígitos usando 4 y me deja, por lo que no entiendo muy bien por qué en la búsqueda hay que incluir los 6 dígitos.
Tampoco sé con exactitud si Alfresco cuenta con algún tipo de memoria Caché o similar.

¿alguien puede ayudarme al respecto?