MINISTERIO DE LA
PRESIDENCIA
SUBDIRECCIÓN GENERAL DE TECNOLOGÍAS Y SERVICIOS DE LA INFORMACIÓNARQUITECTURA
Arquitectura software de la plataforma de
Expediente Electrónico
Arquitectura Software
Control de versiones
Versión Fecha Descripción / Comentarios 1.0 07/08/2012 Versión inicial
Índice
1 Introducción ... 2
2 Descripción General de la arquitectura ... 2
2.1 Visión general ... 2
2.2 Diagrama ... 2
2.3 Explicación de los elementos ...3
3 Arquitectura de Componentes ... 5
3.1 Componentes de Gestión Documental ... 6
3.2 Componentes de Acceso a Datos ... 7
3.3 Componentes de Integración con Servicios Externos ... 8
3.4 Componentes de Servicios de Conversión ... 9
3.5 Componentes de factura electrónica ... 10
3.6 Componentes de Servicios de Plataforma ... 11
3.7 Componentes de Utilidad ... 12
2 de 14
1 Introducción
El propósito de este documento es presentar la arquitectura software y de componentes de la Plataforma de Expediente Electrónico del Ministerio de la Presidencia, en adelante @Doc.
2 Descripción General de la
arquitectura
2.1 Visión general
La arquitectura software implantada en @Doc sigue un modelo de capas que separa la lógica de implementación de los servicios Web, tanto de conversión como de la Plataforma, del acceso a sistemas externos, como la base de datos, el gestor documental y servicios Web externos. Cada una de estas capas se ha implementado con uno o varios componentes reutilizables, de forma que el desarrollo realizado en @Doc pueda explotarse tanto mediante el acceso a su catálogo de servicios web, como mediante la reutilización de componentes de software.
2.2 Diagrama
La siguiente figura muestra a grandes rasgos las capas de componentes de @Doc, y su relación con las aplicaciones cliente de la Plataforma y otros sistemas externos.
2.3 Explicación de los elementos
• Capa de Gestión Documental (DMS): Proporciona servicios de Gestión Documental de bajo nivel (creación de carpetas y documentos, búsquedas, modificación de atributos, despliegue dinámico de tipos, etc). Tiene los siguientes componentes:
o Interfaz DMS: Ofrece hacia las capas superiores una interfaz con múltiples métodos para explotar los servicios típicos de un Gestor Documental, aislando del producto de Gestión Documental concreto que se utilice
o Proveedor DFS (Documentum Foundation Services): Implementa la Interfaz DMS mediante una factoría para la conexión al gestor documental que utiliza librerías de Documentum 6.7 SP1 o Documentum 7.1, y que atacan a este gestor documental mediante su API DFS, que consiste básicamente en una capa de servicios Web a medida facilitada por el propio producto.
o Proveedor CMIS (Content Management Interoperability Services): Implementa la Interfaz DMS mediante una factoría basada en el estándar CMIS. Esta factoría ha sido completamente probada con Documentum 7.1
o Desplegador de tipos: No se ha mostrado en la figura anterior por simplificar. Se encarga del despliegue dinámico de nuevos tipos en Documentum. Esta operación es necesaria cuando se da de alta en @Doc una nueva aplicación cliente que tiene metadatos complementarios propios.
• Capa de Acceso a Datos: Esta capa ofrece la conectividad con la capa de datos. Dentro de esta capa de integración debemos destacar varios elementos:
o JPA: Es la API de Persistencia estándar de Java
o Hibernate: En la capa de acceso a datos se utiliza Hibernate 3 como motor de persistencia JPA
o JTA: Es la API estándar de gestión de transacciones bajo Java EE 5. Permite definir los “boundaries” de las transacciones y sincronizar transacciones entre varias fuentes de datos. Garantiza que ante cualquier error no controlado, el estado de todos los objetos persistentes vuelva al estado original.
o Commons DBCP: librería que gestiona el pool de conexiones a la base de datos o Driver SQL Server: librería con el driver jdbc de acceso a SQL Server. La
plataforma puede trabajar con cualquier base de datos relacional utilizando el driver apropiado y generando los scripts de creación de las tablas específicos para cada RDBMS.
• Capa de Integración con Servicios Externos: Ofrece una serie de componentes que contienen los stubs de java para la invocación de servicios Web externos, o que se integran con servicios Web externos para la realización de tareas necesarias para el funcionamiento de la plataforma. Utilizan Apache CXF como motor de servicios Web, y Spring 3.5 como framework de base para la implementación. Los componentes concretos que ofrece son:
o Componente de Integración con el Registro Electrónico (REGELEC): Contiene los stubs de java necesarios para la invocación de los servicios Web del Registro Electrónico del MPR (REGELEC), así como una factoría que explota el componente de servicios Web de la Plataforma para ofrecer un descriptor de servicios propio con métodos de registro y recuperación de asientos registrales.
o Componentes de Integración con el Directorio Único (DIR). El DIR es el Directorio Común de oficinas y órganos gestionado por el MINHAP. @Doc tiene dos componentes relacionados con el DIR:
Componente de sincronización con el DIR: Contiene los stubs java para la invocación a los servicios Web del DIR. Este componente invoca a los servicios del DIR para actualizar periódicamente una base de datos de oficinas y organismos procedente del DIR, que posteriormente es explotada por @Doc o por otras aplicaciones.
4 de 14 Componente de explotación de unidades y organismos procedentes
del DIR: Explota la base de datos mencionada en el punto anterior.
o Componente de Integración con SIA: El SIA (Sistema de Información Administrativa) es un sistema que contiene un catálogo de procedimientos publicado por cada organismo. Este componente contiene los stubs java para la invocación a los servicios Web de SIA, y una factoría con métodos que explota el componente de servicios Web de la Plataforma para verificar la existencia de códigos SIA especificados por las aplicaciones cliente.
o Componente de Integración con @Firma: Ofrece al componente de servicios web de la Plataforma una factoría que aglutina servicios de realización de firma digital, gestión de claves, validación de firmas y obtención de información de certificados. Para la realización de firmas el componente utiliza las librerías del cliente de @firma, versión 3.3; la validación de firmas y obtención de información de certificados la realiza delegando estas funciones en los servicios Web de validación de @firma, para lo que incorpora los stubs java para la invocación de dichos servicios Web.
o Componente de Integración con Servicio de Conversión: Ofrece al componente de servicios Web de la Plataforma una factoría con métodos relacionados con la conversión de documentos a PDF y obtención de copias auténticas. El componente delega estas tareas en los Servicios Web de Conversión, por lo que incluye los stubs java para la invocación de estos servicios.
• Capa de Servicios Web de Conversión: Esta capa constituye en sí misma una aplicación de servicios Web que se despliega de forma independiente de la Plataforma @Doc. Ofrece servicios genéricos de conversión de formatos, utilizando internamente algunas librerías de manejo de gráficos y OpenOffice 3.4. Puede ser invocado de forma independiente por las aplicaciones cliente.
• Utilidades: Conjunto de librerías externas de propósito general (logging, tests unitarios, ejecución programada de procesos, detección dinámica de tipos mime, algoritmos de codificación). Asimismo esta capa incluye un componente de utilidades desarrollado en el ámbito del proyecto @Doc para manipulación de cadenas Xml y utilidades I/O.
• Capa de Servicios Web de Plataforma: Aplicación de servicios Web de la Plataforma @Doc. Incluye 5 descriptores wsdl para servicios de Expediente Electrónico (servicios de inserción, actualización, obtención y búsqueda de expedientes y documentos, servicios de firma digital, servicios de generación de copias, servicios de ciclo de vida), servicios de Registro Electrónico, Servicios de Administración, Servicios de Catálogo y Servicios de Portafirmas respectivamente. Utiliza prácticamente todas las capas descritas anteriormente para la implementación de estos servicios Web.
3 Arquitectura de Componentes
Se describe en este apartado de forma detallada la arquitectura de componentes de @Doc y las dependencias entre los mismos.
cmp Componentes Componentes de Utilidad + adoc-commons-util + afirma + avalon-framework-api + avalon-framework-impl + commons-dbcp + commons-io + cxf-frontend-jaxws + cxf-transports-http + cxf-ws-security + dctm-commons + dom4j + easymock + fop + hibernate-entitymanager + itextpdf + jai + jod-converter-core + juh + junit + jurt + log4j + MIT yCLibAPI + MIT yCLibOCSP + MIT yCLibPolicy + MIT yCLibT rust + MIT yCLibT SA + MIT yCLibXADES + quartz + ridl + slf4j-log4j12 + spring-beans + spring-context-support + spring-core + spring-orm + spring-security-core + spring-security-crypto + spring-test + sqljdbc4 + tika-core + tika-parsers + unoil + xmlgraphics-commons
Componentes de Integrac ión Serv icios Externos
+ adoc-commons-afirma + adoc-commons-dir + adoc-commons-dirsync + adoc-commons-portafirmas + adoc-commons-regelec + adoc-commons-sia
Componentes de Serv icios de Conv ersión
+ adoc-commons-convert + converter-webservices
Componentes de Gestión Documental
+ adoc-dfs-dms-provider + adoc-dms-interface + adoc-documentum-deployer
Componentes de tests unitarios
+ adoc-unit-tests + adoc-webservices
Componentes de Acceso a Datos
+ adoc-database
Componentes de Serv icios de Plataforma
+ adoc-webservices
Componentes de Fa ctura Electrónica
6 de 14
3.1 Componentes de Gestión Documental
cmp Componentes de Gestión Documental
«jar» adoc-documentum-deployer «jar» adoc-dms-interface Componente s de Utilidad::j unit Componente s de Utilidad::easymock
Test unitarios: junit 4.10, easymock 3.1
Componente s de Utili dad::log4j loggin: log4j 1.2.15, slf4j 1.6.4 Componente s de Utilidad::sl f4j -log4j 12 «jar» adoc-dfs-dms-prov ider Despliegue dinámico de tipos en Documentum Interfaz de servicios de gestión documental Implementación DFS de la interfaz de servicios de gestión documental
• adoc-documentum-deployer (jar): Componente para el despliegue dinámico de tipos en Documentum
• adoc-dms-interface (jar): Componente con la interfaz de métodos para la explotación de gestores documentales. Independiza a las capas superiores del producto utilizado.
• adoc-dfs-dms-provider (jar): Implementa la interfaz DMS invocando a la capa DFS (Documentum Foundation Services) de Documentum.
cmp Componentes de Acceso a Datos
«jar»
adoc-database
Spring 3.0.6
Comp onen tes de Utilidad:: spring-test Componente s de Utili dad:: spring-security-core Compo nente s de Utilidad ::j unit Componente s de Utilidad::easymock
Test unitarios: junit 4.10, easymock 3.1
Compo nente s de Utili dad::log4j loggin: log4j 1.2.15, slf4j 1.6.4 Compo nente s de Utili dad:: commons-dbcp Compo nente s de Utilidad::sqlj dbc4 Componente s de Utili dad:: hibernate-entitymanager
Acceso a datos: driver sql server, pool dbcp 1.4, hibernate 3.5.6
Componente s de Utili dad:: slf4j -log4j 12 Compo nente s de Utili dad:: spring-beans Compo nente s de Utilidad::spring-orm Compo nente s de Utili dad:: spring-security-crypto
• adoc-database: Contiene las entidades JPA asociadas a las tablas de la base de datos de @Doc, así como un conjunto de clases DAO con métodos que facilitan la explotación de la base de datos.
8 de 14
3.3 Componentes de Integración con Servicios
Externos
cmp Componentes de Integración de Serv icios Externos
Spring 3.0.6 Apache CXF 2.5.2 Compo nente s de Utili dad:: cxf-frontend-j axw s Componente s de Utili dad:: cxf-transports-http Componente s de Utili dad:: cxf-w s-security Comp onen tes
de Utilidad:: spring-core
Comp onen tes de Utilidad:: spring-test Componente s de Utili dad:: spring-security-core Componente s de Utilidad::afirma @firma 3.3 Librerías del cliente
de @firma «jar» adoc-commons-afirma Compo nente s de Utilidad::j unit Compo nente s de Utilidad::easymock
Test unitarios: junit 4.10, easymock 3.1
Componentes de Utilidad: :adoc-common s-util Compo nente s de Utili dad::log4j loggin: log4j 1.2.15, slf4j 1.6.4 Compo nente s de Utili dad:: commons-dbcp Compo nente s de Utilidad::sqlj dbc4 Compo nente s de Utili dad:: hibernate-entitymanager
Acceso a datos: driver sql server, pool dbcp 1.4, hibernate 3.5.6
«jar» adoc-commons-dir Compo nente s de Utilidad::sl f4j -log4j 12 «jar» adoc-commons-dirsync Compo nente s de Utilidad::quartz
Lanzamiento programado de tareas: quartz 1.6.3
«jar» adoc-commons-regelec «jar» adoc-commons-sia «jar» adoc-commons-portafirmas
• adoc-commons-afirma (jar): métodos de firma digital, gestión de claves, validación de firmas y obtención de información de certificados
• adoc-commons-dir (jar): métodos para la explotación la base de datos con las oficinas y organismos obtenidas desde el DIR
• adoc-commons-dirsync (jar): sincronización de la base de datos de organismos y oficinas con el DIR.
• adoc-commons-regelec (jar): conexión al registro electrónico del MPR (REGELEC) • adoc-commons-sia (jar): métodos para la verificación de códigos de clasificación mediante
la consulta a los servicios web del SIA
• adoc-commons-portafirmas (jar): métodos para la comunicación con los servicios web de Portafirmas.NET
cmp Componentes de Conv ersión OpenOffice 3.4 Componente s de Utilida d::j urt Comp onentes de Utilidad::j uh Comp onentes de Utilid ad::ridl
Comp onen tes de Utilidad::
unoil Compo nente s de
Utili dad:: j od-conv erter-core
Conversión de formatos: jodconverter 3.0, itext 5.1.3
Compo nente s de Utilidad::itextpdf Componente s de Utili dad::j ai Spring 3.0.6 Apache CXF 2.5.2 Compo nente s de Utili dad:: cxf-frontend-j axw s Compo nente s de Utili dad:: cxf-transports-http Compo nente s de Utili dad:: cxf-w s-security Componentes de Utilidad:: spring-core
Comp onen tes de Utilidad:: spring-test Compo nente s de Utili dad:: spring-security-core Compo nente s de Utilidad ::j unit Compo nente s de Utilidad::easymock
T est unitarios: junit 4.10, easymock 3.1
Compo nente s de Utili dad::log4j loggin: log4j 1.2.15, slf4j 1.6.4 Componente s de Utilidad::sl f4j -log4j 12 «war»
conv erter-w ebserv ices
«jar»
adoc-commons-conv ert
Stubs de acceso a los servicios Web de conversión
Servicios Web de conversión
• adoc-commons-convert (jar): Contiene los stubs java para el acceso a los servicios Web de conversión de formatos
10 de 14
3.5 Componentes de factura electrónica
class Componentes de Factura Electrónica
«jar» adoc-commons-facturae Compo nente s de Utili dad::log4j Componente s de Utilidad ::j unit Componente s de Utilidad::easymock Compo nente s de Utili dad:: spring-beans Compo nente s de Utilidad::spring-orm Compo nente s de Utili dad:: spring-context-support Compo nente s de Utili dad:: spring-security-crypto «jar» Compo nente s de Acceso a Datos:: adoc-database «jar» Compo nente s de Inte grac ión Serv icios Externos:
: adoc-commons-afirma Compo nente s de Utili dad:: adoc-comm ons-util Compo nente s de Utili dad:: av alon-fram ew ork-impl Componente s de Utili dad:: av alon-fra mew ork-api
Compo nente s de Utili dad:: xmlgraphics-commons Compo nente s de Utilidad::itextpdf Compo nente s de Utili dad:: commons-io
• adoc-commons-facturae: métodos para generación de copias auténticas y validación de facturas electrónicas.
cmp Componentes de Serv icios de Plataforma Spring 3.0.6 Apache CXF 2.5.2 Componente s de Utili dad:: cxf-frontend-j axw s Componente s de Utili dad:: cxf-transports-http Componente s de Utili dad:: cxf-w s-security Componentes de Utilidad:: spring-core Componentes de Utilidad:: spring-test Componente s de Utili dad:: spring-security-core Componente s de Utilidad::j unit Compo nente s de Utilidad::easymock
Test unitarios: junit 4.10, easymock 3.1
Componente s de Utili dad::log4j loggin: log4j 1.2.15, slf4j 1.6.4 Componente s de Utilidad::sl f4j -log4j 12 «war»
adoc-w ebserv ices
«jar»
Componentes d e Integración Serv icios Externos::adoc-commons-afirma
«jar»
Componentes d e Integración Serv icios Externos::adoc-commons-dir
«jar»
Componentes d e Integración Serv icios Externos::adoc-commons-dirsync
«jar»
Componentes d e Integración Serv icios Externos::adoc-commons-regelec
«jar»
Componentes d e Integración Serv icios Externos::ado c-commons-sia
«jar»
Componente s de Serv icios de Conv ersión::adoc -commons-conv ert
«jar»
Componentes de Ges tión Documental:: adoc-dms-interface
«jar»
Componentes de Ges tión Documental:: adoc-dfs-dms-prov ider
«jar»
Componentes de Acceso a Datos:: adoc-database Componentes de Utilidad::
adoc-comm ons-util
«jar»
Componentes de Ges tión Documental:: adoc-documentum-deployer
«jar»
Componentes de Fac tura Electrónica:: adoc-commons-facturae
• adoc-webservices (war): Aplicación de servicios Web de la Plataforma @Doc. Publica descriptores wsdl para servicios de Expediente Electrónico, Registro Electrónico y Administración. Para más información consultar el Manual de Integración con los Servicios Web de la Plataforma @Doc.
12 de 14
3.7 Componentes de Utilidad
cmp Utilidades @Docadoc-comm ons-util
j unit log 4j commons-io dom 4j
• adoc-commons-util (jar): componente de utilidades desarrollado en el ámbito del proyecto @Doc para manipulación de cadenas Xml y utilidades I/O
3.8 Componentes de tests unitarios de Plataforma
cmp Componentes de tests unitarios
«jar»
adoc-unit-tests adoc-w ebserv ices«jar»
Contiene los stubs para el acceso a los servicios web desplegados con adoc-webservices.war Spring 3.0.6 Apache CXF 2.5.2 Componente s de Utili dad:: cxf-frontend-j axw s Compo nente s de Utili dad:: cxf-transports-http Compo nente s de Utili dad:: cxf-w s-security Componentes de Utilidad:: spring-core Componentes de Utilidad:: spring-test Componente s de Utili dad:: spring-security-core Componente s de Utilidad::j unit Compo nente s de Utilidad::easymock
Test unitarios: junit 4.10, easymock 3.1
Componente s de Utili dad::log4j
loggin: log4j 1.2.15, slf4j 1.6.4
Compo nente s de Utilidad::sl f4j -log4j 12
• adoc-webservices (jar): Contiene los stubs para el acceso a los servicios Web de la Plataforma
• adoc-unit-test (jar): Contiene una extensa batería de tests unitarios para chequear el estado de la Plataforma.