• Comportamiento extraño de metadatos.

  • 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.
 #21029  by muyprax
 
Hola que tal,

He descubierto un comportamiento un tanto extraño con los metadatos, fíjate que he registrado las propiedades de grupo de dos maneras:
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 2.0//EN"
                                 "http://www.openkm.com/dtd/property-groups-2.0.dtd">
<property-groups>
<property-group label = "Año Documento" name="okg:documento">
<suggestbox label="Año" name="okp:documento.anho"
dialogTitle="Seleccionar Año de Documento"
filterQuery="select col00,col01 from DatabaseMetadataValue dmv where dmv.table='anhodocumento' and lower(dmv.col01) like '%{0}%' order by dmv.col01"
valueQuery="select col00,col01 from DatabaseMetadataValue dmv where dmv.table='anhodocumento' and dmv.col00='{0}'"/>
<suggestbox label="Proyecto relacionado" name="okp:documento.proyecto"
dialogTitle="Seleccionar Proyecto del Documento"
filterQuery="select col00,col01 from DatabaseMetadataValue dmv where dmv.table='proyectodocumento' and lower(dmv.col01) like '%{0}%' order by dmv.col01"
valueQuery="select col00,col01 from DatabaseMetadataValue dmv where dmv.table='proyectodocumento' and dmv.col00='{0}'"/>
<suggestbox label="Tipo" name="okp:documento.tipo"
dialogTitle="Seleccionar Tipo de Documento"
filterQuery="select col00,col01 from DatabaseMetadataValue dmv where dmv.table='tipodocumento' and lower(dmv.col01) like '%{0}%' order by dmv.col01"
valueQuery="select col00,col01 from DatabaseMetadataValue dmv where dmv.table='tipodocumento' and dmv.col00='{0}'"/>
</property-group>     
</property-groups>
El problema que tuve fue que al llenar documentos con dichos metadatos, el único metadato que me reconoce es el AÑO , en los demás no realiza ninguna búsqueda desde el buscador de OpenKM ->búsqueda avanzada->metadatos

Entonces pensé que quizás no podía poner 3 suggestox label en un mismo property-group label y los dividí en 3 , quedándo de esta manera:
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 2.0//EN"
                                 "http://www.openkm.com/dtd/property-groups-2.0.dtd">
<property-groups>
<property-group label = "Año Documento" name="okg:anhodocumento">
<suggestbox label="Año" name="okp:anhodocumento.anho"
dialogTitle="Seleccionar Año de Documento"
filterQuery="select col00,col01 from DatabaseMetadataValue dmv where dmv.table='anhodocumento' and lower(dmv.col01) like '%{0}%' order by dmv.col01"
valueQuery="select col00,col01 from DatabaseMetadataValue dmv where dmv.table='anhodocumento' and dmv.col00='{0}'"/>
</property-group>
<property-group label = "Proyecto del Documento" name="okg:proyectodocumento">
<suggestbox label="Proyecto" name="okp:proyectodocumento.proyecto"
dialogTitle="Seleccionar Proyecto del Documento"
filterQuery="select col00,col01 from DatabaseMetadataValue dmv where dmv.table='proyectodocumento' and lower(dmv.col01) like '%{0}%' order by dmv.col01"
valueQuery="select col00,col01 from DatabaseMetadataValue dmv where dmv.table='proyectodocumento' and dmv.col00='{0}'"/>
</property-group>   
<property-group label = "Documento" name="okg:tipodocumento">
<suggestbox label="Tipo" name="okp:tipodocumento.tipo"
dialogTitle="Seleccionar Tipo de Documento"
filterQuery="select col00,col01 from DatabaseMetadataValue dmv where dmv.table='tipodocumento' and lower(dmv.col01) like '%{0}%' order by dmv.col01"
valueQuery="select col00,col01 from DatabaseMetadataValue dmv where dmv.table='tipodocumento' and dmv.col00='{0}'"/>
</property-group>     
</property-groups>
En este caso , sólo me funciona la búsqueda con el campo AÑO y siempre y cuándo sea esta propiedad la ÚNICA que esté llena. Si tengo lleno el campo año(y funcionando) y lleno cualquier otra propiedad, al buscar por AÑO NO FUNCIONA y la otra propiedad tampoco. :/

Estoy utilizando MySQL y las tablas aparentemente están bien, si te fijas en todas las tablas hay 2 columnas , en todas las filas , se repiten los valores en las 2 columnas ya que si lo hacía solo con una, la "autobusqueda" cuándo se agregan los metadatos no funcionaba y no podía agregar nada.

