Ir al contenido
Otras versiones

Cargando…

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

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

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