Líder em soluções de TI para governo
Palestrante: Flávio Gomes da Silva Lisboa
Coordenação Estratégica de Ações Governamen...
Para encaminhar perguntas durante a palestra, enviem
para:
e-mail cisl@serpro.gov.br
diáspora https://diasporabr.com.br/u/...
Empresa pública vinculada ao
Ministério da Fazenda.
O negócio do Serpro é a prestação de
serviços em Tecnologia da
Informa...
O SERPRO
Presença Nacional
11 Regionais
Brasília, Belém, Fortaleza, Recife,
Salvador, Belo Horizonte, Rio de
Janeiro, São ...
Números do SERPRO
● 3 Data Centers: SPO, BSB e RJO
● 2 Serviços - Mainframe (29.095 MIPS)
● Mais de 2.500 servidores de
pl...
Linhas de negócio do SERPRO
Desenvolvimento de Sistemas e Aplicações
Rede de Comunicação
Administração de correio eletrôni...
Desenvolvimento do ExpressoV3 no SERPRO
Equipe de Adequação do Projeto ExpressoV3
Palestrante
O ExpressoV3 é um software de comunicação e
colaboração inteiramente desenvolvido em software
livre.
Seu principal objetiv...
O ExpressoV3 é baseado na versão Kristina do Tine
2.0, um groupware e CRM livre criado na Alemanha.
ExpressoV3
O ExpressoV3 é um software mantido por
uma comunidade com grande experiência
na construção e manutenção de
ferramentas de ...
As comunidades ExpressoV3 e Tine 2.0 colaboram entre
si, compartilhando um núcleo de código comum por meio
de submissões m...
Em um projeto de software mantido em comunidade,
sempre existe o conflito entre os interesses gerais e os
interesses parti...
Um software que deve atender uma diversidade de
usuários precisa se focar nos interesses gerais dessas
pessoas.
Software e...
“O destino de um é compartilhado por todos”
Mestre dos Magos
Software em comunidade
Dungeons & Dragons, 24th episode. Copy...
A unidade de um projeto de software em comunidade
depende da manutenção dos interesses de seus
membros.
Unidade do softwar...
Se os interesses particulares não forem tratados, eles
darão origem a softwares derivado, os forks.
Sectarismo
Fork
Fork
F...
Para permitir que os interesses particulares sejam
atendidos sem deixar que o software exista como uma
implementação dos i...
Configurável
Por herança do Tine 2.0, o ExpressoV3 nasceu
extensível por módulos.
Extensibilidade
Módulo Módulo
Módulo
Módulo
Tine 2.0
Tine 2.0 tem uma arquitetura modular, que permite
adicionar funcionalidades por meio de módulos que
implementam o padrão d...
Todos os módulos seguem o mesmo padrão de
implementação, que inclui suporte a tradução e
configuração de preferências.
Pad...
Usando essa arquitetura, o ExpressoV3 disponibilizou os
módulos Expressomail, Messenger e Webconference.
Módulos do Expres...
O que os módulos fazem
Módulos adicionam funcionalidades.
Módulos podem consumir serviços de outros módulos.
Os que os mód...
Ampliação da diversidade de interesses
Comunidade
ExpressoV3 está se
expandindo!
Os interesses já são diversos!
Como conciliar tantos interesses diversos?
O que plugins fazem
Plugins adicionam funcionalidades.
Plugins podem consumir serviços de qualquer módulo.
Plugins podem a...
O ExpressoV3 suporta certificado digital
A implementação de certificado digital criada pelo Serpro
foi feita de acordo com...
Foi implementada uma rotina de verificação de
certificado no módulo Tinebase.
Estudo de caso: certificação digital
Tinebas...
Essa rotina é chamada por uma classe herdeira da
camada de frontend do Tinebase.
Estudo de caso: certificação digital
Tine...
A chamada ao método é feita pelo cliente, por requisição
JSON-RPC 2.0.
Estudo de caso: certificação digital
Cliente Expres...
Essa rotina fazia uso de classes que também foram
adicionadas ao módulo Tinebase.
Estudo de caso: certificação digital
Tin...
O problema é que o Tinebase é o módulo do qual todos
os outros dependem.
Tinebase: a dependência
ExpressoV3
Admin Addressb...
Tinebase também é a extensão das dependências do
ExpressoV3.
Tinebase: a extensão
ExpressoV3
Tinebase
Syncroton
Tinebase deve ser genérico para todos os módulos, pois
ele contém os interesses gerais dos módulos.
Tinebase: o interesse ...
Tinebase
Por isso devemos evitar alterar o Tinebase, a menos que
a mudança seja genérica.
Tinebase: o intocável
A verificação de certificado digital pelo padrão ICP-Brasil
é um interesse geral no Brasil. Por isso ela não pode
ficar de...
A implementação de verificação de certificado digital
pelo padrão ICP-Brasil deve ser desacoplada do
módulo Tinebase.
Tine...
Mas como manter a resposta para a requisição?
Tinebase: o inevitável
Cliente ExpressoV3
Tinebase.verifyCertificate
Eu dependo de uma funcionalidade, mas não posso
acoplá-la ao meu software, pois nem todos irão fazer
uso dela, pois não é ...
Mágica?
Aladdin is part of oriental culture although Disney has made an animation aboit him
A resposta foi criar uma arquitetura de plugins que
permitisse a injeção de dependências.
Tinebase: a solução
Uma classe mãe torna três camadas plugáveis.
Tinebase_Pluggable
Frontend_Abstract Controller_Abstract Backend_Abstract
Plu...
Um script, init_plugins.php concentra as injeções de
dependências.
Injetando dependências
Criando um plugin
Para criar um plugin você deve:
Criar uma classe em uma biblioteca que siga o padrão
Zend Framework 1, d...
Plugin de camada
Um plugin é uma classe cujo método é invocado de forma
indireta por um objeto das camadas de frontend, co...
Assim, a implementação de certificado digital foi movida
para uma biblioteca.
Dependências ficam na pasta library
Serpro
A...
Plugins são classes que fazem
parte de bibliotecas, que são
dependências da aplicação.
Se você quer adicionar uma
funciona...
É possível injetar outras dependências em,
init_plugins.php além das que afetam as camadas.
É possível alterar a regra de ...
Nos próximos releases do ExpressoV3, serão
disponibilizados plugins para:
●Inicialização da aplicação
●Sistema de usuários...
Se precisar de alguma customização, não espere que
sua necessidade se torne genérica.
ESCREVA O SEU PLUGIN E USE!
Escreva ...
Tem ideias para mais pontos de plugins?
Acesse o Fórum do ExpressoV3 e exponha suas
propostas no tópico Desenvolvimento, s...
Obrigado
flavio.lisboa@serpro.gov.br
Serviço Federal de Processamento de Dados - Serpro
Edifício Sede: SGAN 601 - Módulo V - CEP 70836-900
Fone: (61) 2021-8000...
Sistema de Plugins do ExpressoV3. Não espere, faça o seu!
Próximos SlideShares
Carregando em…5
×

