Ir al contenido

AutomationUtils

AutomationUtils es un bean de Spring que proporciona acceso con tipos seguros al mapa de contexto de eventos (env) compartido entre los eventos de automatización y las acciones/validadores de automatización. Cuando se dispara un evento de automatización (por ejemplo, Document create, Mail move, Property group set), el sistema rellena el mapa env con las variables relevantes para ese evento. Su acción lee esos valores mediante los getters de AutomationUtils.

Esqueleto típico de una acción de automatización

Sección titulada «Esqueleto típico de una acción de automatización»

Una acción de automatización inyecta AutomationUtils y la usa dentro del método execute:

package com.openkm.plugin.automation.action;
import com.openkm.db.bean.NodeBase;
import com.openkm.plugin.PluginImplementation;
import com.openkm.plugin.automation.Action;
import com.openkm.plugin.automation.AutomationException;
import com.openkm.plugin.automation.AutomationUtils;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Map;
@PluginImplementation
public class MyCustomAction implements Action {
@Autowired
private AutomationUtils automationUtils;
@Override
public void execute(Map<String, Object> env, Object... params) throws Exception {
// Read action parameters configured in the UI
String param0 = automationUtils.getString(0, params);
// Read event context variables
NodeBase node = automationUtils.getNodeBase(env);
String name = automationUtils.getName(env);
// ... your logic here ...
}
@Override
public String getName() {
return "My Custom Action";
}
}

Estos métodos leen valores con tipo del array varargs params — los parámetros configurables que el administrador establece para la acción en la interfaz de Automation — no del contexto del evento.

Método Valores de retorno Descripción
getString(int index, Object… params) String Devuelve el parámetro de la acción en el índice indicado como String.
String folderPath = automationUtils.getString(0, params);
Método Valores de retorno Descripción
getInteger(int index, Object… params) Integer Devuelve el parámetro de la acción en el índice indicado como Integer.
Integer maxDays = automationUtils.getInteger(1, params);
Método Valores de retorno Descripción
getLong(int index, Object… params) Long Devuelve el parámetro de la acción en el índice indicado como Long.
Long maxSize = automationUtils.getLong(0, params);
Método Valores de retorno Descripción
getBoolean(int index, Object… params) Boolean Devuelve el parámetro de la acción en el índice indicado como Boolean.
Boolean sendNotification = automationUtils.getBoolean(2, params);
Método Valores de retorno Descripción
getList(int index, Object… params) List Devuelve el parámetro de la acción en el índice indicado como una lista de Strings.
List<String> roles = automationUtils.getList(0, params);

Estos métodos leen variables relacionadas con nodos del mapa env del evento. La mayoría lanzan AutomationException si la variable no está presente en el contexto del evento actual.

