MINISTERIO DE LA PRESIDENCIA SUBSECRETARÍA SUBDIRECCIÓN GENERAL DE TECNOLOGÍAS Y SERVICIOS DE LA INFORMACIÓN ARQUITECTURA Arquitectura software de la plataforma de Expediente Electrónico Expediente Electrónico MPR -Subsecretaría Control de versiones Versión Fecha Descripción / Comentarios 1.0 07/08/2012 Versión inicial 1.1 06/11/2014 Inclusión de componentes electrónica y portafirmas Arquitectura Software de factura Expediente Electrónico MPR -Subsecretaría Índice 1 Introducción........................................................................................................................................ 2 2 Descripción General de la arquitectura .............................................................................................. 2 3 2.1 Visión general............................................................................................................................. 2 2.2 Diagrama .................................................................................................................................... 2 2.3 Explicación de los elementos ......................................................................................................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 3.8 Componentes de tests unitarios de Plataforma ....................................................................... 12 1 de 14 Expediente Electrónico MPR -Subsecretaría 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.2Diagrama 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 de 14 Expediente Electrónico MPR -Subsecretaría 2.3Explicació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. 3 de 14 Expediente Electrónico MPR -Subsecretaría 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. 4 de 14 Expediente Electrónico MPR -Subsecretaría 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 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 + cxf-frontend-jaxws + cxf-transports-http + cxf-ws-security + dctm-commons + dom4j Componentes de Serv icios de Plataforma + adoc-webservices + easymock + fop + hibernate-entitymanager + itextpdf + jai + jod-converter-core + juh Componentes de Serv icios de Conv ersión + adoc-commons-convert + converter-webservices + junit + jurt + log4j Componentes de Gestión Documental + MITyCLibAPI + MITyCLibOCSP + MITyCLibPolicy + MITyCLibTrust + adoc-dfs-dms-provider + adoc-dms-interface + adoc-documentum-deployer + MITyCLibTSA + MITyCLibXADES + quartz + ridl Componentes de Fa ctura Electrónica + adoc-commons-facturae + slf4j-log4j12 + spring-beans + spring-context-support + spring-core + spring-orm + spring-security-core Componentes de Acceso a Datos + adoc-database + spring-security-crypto + spring-test + sqljdbc4 + tika-core + tika-parsers + unoil + xmlgraphics-commons Componentes de tests unitarios + adoc-unit-tests + adoc-webservices 5 de 14 Expediente Electrónico MPR -Subsecretaría 3.1Componentes de Gestión Documental cmp Componentes de Gestión Documental Test unitarios: junit 4.10, easymock 3.1 Componente s de Utilidad::j unit Componente s de Utilidad::easymock «jar» adoc-documentum-deployer Despliegue dinámico de tipos en Documentum loggin: log4j 1.2.15, slf4j 1.6.4 Componente s de Utili dad::log4j Componente s de Utilidad::sl f4j -log4j 12 «jar» adoc-dms-interface «jar» adoc-dfs-dms-prov ider 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. 6 de 14 Expediente Electrónico MPR -Subsecretaría 3.2Componentes de Acceso a Datos cmp Componentes de Acceso a Datos Spring 3.0.6 Componentes de Utilidad:: spring-test Componente s de Utili dad:: spring-security-core Componente s de Utili dad:: spring-security-crypto Componente s de Utili dad:: spring-beans Componente s de Utilidad::spring-orm Test unitarios: junit 4.10, easymock 3.1 «jar» adoc-database Componente s de Utilidad::j unit Componente s de Utilidad::easymock loggin: log4j 1.2.15, slf4j 1.6.4 Componente s de Utili dad::log4j Componente s de Utili dad:: slf4j -log4j 12 Acceso a datos: driver sql server, pool dbcp 1.4, hibernate 3.5.6 Componente s de Utilidad::sqlj dbc4 • Componente s de Utili dad:: commons-dbcp Componente s de Utili dad:: hibernate-entitymanager 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. 7 de 14 Expediente Electrónico MPR -Subsecretaría 3.3Componentes de Integración con Servicios Externos cmp Componentes de Integración de Serv icios Externos Spring 3.0.6 Comp onen tes de Utilidad:: spring-core Comp onen tes de Utilidad:: spring-test «jar» adoc-commons-afirma Componente s de Utili dad:: spring-security-core «jar» adoc-commons-dir Apache CXF 2.5.2 Componente s de Utili dad:: cxf-w s-security Componente s de Utili dad:: cxf-transports-http Compo nente s de Utili dad:: cxf-frontend-j axw s @firma 3.3 Librerías del cliente de @firma «jar» adoc-commons-dirsync Componente s de Utilidad::afirma «jar» adoc-commons-regelec Test unitarios: junit 4.10, easymock 3.1 Compo nente s de Utilidad::j unit Compo nente s de Utilidad::easymock «jar» adoc-commons-sia loggin: log4j 1.2.15, slf4j 1.6.4 Compo nente s de Utili dad::log4j Compo nente s de Utilidad::sl f4j -log4j 12 «jar» adoc-commons-portafirmas Acceso a datos: driver sql server, pool dbcp 1.4, hibernate 3.5.6 Compo nente s de Utilidad::sqlj dbc4 Compo nente s de Utili dad:: commons-dbcp Compo nente s de Utili dad:: hibernate-entitymanager Lanzamiento programado de tareas: quartz 1.6.3 Compo nente s de Utilidad::quartz Componentes de Utilidad: :adoc-common s-util • 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 8 de 14 Expediente Electrónico MPR -Subsecretaría 3.4Componentes de Servicios de Conversión cmp Componentes de Conv ersión Spring 3.0.6 Componentes de Utilidad:: spring-core Componentes de Utilidad:: spring-test «jar» adoc-commons-conv ert Stubs de acceso a los servicios Web de conversión Componente s de Utili dad:: spring-security-core Apache CXF 2.5.2 Componente s de Utili dad:: cxf-w s-security Componente s de Utili dad:: cxf-transports-http Componente s de Utili dad:: cxf-frontend-j axw s Test unitarios: junit 4.10, easymock 3.1 Componente s de Utilidad::j unit Componente s de Utilidad::easymock «war» conv erter-w ebserv ices Servicios Web de conversión loggin: log4j 1.2.15, slf4j 1.6.4 Componente s de Utili dad::log4j Componente s de Utilidad::sl f4j -log4j 12 Conversión de formatos: jodconverter 3.0, itext 5.1.3 Componente s de Utili dad:: j od-conv erter-core Componente s de Utili dad::j ai Componente s de Utilidad::itextpdf OpenOffice 3.4 Componentes Componentes Componentes de Utilidad::j uh de Utilidad::ridl de Utilidad:: unoil Componente s de Utilida d::j urt • adoc-commons-convert (jar): Contiene los stubs java para el acceso a los servicios Web de conversión de formatos • converter-webservices (war): Aplicación de servicios Web de conversión de formatos. 9 de 14 Expediente Electrónico MPR -Subsecretaría 3.5 Componentes de factura electrónica class Componentes de Factura Electrónica Componente s de Utilidad::j unit Componente s de Utili dad::log4j Componente s de Utilidad::easymock Componente s de Utili dad:: commons-io Componente s de Utili dad:: spring-beans Componente s de Utilidad::itextpdf «jar» adoc-commons-facturae Componente s de Utilidad::spring-orm Componente s de Utili dad:: xmlgraphics-commons Componente s de Utili dad:: spring-context-support Componente s de Utili dad:: adoc-comm ons-util Componente s de Utili dad:: spring-security-crypto «jar» Componente s de Acceso a Datos:: adoc-database • «jar» Componente s de Inte grac ión Serv icios Externos: : adoc-commons-afirma Componente s de Utili dad:: av alon-fram ew ork-impl Componente s de Utili dad:: av alon-fra mew ork-api adoc-commons-facturae: métodos para generación de copias auténticas y validación de facturas electrónicas. 10 de 14 Expediente Electrónico MPR -Subsecretaría 3.6Componentes de Servicios de Plataforma cmp Componentes de Serv icios de Plataforma Spring 3.0.6 Componentes de Utilidad:: spring-core Componentes de Utilidad:: spring-test Componente s de Utili dad:: spring-security-core «jar» Componentes d e Integración Serv icios Externos::adoc-commons-afirma Apache CXF 2.5.2 «jar» Componentes d e Integración Serv icios Externos::adoc-commons-dir Componente s de Utili dad:: cxf-w s-security Componente s de Utili dad:: cxf-transports-http Componente s de Utili dad:: cxf-frontend-j axw s «war» adoc-w ebserv ices «jar» Componentes d e Integración Serv icios Externos::adoc-commons-dirsync Test unitarios: junit 4.10, easymock 3.1 Componente s de Utilidad::j unit Compo nente s de Utilidad::easymock loggin: log4j 1.2.15, slf4j 1.6.4 Componente s de Utili dad::log4j «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 Componente s de Utilidad::sl f4j -log4j 12 «jar» Componente s de Serv icios de Conv ersión::adoc -commons-conv ert Componentes de Utilidad:: adoc-comm ons-util «jar» Componentes de Ges tión Documental:: adoc-dfs-dms-prov ider «jar» Componentes de Ges tión Documental:: adoc-dms-interface «jar» Componentes de Ges tión Documental:: adoc-documentum-deployer «jar» Componentes de Acceso a Datos:: adoc-database «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. 11 de 14 Expediente Electrónico MPR -Subsecretaría 3.7Componentes de Utilidad cmp Utilidades @Doc adoc-comm ons-util j unit • log4j 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.8Componentes de tests unitarios de Plataforma cmp Componentes de tests unitarios Spring 3.0.6 Componentes de Utilidad:: spring-core Componentes de Utilidad:: spring-test Componente s de Utili dad:: spring-security-core Apache CXF 2.5.2 Componente s de Utili dad:: cxf-w s-security Componente s de Utili dad:: cxf-transports-http Componente s de Utili dad:: cxf-frontend-j axw s Test unitarios: junit 4.10, easymock 3.1 Componente s de Utilidad::j unit «jar» adoc-unit-tests «jar» adoc-w ebserv ices Componente s de Utilidad::easymock Contiene los stubs para el acceso a los servicios web desplegados con adoc-webservices.war loggin: log4j 1.2.15, slf4j 1.6.4 Componente s de Utili dad::log4j Componente 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. 12 de 14