cancel
Showing results for 
Search instead for 
Did you mean: 

Carácteres comodín en Alfresco

vlopez
Champ in-the-making
Champ in-the-making
Saludos.

Estamos intentando automatizar determinadas tareas para repartir documentación subida en bloque en función de su nombre de archivo.
Los nombres de archivos están codificados de tal manera que se asignan seis dígitos al código del cliente, dos dígitos al tipo de documento, y el resto se deja como texto libre. De este modo un archivo quedaría codificado del siguiente modo "005343COprestamo.doc", por ejemplo.
La idea es disponer de una carpeta de entrada donde se depositen los archivos, en esta carpeta definiremos tantas reglas como clientes tengamos. Así se establecerá como condición nombre de arhivo 005343*, si cumple la condición el archivo será movido al espacio 005343Cliente Fulanito.
Dentro del espacio de cada cliente existirá una estructura de Subespacios donde se almacenarán los diferentes tipos de documentos. Y en el espacio de cada cliente crearemos reglas que permitirán distribuir el contenido procedente de la bandeja de entrada en función también del nombre del archivo. Es decir, la idea es que si en la carpeta del cliente entra el documento "005343COprestamo.doc", la regla determina que el modelo es CO=contrato y lo envía al subespacio Contratos.
Pues bien el problema es el carácter comodín. Para definir esta regla tendríamos que establecer como condición que el nombre del archivo contenga CO, pero claro si establezco *CO*, me encuentro que no solo me localiza CO dentro del nombre del archivo, sino que también cumplen esa condición los archivos que comiencen por CO o que finelicen en CO, con lo que puedo tener problemas en la clasificación.
Mi pregunta es ¿qué otros carácteres comodín puedo emplear para que sólo me busque CO dentro del nombre y no al principio o al final?, o mejor ¿existe alguna forma de decirle que CO tiene que ocupar la posición 7 y 8?.

Gracias de Antemano.
10 REPLIES 10

venzia
Star Collaborator
Star Collaborator
Hola Tini!, para eso tienes el wildcard "?" .. haz una prueba con lo siguiente :
Basándonos en el ejemplo que pones "005343COprestamo.doc" la condición quedaría asi : ??????CO*
En el quicksearch de alfresco funciona perfectamente.
Espero que te sirva.
Saludos y suerte!

vlopez
Champ in-the-making
Champ in-the-making
Javier…porque tu apellido es Martínez y no López…sino pensaría que eres Superlopez..por aquello de la supervelocidad…jajajajja…
Probaré y te cuento.

pjcaracuel_2349
Confirmed Champ
Confirmed Champ
buenas,

Lo mismo me meto donde no me llaman pero….

La idea es disponer de una carpeta de entrada donde se depositen los archivos, en esta carpeta definiremos tantas reglas como clientes tengamos. Así se establecerá como condición nombre de arhivo 005343*, si cumple la condición el archivo será movido al espacio 005343Cliente Fulanito

No seria mejor establecer una unica regla que ejecute un script y en el incluyes la logica para mover los documentos? Lo digo porque yo en su dia opte por esa via y es mucho mas manejable y entiendo que tambien mas eficiente. Eso de mover a un espacio y evaluar una regla para que mueva a otro, almenos en nuestro caso se detecto que tardaba bastante.

Saludos

vlopez
Champ in-the-making
Champ in-the-making
Saludos Pedro.

Como decimos por aquí (porque somo paisanos) "quillo" como me dices eso de "meterme donde no me llaman", cualquier post siempre es bienvenido  Smiley Very Happy .
La solución que propones es seguramente la más rápida, cómoda y fiable, el problema es que yo no soy programador y no se desarrollar ese script. De todas formas siempre es de agradecer la colaboración, y por ello te lo agradezco sinceramente.

