sistema de plugins del expressov3. ¡no espere, haga!

55
Líder en soluciones de IT para el gobierno de Brasil Orador: Flávio Gomes da Silva Lisboa Coordenación Estratégica de Acciones Governamentales (CEAGO) Sistema de Plugins del ExpressoV3 ¡No espere, haga!

Upload: flavio-lisboa

Post on 26-May-2015

137 views

Category:

Technology


1 download

DESCRIPTION

En 2014 una de las grandes noticias de ExpressoV3 es la disponibilidad de un sistema de plugins que permite añadir características en diversas partes de la aplicación. El objetivo de esta conferencia es mostrar a los desarrolladores lo que puede ser acoplado y donde esto se hace esto en la aplicación. También hacemos una aclaración y una orientación importante acerca de uso de la arquitectura de software para la reconciliación de los intereses comunes y privados, pensamiento que guió la arquitectura del sistema de plugins. Hechamos con la perspectiva de trabajo y posibilidades de más puntos de plugins.

TRANSCRIPT

Page 1: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Líder en soluciones de IT para el gobierno de Brasil

Orador: Flávio Gomes da Silva LisboaCoordenación Estratégica de Acciones Governamentales (CEAGO)

Sistema de Plugins del

ExpressoV3 ¡No espere, haga!

Page 2: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Sus preguntas pueden ser dirigidas a los siguientes canales de comunicación :

e-mail [email protected] diáspora https://diasporabr.com.br/u/cislgovbrtwitter @CISLGovBRfacebook https://www.facebook.com/cislgovbr.

Puede ver otras conferencias técnicas en nuestro canal youtube https://www.youtube.com/user/CISLGov.

Preguntas

Page 3: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Empresa pública del Ministério de Finanzas de Brasil.

Serpro trabaja com la prestación de servicios en tecnologias de la información para el sector público. La compañía desarrolla soluciones que, además de contribuir a la modernización y eficiencia de la administración pública, busca desarrollar la relación entre los ciudadanos y el gobierno brasileño.

SERPRO

Page 4: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

SERPRO

Presencia Nacional

11 RegionalesBrasília, Belém, Fortaleza, Recife, Salvador, Belo Horizonte, Rio de Janeiro, São Paulo, Curitiba, Florianópolis y Porto Alegre

17 Escritorios

Page 5: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Numeros de SERPRO

● 3 Data Centers: São Paulo, Rio de Janeiro y Brasília

● 2 Servicios - Mainframe (29.095 MIPS)

● Más de 2.500 servidores de plataforma baja (Risc, Cisc e Epic) entre máquinas físicas y virtuales

● 6 automated tape libraries con una capacidad de 2 petabytes de almacenamiento

● 1.353 petabytes de almacenamiento (discos) con 945TB en São Paulo, 51TB en Rio de Janeiro e 357TB en Brasília

● 12 millones de transacciones en-línea procesadas por año

● Múltiple Base de Datos (Adabas, DB2, Oracle, SQL Server, MySQL, PostgreSQL, Lotus Notes, BRSearch, MS Access Sybase, INFORMIX, ZopePlone)

● 64.407 Microcomputadoras

Heinz Doofenshmirtz, by Disney

Page 6: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Líneas de negocio de SERPRO

Desarollo de Sistemas y AplicacionesRede de Comunicación

Administración de correo electrónico

Page 7: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Desarollo de ExpressoV3 en SERPRO

Page 8: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Equipo de Adecuación de Proyecto ExpressoV3

Orador

Page 9: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

ExpressoV3 es un software de comunicación y colaboración íntegralmente desarollado en software libre. Su objetivo principal es proporcionar una herramienta económicamente viable que permite a las empresas, dentro y fuera de Brasil tener dominio y autosuficiencia en su mantenimiento.

ExpressoV3

Page 10: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

ExpressoV3 se basa en la versión Kristina de Tine 2.0, un groupware y CRM libre creado en Alemania.

ExpressoV3

Page 11: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

ExpressoV3 es un software mantenido com una amplia experiencia en la construcción y mantenimiento de las herramientas de trabajo en grupo.

Comunidad

http://comunidadeexpresso.serpro.gov.br

Page 12: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Las comunidades ExpressoV3 y Tine 2.0 colaboram entre si, compartiendo un código base común a través de presentaciones mutuas de cambios.

Colaboración y Integración

ExpressoV3 Tine 2.0

Admin

Addressbook

Calendar

Tasks

Tinebase

Setup

Expressomail

Messenger

Webconference

CoursesCrmFelamimailFilemanagerHumanResourcesInventoryPhoneProjectsRequestTrackerSalesTimetrackerVoipmanager

Page 13: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

En un proyecto de software mantenido en comunidad, siempre hay un conflicto entre los intereses generales y los intereses privados.

Los intereses generales son funciones de software que todo el mundo va a usar y para que la discusión se limita a la forma en que se llevarán a cabo.

Los intereses privados son características utilizadas por sólo un grupo o un miembro de la comunidad que son importantes para ellos, pero no son relevantes para los otros.

