artigo guaraná ees09

14
Uma abordagem da DSL Guaraná Marco Aurélio da Rocha Leite Instituto de Informática – Universidade Federal do Rio Grande do Sul (UFRGS) Caixa Postal 15.064 – 91.501-970 – Porto Alegre – RS – Brazil [email protected] Abstract. If a company has multiple independent systems that perform the various tasks and must be integrated in an easy and dynamic it is best to use the Guaraná DSL because the software is a domain language for designing EAI systems. This language was designed with the goal of providing support for integration solutions with a high level of abstraction without worrying about technical details of the deployments. Resumo. Se uma empresa possui vários sistemas independentes que executam as mais variadas tarefas e devem se integrar de uma maneira fácil e dinâmica o melhor é utilizar o Guaraná DSL, pois o software é uma linguagem de domínio para projetar sistemas EAI. Essa linguagem foi projetada com o objetivo de fornecer suporte a soluções de integração com um alto nível de abstração sem se preocupar com detalhes técnicos das implantações. 1. Introdução É um framework web leve para PHP (Hypertext Preprocessor) 4 e 5 ou Java (linguagem de programação), com um sistema veloz de modelos, visualizações e controladores em que você pode escrever a sua aplicação web de uma maneira fácil e rápida. Ela é expansível através de bibliotecas, e as já existentes bibliotecas do PHP já são integradas ao Guaraná DSL (Domain-Specific Language), além disso, ele tem dois editores gráficos: Eclipse e o Visual Studio. O Guaraná DSL fornece um metamodelo a onde suporta uma serie de conceitos aonde os programadores podem usar para elaborar as suas soluções EAI (Enterprise Application Integration), devem ter soluções especificas para problemas específicos de integração. Esses modelos são gráficos e permitem ter soluções EAI com um nível elevado de abstração. O software

Upload: marco-leite

Post on 30-Nov-2015

45 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Artigo Guaraná EES09

Uma abordagem da DSL Guaraná

Marco Aurélio da Rocha Leite

Instituto de Informática – Universidade Federal do Rio Grande do Sul (UFRGS)Caixa Postal 15.064 – 91.501-970 – Porto Alegre – RS – Brazil

[email protected]

Abstract. If a company has multiple independent systems that perform the various tasks and must be integrated in an easy and dynamic it is best to use the Guaraná DSL because the software is a domain language for designing EAI systems. This language was designed with the goal of providing support for integration solutions with a high level of abstraction without worrying about technical details of the deployments.

Resumo. Se uma empresa possui vários sistemas independentes que executam as mais variadas tarefas e devem se integrar de uma maneira fácil e dinâmica o melhor é utilizar o Guaraná DSL, pois o software é uma linguagem de domínio para projetar sistemas EAI. Essa linguagem foi projetada com o objetivo de fornecer suporte a soluções de integração com um alto nível de abstração sem se preocupar com detalhes técnicos das implantações.

1. Introdução

É um framework web leve para PHP (Hypertext Preprocessor) 4 e 5 ou Java ( linguagem de programação), com um sistema veloz de modelos, visualizações e controladores em que você pode escrever a sua aplicação web de uma maneira fácil e rápida. Ela é expansível através de bibliotecas, e as já existentes bibliotecas do PHP já são integradas ao Guaraná DSL (Domain-Specific Language), além disso, ele tem dois editores gráficos: Eclipse e o Visual Studio. O Guaraná DSL fornece um metamodelo a onde suporta uma serie de conceitos aonde os programadores podem usar para elaborar as suas soluções EAI (Enterprise Application Integration), devem ter soluções especificas para problemas específicos de integração. Esses modelos são gráficos e permitem ter soluções EAI com um nível elevado de abstração. O software também fornece um conjunto APIs (Application Programming Interfaces) aonde um programador pode usar para traduzir seus modelos para o código Java. Os modelos resultantes obtidas com Guaraná DSL são independentes de plataforma, os programadores não precisam ter habilidade em uma tecnologia de integração de baixo nível quanto for projetar as suas aplicações, e os projetos podem ser reutilizados. O Software Guaraná é dividido em duas partes: o Guaraná DSL e o Guaraná SDK (Software Development Kit), sendo o SDK é dividido em duas partes: Framework e Toolkit.