Método Valores de retorno Descripción
getNodeBase(Map<String, Object> env) NodeBase Devuelve el nodo principal implicado en el evento (documento, carpeta, correo o expediente). Es el accesor principal para el nodo afectado.
NodeBase node = automationUtils.getNodeBase(env);
System.out.println("Node UUID: " + node.getUuid());
System.out.println("Node path: " + node.getPath());
Método Valores de retorno Descripción
getNodeToEvaluate(Map<String, Object> env) NodeBase Getter inteligente que resuelve el nodo correcto según la fase del evento. En eventos PRE create o PRE move devuelve el nodo destino (el futuro contenedor); en el resto de casos devuelve el nodo base. Úselo para la lógica de validadores.
NodeBase nodeToEvaluate = automationUtils.getNodeToEvaluate(env);
Método Valores de retorno Descripción
getNodeBaseList(Map<String, Object> env) List Devuelve una lista de nodos implicados en operaciones masivas como la exportación a ZIP.
List<NodeBase> nodes = automationUtils.getNodeBaseList(env);
for (NodeBase n : nodes) {
System.out.println(n.getPath());
}
Método Valores de retorno Descripción
getDestinationNode(Map<String, Object> env) NodeParent Devuelve el nodo contenedor destino para eventos de creación y movimiento. Solo disponible en eventos de creación y movimiento.
if (automationUtils.hasDestinationNode(env)) {
NodeParent dest = automationUtils.getDestinationNode(env);
System.out.println("Destination: " + dest.getPath());
}
Método Valores de retorno Descripción
hasDestinationNode(Map<String, Object> env) boolean Devuelve true si la variable del nodo destino está presente en el contexto del evento.
Método Valores de retorno Descripción
getSourcePath(Map<String, Object> env) String Devuelve la ruta original del nodo en el repositorio antes de una operación de movimiento. Solo disponible en eventos de movimiento.
if (automationUtils.hasSourcePath(env)) {
String original = automationUtils.getSourcePath(env);
System.out.println("Moved from: " + original);
}
Método Valores de retorno Descripción
hasSourcePath(Map<String, Object> env) boolean Devuelve true si la variable de la ruta origen está presente en el contexto del evento.
Método Valores de retorno Descripción
getName(Map<String, Object> env) String Devuelve el nombre del nodo. En eventos PRE create, la acción puede cambiar el nombre para renombrar el nodo antes de que se guarde.
String name = automationUtils.getName(env);
System.out.println("Node name: " + name);
Método Valores de retorno Descripción
hasName(Map<String, Object> env) boolean Devuelve true si la variable del nombre está presente en el contexto del evento.
Método Valores de retorno Descripción
getMimeType(Map<String, Object> env) String Devuelve el tipo MIME del documento (por ejemplo, application/pdf). Disponible en eventos de documento.
String mime = automationUtils.getMimeType(env);
if ("application/pdf".equals(mime)) {
// ...
}
Método Valores de retorno Descripción
getCategories(Map<String, Object> env) Set Devuelve el conjunto de UUID de categorías asignadas al nodo.
Set<String> categories = automationUtils.getCategories(env);
for (String catUuid : categories) {
System.out.println("Category UUID: " + catUuid);
}
Método Valores de retorno Descripción
getKeywords(Map<String, Object> env) Set Devuelve el conjunto de palabras clave asignadas al nodo.
Set<String> keywords = automationUtils.getKeywords(env);
Método Valores de retorno Descripción
getNotes(Map<String, Object> env) List Devuelve la lista de notas adjuntas al nodo.
List<NodeNote> notes = automationUtils.getNotes(env);
Método Valores de retorno Descripción
getTitle(Map<String, Object> env) String Devuelve el campo de metadato título del nodo.
String title = automationUtils.getTitle(env);
Método Valores de retorno Descripción
getVersion(Map<String, Object> env) String Devuelve la etiqueta de versión del documento (por ejemplo, 1.0, 1.1). Disponible en eventos de actualización de documentos.
String version = automationUtils.getVersion(env);
Método Valores de retorno Descripción
getCreationDate(Map<String, Object> env) Calendar Devuelve la fecha de creación del nodo.
Calendar created = automationUtils.getCreationDate(env);
Método Valores de retorno Descripción
getNodeClass(Map<String, Object> env) Long Devuelve el ID de la clase de nodo (clasificación) del nodo. Devuelve -1 si no hay clase de nodo establecida o la variable no está presente.
Long nodeClass = automationUtils.getNodeClass(env);
if (nodeClass != -1) {
// node has a classification
}
Método Valores de retorno Descripción
getNewNodeClass(Map<String, Object> env) Long Devuelve el ID de la nueva clase de nodo que se aplica durante un evento de cambio de clase de nodo. Devuelve -1 si no está presente.
Método Valores de retorno Descripción
getOldNodeClass(Map<String, Object> env) Long Devuelve el ID de la clase de nodo anterior antes de un evento de cambio de clase de nodo. Devuelve -1 si no está presente.

Contexto del evento — getters de documento

Sección titulada «Contexto del evento — getters de documento»
Método Valores de retorno Descripción
getFile(Map<String, Object> env) File Devuelve el fichero local temporal que contiene el contenido del documento. Disponible durante los eventos de creación y actualización de documentos.
if (automationUtils.hasFile(env)) {
File file = automationUtils.getFile(env);
System.out.println("File size: " + file.length());
}
Método Valores de retorno Descripción
hasFile(Map<String, Object> env) boolean Devuelve true si la variable del fichero de documento está presente en el contexto del evento.
Método Valores de retorno Descripción
getInputStream(Map<String, Object> env) InputStream Devuelve el input stream del contenido del documento. Disponible durante los eventos PRE de creación y actualización de documentos.
InputStream is = automationUtils.getInputStream(env);
Método Valores de retorno Descripción
getDocumentSize(Map<String, Object> env) long Devuelve el tamaño del contenido del documento en bytes.
long size = automationUtils.getDocumentSize(env);
Método Valores de retorno Descripción
getTextExtracted(Map<String, Object> env) String Devuelve el texto completo extraído del documento. Disponible en el evento Document text extraction.
String text = automationUtils.getTextExtracted(env);
if (text.contains("CONFIDENTIAL")) {
// apply policy ...
}
Método Valores de retorno Descripción
getLanguageDetected(Map<String, Object> env) String Devuelve el código de idioma ISO 639-1 detectado durante la extracción de texto (por ejemplo, en, es). Disponible en el evento Document text extraction.
String lang = automationUtils.getLanguageDetected(env);
Método Valores de retorno Descripción
getTextExtractor(Map<String, Object> env) TextExtractor Devuelve la instancia del plugin extractor de texto usado en la extracción actual. Devuelve null si no está presente.

