Crear su propia Automation Validation ( obsoleto )
Puede crear su propia validación de automatización (Automation Validation).
Condiciones:
- La nueva clase de Automation Validation debe implementar la interfaz “Validation”.
- La nueva clase de Automation Validation debe declararse en el paquete “com.openkm.automation.validation”.
Interfaz de validación:
package com.openkm.automation;
import java.util.HashMap;
public interface Validation { public static final String METHOD = "isValid";
boolean isValid(HashMap<String, Object> env, Object... params);}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 | Método ejecutado por el evento de Automation para evaluar si las condiciones son verdaderas o falsas. |
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 la automatización. Estos valores del mapa proporcionan información sobre el nodo implicado en el evento y otra información relacionada.
Por ejemplo, para recuperar el uuid del nodo que causó el evento.
String uuid = AutomationUtils.getUuid(env);Entender la variable params
Sección titulada «Entender la variable params»La variable env 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.
El array puede tener varios Objects de distinto tipo, por lo que es necesario recuperar los parámetros con el tipo de objeto correcto.
Por ejemplo, para recuperar el primer parámetro como objeto String.
String param00 = AutomationUtils.getString(0, params);Registro
Sección titulada «Registro»Una vez creada la nueva Automation Validation, y tras compilar el archivo OpenKM.war y desplegarlo en tomcat, debe registrarse en la tabla OKM_AUTO_METADATA;
Descripción de las columnas de OKM_AUTO_METADATA:
| Columna | Descripción |
|---|---|
| AMD_ID | Id único autoincremental |
| AMD_AT | Indica cuándo puede ejecutarse la Automation Action, los valores son: - “pre” indica que puede ejecutarse inmediatamente antes de la acción que la ha disparado. - “post” indica que puede ejecutarse después de la acción que la ha disparado. |
| AMD_CLASS_NAME | Nombre de la clase Java. |
| AMD_DESC00 | Descripción del parámetro 0. |
| AMD_DESC01 | Descripción del parámetro 1. |
| AMD_DESC02 | Descripción del parámetro 2. |
| AMD_GROUP | Tipo de automatización, los valores permitidos son: - “validation”. |
| AMD_NAME | Nombre. |
| AMD_SRC00 | Origen, los valores permitidos son: - “” valor por defecto. - “okm:folder” indica que el valor es un uuid de carpeta. Cuando se aplica el tipo “okm:folder” se mostrará un popup selector de carpeta. |
| AMD_SRC01 | Origen, los valores permitidos son: - “” valor por defecto. - “okm:folder” indica que el valor es un uuid de carpeta. Cuando se aplica el tipo “okm:folder” se mostrará un popup selector de carpeta. |
| AMD_SRC02 | Origen, los valores permitidos son: - “” valor por defecto. - “okm:folder” indica que el valor es un uuid de carpeta. Cuando se aplica el tipo “okm:folder” se mostrará un popup selector de carpeta. |
| AMD_TYPE01 | Los tipos de valores permitidos son: - “” valor por defecto. - “text”. - “textarea”. - “integer”. - “boolean”. El tipo tendrá efecto en el widget mostrado en la interfaz de usuario. |
| AMD_TYPE02 | Los tipos de valores permitidos son: - “” valor por defecto. - “text”. - “textarea”. - “integer”. - “boolean”. El tipo tendrá efecto en el widget mostrado en la interfaz de usuario. |
| AMD_TYPE03 | Los tipos de valores permitidos son: - “” valor por defecto. - “text”. - “textarea”. - “integer”. - “boolean”. El tipo tendrá efecto en el widget mostrado en la interfaz de usuario. |
Ejemplo
Sección titulada «Ejemplo»Clase PathContains:
package com.openkm.automation.validation;
import java.util.HashMap;
import org.slf4j.Logger;import org.slf4j.LoggerFactory;
import com.openkm.api.OKMRepository;import com.openkm.automation.AutomationUtils;import com.openkm.automation.Validation;
/** * 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. * */public class PathContains implements Validation { private static Logger log = LoggerFactory.getLogger(PathContains.class);
@Override public boolean isValid(HashMap<String, Object> env, Object... params) { try { String uuid = AutomationUtils.getString(0, params); String parentPath = AutomationUtils.getParentPath(env); String path = OKMRepository.getInstance().getNodePath(null, uuid);
if (parentPath.startsWith(path)) { return true; } else { return false; } } catch (Exception e) { log.error(e.getMessage(), e); }
return false; }}Vaya a Administration > Database query y ejecute el sql:
INSERT INTO OKM_AUTO_METADATA (AMD_AT, AMD_CLASS_NAME, AMD_NAME, AMD_GROUP, AMD_TYPE00, AMD_SRC00, AMD_DESC00, AMD_TYPE01, AMD_SRC01, AMD_DESC01) VALUES ('post', 'com.openkm.automation.validation.PathContains', 'PathContains', 'validation', 'text', 'okm:folder', 'String', '', '', '');Valores de las columnas de OKM_AUTO_METADATA para la Automation Validation PathContains:
| Columna | Descripción |
|---|---|
| AMD_ID | Id único |
| AMD_AT | “post” |
| AMD_CLASS_NAME | “com.openkm.automation.validation.PathContains” |
| AMD_DESC00 | “String” |
| AMD_DESC01 | “” |
| AMD_DESC02 | “” |
| AMD_GROUP | “validation”. |
| AMD_NAME | “PathContains”. |
| AMD_SRC00 | “okm:folder”. |
| AMD_SRC01 | “”. |
| AMD_SRC02 | “”. |
| AMD_TYPE01 | “text”. |
| AMD_TYPE02 | “”. |
| AMD_TYPE03 | “”. |