Page 2: Artigo Guaraná EES09

2. Guaraná Software Development Kit (SDK)

Guaraná SDK é uma ferramenta de software Java que permite implementar e executar soluções de integração de projetos com Guaraná DSL. A arquitetura do Guaraná SDK está organizada em duas camadas. A primeira camada, referida como a estrutura, fornece um resumo de toda a implementação básica dos conceitos de DSL. A segunda camada, conhecida como toolkit, fornece uma concreta implementação da estrutura, bem como, um sistema de runtime baseado em tarefas.

Guaraná SDK é um kit de ferramentas de desenvolvimento de software que dá suporte para implementar soluções de integração concebido com Guaraná DSL. Guaraná DSL é uma linguagem específica de domínio (DSL) para projetar EAI, em soluções com um alto nível de abstração. A implementação desta linguagem Java é fornecido pelo Guaraná SDK, onde é organizada em duas camadas. A primeira camada, referida como a estrutura, fornece uma implementação abstrata de todos os conceitos básicos da DSL. A segunda camada, conhecido como toolkit, fornece uma implementação concreta do quadro, bem como, um sistema de runtime baseado em tarefas que podem ser usados para executar as soluções. Os modelos resultantes projetados com Guaraná DSL são independentes de plataforma, os engenheiros não precisam ter habilidades em uma tecnologia de integração de baixo nível ao projetar suas soluções. Além disso, este projeto pode ser reutilizado para gerar automaticamente as soluções de EAI executáveis para diferentes tecnologias alvo.

Um vislumbre da Integração Stack com os níveis de abstração para uma solução de integração.

Funcionalidade e estrutura de uma solução de EAI são completamente definidas usando o processo de linguagem, portas, tarefas, decorador, faixas e laços de integração. As tarefas do guaraná são baseadas nos Enterprise Integration Patterns (Padrões EIP) por Gregor Hohpe e Bobby Woolf.

É possível projetar a estrutura interna de todos os tipos de processo (embalagens e processos de integração) e suas portas de comunicação (EntryPort, ExitPort, SolicitorPort e ResponderPort) usando tarefas, mas também é possível, para criar fluxos de integração que permitem aos aplicativos colaborarem entre si, ligando estes processos por meio de ligações de integração. Os aplicativos ao participarem da solução de integração são documentados usando decoradores, bem como suas camadas sendo usado como interface de comunicação.

A arquitetura desta ferramenta está organizada em duas camadas, a saber: framework e toolkit.

Page 3: Artigo Guaraná EES09

2.1. Diagrama Guaraná SDK

Figure 1. Diagrama SDK

Page 4: Artigo Guaraná EES09

2.2. O Framework

A primeira camada, referida como a estrutura, fornece uma implementação ou resumo de todos os conceitos básicos da DSL.

2.2.1. Messages

As mensagens são usadas para encapsular os dados que são manipulados de uma solução de EAI.

2.2.2. Tasks

O pacote de tarefa fornece as bases para implementar tarefas específicas de domínio no toolkit.

2.2.3. Ports

Portas reduzem a distância a partir do mecanismo de comunicação utilizado para interagir com o ambiente.

2.2.4. Process

Os processos são as unidades de processamento central, numa solução de integração. Eles são compostos de portas e tarefas, estendem as classes e implementam a interface ItaskContainer.

2.2.5. Adapters

Este pacote fornece as bases para implementar adaptadores no toolkits.

2.3. O Tookit

A segunda camada, conhecido como toolkit, fornece uma implementação concreta do programa, bem como, um sistema de runtime baseado em tarefas.

A estrutura oferece dois pontos de extensão, a saber:

Tarefas e adaptador.

Criou-se uma ferramenta central que fornece extensões para lidar com uma variedade de tarefas suportadas pela maioria dos padrões de integração, e fornecem adaptadores ativos e passivos que permitem o uso de diversos protocolos de comunicação de baixo nível.

Page 5: Artigo Guaraná EES09

2.3.1 Router

Um roteador é uma tarefa que não altera as mensagens processadas, mas encaminha-as através de um processo. Isso inclui a filtragem de mensagens que não satisfazem a condição ou a replicação de uma mensagem, a mencionar algumas tarefas nesta categoria.

2.3.2 Modifer

Um modificador é uma tarefa que adiciona dados de uma mensagem ou remove os dados a partir dele, enquanto este não resultar em uma mensagem com um esquema diferente. Isto inclui enriquecendo uma mensagem com a informação contextual ou promoção de alguns dados para os seus cabeçalhos, para mencionar alguns exemplos nesta categoria.

2.3.3 Transformer

Um transformador é uma tarefa que traduz um ou mais mensagens em uma nova mensagem com um diferente esquema. Exemplos dessas tarefas incluem a divisão de uma mensagem em vários queridos ou agregá-los de volta.

2.3.4 Timer

Um temporizador é uma tarefa que executa uma vez relacionada ação, por exemplo, atrasando uma mensagem ou produzindo uma mensagem a intervalos regulares.

2.3.5 StreamDealer

Um tráfego de fluxo é uma tarefa que lida com um fluxo de bytes e ajuda zip / unzip, criptografar / descriptografar, ou codificar / decodificar isso.

2.3.6 Mapper

Um mapper é uma tarefa que muda a representação das mensagens processadas por ele, por exemplo, a partir de um fluxo de bytes em um documento XML.

2.3.7 Communicator

Um comunicador é uma tarefa que encapsula um adaptador.

Comunicadores servem a dois propósitos:

Primeiro, eles permitem que os adaptadores possam ser exportados para um registro, para que possa ser acessado remotamente, em segundo lugar, um comunicador pode ser configurado para pesquisar periodicamente por um processo ou aplicação usando um adaptador. Um adaptador ativo permite consultar periodicamente o processo de aplicação com o qualquer interface, um adaptador passivo exporta uma interface para um registro, para que outros aplicativos ou processos possam interagir com ele.

Note-se que as portas de entrada e saída pode ser implementadas usando adaptadores ativos ou passivos.

Page 6: Artigo Guaraná EES09

O pacote ativa é dividido em dois pacotes para fornecer implementações que são baseados em JBI (Java Business Integration) e RMI (Remote Method Invocation) protocolos respectivamente. Note-se que apoiar adaptadores JBI permite plugue Guaraná SDK em uma variedade de ESB (Enterprise Service Bus), por exemplo, nossa implementação de referência está pronto para ser conectado ao abrir o ESB. Isto, por sua vez, permite que processos do Guaraná SDK para ter acesso a uma variedade de aplicações no atual ecossistema (programas principais da empresa) de software, incluindo arquivos, bancos de dados, serviços web, feeds RSS, sistemas de mensagens SMTP, filas JMS, DCOM servidores, e assim por diante. O pacote RMI fornece várias implementações que se destina a ser usada para interagir com um Servidor RMI-compliant.

2.4. O Runtime

O runtime fornece uma implementação para o sistema de execução baseado em tarefas em que Guaraná SDK depende.

3. Benefícios

O Guarana DSL utiliza um protocolo de meta-objeto (MOP) em tempo de execução permitindo a composição dinamica de meta-objetos, a qual possibilita uma maneira mais simples de composição desses objetos, tornando a reconfiguração dinamica. O código integrado é muito flexivel ele também faz uso das mais recentes modificações e também faz calculos pessados de pre-renderização muito rapido com chamadas inteligentes.

Essa ferramenta tem os seguintes beneficios:

- Integração

