Asignación de tareas en Workflow

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.
Post Reply
gdeldago
Fresh Boarder
Fresh Boarder
Posts: 15
Joined: Tue Aug 27, 2013 1:15 pm

Asignación de tareas en Workflow

Post by gdeldago » Mon Sep 10, 2018 3:11 pm

Hola.

Tengo programado un flujo de trabajo al que se puede asignar (en una instancia determinada) un "responsable" (un usuario del sistema). Lo hice cambiando el swimlane desde un script. Luego a todas las tareas (es decir cuando hay intervención del usuario) les asigno el swimlane = initiator.

Con lo anterior la cosa funciona muy bien.

Ahora necesito cambiar de persona responsable (en cualquier momento). Entiendo que una solución posible es modificar la columna ACTORID_ de la tabla JBPM_SWIMLANEINSTANCE.

¿Existe alguna funcionalidad específica en JBPM o en el API de OpenKM que me permita realizar esto? es decir ¿hay una forma más elegante y/o desacoplada de la base de datos?

Mi idea es crear un nuevo workflow para realizar este "cambio de responsable"

Muchas gracias,
Gustavo

pavila
Moderator
Moderator
Posts: 3051
Joined: Tue Dec 11, 2007 6:02 pm
Location: Alicante, Spain
Contact:

Re: Asignación de tareas en Workflow

Post by pavila » Thu Sep 13, 2018 9:04 am

El swimlane initiator se usa para saber quién inició el workflow. Si quieres tener más control sobre la asignación de tareas lo suyo es implementar un AssigmentHandler donde puedes especificar la lógica que necesites para obtener un usuario al que se le asignará la tarea.

En cualquier caso modificar la base de datos no te lo aconsejo pq la puedes dejar en un estado inconsistente con el consiguiente peligro.

Saludos.

gdeldago
Fresh Boarder
Fresh Boarder
Posts: 15
Joined: Tue Aug 27, 2013 1:15 pm

Re: Asignación de tareas en Workflow

Post by gdeldago » Thu Sep 13, 2018 2:01 pm

Muchas gracias por la respuesta.

Aún no me queda claro por donde debería ir, trato de explicarme mejor:

Tengo un workflow compuesto por una cantidad de tareas. Pongamos por caso 4 tareas (A, B, C y D).

La idea es que en la tarea A se asigna una persona como responsable del "trámite completo" (las 4 tareas).

Actualmente tengo, en la tarea A, un formulario donde se puede elegir a que usuario se asignará el "trámite" (el resto de las tareas). Eso lo logré ajustado el assignment actor-id de la siguiente manera:

Code: Select all

<assignment actor-id="#{responsable.value}"></assignment>
Luego, en las tareas B, C y D configuré swimlane = initiator., puesto que de ese modo se asignan automaticamente al usuario que les dió inicio. Las tareas tienen orden secuencial, por ese motivo si cambio el b]assignment actor-id[/b] en la tarea A, tiene impacto en las tareas B, C y D.

Lo anterior funciona perfectamente.

Ahora necesito permitir que (en cualquier momento), se pueda cambiar quien tiene asiganda una tarea y a partir de ese momento las siguientes tareas se asignen al nuevo usuario responsable.

¿Qué debería hacer? ¿hay algún ejemplo disponible?

Desde el panel administrativo de OpenKM (Workflow) esto se puede hacer, de hecho se presenta un desplegable con la lista de usuarios.
Sería de gran ayuda saber como está implementada dicha funcionalidad.

¡Muchas gracias!
Gustavo

gdeldago
Fresh Boarder
Fresh Boarder
Posts: 15
Joined: Tue Aug 27, 2013 1:15 pm

Re: Asignación de tareas en Workflow

Post by gdeldago » Fri Sep 14, 2018 3:28 pm

He resuelto el problema. Comparto la forma de solución pensando en otras personas con necesidades o dudas similares.

En principio decir que se pude utilizar el APi de OpnekM, en concreto los objetos Workflow.

En el caso particular que expuse en este mismo hilo, utilicé los métodos para encotrar la última versión de la definición del proceso (findLastProcessDefinition), luego las instancias del mismo (findProcessInstances) y finalmente las instancia de las tareas en curso para esa instancia de proceso (findTaskInstances).

Con todo lo anterior puede "encontrar" la instancia que me interesaba (la idea es que el usuario indica el "cambio de responsable" seleccionando un nodo de la taxonomía).

Luego es simplemente cuestión de invocar al método setTaskInstanceActorId.

Todo funcionó perfectamente.

¡Muchas gracias!
Saludos
Gustavo

Post Reply

Who is online

Users browsing this forum: No registered users and 2 guests