Page 1 of 1

Asignación de tareas en Workflow

PostPosted:Mon Sep 10, 2018 3:11 pm
by gdeldago
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

Re: Asignación de tareas en Workflow

PostPosted:Thu Sep 13, 2018 9:04 am
by pavila
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.

Re: Asignación de tareas en Workflow

PostPosted:Thu Sep 13, 2018 2:01 pm
by gdeldago
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

Re: Asignación de tareas en Workflow

PostPosted:Fri Sep 14, 2018 3:28 pm
by gdeldago
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