Ir al contenido
Otras versiones

Cargando…

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í.

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;
@PluginImplementation
public 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")