Page 1 of 1
Documento ejecutado solo una vez en WorkFlow
PostPosted:Wed Aug 13, 2014 6:55 pm
by sandertaker
Buenas tardes nuevamente, me asalta una duda .. como puedo lograr que un documento sea único, me explico... si un documento está siendo usado por un workflow, me gustaría que en caso de ejecutar el workflow nuevamente sobre este mismo documento arrojara un error o un mensaje de que el documento ya ha sido ejecutado por ese mismo workflow.
Saludos
Re: Documento ejecutado solo una vez en WorkFlow
PostPosted:Thu Aug 14, 2014 3:48 pm
by sandertaker
Complemento más mi duda describiendo más menos a lo que quiero llegar ( y como creo poder lograrlo)
Tengo un documento.doc uuid =abc y tengo un workflow proceso número 1234, quiero que no se ejecute de nuevo esta mezcla abc-1234, para ello necesitaría obtener el uuid ( ya lo tengo claro) y el número o id del workflow (no sé como obtenerlo aún) y usando esta mezcla... comparar con lo que ya se está ejecutando en el sistema, usando el id del workflow y y el uuid del documento. Pero tampoco tengo muchas luces de como realizar esta comparación a la base de datos.
Saludos
Re: Documento ejecutado solo una vez en WorkFlow
PostPosted:Mon Aug 18, 2014 2:49 pm
by jllort
Vale, por lo que entiendo lo que quieres es asegurarte de que no hay un workflow ejecutandose en un documento mas de una vez.
Bueno esto tiene su complejidad, mas que nada porque para solucionar esto correctamente lo suyo sería ampliar el tema de los eventos del automation -> PRE ( previo a la ejecución del workflow ) y evaluarlo allí. Otra forma mas pedestre es como parte del workflow. Tendrías que hacer una tarea ejecutada por el system que iterase por todos los workflows activos y comprobase que no hay ninguno con el UUID del documento. Mas que la tupla de uuid-wfId que quieres montar sería comprobar por los activos si hay alguno que tenga este UUID. Otra forma parecida a esto, sería que como parte del proceso del WF la primera y ultima tarea ( en la transition ) fuese registrar el uuid del documento en una tabla y eliminarlo al terminar el WF ( esto también seria eficaz y relativamente sencillo ).
La ventaja del servicio sería que se podría mirar de generar un error para parar la ejecución del WF ( la mala noticia es que en la 6.2 los errores del automation son silenciosos, no se propagan, esto en versiones superiores ya lo hemos solucionado ). Lo que parecía una buena idea - error silencioso - al final nos hemos dado cuenta que no lo era tanto.
Re: Documento ejecutado solo una vez en WorkFlow
PostPosted:Wed Aug 20, 2014 10:26 pm
by sandertaker
He seguido el consejo que me has dado, asignando el uuid del documento a una tabla adicional, luego se bloquea el mismo mientras se ejecuta todo el proceso, y al final del workflow liberarlo, hasta el momento funciona sin problemas.
Saludos
Re: Documento ejecutado solo una vez en WorkFlow
PostPosted:Fri Aug 22, 2014 9:13 am
by jllort
El método que hace eso ( lock y unlock ), yo lo haría synchronized, así estaras totalmente seguro que va a funcionar bien. Si tienes un pequeño sample y te apetece compartirlo con la gente, es bienvenido y lo colgaremos en la sección de Utilidades y ejemplos que tenemos en la documentación.
Re: Documento ejecutado solo una vez en WorkFlow
PostPosted:Mon Aug 25, 2014 4:32 pm
by sandertaker
De hecho para lograrlo lo hice basandome en este tema
http://forum.openkm.com/viewtopic.php?f ... ueo#p28917, que justamente era lo que trataba de conseguir, cuando encuentr el código ( estoy en pleno proceso de respaldo de datos/formateos y tal) lo posteo acá.
Saludos
Re: Documento ejecutado solo una vez en WorkFlow
PostPosted:Wed Aug 27, 2014 2:42 pm
by sandertaker
Al final ahora empecé a ver los problemas, y como en el tema en que me basé, al final el documento me queda bloqueado nuevamente a pesar de ejecutar el codigo de desbloqueo al final del workflow.
Así que buscaré una forma de desbloquearlo y que todo se ejecute de forma correcta, en caso de encontrar la solución la postearé.
Saludos
Re: Documento ejecutado solo una vez en WorkFlow
PostPosted:Mon Sep 01, 2014 10:25 pm
by sandertaker
No sé si viene al caso a estas alturas, no lo he probado en entorno de trabajo, pero por lo menos en entorno de pruebas no he tenido ningún problema, lo que hice al final fué crear una nueva variable que usé a modo de flag, al principicio bloqueo el documento en esta variable y al final de todo el workflow desbloqueo la variable en esa variable, y no "juego" con tantos cambios de estado durante la ejecución del mismo.
Ahora como dije en el principio no lo he probado a fondo y en entorno de prueba funciona como quiero.
Saludos
Re: Documento ejecutado solo una vez en WorkFlow
PostPosted:Fri Sep 05, 2014 6:15 am
by jllort
Las variables del workflow estan un poco para eso. Controlar el estado del workflow durante todo el proceso. Parece correcta esta forma de plantearlo.