Ir al contenido

WorkflowUtils

Métodos de utilidad para operaciones del flujo de trabajo, incluyendo la gestión de elementos de formulario, la gestión de instancias de proceso y la ejecución de tareas.

Descripción:

Método Valores de retorno Descripción
getFormElementValue(Map<String, Object> context, String name) String Obtiene el valor de un elemento de formulario del contexto.

context: el contexto del flujo de trabajo que contiene los elementos de formulario.

name: el nombre del elemento de formulario a obtener.

Ejemplo:

import com.openkm.okmflow.util.WorkflowUtils;
import java.util.Map;
import java.util.HashMap;
try {
Map<String, Object> context = new HashMap(); // Context is a variable already injected into the context of the script execution
String value = WorkflowUtils.getFormElementValue(context, "userName");
System.out.println("User name: " + value);
} catch (Exception e) {
e.printStackTrace();
}

Descripción:

Método Valores de retorno Descripción
getFormElementValueMap(Map<String, Object> context, List names) Map<String, String> Obtiene los valores de varios elementos de formulario del contexto.

context: el contexto del flujo de trabajo que contiene los elementos de formulario.

names: la lista de nombres de elementos de formulario a obtener.

Ejemplo:

import com.openkm.okmflow.util.WorkflowUtils;
import java.util.Arrays;
import java.util.Map;
import java.util.HashMap;
import java.util.List;
try {
Map<String, Object> context = new HashMap(); // Context is a variable already injected into the context of the script execution
List<String> names = Arrays.asList("userName", "email", "department");
Map<String, String> values = WorkflowUtils.getFormElementValueMap(context, names);
System.out.println("Form values: " + values);
} catch (Exception e) {
e.printStackTrace();
}

Descripción:

Método Valores de retorno Descripción
formElementToPropertyMap(Map<String, Object> context, String prefix, List names) Map<String, String> Convierte elementos de formulario en un map de propiedades con un prefijo dado.

context: el contexto del flujo de trabajo que contiene los elementos de formulario.

prefix: el prefijo que se añadirá a los nombres de las propiedades.

names: la lista de nombres de elementos de formulario a convertir.

Ejemplo:

import com.openkm.okmflow.util.WorkflowUtils;
import java.util.Arrays;
import java.util.Map;
import java.util.HashMap;
import java.util.List;
try {
Map<String, Object> context = new HashMap(); // Context is a variable already injected into the context of the script execution
List<String> names = Arrays.asList("title", "description");
Map<String, String> properties = WorkflowUtils.formElementToPropertyMap(context, "okp.document", names);
System.out.println("Properties: " + properties);
} catch (Exception e) {
e.printStackTrace();
}

Descripción:

Método Valores de retorno Descripción
convertToListFromSelectValue(String value) List Convierte una cadena separada por punto y coma en una lista de cadenas.

value: la cadena separada por punto y coma a convertir (por ejemplo, “one;two;three”).

Ejemplo:

import com.openkm.okmflow.util.WorkflowUtils;
import java.util.List;
try {
String selectValue = "apple;banana;orange";
List<String> fruits = WorkflowUtils.convertToListFromSelectValue(selectValue);
System.out.println("Fruits: " + fruits);
} catch (Exception e) {
e.printStackTrace();
}

Descripción:

Método Valores de retorno Descripción
convertToSelectValue(List values) String Convierte una lista de cadenas en una cadena separada por punto y coma.

values: la lista de valores de cadena a convertir.

Ejemplo:

import com.openkm.okmflow.util.WorkflowUtils;
import java.util.Arrays;
import java.util.List;
try {
List<String> fruits = Arrays.asList("apple", "banana", "orange");
String selectValue = WorkflowUtils.convertToSelectValue(fruits);
System.out.println("Select value: " + selectValue);
} catch (Exception e) {
e.printStackTrace();
}

Descripción:

Método Valores de retorno Descripción
addProcessInstanceVariable(Long piId, String key, Object value) void Añade una variable a una instancia de proceso.

piId: el Id de la instancia de proceso.

key: el nombre de la variable.

value: el valor de la variable.

Ejemplo:

import com.openkm.okmflow.util.WorkflowUtils;
try {
Long processId = 123L;
WorkflowUtils.addProcessInstanceVariable(processId, "status", "approved");
WorkflowUtils.addProcessInstanceVariable(processId, "priority", 5);
} catch (Exception e) {
e.printStackTrace();
}