Sistema de Plugins do ExpressoV3. Não espere, faça o seu!

724 visualizações

Publicada em

Em 2014 uma das grandes novidades do ExpressoV3 é a disponibilização de um sistema de plugins que permite acoplar funcionalidades em diversos pontos da aplicação. O objetivo da palestra é mostrar para desenvolvedores o que pode ser acoplado e onde isso é feito na aplicação. Será feito também , como introdução, um importante esclarecimento e orientação sobre uso de arquitetura de software para conciliação de interesses comuns e particulares, pensamento que orientou e originou o sistema de plugins. Concluiremos com a perspectiva de trabalhos futuros e as possibilidades da arquitetura de plugins.

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
724
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
3
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Sistema de Plugins do ExpressoV3. Não espere, faça o seu!

  1. 1. Líder em soluções de TI para governo Palestrante: Flávio Gomes da Silva Lisboa Coordenação Estratégica de Ações Governamentais (CEAGO) Sistema de Plugins do ExpressoV3 Não espere, faça o seu!
  2. 2. Para encaminhar perguntas durante a palestra, enviem para: e-mail cisl@serpro.gov.br diáspora https://diasporabr.com.br/u/cislgovbr twitter @CISLGovBR facebook https://www.facebook.com/cislgovbr. Reveja as palestras técnicas editadas no nosso canal do youtube https://www.youtube.com/user/CISLGov. Perguntas
  3. 3. Empresa pública vinculada ao Ministério da Fazenda. O negócio do Serpro é a prestação de serviços em Tecnologia da Informação para o setor público. A empresa desenvolve soluções que, além de contribuírem para a modernização e eficácia da administração pública, buscam estreitar a relação entre cidadãos e Governo. O SERPRO
  4. 4. O SERPRO Presença Nacional 11 Regionais Brasília, Belém, Fortaleza, Recife, Salvador, Belo Horizonte, Rio de Janeiro, São Paulo, Curitiba, Florianópolis e Porto Alegre 17 Escritórios
  5. 5. Números do SERPRO ● 3 Data Centers: SPO, BSB e RJO ● 2 Serviços - Mainframe (29.095 MIPS) ● Mais de 2.500 servidores de plataforma baixa (Risc, Cisc e Epic) entre máquinas físicas e virtuais ● 6 Fitotecas automatizadas com capacidade de 2 petabytes de armazenamento ● 1.353 petabytes de armazenamento (discos) sendo 945TB em SPO, 51TB no RJO e 357TB em BSB ● 12 bilhões de transações on-line processadas por ano ● Múltiplos Bancos de Dados (Adabas, DB2, Oracle, SQL Server, MySQL, PostgreSQL, Lotus Notes, BRSearch, MS Access Sybase, INFORMIX, ZopePlone) ● 64.407 Microcomputadores Heinz Doofenshmirtz, by Disney
  6. 6. Linhas de negócio do SERPRO Desenvolvimento de Sistemas e Aplicações Rede de Comunicação Administração de correio eletrônico
  7. 7. Desenvolvimento do ExpressoV3 no SERPRO
  8. 8. Equipe de Adequação do Projeto ExpressoV3 Palestrante
  9. 9. O ExpressoV3 é um software de comunicação e colaboração inteiramente desenvolvido em software livre. Seu principal objetivo é fornecer uma ferramenta economicamente viável que permita que corporações, dentro e fora do Brasil tenham domínio e autossuficiência em sua manutenção. ExpressoV3
  10. 10. O ExpressoV3 é baseado na versão Kristina do Tine 2.0, um groupware e CRM livre criado na Alemanha. ExpressoV3
  11. 11. O ExpressoV3 é um software mantido por uma comunidade com grande experiência na construção e manutenção de ferramentas de groupware. Comunidade http://comunidadeexpresso.serpro.gov.br
  12. 12. As comunidades ExpressoV3 e Tine 2.0 colaboram entre si, compartilhando um núcleo de código comum por meio de submissões mútuas de mudanças. Colaboração e Integração ExpressoV3 Tine 2.0 Admin Addressbook Calendar Tasks Tinebase Setup Expressomail Messenger Webconference Courses Crm Felamimail Filemanager HumanResources Inventory Phone Projects RequestTracker Sales Timetracker Voipmanager
  13. 13. Em um projeto de software mantido em comunidade, sempre existe o conflito entre os interesses gerais e os interesses particulares. Os interesses gerais são as funcionalidades do software que todos irão utilizar e para as quais a discussão limita-se a como serão implementadas. Os interesses particulares são funcionalidades usadas por somente um grupo ou um membro da comunidade que são importantes para eles, mas não são relevantes para os demais. Conflito de interesses
  14. 14. Um software que deve atender uma diversidade de usuários precisa se focar nos interesses gerais dessas pessoas. Software em comunidade Software em comunidade = Interesses gerais
  15. 15. “O destino de um é compartilhado por todos” Mestre dos Magos Software em comunidade Dungeons & Dragons, 24th episode. Copyright CBS.
  16. 16. A unidade de um projeto de software em comunidade depende da manutenção dos interesses de seus membros. Unidade do software Interesses particulares Interesses particulares Interesses particulares Interesses particulares Interesses gerais
  17. 17. Se os interesses particulares não forem tratados, eles darão origem a softwares derivado, os forks. Sectarismo Fork Fork Fork Fork Software original
  18. 18. Para permitir que os interesses particulares sejam atendidos sem deixar que o software exista como uma implementação dos interesses gerais, é necessário que cada membro ou grupo seja capaz de adicionar o que deseja ou alterar o comportamento das funcionalidades de acordo com sua necessidade específica. O software em comunidade deve, portanto, ser extensível e configurável. Manutenção da unidade
  19. 19. Configurável
  20. 20. Por herança do Tine 2.0, o ExpressoV3 nasceu extensível por módulos. Extensibilidade Módulo Módulo Módulo Módulo Tine 2.0
  21. 21. Tine 2.0 tem uma arquitetura modular, que permite adicionar funcionalidades por meio de módulos que implementam o padrão de projeto MVC estendido. Modularidade Tine 2.0 Admin Addressbook Calendar Courses Addressbook Phone Felamimail Filemanager Projects RequestTracker Human Resources Inventory Sales Crm Phone Setup Tasks Timetracker RequestTracker Voipmanager New Module
  22. 22. Todos os módulos seguem o mesmo padrão de implementação, que inclui suporte a tradução e configuração de preferências. Padrão de módulos
  23. 23. Usando essa arquitetura, o ExpressoV3 disponibilizou os módulos Expressomail, Messenger e Webconference. Módulos do ExpressoV3 ExpressoV3 Admin Addressbook Calendar Messenger Setup Expressomail Tasks Webconference
  24. 24. O que os módulos fazem Módulos adicionam funcionalidades. Módulos podem consumir serviços de outros módulos. Os que os módulos não fazem Módulos não alteram funcionalidades existentes em outros módulos. Limites dos módulos
  25. 25. Ampliação da diversidade de interesses Comunidade ExpressoV3 está se expandindo!
  26. 26. Os interesses já são diversos!
  27. 27. Como conciliar tantos interesses diversos?
  28. 28. O que plugins fazem Plugins adicionam funcionalidades. Plugins podem consumir serviços de qualquer módulo. Plugins podem alterar funcionalidades existentes em outros módulos. Plugins são injeções de dependências. Não estenda, plugue!
  29. 29. O ExpressoV3 suporta certificado digital A implementação de certificado digital criada pelo Serpro foi feita de acordo com as especificações da ICP-Brasil (Infraestrutura de Chaves Públicas Brasileira). Essa implementação é de interesse de organizações do Brasil, mas não serve para outros países. Estudo de caso: certificação digital
  30. 30. Foi implementada uma rotina de verificação de certificado no módulo Tinebase. Estudo de caso: certificação digital Tinebase Frontend_Json public function verifyCertificate($_data)
  31. 31. Essa rotina é chamada por uma classe herdeira da camada de frontend do Tinebase. Estudo de caso: certificação digital Tinebase Frontend_Json public function verifyCertificate($_data) Módulo Classe herdeira
  32. 32. A chamada ao método é feita pelo cliente, por requisição JSON-RPC 2.0. Estudo de caso: certificação digital Cliente ExpressoV3 Tinebase.verifyCertificate
  33. 33. Essa rotina fazia uso de classes que também foram adicionadas ao módulo Tinebase. Estudo de caso: certificação 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
  34. 34. O problema é que o Tinebase é o módulo do qual todos os outros dependem. Tinebase: a dependência ExpressoV3 Admin Addressbook Calendar Messenger Setup Expressomail Tasks Webconference Tinebase
  35. 35. Tinebase também é a extensão das dependências do ExpressoV3. Tinebase: a extensão ExpressoV3 Tinebase Syncroton
  36. 36. Tinebase deve ser genérico para todos os módulos, pois ele contém os interesses gerais dos módulos. Tinebase: o interesse geral Módulo Módulo Módulo Módulo Tinebase
  37. 37. Tinebase Por isso devemos evitar alterar o Tinebase, a menos que a mudança seja genérica. Tinebase: o intocável
  38. 38. A verificação de certificado digital pelo padrão ICP-Brasil é um interesse geral no Brasil. Por isso ela não pode ficar dentro um módulo específico, mas no módulo que provê as funcionalidades essenciais. No entanto, considerando a comunidade internacional, essa implementação é específica. Tinebase: o conflito
  39. 39. A implementação de verificação de certificado digital pelo padrão ICP-Brasil deve ser desacoplada do módulo Tinebase. Tinebase: a conclusão Pepper Potts & Tony Stark. Copyright Marvel.
  40. 40. Mas como manter a resposta para a requisição? Tinebase: o inevitável Cliente ExpressoV3 Tinebase.verifyCertificate
  41. 41. Eu dependo de uma funcionalidade, mas não posso acoplá-la ao meu software, pois nem todos irão fazer uso dela, pois não é genérica. Eu preciso fazer uma chamada a um método que não pode estar estaticamente definido. Ou seja, eu preciso fazer uma chamada a algo que deve estar disponível somente quando eu precisar. Problema arquitetural
  42. 42. Mágica? Aladdin is part of oriental culture although Disney has made an animation aboit him
  43. 43. A resposta foi criar uma arquitetura de plugins que permitisse a injeção de dependências. Tinebase: a solução
  44. 44. Uma classe mãe torna três camadas plugáveis. Tinebase_Pluggable Frontend_Abstract Controller_Abstract Backend_Abstract Pluggable_Abstract
  45. 45. Um script, init_plugins.php concentra as injeções de dependências. Injetando dependências
  46. 46. Criando um plugin Para criar um plugin você deve: Criar uma classe em uma biblioteca que siga o padrão Zend Framework 1, dentro da pasta library. Registrar o plugin na camada que deve receber a funcionalidade, acrescentando uma linha como uma das seguintes: Tinebase_Frontend_Abstract::attachPlugin('nomeDoMétodo', 'NomeDaClasse'); Tinebase_Controller_Abstract::attachPlugin('nomeDoMétodo', 'NomeDaClasse'); Tinebase_Backend_Abstract::attachPlugin('nomeDoMétodo', 'NomeDaClasse');
  47. 47. Plugin de camada Um plugin é uma classe cujo método é invocado de forma indireta por um objeto das camadas de frontend, controller e backend. Você pode criar e adicionar quantos plugins forem necessários usando o método addPlugin() da classe abstrata da camada. Todas as suas herdeiras terão acesso aos métodos de plugins.
  48. 48. Assim, a implementação de certificado digital foi movida para uma biblioteca. Dependências ficam na pasta 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
  49. 49. Plugins são classes que fazem parte de bibliotecas, que são dependências da aplicação. Se você quer adicionar uma funcionalidade específica a uma camada, crie sua própria biblioteca e dentro dela crie seus plugins. Dependências ficam na pasta library
  50. 50. É possível injetar outras dependências em, init_plugins.php além das que afetam as camadas. É possível alterar a regra de validação de endereçamento IP e a estratégia de armazenamento do AccessLog. Isso é tornar o ExpressoV3 configurável. E não é só isso!
  51. 51. Nos próximos releases do ExpressoV3, serão disponibilizados plugins para: ●Inicialização da aplicação ●Sistema de usuários e grupos ●Filtros de consultas Mais plugins estão a caminho!
  52. 52. Se precisar de alguma customização, não espere que sua necessidade se torne genérica. ESCREVA O SEU PLUGIN E USE! Escreva o seu!
  53. 53. Tem ideias para mais pontos de plugins? Acesse o Fórum do ExpressoV3 e exponha suas propostas no tópico Desenvolvimento, subtópico Arquitetura/Frameworks. http://comunidadeexpresso.serpro.gov.br
  54. 54. Obrigado flavio.lisboa@serpro.gov.br
  55. 55. Serviço Federal de Processamento de Dados - Serpro Edifício Sede: SGAN 601 - Módulo V - CEP 70836-900 Fone: (61) 2021-8000 - Brasília DF www.serpro.gov.br

×