Creación de su propio plugin de Crontab
Puede crear su propio Antivirus Analyzer.
Condiciones:
- La nueva clase Antivirus Analyzer debe implementar la interfaz “CronAdapter”.
- La nueva clase Antivirus Analyzer debe declararse bajo el paquete “com.openkm.plugin.cron”.
- La nueva clase Antivirus Analyzer debe estar anotada con “@PluginImplementation”.
- La nueva clase Antivirus Analyzer debe extender “BaseCronPlugin”.
Interfaz Antivirus Analyzer:
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 ahí.
Descripción del método
Sección titulada «Descripción del método»| Method | Type | Description |
|---|---|---|
| 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 la implementación del cron de disposición
Sección titulada «Ejemplo de la implementación del cron de disposición»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()); } }}Entendiendo el contexto de ejecución de la tarea crontab
Sección titulada «Entendiendo el contexto de ejecución de la tarea crontab»Contexto de ejecución:
- La tarea crontab se ejecuta mediante el usuario interno llamado “system” ( la tarea no tiene una sesión de usuario válida ).
- La tarea crontab se ejecuta mediante el usuario administrador ( la tarea tiene una sesión de usuario válida ).
Es buena práctica usar el token del sistema al llamar a los métodos de la API en una tarea crontab:
String systemToken = DbSessionManager.getInstance().getSystemsystemToken();OKMFolder.getInstance().createSimple(systemToken, "/okm:root/test")