Espero puedas ayudarme , gracias.

PD: La única diferencia de los campos año , proyecto y tipo son los tipos de datos: AÑO es "INTEGER" ; PROYECTO Y TIPO SON "TEXT"
 #21050  by muyprax
 
Perdón por autoresponder, pero sumo otra tipo de estructura de metadatos que utilicé:
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 2.1//EN"
"http://www.openkm.com/dtd/property-groups-2.1.dtd">
<property-groups>
    <property-group label="Documento" name="okg:plantilla">
    <select label="Año" name="okp:plantilla.anho" type="simple">
        <option label="2012" value="2012"/>
    	<option label="2013" value="2013"/>
    	<option label="2014" value="2014"/>
        <option label="2015" value="2005"/>
        <option label="2016" value="2006"/>
        <option label="2017" value="2007"/>
    </select>
    <select label="Proyecto" name="okp:plantilla.proyecto" type="simple">
        <option label="Alarmas Calle Larga" value="Alarmas Calle Larga"/>
    	<option label="Alarmas Rinconada" value="Alarmas Rinconada"/>
    	<option label="Alcantarillados Rinconada" value="Alcantarillados Rinconada"/>
        <option label="Mina Caracoles" value="Mina Caracoles"/>
        <option label="Colegio Metodista" value="Colegio Metodista"/>
        <option label="Obras Adicionales MC" value="Obras Adicionales MC"/>
        <option label="Villa las Rosas" value="Villa las Rosas"/>
    </select>
    <select label="tipo" name="okp:plantilla.tipo" type="simple">
        <option label="Actas" value="Actas"/>
    	<option label="Boleta de Compra" value="Boleta de Compra"/>
    	<option label="Boleta de Honorario" value="Boleta de Honorario"/>
        <option label="Boleta de Venta" value="Boleta de Venta"/>
        <option label="Comprobante de Compra" value="Comprobante de Compra"/>
        <option label="Comprobante de Venta" value="Comprobante de Venta"/>
        <option label="Contratos de Trabajo" value="Contratos de Trabajo"/>
        <option label="Contratos de Venta" value="Contratos de Venta"/>
        <option label="Documentacion de Contabilidad" value="Documentacion de Contabilidad"/>
        <option label="Documentacion de Propuesta" value="Documentacion de Propuesta"/>
        <option label="Documentacion Legal" value="Documentacion Legal"/>
        <option label="Factura de Compra" value="Factura de Compra"/>
    	<option label="Factura de Venta" value="Factura de Venta"/>
    	<option label="Manuales" value="Manuales"/>
    	<option label="Oficios" value="Oficios"/>
   	<option label="Otros Documentos" value="Otros Documentos"/>
    </select>
  </property-group>
</property-groups>
y al asignarle metadatos, el único metadato que me reconoce es el campo "Año" , si lleno cualquier otro campo(desde el buscador->busqueda avanzada->metadatos) sencillamente no aparece ningún documento en la búsqueda.

Gracias
 #21092  by jllort
 
Tienes un problema con los valores de los metadatos. Esto igual es culpa nuestro porque no lo hemos explicado con claridad. Vamos a ver por ejemplo el caso de este valor
Code: Select all
<option label="Alarmas Rinconada" value="Alarmas Rinconada"/>
El valor interno que se indexa es value="Alarmas Rinconada" . Hasta aqui todo claro. Este valor pasa al motor de búsqueda - Lucene - el cual tiene un tokenizer ( un invento que trocea la palabras para que nos entendamos ) y lo que te esta pasando es que esto te lo esta indexando como dos palabras y claro al buscar un valor nunca te encontrará nada.

En realidad tienes que pensar los valores como si fuesen claves primarias. Nunca pondrías una clave primaria con espacio en blanco ( o no deberías , de hecho en base de datos lo normal es utilizar números ), pero bueno para el caso que nos ocupa el tema esta en que el campo value es un valor interno y para que te funcione bien tienes que transformar value="Alarmas Rinconada" en value="Alarmas_Rinconada" es decir sustituir los espacios en blanco por los guiones. Este cambio lo tienes que hacer en la administración de metadatos ( editar y registrar ).

Esta era la fase 1, la fase 2 es que una vez hecho esto tienes en la base de datos información incosistente, que tienes que actualizar. Ejecuta una select en el database query ( en la administración ) y ahí veras los valores que tienes que actualizar:
SELECT * FROM OKM_NODE_PROPERTY;

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.