• Documento ejecutado solo una vez en WorkFlow

  • Hemos intentado hacer de OpenKM una aplicación lo más intuitiva posible, sin embargo siempre viene bien algún consejo.
Hemos intentado hacer de OpenKM una aplicación lo más intuitiva posible, sin embargo siempre viene bien algún consejo.
Forum rules: Por favor, antes de preguntar algo consulta el wiki de documentación o utiliza la función de búsqueda del foro. Recuerda que no tenemos una bola de cristal ni poderes mentales, o sea que que para informar sobre un error es necesario que nos indiques tanto la versión de OpenKM que usas como la del navegador y sistema operativo. Para más información consulta Cómo informar de fallos de forma efectiva.
 #29581  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
 #29593  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
 #29600  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.
 #29614  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
 #29627  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.
 #29685  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
 #29792  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
 #29820  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.

About Us

OpenKM is part of the management software. A management software is a program that facilitates the accomplishment of administrative tasks. OpenKM is a document management system that allows you to manage business content and workflow in a more efficient way. Document managers guarantee data protection by establishing information security for business content.