Crear su propia Automation Action ( obsoleto )
Puede crear su propia acción de automatización (Automation Action).
Condiciones:
- La nueva clase de Automation Action debe implementar la interfaz “Action”.
- La nueva clase de Automation Action debe declararse en el paquete “com.openkm.automation.action”.
Interfaz de validación:
package com.openkm.automation;
import java.util.HashMap;
public interface Action { public static final String METHOD_PRE = "executePre"; public static final String METHOD_POST = "executePost";
public void executePre(HashMap<String, Object> env, Object... params); public void executePost(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 |
|---|---|---|
| executePre(Map<String, Object> env, Object… params) | void | El método ejecutado por el evento de Automation cuando se cumplen las condiciones de validación, en la fase “pre”. |
| executePost(Map<String, Object> env, Object… params) | void | El método ejecutado por el evento de Automation cuando se cumplen las condiciones de validación, en la fase “post”. |
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 map 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 contener varios Objects de distinto tipo; es necesario convertir los parámetros al tipo de objeto correcto.
Por ejemplo, para obtener el primer parámetro como un objeto String.
String param00 = AutomationUtils.getString(0, params);Evitar la recursión
Sección titulada «Evitar la recursión»Al crear sus acciones de automatización, debe tener en cuenta el caso de la recursividad. Por ejemplo, si su acción está vinculada al evento “CREATE_DOCUMENT” y dentro de la acción crea un nuevo documento, puede entrar en un bucle infinito. Por ello, al crear una nueva Action debe prestar especial atención a estos casos.
Registro
Sección titulada «Registro»Una vez creada la nueva Automation Action, 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: - “action”. |
| 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 AddKeyword:
package com.openkm.automation.action;
import java.util.HashMap;
import org.slf4j.Logger;import org.slf4j.LoggerFactory;
import com.openkm.automation.Action;import com.openkm.automation.AutomationUtils;import com.openkm.core.Config;import com.openkm.dao.NodeBaseDAO;
public class AddKeyword implements Action { private static Logger log = LoggerFactory.getLogger(AddKeyword.class);
@Override public void executePre(HashMap<String, Object> env, Object... params) { }
@Override public void executePost(HashMap<String, Object> env, Object... params) { String keyword = AutomationUtils.getString(0, params); String uuid = AutomationUtils.getUuid(env);
try { if (uuid != null) { if (Config.SYSTEM_KEYWORD_LOWERCASE && keyword != null) { keyword = keyword.toLowerCase(); }
NodeBaseDAO.getInstance().addKeyword(uuid, keyword); } } catch (Exception e) { log.error(e.getMessage(), e); } }}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.action.AddKeyword', 'AddKeyword', 'action', 'text', '', 'Keyword', '', '', '');Valores de las columnas de OKM_AUTO_METADATA para la Automation Action AddKeyword:
| Columna | Descripción |
|---|---|
| AMD_ID | Id único |
| AMD_AT | “post” |
| AMD_CLASS_NAME | “com.openkm.automation.action.AddKeyword” |
| AMD_DESC00 | “Keyword” |
| AMD_DESC01 | “” |
| AMD_DESC02 | “” |
| AMD_GROUP | “action”. |
| AMD_NAME | “AddKeyword”. |
| AMD_SRC00 | “”. |
| AMD_SRC01 | “”. |
| AMD_SRC02 | “”. |
| AMD_TYPE01 | “text”. |
| AMD_TYPE02 | “”. |
| AMD_TYPE03 | “”. |