• Creacion de script autoImport

  • OpenKM tiene muchas características interesantes, pero es necesario un proceso de configuración para mostrar todo su potencial.
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.
 #50328  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
 #50338  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.
 #50347  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>");
      }
    }
 #50375  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.

About Us

OpenKM is part of the management software. A management software is a program that facilitates the accomplishment of administrative tasks. OpenKM is a document management system that allows you to manage business content and workflow in a more efficient way. Document managers guarantee data protection by establishing information security for business content.