vlopez
Champ in-the-making
Champ in-the-making
He probado la solución propuesta por Javier y no funciona. No reconoce el carácter "?" como comodín cuando se establece como condición el nombre del fichero.
La versión de Alfresco en la que lo he probado es la 2.9B, y sobre la que tengo que poner en marcha esto es la versión 2.1

venzia
Star Collaborator
Star Collaborator
Tienes razon .. en la 3Stable tampoco funciona .. por lo visto solo se puede utilizar en las busquedas .. no en los patrones de nombres de fichero para las condiciones de las reglas.
Dicho esto .. y teniendo en cuenta que desde el principio a mi tb me parece mas optimo canalizar todo el proceso a traves de un script tal como dice Pedro tendras que empaparte de javascript (no es sencillo y requiere tener en cuenta tus necesidades concretas) .. o pasarle la pelota a desarrollo.
Ahi te dejo docu al respecto http://wiki.alfresco.com/wiki/JavaScript_API_For_Alfresco_2.1 http://wiki.alfresco.com/wiki/Search
Saludos!

vlopez
Champ in-the-making
Champ in-the-making
Bueno…y aunque sea mucho pedir… Smiley Very Happy
Alguién podría darme algunas indicaciones sobre como hacer la lógica del nombre con javascript???
Del resto intentaré hacerme cargo yo… :lol:

venzia
Star Collaborator
Star Collaborator
A grosso modo ..
var nombre=document.name; //confirmar que esto te devuelve solo el nombre
var cliente=nombre.substr(0,5);
var tipo=nombre.substr(6,2);
Ya en funcion de lo que necesites y lo flexible que quieras que sea puedes usar un if .. else .. o bien realizar busquedas por path.
Saludos,

vlopez
Champ in-the-making
Champ in-the-making
Saludos y a ver si tengo suerte.

Siguiendo el hilo de este post, y viendo que la creación de muchas reglas en un mismo espacio sobrecarga la máquina y no funciona (ver post: http://forums.alfresco.com/es/viewtopic.php?f=6&t=2074). Me he propuesto crear el script.
Con las pistas que me habéis dado he llegado a crear un script que busca en los seis primeros dígitos del nombre del archivo y lo traslado a una carpeta cuyo nombre coincide con esos dígitos.
Pero ahora me encuentro con un problema de Javascript y los caracteres comodín. Como las carpetas se nombran con seis dígitos seguidos de un texto libre que es el nombre del cliente, cuando aplico el script el archivo no lo mueve a la carpeta, ¡¡¡¡CLARO!!! porque la carpeta no existe, ya que esta no se llama solo con los seis primero dígitos (123456, sino 123456Fulanito de tal).
Las expresiones regulares en javascript son realmente complicadas para un neófito.
Aquí una muestra del script de "sonrisas y lágrimas"… :wink:

//declaro las variables
var documento   = document.name; //obtengo el nombre del documento
var nombre = documento.substr(0,5); //me fijo en los 6 primeros caracteres
//Aquí el problema…como creo la variable de tal modo que los seis primeros coincidan con "nombre" y el resto sea cualquier cadena.
//Seguro que lo que aquí hago es una burrada
var Folder = space.childByNamePath(nombre+[a-zA-Z0-9_]/\w+/);
//creo una carpeta Pendientes para mover los archivos cuyo nombre  no coincidan con el patrón
var pendientes = space.childByNamePath("pendientes");
if (Folder != null && Folder.hasPermission("CreateChildren"))
{
   var copy = document.move(Folder);
   if (copy != null)
   {
      document.name = documento;
      document.save();
   }
}
else
{
  var copy = document.move(pendientes);
   if (copy != null)
     {
      document.name = documento;
      document.save();
     }
}

Por favor alguna pista para crear 
var Folder = space.childByNamePath(nombre+[a-zA-Z0-9_]/\w+/);
O lo que es lo mismo para decirle al script que el nombre tiene que ser igual al principio (el código numérico) que el nombre del archivo, y que después viene cualquier texto de cualquier longitud.

Gracias de antemano.