Definición XML de metadatos
Los metadatos de la aplicación se basan en una definición XML formal. El DTD (Document Type Definition) define la estructura y los elementos y atributos permitidos de un documento XML.
Esqueleto XML básico
Sección titulada «Esqueleto XML básico»<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 3.15//EN" "http://www.openkm.com/dtd/property-groups-3.15.dtd"><property-groups>
</property-groups>- El DOCTYPE es una definición formal de un DTD. En el ejemplo anterior, se usa property-groups-3.15.dtd.
- El XML comienza con la etiqueta
y termina con . En esta jerarquía se definen los grupos de metadatos.
Definición de un grupo de metadatos
Sección titulada «Definición de un grupo de metadatos»<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 3.15//EN" "http://www.openkm.com/dtd/property-groups-3.15.dtd"><property-groups> <property-group label="Consulting" name="okg:consulting">
</property-group></property-groups>- Cada bloque
… identifica el inicio y el fin de una nueva definición de grupo de metadatos. - Cada grupo de metadatos tiene una etiqueta — usada por la interfaz de usuario — Consulting.
- Cada grupo de metadatos tiene un nombre único, okg:consulting.
- El nombre del grupo de metadatos siempre debe empezar por “okg:” (OpenKM Group).
- No use caracteres especiales en el nombre.
| Atributo | Descripción | Obligatorio |
|---|---|---|
| label | El texto mostrado como etiqueta en la interfaz de usuario. | true |
| name | Identificador único del campo. Dos grupos de metadatos no pueden tener el mismo nombre. El nombre debe ser único. El nombre debe empezar por “okg:”. Use solo letras, números y guion bajo: “0-9a-zA-Z_”. Recomendamos “snake_case” en lugar de “camelCase” para nombres de columna más legibles. |
true |
| visible | Muestra u oculta los metadatos. Valores permitidos: - true. - false. Por defecto, los metadatos son visibles. |
false |
| readonly | Los valores de los metadatos no pueden modificarse desde la interfaz de usuario; solo pueden modificarse vía API. Valores permitidos: - true. - false. Por defecto, los metadatos son modificables. |
false |
| defaultValueClassName | Establece una clase Java personalizada para fijar valores iniciales por defecto. | false |
| validatorClassName | String. Nombre de la clase del plugin FormValidator. Si se establece, el validador del formulario se invoca al guardar el formulario. |
false |
| autocompleteValueClassName | String. Nombre de la clase del plugin AutocompleteFormValues. Proporciona sugerencias de autocompletado para los campos del grupo de propiedades. |
false |
| interceptorClassName | String. Nombre de la clase del plugin FormInterceptor. Si se establece, el interceptor puede inspeccionar o modificar los datos del formulario al cargarlo y al guardarlo. |
false |
| defaultAccess | Acceso de seguridad por defecto para el grupo de propiedades. Valores permitidos: grant, revoke. Por defecto es grant. |
false |
Ejemplo básico
Sección titulada «Ejemplo básico»Tipos de campo disponibles:
- Checkbox
- Input
- Iframe
- Select
- Separator
- Suggestbox
- Text
- TextArea
Puede encontrar más información sobre los elementos de tipo de campo en Metadata fields.
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 3.15//EN" "http://www.openkm.com/dtd/property-groups-3.15.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>Uso de un DTD del sistema de ficheros
Sección titulada «Uso de un DTD del sistema de ficheros»Si el servidor no tiene acceso a Internet, el fichero DTD debe estar accesible de alguna otra forma; por ejemplo, puede guardar una copia en su servidor de aplicaciones.
<!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 3.15//EN" "file:///home/openkm/property-groups-3.15.dtd">- En el ejemplo, /home/openkm/property-groups-3.15.dtd es la ruta del sistema de ficheros al fichero.
Cómo se almacenan los metadatos en OpenKM
Sección titulada «Cómo se almacenan los metadatos en OpenKM»Cuando registra una nueva definición de metadatos en OpenKM, los valores de los metadatos se almacenan en dos tablas separadas: una tabla para los valores de metadatos actuales y otra para los valores de metadatos históricos.
Ejemplo:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 3.15//EN" "http://www.openkm.com/dtd/property-groups-3.15.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 de metadatos actuales)
- RGT_UUID: ID del nodo que tiene este metadato
- 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 los valores de metadatos históricos)
- RGT_UUID: ID del nodo que tiene este metadato
- 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
Recomendamos “snake_case” en lugar de “camelCase” para nombres de columna más legibles.
Por ejemplo, esta definición crearía el campo de tabla RGT_PRO_RETURNPLACE:
<input label="Return place" name="okp:sample.returnPlace" />Pero esta otra crearía el campo de tabla RGT_PRO_RETURN_PLACE, que es más legible para las personas:
<input label="Return place" name="okp:sample.return_place" />Tamaño de columna por defecto según el tipo:
| Tipo | Tamaño |
|---|---|
| CheckBox | 8 caracteres |
| Input | 128 caracteres |
| Select | 128 caracteres |
| SuggestBox | 128 caracteres |
| TextArea | 256 caracteres |
Si tiene valores de metadatos más grandes, debe aumentar el tamaño de la columna con el atributo “dbColumnSize”. Vea el ejemplo a continuación:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 3.15//EN" "http://www.openkm.com/dtd/property-groups-3.15.dtd"><property-groups> <property-group label="Consulting" name="okg:consulting"> <input label="Input label" name="okp:consulting.input1" dbColumnSize="256"/> <separator label="Separator label" name="okp:consulting.separator" /> <input label="Input label" name="okp:consulting.input2" dbColumnSize="512"/> </property-group></property-groups>