Creacion de script autoImport

OpenKM tiene muchas características interesantes, pero es necesario un proceso de configuración para mostrar todo su potencial.
Forum rules
Por favor, antes de preguntar algo consulta el wiki de documentación o utiliza la función de búsqueda del foro. Recuerda que no tenemos una bola de cristal ni poderes mentales, o sea que que para informar sobre un error es necesario que nos indiques tanto la versión de OpenKM que usas como la del navegador y sistema operativo. Para más información consulta Cómo informar de fallos de forma efectiva.
Post Reply
amontes
Fresh Boarder
Fresh Boarder
Posts: 2
Joined: Wed Aug 05, 2020 10:34 am

Creacion de script autoImport

Post by amontes »

Hola buenas días/tardes , estoy preparando un Script para la importación de archivos a openKM, en la clase JAVA tengo varias importaciones de librerías:

Code: Select all

import com.openkm.core.*;
import com.openkm.api.*;
import java.io.*;
import com.openkm.module.db.stuff.DbSessionManager;
import com.openkm.util.FileLogger;
import com.openkm.util.StackTraceUtils; 
Querría saber de donde puedo obtener esas librerias para mi script, además de eso estoy viendo que se usa un token para la creación de la carpeta

Code: Select all

String token = DbSessionManager.getInstance().getSystemToken();
OKMDocument document = OKMDocument.getInstance();
Necesitaría ayuda si les es posible.. Gracias por adelantado

jllort
Moderator
Moderator
Posts: 11204
Joined: Fri Dec 21, 2007 11:23 am
Location: Sineu - ( Illes Balears ) - Spain
Contact:

Re: Creacion de script autoImport

Post by jllort »

Si es un script puedes ir probándolo desde OpenKM ( Administration > Scripting ), aunque mi consejo es que crees una clase JAVA para estos asuntos. Yo me descargaría el entorno de desarrollo -> lo tienes en nuestra web https://www.openkm.com/en/download.html ( tienes un video que te muestra como configurarlo ). Una vez instalado en el eclipse encontraras proyectos de ejemplo que te pueden ayudar a empezar.

amontes
Fresh Boarder
Fresh Boarder
Posts: 2
Joined: Wed Aug 05, 2020 10:34 am

Re: Creacion de script autoImport

Post by amontes »

Vale..lo mejor creo que es empezar por el principio.. soy nuevo en OpenKM, un cliente me solicito ayuda para poder crear una importacion de ficheros a openKM, las librerias las he conseguido y las he importado en mi proyecto en netbeans, pero parece ser que usa un toquen para poder importar los archivos dentro de openKM, entonces no creo que funcione ejecutando solo el script con las librerias importadas.. necesitaría ayuda ya que estoy en un callejon sin salida.. Gracias.. el script es :

Code: Select all

import com.openkm.api.OKMDocument;
import com.openkm.api.OKMFolder;
import com.openkm.core.ItemExistsException;
import com.openkm.module.db.stuff.DbSessionManager;
import com.openkm.util.FileLogger;
import com.openkm.util.StackTraceUtils;
import java.io.*;

    public void autoImport(String okmPath, File fldpath){
      try {
        System.out.println("Scanning " + fldpath.getName() + "<br>");
        for (File file : fldpath.listFiles()) {
           System.out.println("Importing " + file.getName() + "<br>");
              try {
                if (file.isDirectory()) {
                  try {
                    folder.createSimple(token, okmPath + file.getName());
                    System.out.println("Created folder" + okmPath + file.getName() + "<br>");
                  } catch (ItemExistsException ie) {
                     System.out.println("folder already exists<br>");
                    // Folder already exists - just ignore exception
                  }
                  autoImport( okmPath + file.getName() + "/", file);
                } else {
                  // Check if file is still being written to
                  long length = file.length();
                  Thread.sleep(1000);
                  if (file.length() > length) continue;  // Skip file this time
                  document.createSimple(token, okmPath + file.getName(), new FileInputStream(file));
                  System.out.println("Created document " + okmPath + file.getName() + "<br>");
                }

              } catch (Exception e) {
                 System.out.println("Exception:" + e + "<br>");
                // Something bad happened to prevent import. Skip to next file.
                continue;
              }
          file.delete();
         }
      } catch (Exception e) {
         System.out.println("Exception: " + e + "<br>");
      }
    }

jllort
Moderator
Moderator
Posts: 11204
Joined: Fri Dec 21, 2007 11:23 am
Location: Sineu - ( Illes Balears ) - Spain
Contact:

Re: Creacion de script autoImport

Post by jllort »

ESte script se ejecuta directamente desde OpenKM bien por Administration > Scription o porque se ha registrado como tarea de crontab. Las tareas de crontab se ejecutan sin usuario, por lo tanto es necesario utilizar un token de sistema :

Code: Select all

String token = DbSessionManager.getInstance().getSystemToken();
OKMDocument document = OKMDocument.getInstance();
Siempre que sea posible nosotro aconsejamos trabajar con clases JAVA en vez de con scripts, por varias razones, el código es compilado y ademas se puede debugear. En esta sección de la documentación tenemos información de como crear tus propias tareas de crontab https://docs.openkm.com/kcenter/view/ok ... b-job.html

Recomendamos en general descargar el entorno personal de desarrollo, en esta página web https://www.openkm.com/es/descargar.html lo encontraras y además con un video explicativo de como instalarlo. El entorno viene con un OpenKM ya configurado y listo para ser utilizado así como eclipse y el código fuente con un par de proyectos de ejemplo, uno de los cuales es una tarea de crontab.

Post Reply