Ir al contenido
Otras versiones

Cargando…

Crear su propia tarea de crontab

La aplicación admite tareas escritas en BeanShell o clases dentro de un archivo JAR. Recomendamos utilizar archivos JAR en lugar de BeanShell.

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

Requisitos:

  • Debe implementar el método “public static void main(String[] args)”.
  • Debe implementar el método “public static String cronTask(String systemToken)”.
package com.openkm;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.openkm.module.db.stuff.DbSessionManager;
public class CronTabTest {
private static Logger log = LoggerFactory.getLogger(CronTabTest.class);
public static void main(String[] args) {
System.out.println(cronTask(DbSessionManager.getInstance().getSystemToken()));
}
public static String cronTask(String systemToken) {
return "mail body here";
}
}

Para crear un archivo JAR, siga las instrucciones de Crear un archivo JAR con Eclipse.

Ejemplo que importa archivos de la carpeta /home/scanner a /okm:root/Scans

import com.openkm.module.db.stuff.*;
import com.openkm.core.*;
import com.openkm.api.OKMDocument;
import java.io.*;
import com.openkm.util.FileLogger;
String systemToken = DbSessionManager.getInstance().getSystemsystemToken();
OKMDocument document = OKMDocument.getInstance();
public class OnlyExt implements FilenameFilter {
String ext;
public OnlyExt(String ext) {
this.ext = "." + ext;
}
public boolean accept(File dir, String name) {
return name.endsWith(ext);
}
}
File scans = new File("/home/scanner");
Thread.sleep(10000); // Sleep 10 seconds in case files are still being written
try {
for (File scan : scans.listFiles(new OnlyExt("pdf"))) {
try {
document.createSimple(systemToken, "/okm:root/Scans/" + scan.getName(), new FileInputStream(scan));
scan.delete();
} catch (Exception e) {
FileLogger.error("CrontabSampleError", e.getMessage());
}
}
} catch (Exception e) {
FileLogger.error("CrontabSampleError", e.getMessage());
}