CONFIGURACION EXTENSION Y PERSONALIZACION DEL SIB

CONFIGURACION EXTENSION Y PERSONALIZACION DEL SIB JULIO 2013 Versión 2 1 INDICE 1 INDICE ............................................................
0 downloads 3 Views 774KB Size
CONFIGURACION EXTENSION Y PERSONALIZACION DEL SIB

JULIO 2013 Versión 2

1 INDICE 1

INDICE ................................................................................................................................................... 2

2

INTRODUCCIÓN .................................................................................................................................... 4

3

2.1

REQUISITO ...................................................................................................................... 4

2.2

OBJETIVOS Y ALCANCE DEL PRESENTE DOCUMENTO .................................................................. 4

CONFIGURACIÓN DEL SIB ..................................................................................................................... 5

3.1

3.1.1

Ubicación de ficheros de configuración ................................................................. 5

3.1.2

Fichero auditoria.properties .................................................................................. 5

3.1.3

Fichero database.properties .................................................................................. 6

3.1.4

Fichero log4j.properties......................................................................................... 6

3.1.5

Fichero monitorizacion.properties ......................................................................... 6

3.1.6

Fichero sib.properties ............................................................................................ 6

3.1.7

Fichero mail.properties ......................................................................................... 7

3.1.8

Fichero cache.properties ....................................................................................... 7

3.1.9

Fichero notificacion.properties .............................................................................. 7

3.2

4

FICHEROS DE CONFIGURACIÓN (.PROPERTIES) ......................................................................... 5

BDC ............................................................................................................................. 8

3.2.1

Tabla Ontología ..................................................................................................... 8

3.2.2

Tabla KP ................................................................................................................ 8

3.2.3

Tabla InstanciaKP .................................................................................................. 9

3.2.4

Tablas de Seguridad............................................................................................... 9

EXTENSIÓN DEL SIB VÍA PLUGINS....................................................................................................... 11

4.1

CONCEPTO PLUGIN......................................................................................................... 11

4.1.1

Configuración de plugins ..................................................................................... 11

4.1.2

Definición de Clase del Plugin .............................................................................. 11

4.1.3

Dependencias de Plugins ..................................................................................... 12

4.2

TIPOS DE PLUGINS .......................................................................................................... 12

Guía Configuración y Extensión SIB

Página 2/19

4.2.1

Plugin Lifecycle: Control del Ciclo de Vida del SIB................................................. 12

4.2.2

Plugin SSAPMessage: Control del Procesamiento de mensajes SSAP .................... 12

4.2.3

Plugin Authentication: Extensión mecanismo de seguridad ................................. 13

4.2.4

Plugin Event: Extensión mecanismo de eventos lanzados por el CEP.................... 13

5

NUEVOS PROTOCOLOS DE COMUNICACIÓN: GATEWAYS ................................................................ 15

6

CONFIGURANDO LA PERSISTENCIA DEL SIB....................................................................................... 17

6.1.1

BDC: Base de Datos Configuración ....................................................................... 17

6.1.2

BDTR: Base de datos Tiempo Real........................................................................ 17

Guía Configuración y Extensión SIB

Página 3/19

2 INTRODUCCIÓN 2.1

Requisito

Antes de seguir esta guía se recomienda leer la guía SOFIA2-Conceptos SOFIA2.doc

2.2

Objetivos y alcance del presente documento

El presente documento pretende describir el proceso de configuración del SIB, y sus mecanismos de Extensión.

Guía Configuración y Extensión SIB

Página 4/19

3 CONFIGURACIÓN DEL SIB El SIB tiene 2 mecanismos de configuración: 

Ficheros de configuración que permiten configurar los parámetros estáticos del SIB



