¿Sencillo? Webservices Borrado y Búsqueda

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

¿Sencillo? Webservices Borrado y Búsqueda

Muy buenas. Llevo días dándole vueltas y estoy deseperado. Además me urge tenerlo para ya, así que ya sabeis lo mucho que bloquean este tipo de situaciones….

Trabajo con Alfresco desde una aplicación web mediante webservices. Tengo implementado y funcionando la subida de ficheros y la descarga a través del UUID.

Estoy perdido (he leído la doc y demás, pero…), necesito hacer dos cosas: la primera borrar un fichero de alfresco teniendo su UUID. La segunda se trata de una búsqueda con query lucene sobre el contenido de los ficheros, y devolver de alguna manera un array con los UUID de los ficheros con los que se encontró coincidencia.

Muchas gracias de verdad, sé que hay mucho "crack" por aquí, así que estas dudas de novato deberían de ser pan comido  Smiley Happy
2 Replies
massanen_2296
Member II

Re: ¿Sencillo? Webservices Borrado y Búsqueda

buenas vbrPFC,

ultimamente he tenido que desarrollar un webservice y tambien he tenido que desarrollar un "search" y un "delete". En ambos casos es necesario conocer un poco como funciona el tema de las queries de lucene. Yo no es que sea un experto aun, pero creo que me ha salido bien.

Ojea este hilo, para montar las queries que necesites: http://wiki.alfresco.com/wiki/Search

No sé en qué lenguaje estás programando, te voy a poner el ejemplo en JAVA:


//primero te declaras la sentencia que necesites
//en mi caso el nombre del documento era el mismo que su UUId, la arroba significa "dentro de", y el \\ es para hacer literal el \
String sentencia="@cm\\:name:'tu_nombre'";

//ahora declaras una nueva query, con tu sentencia
Query query = new Query(Constants.QUERY_LANG_LUCENE, sentencia)

//ahora te declaras el objeto queryresult, para poder pillar posteriormente el resultset
Store STORE = new Store (Constants.WORKSPACE_STORE, "SpacesStore");
QueryResult = queryresult = repositoryService.query(STORE, query, false);

//ahora ya podemos pillar el ResultSet de toda la vida
ResultSet = resultSet = queryresult.getResultSet();

//y el número de retornos
ResultSetRow[] rows = resultSet.getRows();

if(rows == null) //no resultados!!
else {

//ahora vamos a crear el objeto CML para eliminar los documentos que ha encontrado

CMLDelete[] deleteCMLArray = new CMLDelete[rows.length];

for(int index = 0; index<rows.length;index++) {
     //pillamos el resultset de la posición
     ResultSetRow row = rows[index];
     deleteCMLArray[index] = new CLMDelete(new Predicate(new Reference[] {new Reference(storeRef, row.getNode().getId(),null)},null,null));
}

//y ahora ya podemos ejecutar el delete de todos los elementos de dentro del deleteCMLArray
CML cml = new CML();
cml.setDelete(deleteCMLArray);
UpdateResult[] results = WebServiceFactory.getRepositoryService().update(cml);
}

y voilá, tienes el elemento borrado.

En el case del search, haces el mismo for, pero en vez de crear el objeteo CMLDelete, vas pillando los nodos que te ha devuelto, con las propiedades/metadatos que quieras almacenar.

Espero que te sirva, ya dirás!
angymar
Active Member

Re: ¿Sencillo? Webservices Borrado y Búsqueda

Hola,

Tengo una duda, una vez que tengo desarrolladas mis clases de java, por ejemplo en eclipse como hago para configurar mi Alfresco y que me funcionen mis busquedas??

Saludos y gracias por la ayuda