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.
Métodos
Sección titulada «Métodos»getFormElementValue
Sección titulada «getFormElementValue»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();}getFormElementValueMap
Sección titulada «getFormElementValueMap»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| getFormElementValueMap(Map<String, Object> context, List |
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();}formElementToPropertyMap
Sección titulada «formElementToPropertyMap»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| formElementToPropertyMap(Map<String, Object> context, String prefix, List |
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();}convertToListFromSelectValue
Sección titulada «convertToListFromSelectValue»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();}convertToSelectValue
Sección titulada «convertToSelectValue»Descripción:
| Método | Valores de retorno | Descripción |
|---|---|---|
| convertToSelectValue(List |
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();}addProcessInstanceVariable
Sección titulada «addProcessInstanceVariable»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();}removeProcessInstanceVariable
Sección titulada «removeProcessInstanceVariable»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();}getProcessInstanceVariable
Sección titulada «getProcessInstanceVariable»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();}getProcessInstance
Sección titulada «getProcessInstance»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();}getProcessInstancesByProcessName
Sección titulada «getProcessInstancesByProcessName»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();}getProcessDefinitionByName
Sección titulada «getProcessDefinitionByName»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();}runProcessDefinition
Sección titulada «runProcessDefinition»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();}endProcessInstance
Sección titulada «endProcessInstance»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();}setTaskInstanceValues
Sección titulada «setTaskInstanceValues»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();}getTaskInstance
Sección titulada «getTaskInstance»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();}getTaskInstances
Sección titulada «getTaskInstances»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();}getCurrentTaskInstance
Sección titulada «getCurrentTaskInstance»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();}setProcessInstanceNode
Sección titulada «setProcessInstanceNode»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();}