BDC: que permite configurar la parte dinámica del SIB (ontologías, usuarios, permisos

3.1

Ficheros de configuración (.properties)

Son ficheros Java de propiedades, que se encuentran :

3.1.1 Ubicación de ficheros de configuración Los ficheros de configuración del SIB pueden estar embebidos en el desplegable (WAR) bajo la ruta META-INF\Spring

lo que dificulta realizar modificaciones en los parámetros de

configuración. O pueden estar externalizados en una ruta definida parcialmente por el usuario. Cuando configuramos el contenedor que despliega el SIB con el parámetro -DCONFIG=”S:\SOFIA-RUNTIME\CFG” Indicamos a la arquitectura de la plataforma que los ficheros de propiedades se encuentran en la ruta S:\SOFIA-RUNTIME\CFG, puesto que en un contenedor puede haber desplegadas varias aplicaciones con una arquitectura similar o incluso dos SIB que queremos que tengan configuraciones diferentes. En el fichero modulo.properties META-INF\Spring encontramos dos propiedades arqspring.aplicacion.nombre=sofia2 arqspring.modulo.nombre=sibweb

A partir de la ruta definida en el parámetro CONFIG se construye una ruta basada en las propiedades arqspring.aplicacion.nombre y arqspring.modulo.nombre, de forma que la ruta completa donde se buscar los ficheros de propiedades para el caso anterior es. S:\SOFIA-RUNTIME\CFG\sofia2\sibweb

3.1.2 Fichero auditoria.properties Define la configuración de auditoría de la plataform. Por defecto la auditoría se encuentra desactivada.

Guía Configuración y Extensión SIB

Página 5/19

3.1.3 Fichero database.properties Define la configuración de conexiones a las base de datos. Existen dos grupos de parámetros, 

los relativos a la base de datos de configuración (BDC).



Y los relativos a la base de datos en tiempo real (BDTR)

3.1.4 Fichero log4j.properties Define la configuración de log de la aplicación, rutas, nombres de los ficheros que se g enerarán así como el formato de las trazas

3.1.5 Fichero monitorizacion.properties Define la configuración de Host y puerto donde se desplegará el servicio JMX para la minitorización de la plataforma.

3.1.6 Fichero sib.properties Configuración global del SIB en ejecución:. 

Nombre de la Instancia del SIB

Guía Configuración y Extensión SIB

Página 6/19



Configuración de los GateWay TCP y MQTT



Configuración de los miembros que forman parte del cluster Grid SIB:

3.1.7 Fichero mail.properties Configuración del módulo de envío de email.

3.1.8 Fichero cache.properties Configuración del módulo de cache de la plataforma, este componente comparte información entre todos los módulos de la plataforma en todos los nodos en los que están desplegados.

3.1.9 Fichero notificacion.properties Configuración del modulo de notificaciones que notifica a una Cola (Ejecución de Script) y o Topic (Cambios en la configuración de un Script).

Guía Configuración y Extensión SIB

Página 7/19



Las colas son persistentes en memoria, pero pueden crearse sistemas de persistencia basado en disco o base de datos.

3.2

BDC

La Base de Datos de Configuración de la Implementación de Referencia hace uso de las siguientes tablas y relaciones.

3.2.1 Tabla Ontología Una ontologia representa el modelo de información que será enviada al SIB, consta de un esquema para validar que la información enviada se corresponde con la estructura de información esperada.

3.2.2 Tabla KP Un kp representa una agrupación lógica de dispositivos que interactúan con una o varias ontologías.

Guía Configuración y Extensión SIB

Página 8/19

3.2.3 Tabla InstanciaKP Una instanciakp representa un único dispositivo físico de una agrupación KP que está conectado mediante JOIN al SIB.

3.2.4 Tablas de Seguridad El modelo de seguridad está basado en Usuarios y Roles, de forma que un usuario tiene asociado un Rol.

Una ontología está asociada a un usuario, que es su propietario.

Guía Configuración y Extensión SIB

Página 9/19

Adicionalmente al propietario, se pueden relacionar usuarios con ontologías, indicando que permisos tiene los usuarios sobre las ontologías.

Guía Configuración y Extensión SIB

Página 10/19

4 EXTENSIÓN DEL SIB VÍA PLUGINS 4.1

Concepto Plugin

La plataforma SOFIA dispone de un mecanismo de extensión basada en plugins, que permite desarrollar mecanismo avanzados para el tratamiento de la información. SOFIA soporta tres tipos diferentes de operaciones que puede realizar un plugin, de ciclo de vida, de procesamiento de mensajes SSAP y de seguridad.

4.1.1 Configuración de plugins Cuando configuramos el contenedor que despliega el SIB con el parámetro -DPLUGINS=”S:\PLUGINS” Indicamos a la plataforma que los plugins se encuentran en la ruta S:\PLUGINS y por tanto se cargarán todos los plugin empaquetados como ficheros JAR que se encuentren en esta ruta. Los plugins contarán con un fichero properties ubicado en META-INF/spring, llamado

Este fichero consta de dos propiedades comunes a todos los plugins, sofia.plugin.name el nombre del plugin, que ha de ser diferente para cada plugin y sofia.plugin.entrypoint que serán las clases y/o beans de entrada al plugin. Cada entrypoint será una operación, separadas entre ellas por “,” dentro de un plugin las operaciones pueden ser del mismo o de diferente tipo.

4.1.2 Definición de Clase del Plugin Existen dos formas de definir entrypoint. 

Como

clase

java,

indicando

su

paquete

y

nombre,

por

ejemplo

com.indra.jee.arq.spring.sofia2.reference.SimpleLifecyclePlugin. 

Como bean de Spring de la forma bean:simpleLifecyclePluginBean

Los plugin puede definir ficheros de configuración de Spring y ficheros de propiedades, unicamente han de seguir la siguiente nomenclatura. 

Ficheros de configuración de Spring. Han de estar ubicados en la ruta META-INF/spring y seguir la nomenclatura

Guía Configuración y Extensión SIB

Página 11/19

sofia-plugin-context-*.xml 

Ficheros de propiedades Han de estar ubicados en la ruta META-INF/spring y seguir la nomenclatura sofia-plugins-*.properties

4.1.3 Dependencias de Plugins Es conveniente, que los plugin dispongan de las siguientes dependencias, que se encontrarán en tiempo de ejecución, lo que les permitirá hacer uso de las capacidades del SIB, de procesado de mensajes y de la propia Arquitectura ITR que facilita entre otras carácteristicas el acceso al contexto de la plataforma, compartición de información acceso a propiedades… com.indra.jee.arq.spring.sofia2 sib-core 1.0.0 com.indra.jee.arq.spring.sofia2 kp-core 1.0.0 com.indra.jee.arq.spring arq-spring-core

4.2

Tipos de plugins

4.2.1 Plugin Lifecycle: Control del Ciclo de Vida del SIB Este tipo de operaciones han de implementar la interface. public interface LifecyclePlugin { public void onStart(); public void onDestroy(); }

Son plugins ejecutados cuando se arranca (onStart) y cuando se detiene (onDestroy) la instancia del SIB.

4.2.2 Plugin SSAPMessage: Control del Procesamiento de mensajes SSAP Este tipo de operaciones han de implementar la interface. public interface SSAPMessagePlugin {

Guía Configuración y Extensión SIB

Página 12/19

public void preProcess(SSAPMessageTypes type, SSAPMessage message); public void postProcess(SSAPMessageTypes type,SSAPMessage input,SSAPMessage output); }

Son plugins ejecutados antes de procesar el mensaje (preProcess) y después de procesar el mensaje (postProcess) por el SIB.

4.2.3 Plugin Authentication: Extensión mecanismo de seguridad Este tipo de operaciones han de implementar la interface. public interface SecurityPlugin extends Authentication public interface Authentication { String authenticate(SSAPMessage message) throws AuthenticationException; void

checkSessionKeyActive(String sessionKey) throws AuthenticationException;

void closeSession(String sessionKey) throws AuthenticationException; void checkAuthorization(SSAPMessageTypes operationType, String ontologyName) throws AuthorizationServiceException; }

Son plugins ejecutados a la hora de autenticarse o realizar operaciones contra el SIB. 

authenticate(SSAPMessage message) Se invoca cuando se envía el mensaje de JOIN.



closeSession(String sessionKey) Se invoca cuando se envía el mensaje de LEAVE



checkSessionKeyActive(String sessionKey) Se invoca cuando se envía cualquier

mensaje al SIB deferente de JOIN e indica si el usuario ha realizado un JOIN válido. 

checkAuthorization(SSAPMessageTypes

operationType,

String

ontologyName) Se

invoca cuando se envía un mensaje que opera sobre una ontología (QUERY, INSERT, UPDATE, DELETE).

4.2.4 Plugin Event: Extensión mecanismo de eventos lanzados por el CEP Este tipo de operaciones han de implementar la interface. public interface EventPlugin { void receive(long timeStamp, List inEvents, List removeEvents); } Son plugins ejecutaods cuando se lanza un evento configurado en el CEP, este tipo de plugin

hace uso de dos propiedades específicas del fichero sofia.plugin.ontologies=ontologiaUno,ontologiaN sofia.plugin.eventinstances=eventoUno,eventoN

Guía Configuración y Extensión SIB

Página 13/19

La propiedad sofia.plugin.ontologies indica Ontologias lanzarán el plugin, cualquier evento lanzado sobre alguna de las ontología que estén definidas en esta propiedad, separadas unas de otras por el carácter “,”, por lo que este plugin es lanzado siempre que suceda un evento sobre una ontoogía. La propiedad sofia.plugin.eventinstances indica los las Instancias de Evento que lanzarán el pluguin, Una instancia de evento actúa únicamente sobre una Ontología, por lo que es más restrictivo que la propiedad anterior, por lo que estos plugin solo serán lanzados cuando suceda uno o varios eventos específicos de una ontología concreta.

Guía Configuración y Extensión SIB

Página 14/19

5 NUEVOS PROTOCOLOS DE COMUNICACIÓN: GATEWAYS El SIB permite de una forma sencilla añadir nuevos protocolos de transporte para ser utilizados por LOS KP, estos conectores se llaman Gateways. Para desarrollar un nuevo Gateway crearemos un nuevo Bean de Spring que cumplirá las siguientes características.

Estará anotado con @Component con un nombre que lo identifique unequivocamente y extendrá la clase abstracta GatewayToExtendImpl, que a su vez implementa la interface Gateway. public abstract interface Gateway { /** * Indica el protocolo que utiliza el GateWay * @return */ GatewayProtocol getProtocol(); /** * Indica el estado en el que se encuentra el GateWay * @return */ GatewayState getState(); /** * Arranca el GateWay */ void startGateway(); /** * Detiene el GateWay */ void stopGateway(); SSAPMessage process(SSAPMessage mensaje); }

Y que nos obligará a implementar los métodos que se ejecutarán cuando se detenga y cuando se arranque el GateWay. abstract void onStart(); abstract void onStop();

Al tratarse de un ManagedBean las clases que lo extienden también son monitorizables por JMX por defecto. Si accedemos a la consola de monitorización en http://localhost:8090/ veremos los GateWay existentes en la plataforma.

Guía Configuración y Extensión SIB

Página 15/19

Pudiendo acceder a cualquiera de ellos y ver sus detalles y arrancar o detener el GateWay.

Por último el método encargado de procesar los mensajes es SSAPMessage process(@WebParam(name="message")@PathParam("message") SSAPMessage mensaje);

Este método está implementado en la clase GatewayToExtendImpl de forma que si lo sobrescribimos en nuestra implementación debemos prestar especial atención a delegar en el método padre. @RemoteMethod public String process(String mensaje){ return super.process(SSAPMessage.fromJsonToSSAPMessage(mensaje)).toJson(); }

Guía Configuración y Extensión SIB

Página 16/19

6 CONFIGURANDO LA PERSISTENCIA DEL SIB En la implementación de referencia del SIB la BDC y la BDTR se basan en:

6.1.1 BDC: Base de Datos Configuración En la implementación de referencia la BDC es una base de datos relacional. Físicamente se despliega sobre MySQL, aunque el modelo es independiente de la base de datos al usar JPA como veremos: La configuración de la BDC va del bean dataSource definido en el fichero applicationContextPersistencia.xml.

Adaptaremos también el fichero persistence.xml a las necesidades de la nueva base de datos.

6.1.2 BDTR: Base de datos Tiempo Real En la implementación de referencia está basada en MONGODB Si se desea modificar esta persistencia: Modificaremos la configuración de los bean DAODiskDBTR y/o DAOMemoryDBTR definido en el fichero applicationContext-Persistencia.xml, para que hagan uso de nuestra propia implementación de dato que deberá de implementar la interface DAOTRPersistence. public interface DAOTRPersistence {

Guía Configuración y Extensión SIB

Página 17/19

/** * Inserta documento en una ontologia determinada * @param ontology * @param datos * @return * @throws PersistenceException * @throws NotImplementedException */ String insert(String ontology, String datos) throws PersistenceException, NotImplementedException; /** * Actualiza todos los documentos que coinciden con el patron de busqueda * @param ontology * @param query * @param datos * @throws PersistenceException * @throws NotImplementedException */ int update(String ontology, String query, String datos) throws PersistenceException, NotImplementedException; /** * Elimina los documentos que coinciden con el patron de busqueda o todos los documentos de la ontology * @param ontology * @param query Si este valor es null, se eliminan todos los documentos de la colecction * @throws PersistenceException * @throws NotImplementedException */ void remove(String ontology, String query) throws PersistenceException, NotImplementedException; /** * Devuelve todos los documentos de la ontology * @param collection * @return * @throws PersistenceException * @throws NotImplementedException */ String findAll(String ontology) throws PersistenceException, NotImplementedException; /** * Devuelve los documentos que coinciden con el patron de busqueda * @param ontology * @param query * @return * @throws PersistenceException * @throws NotImplementedException */ String find(String ontology, String query) throws PersistenceException, NotImplementedException; /** * Permite lanzar una consulta en el lenguaje nativo del motor de base de datos * @param query * @return * @throws PersistenceException * @throws NotImplementedException

Guía Configuración y Extensión SIB

Página 18/19

*/ String findNativeQuery(String query) throws PersistenceException, NotImplementedException; /** * Devuelve el ultimo documento almacenado que coincide con el patrón de busqueda * @param persistenceType * @param ontology * @param query * @return * @throws PersistenceException * @throws NotImplementedException */ QueryResultWithIdBean findLimitingToLastStored(String ontology, String query) throws PersistenceException, NotImplementedException; }

Guía Configuración y Extensión SIB

Página 19/19