• Crear informe con campo nota

  • 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.
 #53599  by albertogomez38
 
Estoy intentando crear un informe partiendo de este codigo...
Code: Select all
import java.util.*;
import com.openkm.api.*;
import com.openkm.bean.*;
import com.openkm.util.*;

int MAX_DEPTH = Integer.MAX_VALUE;
List al = new ArrayList();

void nodeTask(String path, int depth) throws Exception {
    for (Document doc : OKMDocument.getInstance().getChildren(null, path)) {
        Map mapDoc = new HashMap();
        mapDoc.put("name", PathUtils.getName(doc.getPath()));
        mapDoc.put("version",doc.getActualVersion().getName());
        mapDoc.put("checksum", doc.getActualVersion().getChecksum());
        mapDoc.put("path",doc.getPath().replace("/okm:root",""));
        mapDoc.put("nota",doc.getNotes());
        al.add(mapDoc);
    }

    for (Folder fld : OKMFolder.getInstance().getChildren(null, path)) {
        if (depth < MAX_DEPTH) {
            nodeTask(fld.getPath(), depth + 1);
        }
    }
}
nodeTask("/okm:root/c1", 0);
return al;

Cuando lo ejecuto tengo esta salida...


Code: Select all

[{path=/c1/f1.txt, name=f1.txt, checksum=3e7705498e8be60520841409ebc69bc1, version=1.0, nota=[{date=Wed Jun 15 18:46:26 CEST 2022, author=okmAdmin, text=111, path=c075bb24-6d03-4b4a-960c-d3dc67328c7e}, {date=Wed Jun 15 18:46:29 CEST 2022, author=okmAdmin, text=2222, path=c0bb2b5d-44e0-4c0e-ac93-888e38ecd036}]}]

El metodo getNotes() me devuelve todos los elementos de la lista, pero yo solo necesito el valor de la ultima nota, en el ejemplo 2222.

¿Es posible restringir los campos que devuelve getNotes()? para descartar los que no necesito...

Gracias
 #53603  by jllort
 
El método te devolverá toda la información de las notas.,algunos valores te seran de utilidad y otros no. Lo que tienes que hacer es iterar por todas la lista de las notas y quedarte únicamente por la parte que te interesa. Es decir iterando para cada Note quedarte con el text -> getText() ( aquí tienes los métodos de este bean https://docs.openkm.com/apidoc/com/okm/ ... /Note.html )
 #53608  by albertogomez38
 
Está....

Gracias por la ayuda.

Lo adjunto por si ayuda a alguien...
Code: Select all

import java.util.*;
import com.openkm.api.*;
import com.openkm.bean.*;
import com.openkm.util.*;

int MAX_DEPTH = Integer.MAX_VALUE;
List al = new ArrayList();
List recorrenota = new ArrayList();
String ultimanota;

void nodeTask(String path, int depth) throws Exception {
    for (Document doc : OKMDocument.getInstance().getChildren(null, path)) {
        Map mapDoc = new HashMap();
        mapDoc.put("name", PathUtils.getName(doc.getPath()));
        mapDoc.put("version",doc.getActualVersion().getName());
        mapDoc.put("checksum", doc.getActualVersion().getChecksum());
        mapDoc.put("path",doc.getPath().replace("/okm:root",""));
        ultimanota="";
        recorrenota=doc.getNotes();
        for (int i=0; i < recorrenota.size(); i++){
            ultimanota=recorrenota.get(i).getText();
//            print(ultimanota);
        }
        mapDoc.put("nota",ultimanota);
        al.add(mapDoc);
    }
   
    for (Folder fld : OKMFolder.getInstance().getChildren(null, path)) {
        if (depth < MAX_DEPTH) {
            nodeTask(fld.getPath(), depth + 1);
        }
        
    }  
}


nodeTask("/okm:root", 0);
return al;

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.