Estas variables solo están disponibles durante eventos relacionados con correo (por ejemplo, Mail creation).

Método Valores de retorno Descripción
getMailFrom(Map<String, Object> env) String Devuelve la dirección del remitente del correo.
String from = automationUtils.getMailFrom(env);
Método Valores de retorno Descripción
getMailReply(Map<String, Object> env) String[] Devuelve las direcciones de respuesta (reply-to) del correo.
Método Valores de retorno Descripción
getMailTo(Map<String, Object> env) String[] Devuelve las direcciones de los destinatarios del correo.
String[] to = automationUtils.getMailTo(env);
Método Valores de retorno Descripción
getMailCc(Map<String, Object> env) String[] Devuelve las direcciones en copia (CC) del correo.
Método Valores de retorno Descripción
getMailBcc(Map<String, Object> env) String[] Devuelve las direcciones en copia oculta (BCC) del correo.
Método Valores de retorno Descripción
getMailSubject(Map<String, Object> env) String Devuelve el asunto del correo.
String subject = automationUtils.getMailSubject(env);
Método Valores de retorno Descripción
getMailContent(Map<String, Object> env) String Devuelve el contenido del cuerpo del correo.
Método Valores de retorno Descripción
getMailSentDate(Map<String, Object> env) Calendar Devuelve la fecha de envío del correo.
Método Valores de retorno Descripción
getMailReceivedDate(Map<String, Object> env) Calendar Devuelve la fecha en la que el sistema recibió el correo.

Contexto del evento — getters de grupo de propiedades

Sección titulada «Contexto del evento — getters de grupo de propiedades»

Estas variables están disponibles en eventos de grupos de propiedades (Add metadata group, Set metadata group, Remove metadata group, Get all metadata groups).

Método Valores de retorno Descripción
getPropertyGroupName(Map<String, Object> env) String Devuelve el nombre del grupo de propiedades (grupo de metadatos) implicado en el evento.
if (automationUtils.hasPropertyGroupName(env)) {
String grpName = automationUtils.getPropertyGroupName(env);
}
Método Valores de retorno Descripción
hasPropertyGroupName(Map<String, Object> env) boolean Devuelve true si la variable del nombre del grupo de propiedades está presente en el contexto del evento.
Método Valores de retorno Descripción
getPropertyGroupProperties(Map<String, Object> env) Map<String, String> Devuelve el mapa clave-valor de propiedades que se está estableciendo en el nodo durante el evento. La clave del mapa es el nombre del campo de propiedad; el valor es el nuevo valor del campo.
if (automationUtils.hasPropertyGroupProperties(env)) {
Map<String, String> props = automationUtils.getPropertyGroupProperties(env);
String invoiceNumber = props.get("okp:invoice.number");
}
Método Valores de retorno Descripción
hasPropertyGroupProperties(Map<String, Object> env) boolean Devuelve true si el mapa de propiedades del grupo de propiedades está presente en el contexto del evento.
Método Valores de retorno Descripción
getPropertyGroups(Map<String, Object> env) Map<String, String> Devuelve un mapa de todos los grupos de propiedades asignados al nodo, indexado por nombre de grupo con su estado serializado actual.
Método Valores de retorno Descripción
getAllPropertyGroups(Map<String, Object> env) List Devuelve todas las definiciones de grupos de propiedades disponibles en el sistema (no solo las asignadas al nodo). Disponible en eventos Get all metadata groups.

Contexto del evento — getters del gestor de tareas

