Crear su propia Automation Validation
Puede crear su propia Automation Validation.
Condiciones:
- La nueva clase Automation Validation debe implementar la interfaz “Validation”.
- La nueva clase Automation Validation debe declararse bajo el paquete “com.openkm.plugin.automation.validation”.
- La nueva clase Automation Validation debe anotarse con “@PluginImplementation”.
- La nueva clase Automation Validation debe extender BasePlugin.
Interfaz Automation Validation:
package com.openkm.plugin.automation;
import com.openkm.db.bean.AutomationRule.EnumEvents;import net.xeoh.plugins.base.Plugin;
import java.util.List;import java.util.Map;
public interface Validation extends Plugin {
String METHOD = "isValid";
boolean isValid(Map<String, Object> env, Object... params) throws AutomationException;
String getName();
String getParamType00();
String getParamSrc00();
String getParamDesc00();
String getParamType01();
String getParamSrc01();
String getParamDesc01();
String getParamType02();
String getParamSrc02();
String getParamDesc02();
List<EnumEvents> getValidEventsAtPre();
List<EnumEvents> getValidEventsAtPost();}La nueva clase debe cargarse en el paquete com.openkm.plugin.automation.validation porque el sistema de plugins de la aplicación intentará cargarla desde ahí.
Descripción de los métodos
Sección titulada «Descripción de los métodos»| Método | Tipo | Descripción |
|---|---|---|
| isValid(Map<String, Object> env, Object… params) | boolean | El método que ejecuta el evento de Automation para evaluar si las condiciones son verdaderas o falsas. |
| getName() | String | Establece el nombre que se mostrará en el selector de la interfaz de administración. |
| getParamType00 getParamType01 getParamType02 |
String | Establece el tipo de parámetro. Valores disponibles: - Automation.PARAM_TYPE_EMPTY - Automation.PARAM_TYPE_TEXT - Automation.PARAM_TYPE_INTEGER - Automation.PARAM_TYPE_BOOLEAN - Automation.PARAM_TYPE_TEXTAREA - Automation.PARAM_TYPE_CODE - Automation.PARAM_TYPE_USER - Automation.PARAM_TYPE_ROLE - Automation.PARAM_TYPE_OMR Cuando el valor es Automation.PARAM_TYPE_EMPTY. Los parámetros funcionan como un grupo lógico. [ getParamType00 + getParamSrc00 + getParamDesc00 ] |
| getParamSrc00 getParamSrc01 getParamSrc02 |
String | Establece el tipo de origen. Valores disponibles: - Automation.PARAM_SOURCE_EMPTY - Automation.PARAM_SOURCE_FOLDER - Automation.PARAM_SOURCE_OMR |
| getParamDesc00 getParamDesc01 getParamDesc02 |
String | La descripción del parámetro. |
| getValidEventsAtPre() | List |
Devuelve una lista de eventos. El método devuelve una lista de eventos válidos para la prevalidación. |
| getValidEventsAtPost() | List |
Devuelve una lista de eventos. El método devuelve una lista de eventos válidos para la posvalidación. |
Entender la variable env
Sección titulada «Entender la variable env»La variable env está presente en el método isValid; es un Map de valores inyectados por automation. Estos valores del map proporcionan información sobre el nodo implicado en el evento y otra información relacionada.
Por ejemplo, para obtener el nodo que causó el evento.
NodeBase node = automationUtils.getNodeToEvaluate(env);Entender la variable params
Sección titulada «Entender la variable params»La variable params está presente en el método isValid; es un array de Objects. Este array lo rellena el evento de Automation según el número de parámetros establecidos en la clase Validation (que no serán Automation.PARAM_TYPE_EMPTY).
El array puede tener varios objetos de distintos tipos; es necesario obtener los parámetros con el tipo de objeto correcto.
Por ejemplo, para obtener el primer parámetro como un objeto String.
String param00 = automationUtils.getString(0, params);Descripción de los valores disponibles de ParamType:
Sección titulada «Descripción de los valores disponibles de ParamType:»| Propiedad | Descripción |
|---|---|
| Automation.PARAM_TYPE_EMPTY | Indica un valor vacío. |
| Automation.PARAM_TYPE_TEXT | Indica que se requerirá un valor de texto. |
| Automation.PARAM_TYPE_INTEGER | Indica que se requerirá un valor entero. |
| Automation.PARAM_TYPE_BOOLEAN | Indica que se requerirá un valor booleano. |
| Automation.PARAM_TYPE_TEXTAREA | Indica que se requerirá un valor de área de texto. |
| Automation.PARAM_TYPE_CODE | Indica que se requerirá un código. |
| Automation.PARAM_TYPE_USER | Indica que se requerirá un usuario válido de la aplicación. |
| Automation.PARAM_TYPE_ROLE | Indica que se requerirá un rol válido de la aplicación. |
| Automation.PARAM_TYPE_OMR | Indica que se requerirá un id OMR válido - reconocimiento óptico de marcas. |
Descripción de los valores disponibles de Src:
Sección titulada «Descripción de los valores disponibles de Src:»| Propiedad | Descripción |
|---|---|
| PARAM_SOURCE_EMPTY | Indica un origen vacío. |
| PARAM_SOURCE_FOLDER | Indica que el origen debe ser una carpeta. |
| PARAM_SOURCE_OMR | Indica que el origen debe ser un OMR válido - reconocimiento óptico de marcas. |
Ejemplo
Sección titulada «Ejemplo»Clase PathContains:
package com.openkm.plugin.automation.validation;
import com.openkm.api.OKMRepository;import com.openkm.db.bean.Automation;import com.openkm.db.bean.AutomationRule.EnumEvents;import com.openkm.db.bean.NodeBase;import com.openkm.db.service.NodeBaseSrv;import com.openkm.plugin.BasePlugin;import com.openkm.plugin.automation.AutomationException;import com.openkm.plugin.automation.AutomationUtils;import com.openkm.plugin.automation.Validation;import net.xeoh.plugins.base.annotations.PluginImplementation;import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.stream.Collectors;import java.util.stream.Stream;
/** * Check if the current parent path contains a designed one. The only parameter * is a path and will test if this one is included in the actual parent. */@PluginImplementationpublic class PathContains extends BasePlugin implements Validation {
private static ArrayList<EnumEvents> EVENTS_AT_PRE = Stream.of(EnumEvents.EVENT_DOCUMENT_CREATE, EnumEvents.EVENT_DOCUMENT_UPDATE, EnumEvents.EVENT_DOCUMENT_DELETE, EnumEvents.EVENT_DOCUMENT_RENAME, EnumEvents.EVENT_DOCUMENT_MOVE, EnumEvents.EVENT_DOCUMENT_RESTORE_VERSION, EnumEvents.EVENT_DOCUMENT_DOWNLOAD_FROM_UI, EnumEvents.EVENT_DOCUMENT_DOWNLOAD_FROM_UI_FOR_PREVIEW, EnumEvents.EVENT_DOCUMENT_PRINT, EnumEvents.EVENT_DOCUMENT_STAMP, EnumEvents.EVENT_RECORD_CREATE, EnumEvents.EVENT_RECORD_DELETE, EnumEvents.EVENT_FOLDER_CREATE, EnumEvents.EVENT_FOLDER_DELETE, EnumEvents.EVENT_MAIL_CREATE, EnumEvents.EVENT_MAIL_DOWNLOAD_FROM_UI, EnumEvents.EVENT_LINK_CREATE, EnumEvents.EVENT_TEXT_EXTRACTOR, EnumEvents.EVENT_PROPERTY_GROUP_ADD, EnumEvents.EVENT_PROPERTY_GROUP_SET, EnumEvents.EVENT_PROPERTY_GROUP_REMOVE ).collect(Collectors.toCollection(ArrayList::new));
private static ArrayList<EnumEvents> EVENTS_AT_POST = Stream.of(EnumEvents.EVENT_DOCUMENT_CREATE, EnumEvents.EVENT_DOCUMENT_UPDATE, EnumEvents.EVENT_DOCUMENT_DELETE, EnumEvents.EVENT_DOCUMENT_RENAME, EnumEvents.EVENT_DOCUMENT_MOVE, EnumEvents.EVENT_DOCUMENT_RESTORE_VERSION, EnumEvents.EVENT_DOCUMENT_DOWNLOAD_FROM_UI, EnumEvents.EVENT_DOCUMENT_DOWNLOAD_FROM_UI_FOR_PREVIEW, EnumEvents.EVENT_DOCUMENT_PRINT, EnumEvents.EVENT_DOCUMENT_STAMP, EnumEvents.EVENT_RECORD_CREATE, EnumEvents.EVENT_RECORD_DELETE, EnumEvents.EVENT_FOLDER_CREATE, EnumEvents.EVENT_FOLDER_DELETE, EnumEvents.EVENT_MAIL_CREATE, EnumEvents.EVENT_MAIL_DOWNLOAD_FROM_UI, EnumEvents.EVENT_LINK_CREATE, EnumEvents.EVENT_TEXT_EXTRACTOR, EnumEvents.EVENT_PROPERTY_GROUP_ADD, EnumEvents.EVENT_PROPERTY_GROUP_SET, EnumEvents.EVENT_PROPERTY_GROUP_REMOVE, EnumEvents.EVENT_MAIL_IMPORT_ATTACHMENTS ).collect(Collectors.toCollection(ArrayList::new));
@Autowired private AutomationUtils automationUtils;
@Autowired private OKMRepository okmRepository;
@Autowired private NodeBaseSrv nodeBaseSrv;
@Override public boolean isValid(Map<String, Object> env, Object... params) throws AutomationException { try { String fldUuid = automationUtils.getString(0, params); NodeBase node = automationUtils.getNodeToEvaluate(env); String parentPath = nodeBaseSrv.getPathFromUuid(node.getParent()); String fldPath = okmRepository.getNodePath(null, fldUuid);
if (parentPath.startsWith(fldPath)) { return true; } else { return false; } } catch (Exception e) { throw new AutomationException("PathContains exception", e); } }
@Override public String getName() { return "PathContains"; }
@Override public String getParamType00() { return Automation.PARAM_TYPE_TEXT; }
@Override public String getParamSrc00() { return Automation.PARAM_SOURCE_FOLDER; }
@Override public String getParamDesc00() { return "String"; }
@Override public String getParamType01() { return Automation.PARAM_TYPE_EMPTY; }
@Override public String getParamSrc01() { return Automation.PARAM_SOURCE_EMPTY; }
@Override public String getParamDesc01() { return ""; }
@Override public String getParamType02() { return Automation.PARAM_TYPE_EMPTY; }
@Override public String getParamSrc02() { return Automation.PARAM_SOURCE_EMPTY; }
@Override public String getParamDesc02() { return ""; }
@Override public List<EnumEvents> getValidEventsAtPre() { return EVENTS_AT_PRE; }
@Override public List<EnumEvents> getValidEventsAtPost() { return EVENTS_AT_POST; }}