Manual común de Arquitectura Sistema Integral de ...
Transcript of Manual común de Arquitectura Sistema Integral de ...
Manual común de Arquitectura
Sistema Integral de Asignación de Recursos
(SIAR)
CONTROL DOCUMENTAL
Elaborado por:
Iván Jerez Córdoba (everis)
Objeto:
Versión Descripción
1.0 Primera versión del documento
Lista de distribución:
CONTROL DE CAMBIOS
Fecha Versión Autor Página Cambio
05/02/2014 1.0 Iván Jerez Primera Versión del Documento
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
2/37
INDICE DE CONTENIDO
1. OBJETIVO DEL DOCUMENTO .................................................... 3
2. REPOSITORIO DE DOCUMENTACIÓN Y MODELADO .................. 4
3. DESCRIPCIÓN FUNCIONAL ...................................................... 5
3.1. Diagrama de bloques / negocio ............................................... 5
3.2. Acceso y utilización de la aplicación ......................................... 5
4. ARQUITECTURA ....................................................................... 6
4.1. Diagrama de arquitectura ....................................................... 6
4.1.1.Especificaciones técnicas ........................................................ 8
4.1.2.Configuraciones .................................................................. 15
4.1.3.Estimación de capacidades ................................................... 18
4.1.4.Interfaces con sistemas externos .......................................... 19
4.2. Diagrama de componentes ................................................... 20
4.3. Servicios publicados ............................................................ 28
5. RESOLUCIÓN DE PROBLEMAS ................................................ 29
5.1. Logs y trazas de la aplicación ................................................ 29
5.2. Monitorización..................................................................... 30
5.3. Excepciones ........................................................................ 30
5.4. Inventario de errores ........................................................... 31
5.5. Logger de Procesos ............................................................. 35
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
3/37
1. OBJETIVO DEL DOCUMENTO
El objetivo del presente documento es el de exponer información que, por el
interés común de diversas áreas, es preferible concentrar en un único lugar,
como por ejemplo cuestiones relativas a la arquitectura o la escritura de logs y
trazas.
Si el diagrama o gráfico a incluir en este documento tiene un tamaño que no
permite su visualización correcta, se deberá indicar únicamente su localización
en el repositorio de modelado correspondiente.
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
4/37
2. REPOSITORIO DE DOCUMENTACIÓN Y MODELADO
Toda la información usada por la documentación con diagramas modelando
distintas partes de la aplicación necesarias para su entendimiento se
encuentra en un fichero EAP de la aplicación Enterprise Architect.
El fichero se encuentra en:
resources\Modelado_Documentacion.EAP
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
5/37
3. DESCRIPCIÓN FUNCIONAL
Breve descripción funcional de la aplicación, resaltando qué se busca, las
principales funcionalidades ofrecidas, etc. Incluir en este apartado la
localización de la descripción funcional detallada (requisitos, historias de
usuario o los documentos que corresponda).
Si la complejidad o estructura de la aplicación lo pide, este apartado se puede
subestructurar por grandes bloques funcionales.
3.1. Diagrama de bloques / negocio
Diagrama de negocio o bloques funcional de la aplicación
3.2. Acceso y utilización de la aplicación
Desarrollo
SIAR WEB: https://siardes.metromadrid.net
SIAR SGD: http://beamont2.metromadrid.net
SIAR Rule Execution Server: http://jackson2.metromadrid.net:7030/res
SIAR Rule Team Server: http://jackson2.metromadrid.net:7030/teamserver
Producción
SIAR WEB: https://siar.metromadrid.net
SIAR SGD: http://siarmotor.metromadrid.net/sgd
SIAR Rule Execution Server: http://siarilog.metromadrid.net/res
SIAR Rule Team Server: http://siarilog.metromadrid.net/teamserver
Descripción general del uso de la aplicación.
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
6/37
4. ARQUITECTURA
4.1. Diagrama de arquitectura
El siguiente diagrama muestra la arquitectura tecnológica de Producción con
la que cuenta el aplicativo global de SIAR (diagrama por máquina):
deployment Entorno Tecnológico Producción
Servidor Aplicaciones
- Capacidad de Almacenamiento - HDD: = 72 Gb
- Capacidad de Procesamiento - CPU: = T4 a 3ghz 8 cor...
- Host Name: = siarilog
- Memoria Física - RAM: = 256 Gb
Servidor Motor Asignación
- Capacidad de Almacenamiento - HDD: = 72 Gb
- Capacidad de Procesamiento - CPU: = T4 a 3ghz 8 cor...
- Host Name: = balde1 y balde2
- Memoria Física - RAM: = 256 Gb
Sun Solaris
- version: int = 10
Oracle Weblogic
- version: = 10.3.3.0
JDK
- tipo: = Hotspot
- version: = jdk1.6.0_45
siar
Server1
- puerto: = 7010
siar-web
Server2
- puerto: = 7020
siar-web
Server3
- puerto: = 7030
siar-ws
Server4
- puerto: = 7040AdminServer
- puerto: = 7001
jms/siarasyncqueue jdbc/jsiardatasource jdbc/resdatasource
Balanceador HW
- modelo: = Alteon
- puerto: = 443
Servidor Base de Datos
- Capacidad de Almacenamiento - HDD: = 72 Gb
- Capacidad de Procesamiento - CPU: = T4 a 3ghz 8 cor...
- Host Name: = junin1
- Memoria Física - RAM: = 256 Gb
SGBD Oracle
- version: = 11G
Sun Solaris
- version: int = 10
Sun Solaris
- version: int = 10
Apache Web Server
- puerto: = 80
Sun Global Desktop
- version: = 4.6
Optimización
siar-cliente-pesado
ILOG CP
- version: = 1.6
ILOG CPLEX
- version: = 12.2
Librería Optimización Motor Asignación
Sistemas Externos
Apache
- version: = 2.2.17
- puerto: = 80
birt
Server 5
- puerto: = 7050
res/rts
VISA
SAP/R3
PAP
VACACIONES
ANDEN CENTRAL
«use»
«deploy»«deploy»
«deploy»
«use»
«use»
«access»
«access»
«access»
«deploy»
«deploy»
«use»
«WS-SOAP»
«use»
«deploy»
«use»«use» «use» «use»
«BBDD»
«BBDD»
«BBDD»
«BBDD»
«BBDD»
«BBDD»
«BBDD»
El diagrama anterior muestra la distribución de cada máquina en Producción,
sin embargo, tanto para el “Servidor Aplicaciones” como para el “Servidor
Motor Asignación” existen 2 máquinas que forman cluster entre los nodos que
forman internamente. Para ver los cluster disponibles en el “Servidor
Aplicaciones” en Producción se puede observar en el siguiente diagrama:
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
7/37
Y el cluster para las máquinas donde está el SGD es el siguiente:
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
8/37
deployment Diagrama Cluster SGD
Balde1 Balde2
Apache Web Serv er
- puerto: = 80
Sun Global Desktop
- version: = 5.00.907
Apache Web Serv er
- puerto: = 80
Sun Global Desktop
- version: = 5.00.907
Cluster
4.1.1. Especificaciones técnicas
Las Especificaciones técnicas no varían mucho en los entornos con los que
cuenta el proyecto SIAR, a continuación se describen cada entorno:
Entorno local (Equipo Desarrollo):
Los equipos locales son máquinas con Sistema Operativo Windows XP de 32
bits. Estos equipos se utilizan para el desarrollo del software de SIAR.
Se puede ver las características en la siguiente tabla:
Características Hardware
Procesador T4 a 2.85ghz 8 cores 8 threads
Memoria RAM 128 Gb
HDD (Disco Duro) 100 Gb aprox.
Características Software
Sistema Operativo Windows XP 32 bits
Lenguaje Programación Java 6 SE (JDK Sun)
Entorno Desarrollo Eclipse 3.5 (Galileo) / RuleStudio 7.1.1 (basado
en Eclipse 3.4)
Servidor de Aplicaciones Apache Tomcat 6
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
9/37
En los entornos locales de desarrollo no se puede probar la aplicación en
cluster ni tampoco usar una propia cola de JMS, por eso utilizan colas JMS
instaladas en otros servidores de aplicaciones con WLS (jackson2 u otro
equipo local Windows XP).
Entorno Servidores Web Locales:
Son servidores Weblogic 11g que se instalan en equipos locales con Sistema
Operativo Windows XP de 32 bits. Estos equipos se utilizan como manera
rápida de desplegar el aplicativo Web en Weblogic.
Se puede ver las características en la siguiente tabla:
Características Hardware
Procesador Intel Core 2 Duo
Memoria RAM 2-3 Gb
HDD (Disco Duro) 100 Gb aprox.
Características Software
Sistema Operativo Windows XP 32 bits
Servidor de Aplicaciones Weblogic 11g
JVM JDK Hotspot 1.6.0_18 (Sun)
Estos servidores tienen configurados un único Server donde se ejecuta el
aplicativo Web. No tiene cluster.
Sí tiene una cola JMS el procesamiento asíncrono de SIAR.
Entorno Desarrollo:
El entorno de Desarrollo consta de 3 máquinas para usos diferentes:
• Jackson2 Servidor Aplicaciones
• Beamont2 SGD – Cliente Pesado/Motor Asignación
• Jackson3 SGBD Oracle 11g
Características Jackson2:
Características Hardware
Procesador 2 x SPARC64 V9 (PrimePower 1500)
Memoria RAM 16 Gb
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
10/37
HDD (Disco Duro) 72 Gb
Switch SSL Alteon
Características Software
Sistema Operativo Solaris 10 (SunOs 5.10)
Servidor de Aplicaciones Weblogic 11g
Balanceador de Carga Apache (módulo cluster Weblogic)
JVM Hotspot 32 bits
Estos servidores tienen configurados 4 Servers donde se ejecuta el aplicativo
Web. Además hay un cluster montado con el Server1 y el Server2 con
VirtualHost siardes.
Tiene una cola JMS en cluster para el procesamiento asíncrono de SIAR.
Tiene instalado un agente de AccessManager (OpenSSO) para la comunicación
con el servidor AccessManager de desarrollo de Metro de Madrid.
Las aplicaciones con las que va a contar son:
• siar-web
• Rule Execution Server (RES)
• Rule Team Server (RTS)
Características Beamont2:
Características Hardware
Procesador 4 x SPARC64 V9 (PrimePower 1500)
Memoria RAM 8 Gb
HDD (Disco Duro) 72 Gb
Características Software
Sistema Operativo Solaris 10 (SunOs 5.10)
Servidor Web Apache
Servidor Escritorio Remoto Sun Secure Global Desktop (SGD)
JVM Hotspot 32 bits
Librería Solver CPLEX
Este servidor tiene instalada la librería CPLEX que usa el Motor de Asignación.
Tiene instalado la aplicación SGD sobre un Apache, esta aplicación es la
encargada de ejecutar remotamente el cliente pesado.
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
11/37
Permite ejecutar hasta 4 asignaciones en la máquina.
Características Jackson3:
Características Hardware
Procesador 2 x SPARC64 V9 (PrimePower 1500)
Memoria RAM 10 Gb
HDD (Disco Duro) 72 Gb
Características Software
Sistema Operativo Solaris 10 (SunOs 5.10)
Servidor Base de Datos Oracle Database Server 11g
Este servidor es la base de datos de desarrollo, la cual cuenta con 6 esquemas
distintos para SIAR y un esquema para desplegar reglas (BRES).
Entorno Producción:
El entorno de Producción consta de 3 máquinas para usos diferentes:
• Bialet1 y Bialet2 Servidor Aplicaciones
• Balde1 y Balde2 SGD – Cliente Pesado/Motor Asignación
• Junin1 SGBD Oracle 11g
Características Bialet1 y Bialet2:
Características Hardware
Procesador T4 a 3ghz 8 cores 8 threads
Memoria RAM 256 Gb
HDD (Disco Duro) 72 Gb
Switch SSL Alteon
Características Software
Sistema Operativo Solaris 10 (SunOs 5.10)
Servidor de Aplicaciones Weblogic 11g
Balanceador de Carga Apache (módulo cluster Weblogic)
JVM jdk1.6.0_45
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
12/37
Estos servidores tienen configurados 4 Servers donde se ejecuta el aplicativo
Web. Además hay un cluster montado con el Server1 y el Server2 con
VirtualHost siar.
Tiene una cola JMS en cluster para el procesamiento asíncrono de SIAR.
Tiene instalado un agente de AccessManager (OpenSSO) para la comunición
con el servidor AccessManager de desarrollo de Metro de Madrid.
Las aplicaciones con las que va a contar son:
• siar-web
• Rule Execution Server (RES)
• Rule Team Server (RTS)
Características Balde1 y Balde2:
Características Hardware
Procesador 4 x SPARC64 V9 (PrimePower 1500)
Memoria RAM 8 Gb
HDD (Disco Duro) 72 Gb
Características Software
Sistema Operativo Solaris 10 (SunOs 5.10)
Servidor Web Apache
Servidor Escritorio Remoto Sun Secure Global Desktop (SGD)
JVM Hotspot 32 bits
Librería Solver CPLEX
Este servidor tiene instalada la librería CPLEX que usa el Motor de Asignación.
Tiene instalado la aplicación SGD sobre un Apache, esta aplicación es la
encargada de ejecutar remotamente el cliente pesado.
Permite ejecutar hasta 4 asignaciones en la máquina.
Características Junin1:
Características Hardware
Procesador 2 x SPARC64 V9 (PrimePower 1500)
Memoria RAM 10 Gb
HDD (Disco Duro) 72 Gb
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
13/37
Características Software
Sistema Operativo Solaris 10 (SunOs 5.10)
Servidor Base de Datos Oracle Database Server 11g
Este servidor es la base de datos de producción, tiene un esquema para SIAR
y un esquema para desplegar reglas (BRES).
El Diagrama de Especificaciones Técnicas se puede apreciar en la siguiente
figura:
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
14/37
El diagrama refleja el entorno de Producción, que es muy parecido al de
Desarrollo salvo que los sistemas con los que se asocia son de Producción o
Desarrollo según entorno.
Los sistemas que cambian entre diferentes entornos son:
• Base de Datos: en desarrollo se tienen otros esquemas de base de
datos con diferentes juegos de datos.
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
15/37
• Access Manager Server y SUN Directory Server: dependiendo del
entorno puede ser de Desarrollo o de Producción.
El hardware de Athlon sirve para proporcionar SSL en las comunicaciones
HTTP. Este dispositivo es el mismo tanto para el entorno de Desarrollo como el
de Producción.
4.1.2. Configuraciones
Las configuraciones de las aplicaciones, tanto del cliente Web como del cliente
pesado, varían según el entorno donde se ejecute. Se puede ver las diferentes
configuraciones en las siguientes tablas:
Entorno local (Equipo Desarrollo):
Aplicación Parámetro Valor Acceso
siar-web
Servidor Tomcat 6 -
BBDD
SIAR:SIARR (jackson3) context.xml
SIAR1B:SIARR (jackson3) context.xml
SIARBETA:SIARR (jackson3) context.xml
SIAR1BACEP:SIARR (jackson3) context.xml
JSIAR:SIARR (jackson3) context.xml
SIARGRI:SIARR (jackson3) context.xml
BRES:SIARR (jackson3) context.xml
Acceso Reglas
Local: <ruta disco duro local> siar-web/ra.xml
JNDI: jdbc/resdatasource siar-web/ra.xml
JDBC: BRES:SIARR (jackson3) siar-web/ra.xml
URL Sist. Externos
VISA BBDD
ANDÉN CENTRAL BBDD
VACACIONES BBDD
PAP BBDD
SAP SAP LOGON PAD / WS-
SOAP
Perfil Maven tomcat pom.xml
Salida LOG Aplicación CONSOLE log4j.xml
Procesos Asincronos
JMS (t3://server:port) siar-negocio/pom.xml
Java Thread siar-negocio/pom.xml
Seguridad - -
URL SGD http://beamont2.metromadrid.net/sgd tabla configuración BBDD
URL BIRT http://jackson2.metromadrid.net:7050/birt tabla configuración BBDD
siar-cliente- BBDD SIAR:SIARR (jackson3) spring-config-cp.properties
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
16/37
pesado SIAR1B:SIARR (jackson3) spring-config-cp.properties
SIARBETA:SIARR (jackson3) spring-config-cp.properties
SIAR1BACEP:SIARR (jackson3) spring-config-cp.properties
JSIAR:SIARR (jackson3) spring-config-cp.properties
SIARGRI:SIARR (jackson3) spring-config-cp.properties
Acceso Reglas
Local: <ruta disco duro local> siar-cliente-pesado/ra.xml
JNDI: jdbc/resdatasource siar-cliente-pesado/ra.xml
JDBC: BRES:SIARR (jackson3) siar-cliente-pesado/ra.xml
Salida LOG Aplicación CONSOLE log4j.properties
Salida LOG Motor FILE siar_config.properties
Entorno Servidores Web Locales:
Aplicación Parámetro Valor Acceso
siar-web
Servidor Weblogic Server 11g -
BBDD
SIAR:SIARR (jackson3) WLS Console
SIAR1B:SIARR (jackson3) WLS Console
SIARBETA:SIARR (jackson3) WLS Console
SIAR1BACEP:SIARR (jackson3) WLS Console
JSIAR:SIARR (jackson3) WLS Console
SIARGRI:SIARR (jackson3) WLS Console
BRES:SIARR (jackson3) WLS Console
Acceso Reglas JNDI: jdbc/resdatasource siar-web/ra.xml
URL Sist. Externos
VISA BBDD
ANDÉN CENTRAL BBDD
VACACIONES BBDD
PAP BBDD
SAP SAP LOGON PAD / WS-
SOAP
Perfil Maven env-local-nodespliegue pom.xml
Salida LOG Aplicación CONSOLE log4j.xml
Procesos Asincronos JMS (t3://localhost:7001) siar-negocio/pom.xml
Seguridad - -
URL SGD http://beamont2.metromadrid.net/sgd tabla configuración BBDD URL BIRT http://jackson2.metromadrid.net:7050/birt tabla configuración BBDD
Únicamente este entorno se utiliza para la aplicación Web.
Entorno Desarrollo:
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
17/37
Aplicación Parámetro Valor Acceso
siar-web / siar-ws
Servidor
Weblogic Server 11g
- URL: jackson2.metromadrid.net
BBDD
SIAR:SIARR (jackson3) WLS Console
SIARBETA:SIARR (jackson3) WLS Console
JSIAR:SIARR (jackson3) WLS Console
BRES:SIARR (jackson3) WLS Console
Acceso Reglas JNDI: jdbc/resdatasource siar-web/ra.xml
URL Sist. Externos
VISA BBDD
ANDÉN CENTRAL BBDD
VACACIONES BBDD
PAP BBDD
SAP SAP LOGON PAD / WS-
SOAP
Perfil Maven env-des-hudson pom.xml
Salida LOG Aplicación FILE log4j.xml
Procesos Asincronos
JMS:
tabla configuración BBDD
t3://jackson2.metromadrid.net:7010
t3://jackson2.metromadrid.net:7020
Seguridad OpenSSO -
URL SGD http://beamont2.metromadrid.net/sgd tabla configuración BBDD
URL BIRT http://jackson2.metromadrid.net:7050/birt tabla configuración BBDD
siar-cliente-pesado
BBDD
SIAR:SIARR (jackson3) spring-config-cp.properties
SIAR1B:SIARR (jackson3) spring-config-cp.properties
SIARBETA:SIARR (jackson3) spring-config-cp.properties
JSIAR:SIARR (jackson3) spring-config-cp.properties
Acceso Reglas JDBC: BRES:SIARR (jackson3) /siar/motor/config/ra.xml
Salida LOG Aplicación FILE log4j.properties
Salida LOG Motor FILE siar_config.properties
Entorno Producción:
Aplicación Parámetro Valor Acceso siar-web / siar-ws Servidor Weblogic Server 11g -
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
18/37
URL: bialet1.metromadrid.net / bialet2.metromadrid.net
BBDD
SIAR:SIARL (jackson1) WLS Console
BRES:SIARL (jackson1) WLS Console
Acceso Reglas JNDI: jdbc/resdatasource siar-web/ra.xml
URL Sist. Externos
VISA BBDD
ANDÉN CENTRAL BBDD
VACACIONES BBDD
PAP BBDD
SAP SAP LOGON PAD / WS-
SOAP
Perfil Maven env-pruebas-usuario pom.xml
Salida LOG Aplicación FILE log4j.xml
Procesos Asincronos
JMS:
tabla configuración BBDD
t3://bialet1.metromadrid.net:7010
t3://bialet1.metromadrid.net:7020
t3://bialet2.metromadrid.net:7010
t3://bialet2.metromadrid.net:7020
Seguridad OpenSSO -
URL SGD https://siarmotor.metromadrid.net/sgd tabla configuración BBDD
URL BIRT https://siarinformes.metromadrid.net/birt tabla configuración BBDD
siar-cliente-pesado
BBDD SIAR:SIARL (jackson1)
spring-config-cp.properties o por propiedades de la
JVM
Acceso Reglas JDBC: BRES:SIARL (jackson1) /siar/motor/config/ra.xml
Salida LOG Aplicación FILE log4j.properties
Salida LOG Motor FILE siar_config.properties
4.1.3. Estimación de capacidades
Así mismo, se deberá indicar la concurrencia prevista que pueda soportar la
aplicación: número de usuarios, número de procesos automatizados, anchos
de banda, etc.
En concreto para las bases de datos implicadas en la solución, se deberá
realizar y plasmar un estudio de volumetría total prevista por entorno.
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
19/37
4.1.4. Interfaces con sistemas externos
SAP HR
Se ha realizado un desarrollo para integrar los WebService de HR para la
consulta de horas extra, punteos y asignación de agentes en la aplicación de
SIAR.
Para la generación de dichos clientes, se ha usado la tecnología CXF, que
genera todo lo necesario para invocarlos, así como distintas opciones de
configuración.
Adicionalmente a estos clientes, se ha generado un BS (Business Service)
para cada servicio de tal manera que las invocaciones a estos se realicen
desde el BS en lugar de hacerlo directamente. Se ha optado por realizarlo de
este modo por mantener la misma arquitectura utilizada para el resto de
invocaciones, ya sea a BBDD directamente o a otros servicios usados en la
aplicación.
Los BS generados son los siguientes:
• WsAsignacionAgentesBS
• WsHorasExtraBs
• WsPunteoBs
Portal del Empleado:
Interfaz: JDBC
Host: monterrey.metromadrid.net
BBDD:PMP
Esquema/usuario: pe1828(provisonal)
Vigilancia de la Salud: VISA
Interfaz: JDBC
Hosts en RAC: trinidad-vip y varadero-vip
BBDD:VISAP
Esquema/usuario: rsiarvisa
PAP
Interfaz: JDBC
Host: lnosap
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
20/37
BBDD:PRO1 (nosap)
Esquema/usuario: lecturapap
VACOPER
Interfaz: JDBC
Host: sec_lnosap
BBDD:PRO01(nosap)
Esquema/usuario:siarvacoper
4.2. Diagrama de componentes
SIAR consta de varios componentes de los cuales algunos son utilizados en
ambas aplicaciones: cliente pesado y aplicativo Web.
Para una mayor comprensión, se puede revisar el siguiente diagrama que
explica cómo se comunican los diversos componentes:
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
21/37
pkg Diagrama Prev io Componentes Alto Niv el
siar-core
siar-negocioComun
siar-motorAsignacionsiar-negocio
siar-web siar-cliente-pesado
En el diagrama anterior se puede ver que el paquete del que nacen todas las
dependencias es siar-core. En este paquete contiene las clases para el acceso
a datos (Data Access Object, DAO), las clases de persistencia (Value Object,
VO), las interfaces de los gestores así como una serie de utilidades de Spring,
propias de la aplicación y constantes. El diagrama siguiente de componentes
de alto nivel muestra la estructura del paquete siar-core:
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
22/37
cmp Diagrama Componentes siar-core
siar-core
DAOs VOs
Entidades Motor
Utilidades Spring Utilidades CoreConstantes Core
Interfaces Gestores
«use» «implementation»
«use»
El paquete siar-negocioComun está formado por las partes de negocio
comunes al aplicativo Web y al aplicativo cliente pesado. Entre los módulos de
los que dispone está Condición del Agente, Matriz de Distancia, Cálculo de
Vacaciones, Histórico/Publicación de Asignaciones y los gestores.
Los gestores son una capa intermedia entre el negocio y los DAOs pero que
además añade un control sobre los datos consultados mediante el uso de
cachés. El diagrama de componentes siar-negocioComun es:
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
23/37
cmp Diagrama Componentes siar-negocioComun
siar-negocioComun
CONDAG
Matriz Distancia
Calculo Vacaciones
Publicación
Asignaciones
Impl. Gestores
«use»
«use»«use»
«use»
En la parte Web se utilizan los paquetes siar-negocio y siar-web, donde se
recoge el negocio y la lógica de presentación del aplicativo Web.
El paquete siar-negocio se compone de BS (Business Services),
implementación de la conexión con la cola JMS de WLS, implementación del
asincronismo, negocio de las reglas DC y una serie de utilidades y constantes
de negocio. Se puede ver en el diagrama:
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
24/37
cmp Diagrama Componentes siar-negocio
siar-negocio
Business Serv ices
(BS)
Negocio Reglas DC
Utilidades Negocio Constantes Negocio
Impl. Asincronismo Impl. JMS
«use»
El paquete siar-web reúne los componentes visuales (JSF con Facelets y
Richfaces, JSP y pantallas en ambas tecnologías), Managed beans, utilidades
de sesión y control de pantalla, Servlets GR:
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
25/37
cmp Diagrama Componentes siar-web
siar-web
Pantallas JSF Pantallas JSP
Autenticación y
Autorización AM
Utilidades Sesión y
Pantalla
Serv lets GRManaged Beans
Entidades
Presentacion
«use» «use»
Además de esto, siar-web se encuentra encapsulado en un EAR llamado siar-
web-ear donde se añade parte de la configuración de los WebService de HR
para evitar problemas de compatibilidad con WebLogic. Esta configuración se
recoge en el archivo weblogic-application.xml.
Por último, están los paquetes de la parte cliente pesado.
El paquete siar-motorAsignacion dispone de los fuentes para la generación
de la librería de optimización del modelo en C++, el negocio de las reglas del
Motor de Asignación, el BS de escritura de la solución de asignación y las
clases Java Native Interface (JNI) para la comunicación Java con la librería
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
26/37
generada a partir de los fuentes en C++. El diagrama se puede ver a
continuación:
cmp Diagrama Componentes siar-motorAsignacion
siar-motorAsignacion
Fuentes C++
Negocio Reglas MA BS Escritura
Solución
Asignación
JNI
«use»
«use»
El paquete siar-cliente-pesado es el encargado de presentar las pantallas con
las que interactúan los usuarios. Este proyecto está hecho en Java Swing.
Invoca a los gestores de siar-negocioComun para la obtención de los datos
para preparar la asignación y luego invoca a siar-motorAsignacion para el
cálculo de la solución.
Se ha creado una serie de utilidades para conectar con el contexto Spring de
los DAOs y otras utilidades para gestionar la transaccionalidad de la aplicación.
El diagrama que muestra los componentes es el siguiente:
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
27/37
cmp Diagrama Componentes siar-cliente-pesado
siar-cliente-pesado
Componetes
Visuales SIAR
Pantallas y Ev entos Acceso Datos
Transaccional
Inicializador
Contexto Spring
«use»
«use»
Para finalizar, se muestra un diagrama donde se pueden ver las
organizaciones de reglas, cada una de las cuales contienen varios proyectos de
JRules que se agrupan en el mismo RuleApp.
La agrupación que se muestra en el diagrama es por cada RuleApp que se
genera en SIAR:
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
28/37
cmp Diagrama Componentes siar-reglas
siar-reglas
SIAR_MA SIAR_CA
SIAR_DC SIAR_GR
4.3. Servicios publicados
Mencionar y documentar los servicios publicados hacia el exterior: Web
Services publicados (SOAP o REST), EJB remotos expuestos, RMI, base de
datos, etc.
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
29/37
5. RESOLUCIÓN DE PROBLEMAS
5.1. Logs y trazas de la aplicación
En lo referente a los logs y trazas de la aplicación, se deberá indicar dónde se
escriben, dónde se configuran y cómo se pueden consultar para cada uno de
los entornos en lo que corra la aplicación, y para cada uno de sus
componentes.
Entorno Desarrollo: Aplicación Ruta Nivel Rotado NºBackups Descripción
siar-web /bea/logs/aplicaciones/SIAR/siar ServerX.log Varios 10MB 10 Log general de
la aplicación
siar-web.
siar-web /bea/logs/aplicaciones/SIAR/siar_procesos.log INFO 10MB 10 Log que saca los
datos de entrada
y salida de un
proceso
importante.
siar-ws /bea/logs/aplicaciones/SIAR/siar-ws ServerX.log Varios 10MB 10 Log general de
la aplicación
siar-ws.
siar-ws /bea/logs/aplicaciones/SIAR/siar-ws-error.log Varios 10MB 10 Log donde se
escriben los
errores para la
monitorización.
siar-ws /bea/logs/aplicaciones/SIAR/siar_procesos.log INFO 10MB 10 Log que saca los
datos de entrada
y salida de un
proceso
importante.
siar-
reports
/bea/logs/aplicaciones/SIAR/ReportEngine_2014.log Varios 10MB 10 Log que saca
errores
correspondientes
a consultas de
base de datos
que se realizan
en la consulta de
cualquier
informe BIRT.
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
30/37
Entorno Producción: Aplicación Ruta Nivel Rotado NºBackups Descripción
siar-web /bea/logs/aplicaciones/SIAR/siar ServerX B(Número
de máquina).log
ERROR 10MB 10 Log general de
la aplicación
siar-web.
siar-web /bea/logs/aplicaciones/SIAR/siar_procesos.log INFO 10MB 10 Log que saca los
datos de entrada
y salida de un
proceso
importante.
siar-ws /bea/logs/aplicaciones/SIAR/siar-ws ServerX
B(Número de máquina).log
ERROR 10MB 10 Log general de
la aplicación
siar-ws.
siar-ws /bea/logs/aplicaciones/SIAR/siar-ws-error.log ERROR 10MB 10 Log donde se
escriben los
errores para la
monitorización.
siar-ws /bea/logs/aplicaciones/SIAR/siar_procesos.log INFO 10MB 10 Log que saca los
datos de entrada
y salida de un
proceso
importante.
siar-
reports
/bea/logs/aplicaciones/SIAR/ReportEngine_2014.log Varios 10MB 10 Log que saca
errores
correspondientes
a consultas de
base de datos
que se realizan
en la consulta de
cualquier
informe BIRT.
5.2. Monitorización
La monitorización sólo existe para los procesos periódicos que se inician
mediante ejecución de su servicio expuesto por SOAP.
Para más detalle ver el apartado 4.2 Planificaciones y tareas periódicas del
Manual de Explotación.
5.3. Excepciones
Las excepciones se gestión de forma general para SIAR, en las que se tiene
las siguientes excepciones (visibles dentro de los logs):
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
31/37
- TecnicaException: excepción técnica que ocurre durante el procesado o
integración de SIAR con otros sistemas. Por ejemplo: fallos de
conectividad con la base de datos, tabla de base de datos no existente,
acceso a fichero que no existe, etc.
- NegocioException: excepciones provocadas por código cuando no se
cumple cierta lógica de negocio. Se utiliza como mecanismo para cortar
el flujo de ejecución cuando no se cumple una validación de negocio.
- MessageException: excepción cuando se produce un errores en el
sistema de mensajería JMS.
- TimeoutSpringSecurityException: excepción que se lanza cuando se
detecta un timeout de la sesión web del usuario. Se utiliza para que
automáticamente redirija a la página de logout con el mensaje
específico de timeout.
De forma genérica, cuando un error, de los descritos anteriormente, llega a la
capa de presentación, se ha controlado para que muestre una página HTML
personalizada indicando un error HTTP 500 (aunque la respuesta no sea HTTP
500). Habría que revisar los logs para ver el detalle del error.
Además, existen pantallas personalizadas para los errores HTTP 500, HTTP
404 y HTTP 403.
5.4. Inventario de errores
Los errores tienen 2 códigos: código error y código error log. El primero es el
código de error que tiene en la aplicación y el segundo es el código de error
para la monitorización con OVO.
No todos los errores deben ser monitorizados, por eso se realiza esta doble
clasificación de los errores.
El código de error será el que se muestre en las pantallas específicas de error
donde pondrá el código y la traza del código. Estas pantallas facilitaran el
reporte, por parte de los usuarios, de los errores o incidencias.
Los errores a tener en cuenta por la herramienta de monitorización OVO son
los que tiene código de error log, y se escriben en los siguientes ficheros de
logs:
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
32/37
/bea/logs/aplicaciones/SIAR/siar-ws_<SERVER>.log
/bea/logs/aplicaciones/SIAR/siar_<SERVER>.log
El formato de salida de estos errores es:
<código error log> - <texto descriptivo>
En la siguiente tabla se muestran los códigos de error y la acción asociada:
Código
error
Código
error log Motivo Acciones
000
Cualquier error técnico de
la propia aplicación, no
entran los errores técnicos
de conexión con otros
sistemas, bases de datos,
etc.
- Revisad trazas y/o
avisad equipo
mantenimiento SIAR,
posible error de
negocio.
001
Error durante una
operación DML batch
sobre la BBDD SIAR.
- Revisad trazas y/o
avisad equipo
mantenimiento SIAR,
posible error de
negocio.
002
Error durante una
operación Stateless batch
sobre la BBDD SIAR.
- Revisad trazas y/o
avisad equipo
mantenimiento SIAR,
posible error de
negocio.
003
Error durante borrado
lógico: actualización del
valor o acceso a la
entidad.
- Revisad trazas y/o
avisad equipo
mantenimiento SIAR,
posible error de
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
33/37
negocio.
004
Error durante borrado
lógico: en la
comprobación de la
integridad referencial (por
PL/SQL).
- Revisad trazas y/o
avisad equipo
mantenimiento SIAR,
posible error de
negocio.
010 SIAR010
Error de conexión con la
BBDD, se especifica la
base de datos con
problemas (todas menos
SIAR y BRES).
Posibles errores:
- Datasource
caído/suspendido.
- Nombre JNDI inválido,
no se encuentra o no se
tiene acceso.
- Usuario/Contraseña
inválidos.
- No se puede conectar a
la BBDD.
- Cualquier otro error
durante la conexión.
- Revisar la conexión
con las bases de datos
externas (VISA, PAP,
Anden Central o
Vacaciones).
- Revisar que tiene
visibilidad los
servidores donde se
despliega siar-web y
siar-ws.
- Usuario o contraseña
inválida o caducada.
011 SIAR011
Error de conexión con la
BBDD durante el cierre de
la conexión.
- Revisar la conexión
con las bases de datos
externas (VISA, PAP,
Anden Central o
Vacaciones).
012 SIAR012
Error en la carga de las
reglas de JRules. Posible
problema de conexión con
el esquema de Reglas.
- Revisar la conexión
con el esquema BRES.
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
34/37
013 SIAR013
Cola JMS para el
asincronismo
- Problema al crear el
conector JMS con las
colas. Revisad que
todas las colas están
desplegadas.
014 SIAR014
Conexión SAP en alguno
de los servicios
- Revisar conexión con
los servicios de SAP de
agentes, asignación o
horas extras.
- Usuario de transporte
o contraseña inválida o
caducada.
- Error en la confianza
en el certificado de los
servicios si se va por
HTTPS.
N/A SIAR001
Error durante la ejecución
del proceso periódico
(error interno del proceso,
por ejemplo fallo de
negocio).
- Volver a lanzar el
proceso manualmente.
- Revisar los logs de la
aplicación para ver el
error producido.
N/A SIAR002
Error en la entrada del
mensaje para lanzar el
proceso
(son los errores que se
producen antes de entrar
en el proceso, por
ejemplo cabecera
inválida)
- Volver a lanzar el
proceso manualmente.
- Revisar el mensaje
SOAP de entrada
enviado desde script
PHP si es correcto en
base a la interfaz del
servicio en SIAR.
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
35/37
N/A SIAR003
Error en la salida del
mensaje una
(por ejemplo si no hay
podido realizar
correctamente el
unmarshalling o
transformación de un dato
a Java).
- Volver a lanzar el
proceso manualmente.
- Corregir mensaje.
El inventario de errores anterior sólo se produce en la aplicación siar-ws que
es una aplicación web empaquetada dentro de siar-ws-ear.
Sólo se ha visto la utilidad del uso de la herramienta de monitorización de
Metro en este aplicativo puesto que su finalidad es la de establecer los puntos
de entrada, como servicios web, para la ejecución de los procesos periódicos.
De esta manera, se puede monitorizar la correcta ejecución de los mismos.
5.5. Logger de Procesos
Las trazas que escribe este logger se corresponden a procesos que conectan
con sistemas externos y por lo tanto se deben separar de las trazas del logger
normal para tenerlas localizadas en todo momento.
Estas trazas señalan el flujo de ejecución del proceso lanzado así como los
parámetros de envío al servicio invocado, además de la excepción que se
lanza en caso de error en la ejecución o recuperación de datos.
Subdividimos las trazas indicadas anteriormente de la siguiente forma:
• Indicador de inicio de método: En algunos casos clave se ha incluido un
mensaje a nivel de traza INFO para poder monitorizar los parámetros
enviados a un método. A continuación exponemos un ejemplo de estas
trazas en la que mostramos los parámetros enviados al método
incluyéndolos denrto de un StringBuffer:
Nombre Documento:
Manual común de Arquitectura
Versión:
1.0
Página:
36/37
StringBuffer sb = new StringBuffer();
sb = sb.append("@Param[asignacionPlanTrabajoVo={" +
asignacionPlanTrabajoVo + "}]").append("con IDReg " +
asignacionPlanTrabajoVo.getIdReg() + ", ").append("tipo de asignacion " +
asignacionPlanTrabajoVo.getTipoAsignacionVo() + " ").append(
"y categoría " + asignacionPlanTrabajoVo.getCategoriaVo() + ";
").append("con fechas de inicio de vigencia " +
asignacionPlanTrabajoVo.getInicioVigenciaRealStr() + " ").append(
"y fin de vigencia " + asignacionPlanTrabajoVo.getFinVigenciaRealStr());
LOGGER_PROCESO.info("INICIO Proceso [enviarAsignacionARRHH]:: " + sb);
• Flujo: El nivel de estas trazas siempre es DEBUG, ya que si no
queremos que el filesystem llegue a saturarse estas trazas
desaparecerán al aumentar el nivel de las mismas, debido a que son
meramente informativas. A continuación incluimos unos ejemplos de
estas trazas: LOGGER_PROCESO.debug("[enviarAsignacionARRHH]: cargando las componentes de la
asignacion ...");
LOGGER_PROCESO.debug("[enviarAsignacionARRHH]: cargando datos para el proceso…");
LOGGER_PROCESO.debug("[enviarAsignacionARRHH]: fin del cargar datos iniciales");
• Excepción: estas trazas siempre deberán ser mostradas, puesto que la
información que incluye es vital para comprender el comportamiento de
la aplicación a la hora de producirse la excepción. Su nivel será ERROR
e incluirá un mensaje descriptivo sobre el punto en el que falla y en
algunos casos el mensaje de la excepción, los parámetros recibidos o el
mensaje recuperado de la BDD en caso de que los parámetros de
validación sean incorrectos. A continuación aportamos unos ejemplos de
dichas trazas:
o Excepción sin mensaje: LOGGER_PROCESO.error("[enviarAsignacionARRHH]: errores en la validación de SIAR
de datos (se avisa de ellos al usuario por pantalla)");
o Excepción con mensaje de la Excepción: LOGGER_PROCESO.error("[enviarAsignacionARRHH]: error al invocar al web-service: "
+ e.getMessage());
o Excepción con parametros de entrada: