Ir al contenido
Otras versiones

Cargando…

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);
}
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.

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);

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);

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.

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 “”.