cancel
Showing results for 
Search instead for 
Did you mean: 

Concurrencia en cliente con apache chemistry

alex_grasset
Confirmed Champ
Confirmed Champ

Hola,

estoy implementando un cliente con apache chemistry basandome en este ejemplo, nos han proporcionado un usuario y puedo conectarme y hacer todo tipo de operaciones (crear carpetas, crear documentos).

Pero me pregunto de que manera se va a comportar la aplicación con la concurrencia de usuarios y como deberia tratar este tema en mi cliente.

Por si hace falta, añado que realmente pocos conocimientos de Alfresco.

Muchas gracias.

15 REPLIES 15

angelborroy
Community Manager Community Manager
Community Manager

No entiendo la pregunta. ¿A qué tipo de concurrencia te refieres? ¿Puedes poner un ejemplo?

Hyland Developer Evangelist

Hola,

me refiero a concurrencia de usuarios, no he podido probar porque tendria que solicitar un entorno en el cliente donde trabajo para que me hicieran despliegue del código, mi duda viene a que no sé que pasaria o como actuaria la clase que he implementado en caso de que dos usuarios o mas intentasen trabajar a la vez.

Muchas gracias.

Si dos usuarios intentan actualizar el mismo documento al mismo tiempo, solo uno de ellos realizará la operación con éxito, el otro recibirá un error. En cualqueir caso, depende del flujo concreto de ejecución y de las operaciones que realicen.

Hyland Developer Evangelist

Si, pero si unicamente nos han proporcionado un usuario que es el que utiliza la clase que he implementado... No se si entiendes a donde voy a parar... No se como explicarlo mejor XD

No es el escenario ideal, es muy posible que las operaciones de modificación se crucen entre varias peticiones.

Si tienes varios usuarios, lo ideal sería bloquear el documento antes de realizar los cambios y desbloquearlo cuando termines.

Hyland Developer Evangelist

Pero no me parece logico que tengamos que pedir un usuario para cada persona que vaya a utilizar la aplicación, debe haber otra forma...

calvo
Star Collaborator
Star Collaborator

Hola,

Aunque no estoy muy seguro de haberte comprendido, entiendo que la aplicación cliente que tienes, siempre utilizará el mismo usuario para conectar con el repositorio de Alfresco. No creo que necesites más usuarios para interactuar con la biblioteca de documentos.

Supongo que lo que tienes es una aplicación externa que integra -a través de CMIS- con el repositorio de Alfresco. Por ejemplo una aplicación que carga documentos en Alfresco, permite consultarlos, descargarlos, ....

La concurrencia dependerá de la carga real del sistema, pero para un entorno de pocos usuarios quizás no sería necesario implementar nada al respecto (si las operaciones no son muy complejas y costosas, las peticiones se encolarán, aunque dependerá del volumen de peticiones). Sin embargo, en caso de que la aplicación la utilizase mucha gente, podrías valorar utilizar hilos (utilizando siempre el mismo usuario para conectar con el repositorio), pero si dos usuarios intentan acceder al mismo documento, ocurrirá el escenario descrito por Angel Borroy

Tal vez podrías hacer una previsión de la posible carga que tendría el sistema que estás implementando (usuarios, operaciones, volumen de información y peticiones,....) y actuar en consecuencia, tratando de implementar alternativas.

Un saludo

clv

Muchas gracias, es justo eso a lo que me referia, he implementado una clase que mi intención es que hiciera de cliente pero me preocupaba justamente eso. Como no tengo experiencia con sesiones en java no sabia si podria haber problemas a la hora de crear dos sesiones para el mismo usuario a la vez.

De todas formas creo que lo que he hecho no sirve porque según me han explicado, debo acceder a alfresco desde la api, pero no tengo documentación al respecto. Algun sitio donde pueda encontrar información sobre dicha api?

Gracias

Tienes documentación interactiva en Alfresco Content Services REST API Explorer 

Y una serie de tutoriales aquí: https://community.alfresco.com/community/ecm/blog/2016/10/11/v1-rest-api-part-1-introduction 

Hyland Developer Evangelist