Plantilla de UI personalizada
Información para desarrolladores sobre el proyecto base de ejemplo con Spring Boot, con autenticación de OpenKM y soporte para 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»Fichero de propiedades
Sección titulada «Fichero de propiedades»Debe crear un fichero llamado custom.properties dentro de la carpeta $CATALINA_HOME.
Todas las propiedades de la aplicación se leerán desde este fichero. Si necesita cambiar esta ruta, debe modificar la clase MainAppConfig.
Más información en: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html (sección 24.3)
Estas propiedades son:
| Property | Description |
|---|---|
| openkm.url | URL de OpenKM |
| anonymous.user | Nombre de usuario anónimo Se usa 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 de usuario administrador Se usa para acceder a los servicios web de OpenKM si no se proporciona ningún usuario. |
| admin.password | Contraseña del usuario administrador |
| logback.file | Nombre del fichero de Logback |
Autenticación
Sección titulada «Autenticación»Este proyecto está configurado para autenticarse contra una instancia de OpenKM. Funciona usando 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.
Fichero de log
Sección titulada «Fichero de log»Debe copiar el fichero logback-custom.xml a la carpeta $CATALINA_HOME. Este fichero lo usa el sistema de registro (logging).
Para cambiar el nivel de log 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 usa una base de datos H2 para almacenar los datos de “recordarme”. Se creará un fichero de base de datos llamado custom.mv.db en el directorio home del usuario.
Hay un fichero llamado import.sql que contiene sentencias SQL que se ejecutan al iniciar la aplicación. En este caso concreto, solo contiene una sentencia para crear la tabla de base de datos que permite la funcionalidad “recordarme”.
Gestión de roles
Sección titulada «Gestión de roles»En el fichero menu.jsp puede ver cómo la aplicación gestiona los roles:
<sec:authorize access="hasRole('CATALOG')">Usando este código, un usuario puede ver o no esta opción de menú, según sus roles. Sin embargo, si no quiere permitir que un usuario acceda a un recurso, puede configurarlo en el fichero WebSecurityConfig.
Bootstrap
Sección titulada «Bootstrap»La aplicación usa Bootstrap para proporcionar un diseño atractivo y responsive. Más información sobre Bootstrap disponible en http://getbootstrap.com/.
Empaquetado
Sección titulada «Empaquetado»Esta aplicación se puede empaquetar como jar o como war. En esta configuración de 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 empaqueta la aplicación como jar, puede cambiar el puerto.
Para hacerlo, 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:
- Usando OpenKM, un usuario puede subir ficheros a una carpeta custom.pending.folder (veremos qué carpeta es esta)
- Una automatización añadirá metadatos okg:type a este documento
- Usando 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 para el sistema de catálogo
- WSCacheDAOImpl: gestiona los servicios web para comunicar OpenKM con esta aplicación
Instalación
Sección titulada «Instalación»Debe seguir 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 Download center.
Paso 2: Creación del rol
Sección titulada «Paso 2: Creación del rol»Cree ROLE_CATALOG y añádalo al usuario que usa la aplicación.
Consulte la sección Manage 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 custom.pending.folder contiene el UUID de la carpeta desde la que se leen los documentos para el catálogo. También necesita crear esta carpeta manualmente en la Taxonomy:
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;Consulting2;okg:marketing;MarketingPaso 4: Metadatos
Sección titulada «Paso 4: Metadatos»<!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>Paso 5: Automatizaciones
Sección titulada «Paso 5: Automatizaciones»Debe crear dos automatizaciones como las siguientes (consulte la sección Automation para más información):
| Automation create | Automation definition |
|---|---|
| Vaya a la administración de OpenKM, seleccione la opción Automation y New Rule, rellene el nombre “Move Consulting”, seleccione el evento “Add metadata group”, y marque la casilla ‘Active’. | - Añadir validación: Seleccione la opción HasPropertyGroup, actívela, e introduzca 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 Automation y New Rule, rellene el nombre “Move Marketing”, seleccione el evento “Add metadata group”, y marque la casilla ‘Active’. | - Añadir validación: Seleccione la opción HasPropertyGroup, actívela, e introduzca 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 UI
Sección titulada «Paso 6: Catalogar documentos desde la UI»- Establezca la URL en el navegador a http://localhost:8080/custom-2.1