Crear su propio plugin de Crontab
Puede crear su propio analizador antivirus.
Condiciones:
- La nueva clase de analizador antivirus debe implementar la interfaz “CronAdapter”.
- La nueva clase de analizador antivirus debe declararse en el paquete “com.openkm.plugin.cron”.
- La nueva clase de analizador antivirus debe estar anotada con “@PluginImplementation”.
- La nueva clase de analizador antivirus debe extender “BaseCronPlugin”.
Interfaz del analizador antivirus:
package com.openkm.plugin.cron;
import net.xeoh.plugins.base.Plugin;
public interface CronAdapter extends Runnable, Plugin { /** * The cron name */ String getName();
/** * The default cron expression what will be registered the first time */ String getCronExpression();
/** * Return if task is running or not */ boolean isRunning();
/** * Cron task execution */ void execute();}La nueva clase debe cargarse en el paquete com.openkm.plugin.cron porque el sistema de plugins de la aplicación intentará cargarla desde allí.
Descripción de los métodos
Sección titulada «Descripción de los métodos»| Método | Tipo | Descripción |
|---|---|---|
| getName() | String | Devuelve el nombre del crontab. |
| getCronExpression | String | Devuelve la expresión cron. |
| isRunning | Boolean | Devuelve true cuando la tarea cron se está ejecutando. |
| execute | Void | Ejecuta la tarea cron. |
Ejemplo de una implementación de cron
Sección titulada «Ejemplo de una implementación de cron»package com.openkm.plugin.cron;
import com.openkm.api.OKMRepository;import com.openkm.bean.Folder;import com.openkm.module.db.stuff.DbSessionManager;import com.openkm.util.FileLogger;import net.xeoh.plugins.base.annotations.PluginImplementation;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;
@PluginImplementationpublic class TestCron extends BaseCronPlugin implements CronAdapter { private static Logger log = LoggerFactory.getLogger(TestCron.class); private static String LOG_NAME = "TestCron";
@Autowired private OKMRepository okmRepository;
@Override public String getName() { return "Cron test"; }
@Override public String getCronExpression() { return "0 * * * * *"; }
@Override public void execute() { try { FileLogger.info(LOG_NAME, ">>> Started"); // Use always system token in your cron String token = DbSessionManager.getInstance().getSystemToken(); Folder rootFolder = okmRepository.getRootFolder(token); FileLogger.info(LOG_NAME, "Root folder uuid: " + rootFolder.getUuid()); FileLogger.info(LOG_NAME, ">>> Finished"); } catch (Exception e) { log.error(e.getMessage()); } }}Comprender el contexto de ejecución de una tarea de crontab
Sección titulada «Comprender el contexto de ejecución de una tarea de crontab»Contexto de ejecución:
- La tarea de crontab la ejecuta el usuario interno llamado “system” ( la tarea no tiene una sesión de usuario válida ).
- La tarea de crontab la ejecuta el usuario administrador ( la tarea tiene una sesión de usuario válida ).
Utilizar el token del sistema es una buena práctica al llamar a los métodos de la API en una tarea de crontab:
String systemToken = DbSessionManager.getInstance().getSystemsystemToken();OKMFolder.getInstance().createSimple(systemToken, "/okm:root/test")