Conflicto de intereses

Page 14: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Un software que debe satisfacer una variedad de necesidades de los usuarios debe centrarse en los intereses generales de estas personas.

Software en comunidad

Software en comunidad = Intereses generales

Page 15: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

“El destino de uno es compartido por todos”El Amo de los Calabozos

Software en comunidad

Dungeons & Dragons, 24th episode. Copyright CBS.

Page 16: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

La unidad de un proyecto de software en comunidad depende del mantenimiento de los intereses de sus miembros.

Unidad de software

Intereses privados

Intereses privados

Intereses privados

Intereses privados

Intereses generales

Page 17: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Si los intereses particulares no se tratan, ellos dan lugar a softwares derivados, los forks.

Sectarismo

Fork

Fork

Fork

Fork

Software original

Page 18: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Para permitir que intereses privados se cumplen sin dejar que el software existe como una implementación del interés general, es necesario que cada miembro del grupo es capaz de añadir lo que quiere o cambiar el comportamiento de una funcionalidad de acuerdo com su específica necesidad.

Así, software en comunidad debe ser extensible y configurable.

Mantenimiento de unidad

Page 19: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Configurable

Page 20: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Por herencia do Tine 2.0, ExpressoV3 nació extensible por módulos.

Extensibilidad

Módulo Módulo

MóduloMódulo

Tine 2.0

Page 21: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Tine 2.0 tiene una arquitectura modular, que permite añadir funcionalidades a través de módulos que implementan el patrón de diseño MVC extendido.

Modularidad

Tine 2.0

Admin Addressbook Calendar Courses

Addressbook

Phone

Felamimail Filemanager

Projects RequestTracker

HumanResources

Inventory

Sales

Crm

Phone

Setup

Tasks Timetracker RequestTracker Voipmanager New Module

Page 22: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Todos los módulos siguen el mismo patrón de aplicación, lo que incluye apoyo a traducción y ajuste de preferencias.

Patrón de módulos

Page 23: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Utilizando esta arquitectura, ExpressoV3 lanzó módulos Expressomail, Messenger y Webconference.

Módulos de ExpressoV3

ExpressoV3

Admin Addressbook Calendar

Messenger Setup

Expressomail

Tasks Webconference

Page 24: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Qué módulos hacen

Módulos agregan funcionalidades.Módulos pueden consumir servicios de otros módulos.

Qué módulos no hacen

Módulos no cambian funcionalidades existentes en otros módulos.

Límites de los módulos

Page 25: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Ampliación de la diversidad de intereses

Comunidad ExpressoV3 se está expandiendo!

Page 26: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Los intereses ya son diferentes!

Page 27: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

¿Cómo conciliar tantos intereses diferentes?

Page 28: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Qué plugins hacen

Plugins agregan funcionalidades.Plugins pueden consumir servicios de cualquier módulo.Plugins pueden cambiar funcionalidades existentes en otros módulos.

Plugins son inyecciones de dependencias.

¡No extienda, haz un plugin!

Page 29: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

ExpressoV3 apoya firma digital

La implementación de firma digital creada por Serpro se hizo de acuerdo a las especificaciones de ICP-Brasil (Infraestructura de Clave Pública de Brasil).

Esta implementación es de interés para las organizaciones en Brasil, pero no encajan en otros países.

Estudio de caso: la firma digital

Page 30: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Se implementó una rutina para control de firma en módulo Tinebase.

Estudio de caso: la firma digital

Tinebase

Frontend_Json

public function verifyCertificate($_data)

Page 31: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Esta rutina es llamada por una clase que hereda de la capa de frontend.

Estudio de caso: la firma digital

Tinebase

Frontend_Json

public function verifyCertificate($_data)

Módulo

Classe herdeira

Page 32: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

La llamada al método se realiza mediante solicitud del cliente según el protocolo JSON-RPC 2.0.

Estudio de caso: la firma digital

Cliente ExpressoV3Tinebase.verifyCertificate

Page 33: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Esta rutina estaba utilizando clases que también se agregaron a módulo Tinebase.

Estudio de caso: la firma digital

Tinebase

Auth_ModSsql_Certificate_Factory

Auth_ModSsl_Certificate_ICPBrasil

Auth_ModSsl_Certificate_X509

Auth_ModSsql_Exception_Openssl_NotLoaded

Auth_ModSsl_UsernameCallback_Abstract

Auth_ModSsl_UsernameCallback_Interface

Model_DigitalCertificateValidation Auth_ModSsl_UsernameCallback_Serpro

Page 34: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

El problema es que el módulo Tinebase es el módulo de que dependen todos los demás.

Tinebase: la dependencia

ExpressoV3

Admin Addressbook Calendar

Messenger Setup

Expressomail

Tasks Webconference

Tinebase

Page 35: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Tinebase es también el extensióne de las dependencias de ExpressoV3.

Tinebase: la extensión

ExpressoV3

Tinebase

Syncroton