Descripción:

Método Valores de retorno Descripción
removeProcessInstanceVariable(Long piId, String key) void Elimina una variable de una instancia de proceso.

piId: el Id de la instancia de proceso.

key: el nombre de la variable a eliminar.

Ejemplo:

import com.openkm.okmflow.util.WorkflowUtils;
try {
Long processId = 123L;
WorkflowUtils.removeProcessInstanceVariable(processId, "tempValue");
} catch (Exception e) {
e.printStackTrace();
}

Descripción:

Método Valores de retorno Descripción
getProcessInstanceVariable(Long piId, String key) Object Obtiene el valor de una variable de una instancia de proceso.

piId: el Id de la instancia de proceso.

key: el nombre de la variable a obtener.

Ejemplo:

import com.openkm.okmflow.util.WorkflowUtils;
try {
Long processId = 123L;
Object status = WorkflowUtils.getProcessInstanceVariable(processId, "status");
System.out.println("Process status: " + status);
} catch (Exception e) {
e.printStackTrace();
}

Descripción:

Método Valores de retorno Descripción
getProcessInstance(Long piId) ProcessInstanceDTO Obtiene una instancia de proceso por su Id.

piId: el Id de la instancia de proceso.

Ejemplo:

import com.openkm.okmflow.util.WorkflowUtils;
import com.openkm.okmflow.rest.dto.ProcessInstanceDTO;
try {
Long processId = 123L;
ProcessInstanceDTO processInstance = WorkflowUtils.getProcessInstance(processId);
System.out.println("Process: " + processInstance.getName());
} catch (Exception e) {
e.printStackTrace();
}

Descripción:

Método Valores de retorno Descripción
getProcessInstancesByProcessName(String procDefName) List Obtiene todas las instancias de proceso por el nombre de la definición de proceso.

procDefName: el nombre de la definición de proceso.

Ejemplo:

import com.openkm.okmflow.util.WorkflowUtils;
import com.openkm.okmflow.rest.dto.ProcessInstanceDTO;
import java.util.List;
try {
String processName = "DocumentApproval";
List<ProcessInstanceDTO> instances = WorkflowUtils.getProcessInstancesByProcessName(processName);
System.out.println("Found " + instances.size() + " instances");
} catch (Exception e) {
e.printStackTrace();
}

Descripción:

Método Valores de retorno Descripción
getProcessDefinitionByName(String procDefName) ProcessDefinitionDTO Obtiene una definición de proceso por su nombre.

procDefName: el nombre de la definición de proceso.

Ejemplo:

import com.openkm.okmflow.util.WorkflowUtils;
import com.openkm.okmflow.rest.dto.ProcessDefinitionDTO;
try {
String processName = "DocumentApproval";
ProcessDefinitionDTO processDef = WorkflowUtils.getProcessDefinitionByName(processName);
System.out.println("Process definition: " + processDef.getName());
} catch (Exception e) {
e.printStackTrace();
}

Descripción:

Método Valores de retorno Descripción
runProcessDefinition(Long pdId, Map<String, Object> data) CompletableFuture Ejecuta una definición de proceso de forma asíncrona y devuelve el Id de la instancia de proceso.

pdId: el Id de la definición de proceso.

data: los datos iniciales de la instancia de proceso.

Ejemplo:

import com.openkm.okmflow.util.WorkflowUtils;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
try {
Long processDefId = 456L;
Map<String, Object> data = new HashMap<>();
data.put("initiator", "user123");
data.put("document", "/documents/contract.pdf");
CompletableFuture<Long> future = WorkflowUtils.runProcessDefinition(processDefId, data);
Long processInstanceId = future.get();
System.out.println("Started process instance: " + processInstanceId);
} catch (Exception e) {
e.printStackTrace();
}

Descripción:

Método Valores de retorno Descripción
endProcessInstance(Long piId) CompletableFuture Finaliza una instancia de proceso de forma asíncrona.

piId: el Id de la instancia de proceso a finalizar.

Ejemplo:

import com.openkm.okmflow.util.WorkflowUtils;
import java.util.concurrent.CompletableFuture;
try {
Long processInstanceId = 789L;
CompletableFuture<Void> future = WorkflowUtils.endProcessInstance(processInstanceId);
future.get(); // Wait for completion
System.out.println("Process instance ended successfully");
} catch (Exception e) {
e.printStackTrace();
}

