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.
Nota
No todas las variables están disponibles en todos los eventos. Si llama a un getter de una variable que no ha sido establecida por el evento actual, se lanza una AutomationException. Use los métodos guardia has*() cuando estén disponibles, o gestione la excepción explícitamente.
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;
public class MyCustomAction implements Action {
private AutomationUtils automationUtils;
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 ...
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);
// 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.
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")) {
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.
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 .
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());
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);
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);
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
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.