Ir al contenido
Otras versiones

Cargando…

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

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

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

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.

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.

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