Liga as usas aplicações a fim de alcançar uma maior interoperabilidade e um melhor desempenho de seus sistemas.

- Redução de custos

Reduz os custos de integração, fazendo a automatização dos processos, paga-se somente o que for utilizado.

- Nuvem

Migram suas aplicações locais para uma nuvem sem medo, facil acesso.

- Produtividade

Obtens maior eficiencia com a integração de software de maneira progressiva e expansivel, com isso se ganha com mais integração e produtividade.

- Redução de tempo

Há na pratica uma redução em 70% no tempo de projeto.

- Flexibilidade

Ele faz com que se adapte a solução de integração com o negocio e não o contrario isso aperfeiçoa o ambiemte de programação a empresa.

Page 7: Artigo Guaraná EES09

4. O que pode melhorar

Por enquanto o Guaraná DSL este somente portado para JVM.

A um queixa também da pouca documentação dos softwares e poucos exemplos.

É mais adequado para a modelagem de sistemas distribuídos, pois apresenta elementos próprios de modelagem das suas soluções de integração.

Ainda não é possível a geração automática de código diretamente da modelagem.

5. Diagrama da DSL Guaraná

Figure 2. Diagrama Guaraná DSL

6. Componentes da DSL Guaraná

É o termo utilizado para descrever o elemento do software que encapsula uma série de funcionalidades. Este processo de comunicação entre componentes é denominado composição. Um objeto não implementa uma interface, um objeto é a instância de uma classe que implementa uma interface.

Os componentes básicos são: portas de comunicação, processos, slots e tasks.

6.1. Portas de Comunicação

Abstrai-se a distância a partir do mecanismo de comunicação de um aplicativo necessária para comunicar com outro aplicativo em outro lugar. Na versão atual da linguagem, há quatro tipos de portas suportadas:

Page 8: Artigo Guaraná EES09

Tipo de Porta Descrição

Porta de entrada Permite um processo receber informações de um aplicativo.

Porta de Saida Permite um processo enviar informações para um aplicativo.

Porta de Solicitação Usada para solicitar informações a partir de um aplicativo.

Porta de Respota Usada para responder a mensagens de solicitação recebidas das aplicações.

6.2. Processos

Dependem de tarefas para realizar suas atividades de orquestração. Simplificando, um processo pode ser visto como um processador de mensagens.

6.3. Tasks

São blocos de construção que permitem a execução de uma ação atômica em mensagens que fluem internamente num processo.

6.4. Slots

São usados para conectar e dessincronizar a comunicação entre duas tarefas ou uma tarefa e uma porta.

7. Guaraná uma implementação na área de call center de um Banco

O exemplo utilizado será a modelagem do sistema de telefonia do call center da minha empresa utilizando o exemplo da implantação na UNIJUÍ (A Universidade Regional do Noroeste do Estado do Rio Grande do Sul), citado nas refecias abaixo.

A solução de integração possui os seguintes requisitos:

_ Todas as chamadas ficam registradas no sistema de call center.

_ Usuários informam os problemas e esses são repassados para a Central de problemas caso o call center não consiga resolver.

_ A central de problemas envia via SMS ou E-mail para os plantões, quando for fora do horário comercial.

O modelo proposto é desenhado na Figura 4. O wrapper ligado ao sistema de telefonia possui um timer que requisita as informações das ligações de tempos em tempos. Esses dados são recebidos por um splitter que recebe os dados de um grupo de ligações numa única mensagem e a divide, de forma que cada mensagem contenha apenas dados de uma ligação.

Page 9: Artigo Guaraná EES09

O wrapper de recursos humanos tem como objetivo consultar a base de dados do sistema de RH para adquirir o e-mail e telefone celular do funcionário responsável pelo Home Office. Ele possui uma customTask que transforma a mensagem numa consulta ao banco de dados.

