• Problemas buscando documentos por metadato

  • Hemos intentado hacer de OpenKM una aplicación lo más intuitiva posible, sin embargo siempre viene bien algún consejo.
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.
 #11416  by amartincaro
 
Buenas tardes:

tengo instalado OpenKm versión 5.0.3 y estoy teniendo problemas realizando una busqueda de documentos por valor de metadato. Los ficheros de propiedades de grupo que estoy usando son los siguientes (PropertyGroups.cnd, PropertyGroups.xml):
Code: Select all
<okm = 'http://www.openkm.org/1.0'>
<okg = 'http://www.openkm.org/group/1.0'>
<okp = 'http://www.openkm.org/group/property/1.0'>

[okg:zeus] mixin
- okp:zeus.entidadid (string) = '' autocreated
- okp:zeus.tipoentidadid (string) = '' autocreated
- okp:zeus.clienteid (string) = '' autocreated
- okp:zeus.deudorid (string) = '' autocreated
- okp:zeus.fechacaducidad (string) = '' autocreated
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 1.1//EN"
                                 "http://www.openkm.com/dtd/property-groups-1.1.dtd">
<property-groups>
  <property-group label="Zeus" name="okg:zeus">
    <input label="IdEntidad" type="text" name="okp:zeus.entidadid" value=""/>
    <input label="IdTipoEntidad" type="text" name="okp:zeus.tipoentidadid" value=""/>
    <input label="IdCliente" type="text" name="okp:zeus.clienteid" value=""/>
    <input label="IdDeudor" type="text" name="okp:zeus.deudorid" value=""/>
    <input label="FechaCaducidad" type="date" name="okp:zeus.fechacaducidad" value=""/>
  </property-group>
</property-groups>
El problema lo tengo al querer buscar documentos por el valor de "fechacaducidad". Mientras que consultas como las siguiente funcionan perfectamente:
Code: Select all
/jcr:root/okm:root//element(*,okg:zeus)[@okp:zeus.entidadid = '5']
Code: Select all
/jcr:root/okm:root//element(*,okm:document)[@okp:zeus.entidadid = '5']
Consultas de rango o incluso exactas sobre el metadato okp:zeus.fechacaducidad no me devuelven ningún resultado. Existe como mínimo un documento en el repositorio con fecha de caducidad igual a '2011-06-05T00:00:00.000+02:00'.
Code: Select all
/jcr:root/okm:root//element(*,okm:document)[@okp:zeus.fechacaducidad = xs:dateTime('2011-06-05T00:00:00.000+02:00')]
Code: Select all
/jcr:root/okm:root//element(*,okg:zeus)[@okp:zeus.fechacaducidad > xs:dateTime('2011-06-05T00:00:00.000+02:00')]
Code: Select all
/jcr:root/okm:root//element(*,okm:document)[@okp:zeus.fechacaducidad > xs:dateTime('2011-06-01T00:00:00.000+02:00') and @okp:zeus.fechacaducidad < xs:dateTime('2011-06-30T00:00:00.000+02:00')]
Code: Select all
/jcr:root/okm:root//element(*,okg:zeus)[@okp:zeus.fechacaducidad > xs:dateTime('2011-06-01T00:00:00.000+02:00') and @okp:zeus.fechacaducidad < xs:dateTime('2011-06-30T00:00:00.000+02:00')]
He probado a cambiar el valor para la fecha en las consultas por 2011-06-05T00:00:00.000Z pero tampoco funciona. Comentaros que las búsquedas las he ejecutado utilizando la herramienta "Repository Search" del módulo de administración.

¿Podéis decirme qué estoy haciendo mal?

Muchísimas gracias.
 #11422  by amartincaro
 
Hola:

he continuado con las pruebas y he conseguido que la consulta devuelva resultados. Debido a mi escaso conocimiento de xPath me centré en construir las consultas utilizando xs:dateTime. Hoy he probado a hacerla sin usar esa función y he obtenido resultados. Por ejemplo:
Code: Select all
/jcr:root/okm:root//element(*,okm:document)[@okp:zeus.fechacaducidad > '2011-06-01T00:00:00.000+02:00' and @okp:zeus.fechacaducidad < '2011-06-30T00:00:00.000+02:00']
Está devolviendo los documentos que caducan este mes de Junio. Incluso la siguiente query funciona. Eso sí, hay que tener cuidado con el desfase horario ya que se tiene en cuenta y podríamos obtener listados incorrectos.
Code: Select all
/jcr:root/okm:root//element(*,okm:document)[@okp:zeus.fechacaducidad >= '2011-06-01' and @okp:zeus.fechacaducidad <= '2011-06-30']
Mi pregunta es: ¿no es entonces necesario utilizar xs:dateTime a la hora de realizar consultas sobre fechas o al ser un campo fecha de un grupo de propiedades el comportamiento es diferente?

Muchas gracias.
 #11448  by jllort
 
Bueno, te voy a intentar responder, aunque no estoy al 100% por que esta parte del repositorio no la he tocado mucho.
Las fechas si no voy mal que guardan con un formato iso8801 ( igual el numero esta mal, el caso es que este formato permite hacer comparaciones como si fuesen cadenas ) y en realidad no guardamos un formato fecha sino un formato cadena.

Puedes operar directamente como si fuesen cadenas, en caso de querer operar como fechas igual hace falta alguna transformación del iso a formato fecha que el xpath entienda.

Relativo a la version 5.1.X hemos incluido mejoras que ya permiten buscar por rangos de fechas desde la interfaz de usuario ( esto era realmente necesario ) en la 5.0.X esto no esta disponible. Y lamentablemente aun no tenemos terminado el proceso de migración de la 5.0 a la 5.1 ( paciencia ).

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.