Database description
Tipos de nodo
Sección titulada «Tipos de nodo»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.
Consultas SQL de ejemplo
Sección titulada «Consultas SQL de ejemplo»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_uuidConsulta 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_UUIDMarcar documentos para volver a indexarlos
Sección titulada «Marcar documentos para volver a indexarlos»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'Versión de nodo
Sección titulada «Versión de nodo»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).
Consultas SQL de ejemplo
Sección titulada «Consultas SQL de ejemplo»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'Propiedades de metadatos de nodo
Sección titulada «Propiedades de metadatos de nodo»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';Categorías y palabras clave de nodo
Sección titulada «Categorías y palabras clave de nodo»
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).
Consultas SQL de ejemplo
Sección titulada «Consultas SQL de ejemplo»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'