Ir al contenido
Otras versiones

Cargando…

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

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

Entender el contexto de ejecución de una tarea de crontab

Sección titulada «Entender el contexto de ejecución de una tarea de crontab»

Contexto de ejecución:

  • La tarea de crontab se ejecuta con el usuario interno llamado “system” (la tarea no tiene una sesión de usuario válida).
  • La tarea de crontab se ejecuta con 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 métodos de la API desde una tarea de crontab:

String systemToken = DbSessionManager.getInstance().getSystemsystemToken();
OKMFolder.getInstance().createSimple(systemToken, "/okm:root/test")