O wrapper da central de problemas verifica se é horário comercial, quando for envia um sms e um e-mail para o pessoal responsável do Home Office. O translator traduz a mensagem para o formato específico do banco de dados e guarda-a. O wrapper do sistema de SMS se conecta à aplicação de envio de SMS para guardar essa informação e enviar para o funcionário. Possui primeiramente um filter que remove mensagens que não possuem e-mail, depois são removidos dados desnecessários da mensagem pelo slimmer e, por fim, a mensagem é traduzida no formato do SMS pelo translator e guardada. O wrapper do sistema de envio de e-mail recebe uma mensagem, e processa e a envia para o sistema que manda e-mails para o usuário do Home Office.

Nesse wrapper, primeiramente a mensagem passa por um filtro, que remove as mensagens que não possui e-mail no corpo. Depois a mensagem é traduzida para o formato de e-mail por um translator.

Logo após a mensagem vai para um replicator que manda a mensagem replica a mensagem recebida para o wrapper de recursos humanos e para um correlator. O correlator relaciona a mensagem sobre a ligação e a mensagem do sistema de recursos humanos que contém informações do funcionário que realizou a ligação e para quem ele despachou a mensagem.

O ContentEnricher recebe as duas mensagens e a transforma em somente uma mensagem. Essa mensagem é replicada por um replicator que a envia para os wrappers necessários.

8. Diagrama EAI

Figure 4. Diagrama da implementação acima.

Page 10: Artigo Guaraná EES09

9. Conclusão

As empresas estão cada vez mais contando com ESBs para implementar soluções de EAI. Eles fornecem um número de componentes de ligação para que programadores possam usar para se conectar a quase todas as aplicações existentes com uma linguagem para projetar processos de orquestração. Esse tipo de linguagem mais comum é BPEL, mas, infelizmente, é de baixo nível, uma vez que ele não suporta diretamente muitos padrões de integração do mercado existente. Isto tem motivado muitos programadores a trabalharem em ferramentas específicas de domínio para dotar ESBs com o nível de abstração apropriado para soluções modelo de EAI. O Guaraná DSL, que é uma proposta que visa a aumentar o nível de abstração de ESBs, em uma tentativa de torná-lo mais fácil para os programadores implementarem suas soluções de EAI. Ele fornece suporte explícito para soluções EAI usando padrões de integração das empresa por meio de modelos gráficos, e permite que os programadores de software criem soluções de EAI em um alto nível de abstração; não só proporciona a DSL a vista de um processo, mas também uma vista de todo o conjunto de processos dos quais as soluções de EAI são compostas, tanto a nível de processos e tarefas que podem ter múltiplas entradas e múltiplas saídas e, finalmente, o seu sistema de tempo de execução fornece um modelo de execução baseada em tarefas que normalmente é mais eficiente do que o baseado em processos. Ele fornece metodologias e ferramentas para projetar e implementar soluções de EAI. Embora seja possível a utilização de ferramentas atuais para projetar e implementar soluções de EAI, ainda é necessário proporcionar ferramentas específicas do domínio de uma DSL que são fáceis de manter, a fim de personalizá-los para um determinado contexto. Neste trabalho, temos relatado medidas que podem ser utilizadas como um indicador sobre como é caro a manutenção da ferramenta de software para isso. Por isso o Guaraná esta se destacando como ferramenta de EAI por ser fácil, robusto e barato.

10. Referencias

Franz, R. Research Report – Un Lenguaje Específico de Dominio para el Diseño deSoluciones de Integración. Sept 2008Frantz, R, Jimenez, C.M., Corchuelo, R.. A Domain Specific Language for Enterprise

Application Integration Solutions with Exception Handling.Frantz, R, Jimenez, C.M., Corchuelo, R.. Towards a Fault-Tolerant Architecture forEnterprise Application Integration SolutionsFrantz, R., Corchuelo, R., Gonzalez, J.. Advances in a DSL for Application IntegrationA Proposal to Detect Errors in Enterprise Application Integration Solutions. Disponível em http://www.guarana-project.net/rzfrantz/publications/jss-2012.pdf. Acessado em 02/08/2013.