cancel
Showing results for 
Search instead for 
Did you mean: 

Repartir documentos, Bulk import y Javascript(Regla de contenido)(Dilema '1000 reglas de contenido o solo una')

jeferz
Champ in-the-making
Champ in-the-making
Muy Buenos días

Cuando llega un documento y es Digitalizado, lo ideal sería subir esa imagen a una Carpeta Única.

Esta Carpeta Única se encargaría de repartir estos documentos de forma automática a otras carpetas finales.

Esto los hace Alfresco muy bien gracias a sus reglas de contenido (Mover).

Pero que sucede si esta carpeta le reparte documentos a mas de 100 carpetas diferentes,(100!! reglas de contenido, Vaya tarea ardua que nos espera!).

El siguiente sencillo código intento darle solución a esta tarea tan especifica.


   //Leo dos propiedades del documento que acaba de ser importado por - Alfresco Bulk Filesystem Import     
   var subserie = document.properties["documento:subserie"];      //numero
   var nombre = document.properties["documento:nombresubserie"];  //nombre

   //En base a estas dos propiedades realizo una consulta para hallar la carpeta donde Moveré el archivo   

      var nodes = search.luceneSearch('@name:"' + nombre +'" AND @title:"'+ subserie +'"');

     //Defino dos variables
     var destino = "Documentacion Interna"; //nombre la carpeta Raíz donde irá el documento(así me aseguro de la ubicación final)
   var rutaDestino="";   //Variable en la cual pondré la ruta final

//Empiezo a recorrer todos los posibles ubicaciones encontradas
   for each(var node in nodes) {

//Obtengo la ruta de la carpeta encontrada y la divido por /
      var ruta = node.displayPath;
      var espacio = ruta.split('/');

//Como se que la carpeta "Documentación Interna" quedaría en el puesto 3 siempre, empiezo a filtrar
      if(destino == espacio[3]){

//Al saber que estoy en la ubicación correcta empiezo a armar de nuevo la ruta destino
         for(var i =3; i < espacio.length; i++){
            for(var f =2; f < espacio.length; f++){
               rutaDestino += "/" +  espacio[f];
               var i = "50";
            }
         }
      }
   }

//Al tener la ruta solo necesito encontrar su referencia y mover el archivo
   rutaDestino += "/" + nombre; //agrego el nombre de la carpeta, para completar la ruta
   var refDestino=companyhome.childByNamePath(rutaDestino);  //Encuentro la refenrencia

//Finalmente muevo el documento
   document.move(refDestino);


Si bien el anterior código funciona muy bien, solo funciona cuando primero subo los documentos a través de Bulk import (con la opción des-habilitar reglas), y luego le doy Re-aplicar reglas de contenido, lo cual le quita automatización al asunto.

lo cual nos haría pensar, que primero sube los documentos, ejecuta la regla de contenido (no encuentra nada) y finalmente sube las propiedades de los documentos. Pero al parecer no es así, ya que con ciertas carpetas si funciona al momento de subir los documentos, sin  necesidad "Re-aplicar" la regla de contenido (lo cual nos deja como principal sospechoso la Búsqueda en lucene de la carpeta).

Espero este código les sea de utilidad y espero ansioso sus comentarios en especial si conocen alguna forma de solucionar el inconveniente de Re-aplicar la regla de contenido, (tal vez ejecutar un Webservice que re-aplique las reglas de contenido de cierta carpeta o alguna forma de hacer que la regla de contenido espere determinado tiempo para ejecutarse)


4 REPLIES 4

antoniosoler
Champ in-the-making
Champ in-the-making
Que sistema de indices tienes configurado, Lucene o Solr, lo digo por que Solr puede llevar un retraso de hasta 15 segundos en sistema, si se dispara la regla antes de que solr hay indexado todos los metadatos puede que tu busqueda:

var nodes = search.luceneSearch('@name:"' + nombre +'" AND @title:"'+ subserie +'"');

no obtenga ningun resultado (ya que el titulo no esta aun indexado, pon un logger.warn en esas lineas para ver que te esta encontrado… ).


jeferz
Champ in-the-making
Champ in-the-making
Actual mente estoy utilizando lucene. no he probado por ner un logger.warn, para hacerlo debería cambiar algo a modo debug ?
Al parecer ya funciona pero, no lo he probado aun con muchos documentos.

La solución fue crear un aspecto y aplicárselo a todas las carpetas, y en este campo, en vez de guardar por ejemplo un "1.2", he guardado un "1-2", al parecer el "." era lo que dificultaba la búsqueda.

Eh mejorado un poco el código

<java>

var subserie = document.properties["documento:subserie"];
var destino = "Documentación Interna";
var rutaDestino="";

var nodes = search.luceneSearch('TYPE:\"cm:folder\" AND @documento\\:idcarpeta:\"'+ subserie +'\"');

for each(var node in nodes){

  var ruta = node.displayPath;
  var espacio = ruta.split('/');
 
  if(destino == espacio[3]){
    var nombre = node.properties.name;
 
    for(var f =2; f < espacio.length; f++){
      rutaDestino += "/" +  espacio[f];
    }   
  }
}
rutaDestino += "/" + nombre;
var refDestino=companyhome.childByNamePath(rutaDestino);
document.move(refDestino);
</java>


Gracias

antoniosoler
Champ in-the-making
Champ in-the-making
Actual mente estoy utilizando lucene. no he probado por ner un logger.warn, para hacerlo debería cambiar algo a modo debug ?


No, simplemente puedes poner, logger.warn("Procesando documento :" + node.properties.name)  y te saldra en el alfresco.log y el catalina.out el mensaje.

Te recomiendo que para este tipo de desarrollos le eches un vistazo a la JavascriptConsole de Florian Maul, es realmente util poder desarrollar en vivo y ejecutar… Smiley Happy

jeferz
Champ in-the-making
Champ in-the-making
Ya he desplegado el JavascriptConsole, realmente es muy útil. gracias a ese .jar, puede implementar el código "Sudo", solo tuve que reemplazar todo lo que tenia dentro.

Una pregunta rápida:
he estado haciendo pruebas con Alfresco sobre CentOS, instalándolo manualmente.
He instalado MySql y Tomcat en CentOS, y desplegado los .war.
También instale el ImageMagick, libreoffice, FFMPEG, ttf-mscorefonts-installer y el SwfTools,
luego configure el alfresco-properties, y puse las rutas para cada uno de los complementos anteriores
Inicio Alfresco funciona, luego instalo los amps  alfresco-community-spp-4.2.c.amp, alfresco-googledocs-repo-2.0.1-14.amp y alfresco-googledocs-share-2.0.1-14.amp (Eh notado que son los que vienen por defecto)

Debo hacer algún tipo de configuración ademas de la anterior para tener la misma funcionalidad del Alfresco que se instala con el "instalador"
Ya que en este, no puedo crear documentos (doc.ppt), tampoco los puedo visualizar. pero mas importante aun, no puedo visualizar los .html .xml o simplemente los de texto plano. los pdf .tiff si funcionan

Si tiene algún link con información acerca de la configuración pos-instalación, me seria muy útil




Gracias