Ir al contenido

Database description

Estas tablas almacenan la información sobre un nodo en OpenKM.

La tabla llamada OKM_NODE_BASE almacena los campos comunes (nombre, autor, fecha de creación, entre otros) para todos los tipos de nodo (Document, Folder, Mail o Record).

El campo llamado NBS_UUID es el ID único del nodo. El campo NBS_UUID es la clave foránea entre la tabla padre (OKM_NODE_BASE) y las hijas (OKM_NODE_DOCUMENT, OKM_NODE_FOLDER, OKM_NODE_MAIL, OKM_NODE_RECORD).

Hay otras tablas útiles:

  • OKM_NODE_DOCUMENT: Almacena información sobre documentos.
  • OKM_NODE_FOLDER: Almacena información sobre carpetas.
  • OKM_NODE_MAIL: Almacena información sobre correos.
  • OKM_NODE_RECORD: Almacena información sobre expedientes.

Consulta usada para recuperar la información de todos los documentos:

select * from OKM_NODE_BASE nb
inner join OKM_NODE_DOCUMENT nd on nd.nbs_uuid = nb.nbs_uuid

Consulta para obtener los expedientes cuyo nombre empieza por ‘test’:

select * from OKM_NODE_BASE nb
inner join OKM_NODE_RECORD nr on nr.nbs_uuid = nb.nbs_uuid
where nb.nbs_name like 'test%'

Para encontrar un documento por UUID, puede usar esta consulta:

select * from OKM_NODE_BASE nb
inner join OKM_NODE_DOCUMENT nd on nd.nbs_uuid = nb.nbs_uuid
where nb.nbs_uuid = 'fc35ce80-57f2-4026-ae77-7a11bca042ed'

Lista de nodos hijos con seguridad estándar:

SELECT NB.NBS_UUID FROM OKM_NODE_BASE NB left outer join OKM_NODE_USER_PERMISSION UP ON NB.NBS_UUID=UP.NUP_NODE left outer join OKM_NODE_ROLE_PERMISSION RP on NB.NBS_UUID=RP.NRP_NODE WHERE NB.NBS_PARENT='586939f7-988a-430a-b3d1-4f8e75bd92e4' AND ((UP.NUP_USER='okmAdmin' and (UP.NUP_PERMISSION & 1)=1) or ((RP.NRP_ROLE in ('ROLE_USER')) and (RP.NRP_PERMISSION & 1)=1)) group by NB.NBS_UUID

La columna llamada NDC_TEXT_EXTRACTED en la tabla OKM_NODE_DOCUMENT indica qué documentos han sido procesados por la cola de extracción de texto y cuáles siguen pendientes (el valor ‘T’ significa procesado y ‘F’ significa pendiente). Si quiere reindexar todo el repositorio o algunos ficheros, podría ejecutar una consulta como esta:

update OKM_NODE_DOCUMENT set NDC_TEXT_EXTRACTED='F'

Estas tablas almacenan información sobre el historial de versiones de los nodos:

La tabla llamada OKM_NODE_VERSION almacena información de versión sobre cada versión de cada nodo.

  • El campo NV_ID es el ID de una versión.
  • El valor del campo llamado NV_PARENT es el ID único del documento (el mismo valor que NBS_UUID).

Consulta para obtener todos los cambios de un documento llamado ‘test.pdf’:

select nv.* from OKM_NODE_DOCUMENT nd inner join OKM_NODE_VERSION nv on nv.nv_parent = nd.nbs_uuid inner join OKM_NODE_BASE nb on nd.nbs_uuid = nb.nbs_uuid where nb.nbs_name = 'test.pdf';

Esta consulta muestra la información principal así:

Columna Tipo Descripción
NV_ACTION DOCUMENT_CREATED
FOLDER_CREATED
MAIL_CREATED
RECORD_CREATED
DOCUMENT_CHANGED
DOCUMENT_IMPORTED
FOLDER_IMPORTED
RECORD_IMPORTED
MAIL_IMPORTED
PROPERTY_GROUP_ADDED
PROPERTY_GROUP_REMOVED
PROPERTY_GROUP_CHANGED
Qué tipo de cambios se realizaron.
NV_NAME String El nombre de la versión (por ejemplo “1.1”).
NV_DOCVER String ID de versión del contenido del documento.

