Plantilla de interfaz personalizada
Información para desarrolladores del proyecto base de ejemplo en Spring Boot con autenticación de OpenKM y compatibilidad con JSP, JSTL y REST.
Para saber más sobre Spring Boot, visite https://projects.spring.io/spring-boot/
También hay un muy buen tutorial sobre Spring Boot en https://spring.io/guides/gs/spring-boot/
Descripción general
Sección titulada «Descripción general»Archivo de propiedades
Sección titulada «Archivo de propiedades»Debe crear un archivo llamado custom.properties dentro de la carpeta $CATALINA_HOME.
Todas las propiedades de la aplicación se leerán de este archivo. Si necesita cambiar esta ruta, debe modificar la clase MainAppConfig
Para 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 proporciona 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 proporciona ningún usuario. |
| admin.password | Contraseña del usuario administrador |
| preview.download.url | URL de la vista previa del documento |
| logback.file | Nombre del archivo de Logback |
Autenticación
Sección titulada «Autenticación»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.
Archivo de registro
Sección titulada «Archivo de registro»Debe copiar el archivo logback-custom.xml a la carpeta $CATALINA_HOME. Este archivo 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>Recordarme
Sección titulada «Recordarme»Esta personalización de ejemplo utiliza una base de datos H2 para almacenar los datos de “recordarme”. Se creará un archivo de base de datos llamado custom.mv.db en el directorio home del usuario.
Hay un archivo llamado import.sql que contiene sentencias SQL que se ejecutan al iniciarse la aplicación. En este caso concreto, solo contiene una sentencia para crear la tabla de la base de datos que permite la funcionalidad “recordarme”.
Gestión de roles
Sección titulada «Gestión de roles»En el archivo 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 o no esta opción de menú según sus roles. Sin embargo, si no desea permitir que un usuario acceda a un recurso, puede configurarlo en el archivo WebSecurityConfig.
Bootstrap
Sección titulada «Bootstrap»La aplicación utiliza Bootstrap para lograr un diseño atractivo y adaptable. Más información sobre Bootstrap en http://getbootstrap.com/
Empaquetado
Sección titulada «Empaquetado»Esta aplicación puede empaquetarse tanto como jar 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)
Puerto de la aplicación
Sección titulada «Puerto de la aplicación»Si ha empaquetado 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)
Información del catálogo
Sección titulada «Información del catálogo»Descripción
Sección titulada «Descripción»Este ejemplo contiene un sistema de catálogo para OpenKM:
- Con OpenKM, un usuario puede subir archivos a una carpeta cp.pending.folder (veremos qué es esta carpeta)
- Una automatización añadirá el metadato okg:type a este documento
- Con 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: enrutado de la aplicación del sistema de catálogo
- CatalogServiceImpl: servicios del sistema de catálogo
- WSCacheDAOImpl: gestiona los servicios web para comunicar OpenKM con esta aplicación
Instalación
Sección titulada «Instalación»Debe leer los siguientes pasos para configurar correctamente la aplicación:
Paso 1: Descarga
Sección titulada «Paso 1: Descarga»Descargue la aplicación desde el Centro de descargas de OpenKM.
Paso 2: Creación del rol
Sección titulada «Paso 2: Creación del rol»Cree ROLE_CATALOG y añádalo al usuario que utiliza la aplicación.
Consulte la sección Gestionar roles para más información.
Paso 3: Datos SQL necesarios
Sección titulada «Paso 3: Datos SQL necesarios»Para ejecutar sentencias SQL, vaya a Administration > Utilities > Database query 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 cp.pending.folder contiene la carpeta de la que se leen los documentos que hay que catalogar. También debe crear esta carpeta manualmente en la taxonomía:
INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('cp.pending.folder', 'string', '/okm:root/pending');INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('cp.document.type', 'list', '');Actualice los valores de la propiedad cp.document type:
1;okg:consulting;Consulting2;okg:marketing;MarketingPaso 4: Metadatos
Sección titulada «Paso 4: Metadatos»<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 2.9//EN" "http://www.openkm.com/dtd/property-groups-2.9.dtd"><property-groups> <property-group label="Document type" name="okg:type"> <select label="Type" name="okp:type.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" /> </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>Paso 5: Automatizaciones
Sección titulada «Paso 5: Automatizaciones»Debe crear tres automatizaciones como las siguientes (consulte la sección Automatización para más información):

1. Añadir un tipo vacío a un documento de la carpeta pendientes

2. Mover los documentos de consultoría a la carpeta “consulting”

3. Mover los documentos de marketing a la carpeta “marketing”