Page 36: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Tinebase debe ser genérico para todos los módulos, ya que contiene los intereses generales de los módulos.

Tinebase: el interés general

Módulo Módulo

MóduloMódulo

Tinebase

Page 37: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Tinebase

Por lo tanto debemos evitar el cambio de Tinebase, a menos que el cambio es genérico.

Tinebase: el intocable

Page 38: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

La verificación de firma digital según la norma ICP-Brasil es un interés general en Brasil. Así ella no puede permanecer dentro de un módulo específico, pero en el módulo que proporciona las características esenciales.

Sin embargo, teniendo en cuenta la comunidad internacional, esta implementación es específica.

Tinebase: el conflicto

Page 39: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

La implementación de la verificación de firmas digitales según norma ICP-Brasil debe ser desacoplada del módulo Tinebase.

Tinebase: resultado

Pepper Potts & Tony Stark. Copyright Marvel.

Page 40: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

¿Pero, cómo mantener la respuesta a la solicitud?

Tinebase: el inevitable

Cliente ExpressoV3Tinebase.verifyCertificate

Page 41: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Yo dependo de una funcionalidad, pero no puedo conectá-la a mi software, porque no todo el mundo va a hacer uso de ella porque no es genérica.

Tengo que hacer una llamada a un método que no puede ser definido estáticamente.

En otras palabras, tengo que hacer una llamada a algo que sólo debe estar disponible cuando lo necesito.

Problema arquitectónico

Page 42: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

¿Magia?

Aladdin is part of oriental culture although Disney has made an animation aboit him

Page 43: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

La respuesta fue la creación de una arquitectura de plugin que permite la inyección de dependencias.

Tinebase: la solución

Page 44: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Una clase madre hace tres capas pluggable.

Tinebase_Pluggable

Frontend_Abstract Controller_Abstract Backend_Abstract

Pluggable_Abstract

Page 45: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

En en script, init_plugins.php, se centra las inyecciones de dependencias.

La inyección de dependencias

Page 46: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Creando un plugin

Para crear un plugin usted debe:

Crear una clase en una biblioteca que sigue el estándar de Zend Framework 1, dentro de la carpeta library.

Registrar el plugin en la capa que debe recibir la funcionalidad, añadiendo una línea como la siguiente:

Tinebase_Frontend_Abstract::attachPlugin('nombreDeMétodo', 'NomeDeClase');Tinebase_Controller_Abstract::attachPlugin('nombreDeMétodo', 'NomeDeClase');Tinebase_Backend_Abstract::attachPlugin('nombreDeMétodo', 'NomeDeClase');

Page 47: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Plugin de capa

Un plugin es una clase cuyo método se invoca indirectamente por un objecto de una de las capas de frontend, controller y backend.

Usted puede crear y añadir tantos plugins según sea necesario utilizando el método addPlugin() de la clase abstracta de la capa.

Todos sus herederos tienen acceso a métodos de plugins.

Page 48: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Así, la implementación de firma digital ha sido movida a una biblioteca.

Dependencias se encuentran en la carpeta library

Serpro

Auth_ModSsql_Certificate_Factory

Auth_ModSsl_Certificate_ICPBrasil

Auth_ModSsl_Certificate_X509

Auth_ModSsql_Exception_Openssl_NotLoaded

Auth_ModSsl_UsernameCallback_Abstract

Auth_ModSsl_UsernameCallback_Interface

Model_DigitalCertificateValidation Auth_ModSsl_UsernameCallback_Cpf

Page 49: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Plugins son clases que forman parte de las bibliotecas que son dependencias de la aplicación.

Si desea agregar una funcionalidad específica a una capa, crea su propia biblioteca y dentro de ella crea sus plugins.

Dependencias se encuentran en la carpeta library

Page 50: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Es posible inyectar otras dependencias en archivo, init_plugins.php, distintas de las que afectan las capas.

Usted puede cambiar la regla de validación de la dirección IP y estrategia de almacenamiento de AccessLog.

Esto es para hacer ExpressoV3 configurable.

¡Y no sólo eso!

Page 51: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

En las próximas versiones de ExpressoV3, estarán disponibles plugins para:

●Inicio de la aplicación●Sistema de usuarios y grupos●Filtros de consultas

¡Más plugins están llegando!

Page 52: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Si necesita algún tipo de personalización, no espere que sus necesidades se conviertan en intereses genéricos.

¡ESCRIBA SU PLUGIN Y USE!

¡Escriba tuyo!

Page 53: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

¿Tienes ideas para más puntos de plugins?

Visite el Foro del ExpressoV3 y exponga sus propuestas.

http://comunidadeexpresso.serpro.gov.br

Page 54: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Gracias

[email protected]

Page 55: Sistema de Plugins del ExpressoV3. ¡No espere, haga!

Serviço Federal de Processamento de Dados - SerproEdifício Sede: SGAN 601 - Módulo V - CEP 70836-900

Fone: (61) 2021-8000 - Brasília DF

www.serpro.gov.br