Ir al contenido
Otras versiones

Cargando…

Plantilla de interfaz personalizada

Información para desarrolladores sobre el proyecto base de ejemplo de Spring Boot con autenticación de OpenKM y compatibilidad con JSP, JSTL y REST.

Para obtener más información sobre Spring Boot, visite https://projects.spring.io/spring-boot/

También existe un muy buen tutorial sobre Spring Boot en https://spring.io/guides/gs/spring-boot/

Debe crear un fichero llamado custom.properties dentro de la carpeta $CATALINA_HOME.

Todas las propiedades de la aplicación se leerán de este fichero. Si necesita cambiar esta ruta, debe modificar la clase MainAppConfig.

Para obtener más información: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html (sección 24.3)

Estas propiedades son:

Propiedad Descripción
openkm.url URL de OpenKM
anonymous.user Nombre del usuario anónimo
Se utiliza para acceder a los servicios web de OpenKM si no se indica ningún usuario.
anonymous.password Contraseña del usuario anónimo
admin.user Nombre del usuario administrador
Se utiliza para acceder a los servicios web de OpenKM si no se indica ningún usuario.
admin.password Contraseña del usuario administrador
logback.file Nombre del fichero de Logback

Este proyecto está configurado para autenticarse contra una instancia de OpenKM. Funciona mediante el SDK de OpenKM a través de servicios web.

La URL de la instancia de OpenKM se define en la propiedad de configuración openkm.url.

Debe copiar el fichero logback-custom.xml en la carpeta $CATALINA_HOME. Este fichero lo utiliza el sistema de registro.

Para cambiar el nivel de registro de un paquete concreto:

<?xml version="1.0" encoding="UTF-8"?>
<included>
<logger name="com.openkm" level="INFO"/>
</included>

Esta personalización de ejemplo utiliza una base de datos H2 para almacenar los datos de la función «recordarme». Se creará un fichero de base de datos llamado custom.mv.db en el directorio personal del usuario.

Existe un fichero llamado import.sql que contiene sentencias SQL que se ejecutan cuando se inicia la aplicación. En este caso concreto, solo contiene una sentencia para crear la tabla de base de datos que permite la función «recordarme».

En el fichero menu.jsp puede ver cómo gestiona los roles la aplicación:

<sec:authorize access="hasRole('CATALOG')">

Con este código, un usuario puede ver u ocultar esta opción de menú según sus roles. No obstante, si no desea permitir que un usuario acceda a un recurso, puede configurarlo en el fichero WebSecurityConfig.

La aplicación utiliza Bootstrap para crear un diseño atractivo y adaptable. Puede encontrar más información sobre Bootstrap en http://getbootstrap.com/

Esta aplicación puede empaquetarse como jar o como war. En esta configuración del POM, el artefacto será un WAR.

Si necesita cambiar el empaquetado, consulte esta URL: http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#build-tool-plugins-maven-packaging (sección 66.2)

Si empaqueta la aplicación como jar, puede cambiar el puerto.

Para ello, visite: http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#cli-default-import-statements (sección 72.4)

Este ejemplo contiene un sistema de catálogo para OpenKM:

  • Mediante OpenKM, un usuario puede subir ficheros a una carpeta custom.pending.folder (veremos qué es esta carpeta)
  • Una automatización añadirá metadatos okg:type a este documento
  • Mediante el sistema de catálogo de esta aplicación, añadiremos algunos metadatos a este documento
  • Una automatización moverá este documento a otra carpeta

Las clases principales del sistema de catálogo son:

  • CatalogController: enrutamiento de la aplicación para el sistema de catálogo
  • CatalogServiceImpl: servicios del sistema de catálogo
  • WSCacheDAOImpl: gestiona los servicios web para la comunicación entre OpenKM y esta aplicación

Debe seguir los pasos siguientes para configurar correctamente la aplicación:

Descargue la aplicación desde el Centro de descargas de OpenKM.

Cree ROLE_CATALOG y añádalo al usuario utilizado en la aplicación.

Consulte la sección Gestionar roles para obtener más información.

Para ejecutar sentencias SQL, vaya a Administración > Utilidades > Consulta de base de datos e introduzca estas consultas:

CREATE TABLE CP_DOCUMENT_TYPE(ID INT NOT NULL, TYPE VARCHAR(100) NOT NULL, METADATA_GROUP VARCHAR(100) NOT NULL);
CREATE TABLE CP_AGENCY(ID INT NOT NULL, NAME VARCHAR(100) NOT NULL);
INSERT INTO CP_DOCUMENT_TYPE (ID, TYPE, METADATA_GROUP) VALUES (1, 'Consulting', 'okg:consulting');
INSERT INTO CP_DOCUMENT_TYPE (ID, TYPE, METADATA_GROUP) VALUES (2, 'Marketing', 'okg:marketing');
INSERT INTO CP_AGENCY (ID, NAME) VALUES (1, 'Web');
INSERT INTO CP_AGENCY (ID, NAME) VALUES (2, 'Desktop');

El parámetro custom.pending.folder contiene el UUID de la carpeta de la que se leerán los documentos para el catálogo. También debe crear esta carpeta manualmente en la Taxonomía:

INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('custom.pending.folder', 'string', '14541d97-f06b-437e-bd59-c294dfaa96fb');
INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('custom.document.type', 'list', '');

Actualice los valores de la propiedad custom.document.type:

1;okg:consulting;Consulting
2;okg:marketing;Marketing
<!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="Document type (custom app)" name="okg:custom">
<select label="Type" name="okp:custom.type" type="simple"
optionsQuery="select ID, TYPE from CP_DOCUMENT_TYPE order by TYPE asc" />
</property-group>
<property-group label="Consulting" name="okg:consulting">
<input label="Date" type="date" name="okp:consulting.date" />
<input label="Input label 1" name="okp:consulting.input1" dbColumnSize="256"/>
<separator label="Separator label" name="okp:consulting.separator" />
<input label="Input label 2" name="okp:consulting.input2" dbColumnSize="512"/>
</property-group>
<property-group label="Marketing" name="okg:marketing">
<select label="Agency" name="okp:marketing.agency" type="simple"
optionsQuery="select ID, NAME from CP_AGENCY order by NAME asc" />
<input label="Date" type="date" name="okp:marketing.date" />
</property-group>
</property-groups>

Debe crear dos automatizaciones como las siguientes (consulte la sección Automatización para obtener más información):

Creación de la automatización Definición de la automatización
Vaya a la administración de OpenKM, seleccione la opción Automatización y Nueva regla, introduzca el nombre “Move Consulting”, seleccione el evento “Add metadata group” y marque la casilla “Activo”. - Añadir validación: seleccione la opción HasPropertyGroup, actívela y escriba el valor “okg:consulting” como grupo de propiedades.
- Añadir acción: seleccione la opción MoveToFolder, actívela y seleccione la carpeta “/okm:root/consulting”.
Vaya a la administración de OpenKM, seleccione la opción Automatización y Nueva regla, introduzca el nombre “Move Marketing”, seleccione el evento “Add metadata group” y marque la casilla “Activo”. - Añadir validación: seleccione la opción HasPropertyGroup, actívela y escriba el valor “okg:marketing” como grupo de propiedades.
- Añadir acción: seleccione la opción MoveToFolder, actívela y seleccione la carpeta “/okm:root/marketing”.

Paso 6: Catalogar documentos desde la interfaz

Sección titulada «Paso 6: Catalogar documentos desde la interfaz»