Fallo en ejecución de scripts

Hemos intentado hacer de OpenKM una aplicación lo más intuitiva posible, sin embargo siempre viene bien algún consejo.
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
rcarracedo
Junior Boarder
Junior Boarder
Posts: 22
Joined: Tue Sep 20, 2011 12:42 pm
Location: A Coruña

Fallo en ejecución de scripts

Post by rcarracedo »

Hola de nuevo:

Al intentar ejecutar el script de ejemplo de cómo renombrar automáticamente un documento me da el siguiente error:

Error in method invocation: Static method getParent( java.lang.String ) not found in class'com.openkm.util.FileUtils'

El script es este:

Code: Select all

String parent = com.openkm.util.FileUtils.getParent(eventNode.getPath());
session.move(eventNode.getPath(), parent+"/renamed_document.doc");
session.save();
Parece que el sistema no puede encontrar la clase FileUtils. No tengo muy claro, ¿es necesario instanciar esta clase o sería un bug del programa?

Saludos!
pavila
Moderator
Moderator
Posts: 3113
Joined: Tue Dec 11, 2007 6:02 pm
Location: Alicante, Spain
Contact:

Re: Fallo en ejecución de scripts

Post by pavila »

Depende de la versión de OpenKM que estés usando. Con un OpenKM 5.1.9 debería funcionar bien pq tiene esa clase con ese método.
rcarracedo
Junior Boarder
Junior Boarder
Posts: 22
Joined: Tue Sep 20, 2011 12:42 pm
Location: A Coruña

Re: Fallo en ejecución de scripts

Post by rcarracedo »

Estoy con la última nightly build, y al ejecutarse el siguiente script:

Code: Select all

print ("---------->" + com.openkm.util.FileUtils.getParent(eventNode.getPath()));
que tengo en el repositorio asociado a una carpeta, me da el siguente error:

Code: Select all

10:51:11,494 WARN  [BaseScriptingModule] Sourced file: inline evaluation of: ``//String parent =   print ("---------->" + com.openkm.util.FileUtils.getParent(e . . . '' : Error in method invocation: Static method getParent( java.lang.String ) not found in class'com.openkm.util.FileUtils'
Sourced file: inline evaluation of: ``//String parent =   print ("---------->" + com.openkm.util.FileUtils.getParent(e . . . '' : Error in method invocation: Static method getParent( java.lang.String ) not found in class'com.openkm.util.FileUtils' : at Line: 2 : in file: inline evaluation of: ``//String parent =   print ("---------->" + com.openkm.util.FileUtils.getParent(e . . . '' : com .openkm .util .FileUtils .getParent ( eventNode .getPath ( ) )
sin embargo, si hago

Code: Select all

print ("---------->" + eventNode.getPath());
Sí que funciona.
jllort
Moderator
Moderator
Posts: 11512
Joined: Fri Dec 21, 2007 11:23 am
Location: Sineu - ( Illes Balears ) - Spain
Contact:

Re: Fallo en ejecución de scripts

Post by jllort »

Te esta diciendo que este método no existe en esa clase Static method getParent( java.lang.String ) puede ser que el método esté en una versión de OpenKM superior a la actual o que se haya hecho alguna refactorización, he comprobado la clase y ahora mismo este método - getParent - no existe.

Utiliza la clase Util.java en com.openkm.frontend.client.util

Y por si no te has bajado el código fuente, hecha un vistazo a http://doxygen.openkm.com/5.1.x/ ( por lo que veo no esta actualizada con respecto al nighlty build )
rcarracedo
Junior Boarder
Junior Boarder
Posts: 22
Joined: Tue Sep 20, 2011 12:42 pm
Location: A Coruña

Re: Fallo en ejecución de scripts

Post by rcarracedo »

Hola jllort:

Efectivamente, ahora con:

Code: Select all

print ("---------->" + com.openkm.frontend.client.util.Util.getParent(eventNode.getPath())); 
funciona correctamente.

Desconozco cómo funciona el Doxigen. ¿No se puede poner para que se actualice en función del código fuente cada día? De todas formas me ha servido para ver cómo localizar las funciones en el código de sourceforge.

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

Re: Fallo en ejecución de scripts

Post by jllort »

Creo que el doxygen lo regeneramos manualmente, lo mirare, en cualquier caso solo se debe regenerar cuando sacamos una release, sino puede haber lio y esta es la razón por la que creo que se hace manualmente.
oscasand
Fresh Boarder
Fresh Boarder
Posts: 1
Joined: Wed Aug 05, 2020 11:18 pm

Re: Fallo en ejecución de scripts

Post by oscasand »

Buenas noches. Soy nuevo en OpenKm. Tengo la version 6.3.9 CE en Windows 10.
Estoy estudiando el tema de scripting. Pero varios métodos que aparecen en la documentación, no son reconocidos.
Por ejemplo:
Script 1
https://docs.openkm.com/kcenter/view/ok ... -file.html
Error 1

Code: Select all

bsh.EvalError: Sourced file: inline evaluation of: ``import java.io.FileReader; import java.io.Reader; import java.util.Iterator; . . . '' : Error in method invocation: [color=#800040]Method getDocument() not found in class'com.openkm.bean.QueryResult'[/color] : at Line: 59 : in file: inline evaluation of: ``import java.io.FileReader; import java.io.Reader; import java.util.Iterator; . . . '' : queryResult .getDocument ( )
Script 2

Code: Select all

package com.openkm;
import java.util.Map;
import com.openkm.api.OKMPropertyGroup;
        try {           
            Map properties = OKMPropertyGroup.getInstance().getPropertiesSimple(null,"/okm:root/doc1.txt", "okg:metadata");
            for (String key : properties.keySet()) {
                System.out.println(key + ":" + properties.get(key));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
Error 2

Code: Select all

bsh.EvalError: Sourced file: inline evaluation of: ``package com.openkm; import java.util.Map; import com.openkm.api.OKMPropert . . . '' : Typed variable declaration : Error in method invocation: [color=#800040]Method getPropertiesSimple(null, java.lang.String, java.lang.String) not found in class'com.openkm.api.OKMPropertyGroup[/color]' : at Line: 8 : in file: inline evaluation of: ``package com.openkm; import java.util.Map; import com.openkm.api.OKMPropert . . . '' : .getPropertiesSimple ( null , "/okm:root/doc1.txt" , "okg:metadata" ) 
Como se puede resolver esto?
De antemano muchas gracias.
jllort
Moderator
Moderator
Posts: 11512
Joined: Fri Dec 21, 2007 11:23 am
Location: Sineu - ( Illes Balears ) - Spain
Contact:

Re: Fallo en ejecución de scripts

Post by jllort »

En lugar de getDocument() tienes que utilizar getNode(). Esto es debido a una modificación que se ha realizado en versiones succesivas de OpenKM ( he actualizado esta sección de la documentación ).

Sobre el método

Code: Select all

Map properties = OKMPropertyGroup.getInstance().getPropertiesSimple(null,"/okm:root/doc1.txt", "okg:metadata");
No existe en la versión community, tienes que utilizar el getProperties() ( también he actualizado esta sección de la documentación https://docs.openkm.com/kcenter/view/ok ... tiesSimple )
Post Reply