• 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.
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.
 #46761  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
 #46776  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.
 #46778  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
 #46786  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

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.