Consulta para obtener los cambios de un documento llamado ‘test.pdf’ cuando se actualizó su binario:

select nv.* from OKM_NODE_DOCUMENT nd inner join OKM_NODE_VERSION nv on nv.nv_parent = nd.nbs_uuid inner join OKM_NODE_BASE nb on nd.nbs_uuid = nb.nbs_uuid where nb.nbs_name = 'test.pdf' and nv.nv_action = 'DOCUMENT_CHANGED';

La siguiente consulta es útil para encontrar dónde se almacenan todas las versiones de un fichero llamado ‘test.pdf’ en el datastore:

select nv.nv_docver from OKM_NODE_DOCUMENT nd inner join OKM_NODE_VERSION nv on nv.nv_parent = nd.nbs_uuid inner join OKM_NODE_BASE nb on nd.nbs_uuid = nb.nbs_uuid where nb.nbs_name = 'test.pdf'

Cada grupo de metadatos usa dos tablas para almacenar información; tome el siguiente como ejemplo:

Ejemplo:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 3.10//EN"
"http://www.openkm.com/dtd/property-groups-3.10.dtd">
<property-groups>
<property-group label="Consulting" name="okg:consulting">
<input label="Input label" name="okp:consulting.input1" />
<separator label="Separator label" name="okp:consulting.separator" />
<input label="Input label" name="okp:consulting.input2" />
</property-group>
</property-groups>

Tras registrar la definición de metadatos anterior, se crearán dos tablas con estas columnas:

  • OKM_PGRP_CUR_CONSULTING (usada para los valores actuales de metadatos)
    • RGT_UUID: ID del nodo que tiene estos metadatos
    • RGT_PRO_INPUT1: Valor de la propiedad okp:consulting.input1
    • RGT_PRO_INPUT2: Valor de la propiedad okp:consulting.input2
    • RGT_PRO_SEPARATOR: Valor de la propiedad okp:consulting.separator
  • OKM_PGRP_HIS_CONSULTING (usada para el historial de los valores de metadatos)
    • RGT_UUID: ID del nodo que tiene estos metadatos
    • RGT_VERSION: ID de la versión relacionada
    • RGT_PRO_INPUT1: Valor de la propiedad okp:consulting.input1
    • RGT_PRO_INPUT2: Valor de la propiedad okp:consulting.input2
    • RGT_PRO_SEPARATOR: Valor de la propiedad okp:consulting.separator

Consulta para obtener todos los valores de metadatos del documento llamado ‘test.pdf’ con UUID ‘e0518d0e-8312-4df9-991c-263f16b061bf’ y sus cambios:

SELECT * FROM OKM_PGRP_HIS_CONSULTING where RGT_UUID = 'e0518d0e-8312-4df9-991c-263f16b061bf' order by RGT_VERSION desc;

Consulta para obtener los cambios de un documento llamado ‘test.pdf’ cuando se actualizaron sus propiedades de metadatos:

select nv.* from OKM_NODE_DOCUMENT nd inner join OKM_NODE_VERSION nv on nv.nv_parent = nd.nbs_uuid inner join OKM_NODE_BASE nb on nd.nbs_uuid = nb.nbs_uuid where nb.nbs_name = 'test.pdf' and nv.nv_action = 'PROPERTY_GROUP_CHANGED';

El valor del campo llamado NCT_NODE es el ID único del documento (el mismo valor que NBS_UUID).

El valor del campo llamado NKW_NODE es el ID único del documento (el mismo valor que NBS_UUID).

Consulta para extraer todas las palabras clave asociadas a un nodo llamado ‘test.pdf’:

select nk.* from OKM_NODE_BASE nb
inner join OKM_NODE_KEYWORD nk on nk.nkw_node = nb.nbs_uuid
where nb.nbs_name = 'test.pdf'

Consulta para obtener todas las categorías de un nodo llamado ‘test.pdf’:

select nb.nbs_uuid, nb.nbs_name, nc.nct_category from OKM_NODE_BASE nb inner join OKM_NODE_CATEGORY nc on nc.nct_node = nb.nbs_uuid where nb.nbs_name = 'test'