Decision node
Resumen
Sección titulada «Resumen»El nodo Decision permite la bifurcación automatizada de la ejecución del flujo de trabajo mediante lógica programática. Cuando el flujo de trabajo llega a un nodo Decision, ejecuta un script que evalúa condiciones y devuelve el nombre de la transición saliente a seguir. Esto permite que el flujo de trabajo tome decisiones automatizadas sin intervención humana.

Propiedades del nodo
Sección titulada «Propiedades del nodo»La configuración del nodo Decision incluye propiedades de identificación, disposición visual y lógica de decisión:
| Propiedad | Tipo | Descripción |
|---|---|---|
| Name | Texto | El nombre que identifica este nodo Decision. Debe describir claramente la decisión que se toma (por ejemplo, “Comprobar si existe un segundo destinatario”, “Validar número de factura”). |
| 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. |
| Source position | Desplegable | Define la posición desde la que salen las flechas de transición del nodo. Las opciones disponibles son: - Top - las transiciones salen por la parte superior del nodo - Bottom - las transiciones salen por la parte inferior del nodo - Left - las transiciones salen por el lado izquierdo del nodo - Right - las transiciones salen por el lado derecho del nodo |
| Target position | Desplegable | Define la posición en la que entran las flechas de transición al nodo. Las opciones disponibles son las mismas que en Source position (Top, Bottom, Left, Right). |
| Description | Área de texto | Campo opcional para aportar detalles adicionales o documentación sobre la lógica de decisión y el propósito de este nodo. |
| Script definition | Editor de código | El script que contiene la lógica de decisión. Este script se ejecuta cuando el flujo de trabajo llega a este nodo y debe devolver un valor de tipo cadena que coincida con el nombre de una de las transiciones salientes. |
Transiciones
Sección titulada «Transiciones»El nodo Decision requiere una configuración de transiciones específica:
- Transiciones entrantes (Target): pueden entrar una o más transiciones al nodo Decision
- Transiciones salientes (Source): deben salir del nodo Decision como mínimo dos transiciones. Cada transición saliente debe tener un nombre único que identifique el camino que representa
Comportamiento del script
Sección titulada «Comportamiento del script»El script ejecutado por el nodo Decision tiene acceso al contexto del flujo de trabajo y a todas las variables disponibles. El script debe devolver un valor de tipo cadena que corresponda al nombre de una de las transiciones salientes. Según ese valor devuelto, la ejecución del flujo de trabajo continuará por el camino de transición correspondiente.
Ejemplo de script
Sección titulada «Ejemplo de script»El siguiente ejemplo muestra un script de nodo Decision que comprueba si existe una variable y devuelve “yes” o “no”:
import com.openkm.sdk4j.impl.OKMWebservices;import com.openkm.sdk4j.bean.*;import com.openkm.sdk4j.util.*;import com.openkm.okmflow.util.*;import com.openkm.okmflow.bean.*;import com.openkm.bean.form.*;import com.openkm.util.*;import java.util.*;import org.apache.commons.lang3.StringUtils;
OKMWebservices ws = WebservicesHelper.getInstance();Class baseLibrary = ScriptUtils.evaluateFromNode("library_global_base");def invoiceNumber = baseLibrary.getContextValue(context, "invoiceNumber");
if (StringUtils.isNotBlank(invoiceNumber.getValue())) { return "yes";} else { return "no";}En este ejemplo:
- El script obtiene una variable de contexto llamada “invoiceNumber”
- Comprueba si el valor no está vacío usando StringUtils
- Devuelve “yes” si el valor existe, o “no” si no existe
- El nodo Decision debe tener dos transiciones salientes llamadas “yes” y “no” para que el flujo de trabajo continúe correctamente
Buenas prácticas
Sección titulada «Buenas prácticas»- Use nombres descriptivos para las transiciones salientes que indiquen claramente el camino que representan (por ejemplo, “approved”, “rejected”, “pending” en vez de “t1”, “t2”, “t3”)
- Gestione siempre todos los casos posibles en la lógica de su script para evitar fallos de ejecución
- Use el campo Description para documentar los criterios de decisión y los resultados esperados
- Pruebe a fondo su lógica de decisión con distintos valores de variables de contexto
- Mantenga la lógica del script sencilla y centrada en la decisión concreta que se está tomando