Sección titulada «Contexto del evento — getters del gestor de tareas»
Método Valores de retorno Descripción
getTaskId(Map<String, Object> env) long Devuelve el ID de la tarea implicada en el evento. Disponible en eventos de creación, actualización y eliminación de tareas.
long taskId = automationUtils.getTaskId(env);
Método Valores de retorno Descripción
getTaskManagerTask(Map<String, Object> env) TaskManagerTask Devuelve el objeto completo de la tarea implicada en el evento.
TaskManagerTask task = automationUtils.getTaskManagerTask(env);
System.out.println("Task name: " + task.getName());

Contexto del evento — getters de usuario y sesión

Sección titulada «Contexto del evento — getters de usuario y sesión»
Método Valores de retorno Descripción
getUser(Map<String, Object> env) DbUser Devuelve el objeto de usuario implicado en el evento. Disponible en eventos de creación, inicio y cierre de sesión de usuario.
DbUser user = automationUtils.getUser(env);
System.out.println("User ID: " + user.getId());
Método Valores de retorno Descripción
getTenant(Map<String, Object> env) long Devuelve el ID del tenant en un despliegue multi-tenant.
Método Valores de retorno Descripción
getHttpServletRequest(Map<String, Object> env) HttpServletRequest Devuelve la petición HTTP asociada al evento. Devuelve null si el evento no fue disparado por una petición HTTP (por ejemplo, tareas en segundo plano/crontab).
HttpServletRequest request = automationUtils.getHttpServletRequest(env);
if (request != null) {
String ip = request.getRemoteAddr();
}
Método Valores de retorno Descripción
getHttpServletResponse(Map<String, Object> env) HttpServletResponse Devuelve la respuesta HTTP asociada al evento. Devuelve null si no se está en un contexto HTTP.
Método Valores de retorno Descripción
getAuthentication(Map<String, Object> env) Authentication Devuelve el objeto Authentication de Spring Security del usuario que disparó el evento. Devuelve null si no está disponible.
Método Valores de retorno Descripción
getNoteText(Map<String, Object> env) String Devuelve el texto de la nota implicada en un evento de creación, actualización o eliminación de nota. Devuelve null si no está presente.
String noteText = automationUtils.getNoteText(env);
if (noteText != null) {
System.out.println("Note: " + noteText);
}

Estos métodos inspeccionan el evento actual para ayudar a las acciones a tomar decisiones de bifurcación sin codificar los nombres de evento de forma fija.

Método Valores de retorno Descripción
getEvent(Map<String, Object> env) AutomationRule.EnumEvents Devuelve el valor enum del evento actual, como EVENT_DOCUMENT_CREATE o EVENT_MAIL_MOVE.
AutomationRule.EnumEvents event = automationUtils.getEvent(env);
if (event == AutomationRule.EnumEvents.EVENT_DOCUMENT_CREATE) {
// ...
}
Método Valores de retorno Descripción
getEventAt(Map<String, Object> env) String Devuelve AutomationRule.AT_PRE o AutomationRule.AT_POST, indicando si la acción se ejecuta antes o después de que se complete la operación.
Método Valores de retorno Descripción
isPreEvent(Map<String, Object> env) boolean Devuelve true si la acción se ejecuta en la fase PRE (antes de que se complete la operación). En la fase PRE algunas variables (por ejemplo, name) pueden modificarse para alterar el resultado de la operación.
if (automationUtils.isPreEvent(env)) {
// Can still intercept and modify the operation
}
Método Valores de retorno Descripción
isMoveAction(Map<String, Object> env) boolean Devuelve true si el evento actual es un evento de movimiento para cualquier tipo de nodo (documento, carpeta, correo o expediente).
Método Valores de retorno Descripción
isCreationAction(Map<String, Object> env) boolean Devuelve true si el evento actual es un evento de creación para cualquier tipo de nodo (documento, carpeta, correo o expediente).
Método Valores de retorno Descripción
isDocumentCreateFromTemplate() boolean Devuelve true si el documento que se está creando proviene de una plantilla (llamada createFromTemplate). Inspecciona la pila de llamadas; no necesita parámetros.
if (automationUtils.isDocumentCreateFromTemplate()) {
// skip: document was created from a template, not uploaded by the user
return;
}
Método Valores de retorno Descripción
isFolderCreateFromTemplate() boolean Devuelve true si la carpeta se está creando como parte de la instanciación de una plantilla.
Método Valores de retorno Descripción
isRecordCreateFromTemplate() boolean Devuelve true si el expediente se está creando como parte de la instanciación de una plantilla.