Descripción:

Método Valores de retorno Descripción
setTaskInstanceValues(Long piId, String taskName, String transName, Map<String, Object> data) CompletableFuture Establece valores en una instancia de tarea y continúa la ejecución del proceso de forma asíncrona.

piId: el Id de la instancia de proceso.

taskName: el nombre de la tarea.

transName: el nombre de la transición.

data: los datos a establecer en la tarea.

Ejemplo:

import com.openkm.okmflow.util.WorkflowUtils;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
try {
Long processInstanceId = 789L;
Map<String, Object> taskData = new HashMap<>();
taskData.put("approved", true);
taskData.put("comments", "Document looks good");
CompletableFuture<Void> future = WorkflowUtils.setTaskInstanceValues(
processInstanceId, "ApprovalTask", "approve", taskData);
future.get(); // Wait for completion
System.out.println("Task values set and process continued");
} catch (Exception e) {
e.printStackTrace();
}

Descripción:

Método Valores de retorno Descripción
getTaskInstance(Long piId, String taskName) TaskInstanceDTO Obtiene una instancia de tarea por el Id de la instancia de proceso y el nombre de la tarea.

piId: el Id de la instancia de proceso.

taskName: el nombre de la tarea a obtener.

Ejemplo:

import com.openkm.okmflow.util.WorkflowUtils;
import com.openkm.okmflow.rest.dto.TaskInstanceDTO;
try {
Long processInstanceId = 789L;
TaskInstanceDTO task = WorkflowUtils.getTaskInstance(processInstanceId, "ApprovalTask");
if (task != null) {
System.out.println("Task found: " + task.getName());
} else {
System.out.println("Task not found");
}
} catch (Exception e) {
e.printStackTrace();
}

Descripción:

Método Valores de retorno Descripción
getTaskInstances(Long piId, String taskName) List Devuelve todas las instancias históricas de una tarea por nombre dentro de una instancia de proceso, ordenadas por id ASC. Útil para recuperar el actor que gestionó anteriormente una tarea o comprobar cuántas veces se ha ejecutado una tarea.

piId: el Id de la instancia de proceso.

taskName: el nombre de la tarea a obtener.

Ejemplo:

import com.openkm.okmflow.util.WorkflowUtils;
import com.openkm.okmflow.rest.dto.TaskInstanceDTO;
import java.util.List;
try {
Long processInstanceId = 789L;
List<TaskInstanceDTO> tasks = WorkflowUtils.getTaskInstances(processInstanceId, "Manager approval");
if (tasks != null && !tasks.isEmpty()) {
for (TaskInstanceDTO t : tasks) {
if (t.getActor() != null && !t.getActor().isEmpty()) {
System.out.println("Previous actor: " + t.getActor());
break;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}

Descripción:

Método Valores de retorno Descripción
getCurrentTaskInstance(Long piId) TaskInstanceDTO Obtiene la instancia de tarea actualmente en espera de una instancia de proceso.

piId: el Id de la instancia de proceso.

Ejemplo:

import com.openkm.okmflow.util.WorkflowUtils;
import com.openkm.okmflow.rest.dto.TaskInstanceDTO;
try {
Long processInstanceId = 789L;
TaskInstanceDTO currentTask = WorkflowUtils.getCurrentTaskInstance(processInstanceId);
if (currentTask != null) {
System.out.println("Current task: " + currentTask.getName());
} else {
System.out.println("No current task waiting");
}
} catch (Exception e) {
e.printStackTrace();
}

Descripción:

Método Valores de retorno Descripción
setProcessInstanceNode(Long piId, String uuid) void Cambia el nodo asociado a una instancia de proceso. Actualiza las tres variables que rastrean el nodo asociado: uuid, node (el objeto Node completo) y nodeName (el último segmento de la ruta).

piId: el identificador de la instancia de proceso.

uuid: el UUID del nuevo nodo a asociar.

Ejemplo:

import com.openkm.okmflow.util.WorkflowUtils;
try {
Long processInstanceId = 123L;
String nodeUuid = "a3f1c2d4-5678-90ab-cdef-1234567890ab";
WorkflowUtils.setProcessInstanceNode(processInstanceId, nodeUuid);
System.out.println("Process instance node updated successfully");
} catch (Exception e) {
e.printStackTrace();
}