Task node
Resumen
Sección titulada «Resumen»El nodo Task representa trabajo que requiere interacción humana dentro de un flujo de trabajo. Cuando la ejecución del flujo de trabajo llega a un nodo Task, se pausa y espera a que un usuario complete la tarea asignada a través de la interfaz gráfica. Las tareas se asignan a usuarios concretos o a grupos de usuarios, que interactúan con los formularios del flujo de trabajo para aportar datos y avanzar el proceso.

Pestañas de configuración
Sección titulada «Pestañas de configuración»La configuración del nodo Task se organiza en dos pestañas:
- Task: contiene las propiedades principales de la tarea, la definición del formulario y la lógica de asignación
- Task notification: configura las notificaciones por correo enviadas a los usuarios cuando se les asignan tareas
Propiedades de la pestaña Task
Sección titulada «Propiedades de la pestaña Task»| Propiedad | Tipo | Descripción |
|---|---|---|
| Name | Texto | El nombre que identifica este nodo Task. Debe describir claramente el propósito de la tarea (por ejemplo, “Aprobar factura”, “Revisar documento”, “Completar formulario”). |
| Id | Número | Identificador único asignado al nodo. Este valor se genera automáticamente por el sistema e identifica de forma única al nodo dentro de la definición de proceso. |
| Due date | Días / Horas | Establece la fecha límite de la tarea en relación al momento en que se asigna a un usuario. Solo los campos Días y Horas son editables. El sistema genera automáticamente un formato de duración ISO 8601 (por ejemplo, introducir 2 días y 3 horas produce P2DT3H). La fecha límite se calcula desde el momento en que la tarea se asigna a un usuario. |
| Repeat | Días / Horas | Define el intervalo para las notificaciones recurrentes de tareas vencidas. Cuando una tarea se vence y este campo no está vacío, el sistema envía una notificación por correo y recalcula la siguiente fecha límite sumando este intervalo a la fecha actual. Este proceso se repite hasta que el usuario completa la tarea. |
| Source position | Desplegable | Define la posición desde la que salen las flechas de transición del nodo. Opciones disponibles: Top, Bottom, Left, Right. |
| Target position | Desplegable | Define la posición en la que entran las flechas de transición al nodo. Opciones disponibles: Top, Bottom, Left, Right. |
| Description | Área de texto | Campo opcional para aportar detalles adicionales o documentación sobre el propósito y los requisitos de la tarea. |
| Form definition | Editor XML | Define el formulario con el que interactuarán los usuarios al completar esta tarea. El formulario se define mediante XML según la especificación de formularios de flujo de trabajo de OpenKM. Para información detallada sobre la estructura del formulario y los elementos disponibles, consulte la sección de documentación de definición de formularios. El editor ofrece tres herramientas accesibles mediante iconos sobre el área de texto: - Edit (maximizar): abre la definición del formulario en una ventana emergente para facilitar la edición - Graphical designer: abre una interfaz visual de construcción de formularios - Preview: muestra una vista previa de cómo se verá el formulario para los usuarios según la definición actual El editor admite autocompletado. Pulse Ctrl+Espacio mientras escribe para ver las opciones disponibles y sugerencias de código. |
| Assign expression | Editor de scripts | Contiene el script que determina qué usuario o usuarios recibirán esta tarea. El script puede devolver: - String: un único ID de usuario para asignación directa - List: varios IDs de usuario para asignación por pool Cuando se devuelve una lista de usuarios, la tarea se convierte en una tarea agrupada (pooled task). Cualquier usuario del pool puede reclamar la tarea en exclusiva a través de la interfaz gráfica, convirtiéndose en el único asignado. |
Propiedades de la pestaña Task notification
Sección titulada «Propiedades de la pestaña Task notification»| Propiedad | Tipo | Descripción |
|---|---|---|
| Notify | Interruptor | Activa o desactiva las notificaciones por correo cuando se asigna la tarea a un usuario. Si está activado, el usuario asignado recibe una notificación por correo indicando que tiene una tarea pendiente de completar. |
| Subject | Texto | El asunto del correo de las notificaciones de asignación de tarea. |
| Body | Editor de texto enriquecido | El cuerpo del correo de las notificaciones de asignación de tarea. Admite formato de texto enriquecido, incluyendo negrita, cursiva, listas y otras opciones de formato. |
Variables de formulario y contexto
Sección titulada «Variables de formulario y contexto»Cuando un usuario completa y envía un formulario de tarea, los valores de los campos del formulario se guardan automáticamente en las variables de contexto del flujo de trabajo usando el atributo name del campo.
Por ejemplo, un campo de formulario definido como:
<input label="Invoice number" name="invoiceNumber" />Creará una variable de contexto llamada invoiceNumber que contiene un objeto Input con el valor introducido por el usuario.
Comportamiento de la fecha límite
Sección titulada «Comportamiento de la fecha límite»El mecanismo de fecha límite funciona así:
- La cuenta atrás de la fecha límite comienza cuando la tarea se asigna a un usuario
- Cuando una tarea se vence, se envía una notificación por correo al usuario asignado
- Si el campo Repeat contiene un valor, se calcula automáticamente una nueva fecha límite sumando el intervalo de repetición a la fecha actual
- Este proceso continúa, enviando notificaciones en cada intervalo de repetición, hasta que el usuario completa la tarea
Ejemplos de expresión de asignación
Sección titulada «Ejemplos de expresión de asignación»Ejemplo 1: asignación simple
Sección titulada «Ejemplo 1: asignación simple»Asigna la tarea directamente a un usuario concreto:
// Assign to user "okmAdmin"return "okmAdmin";Ejemplo 2: asignación agrupada
Sección titulada «Ejemplo 2: asignación agrupada»Crea una tarea agrupada que puede reclamar cualquier usuario de la lista:
// Pooled task for multiple usersimport java.util.*;
List users = new ArrayList();users.add("okmAdmin");users.add("joe");return users;Ejemplo 3: asignar al iniciador del flujo de trabajo
Sección titulada «Ejemplo 3: asignar al iniciador del flujo de trabajo»Asigna la tarea al usuario que inició el flujo de trabajo:
// Assign to the user who initiated the workflowimport com.openkm.sdk4j.impl.OKMWebservices;import com.openkm.sdk4j.bean.*;import com.openkm.okmflow.util.*;import com.openkm.okmflow.bean.*;import com.openkm.bean.form.*;import com.openkm.util.*;
Class baseLibrary = ScriptUtils.evaluateFromNode("library_global_base");def initiatorId = baseLibrary.getInitiatorId(context);return initiatorId;Ejemplo 4: asignar a usuarios con un rol concreto
Sección titulada «Ejemplo 4: asignar a usuarios con un rol concreto»Crea una tarea agrupada para todos los usuarios que tienen un rol concreto:
// Assign to all users with ROLE_ADMINimport com.openkm.sdk4j.impl.OKMWebservices;import com.openkm.sdk4j.bean.*;import com.openkm.okmflow.util.*;import com.openkm.okmflow.bean.*;import com.openkm.bean.form.*;import com.openkm.util.*;import java.util.*;
OKMWebservices ws = WebservicesHelper.getInstance();List<String> users = new ArrayList();for (CommonUser commonUser : ws.auth.getUsersByRole("ROLE_ADMIN")) { users.add(commonUser.getId());}return users;Definición del formulario
Sección titulada «Definición del formulario»Los formularios se definen mediante sintaxis XML según la especificación de formularios de flujo de trabajo de OpenKM. El formulario define los campos y la estructura con los que interactuarán los usuarios al completar la tarea.
Buenas prácticas
Sección titulada «Buenas prácticas»- Use nombres de tarea claros y descriptivos que indiquen qué acción deben realizar los usuarios
- Establezca fechas límite realistas según la complejidad de la tarea y la carga de trabajo del usuario
- Configure correos de notificación con sentido, con asuntos claros y contenido útil en el cuerpo
- Pruebe a fondo las expresiones de asignación para asegurarse de que los usuarios se asignan correctamente
- Documente la lógica de asignación compleja en el campo Description
- Use tareas agrupadas cuando cualquier usuario de un grupo pueda encargarse de la tarea, en vez de exigir a una persona concreta
- Tenga en cuenta el impacto de las colisiones de nombres de variable al diseñar formularios: use nombres únicos y descriptivos