SlideShare uma empresa Scribd logo
1 de 20
SOA na Prática – Criando uma Aplicação BPMN com Bonita
     Open Solution, Mule ESB e Google App Engine
                                   1
                                       Michel A. Soares

1
    Universidade de Fortaleza – Desenvolvimento de Sistemas com Ênfase na Plataforma
                                            JEE

                            {michel.azevedo@gmail.com}
      Abstract. SOA and cloud computing are two close related subjects. Knowing
      how to take advantage of these paradigms might place a company ahead of its
      competitors, especially in a demanding market where a company has to adapt
      quickly to changes. This paper shows a proof of concept application that
      basead only on open source tools, highlights the benefits of SOA and cloud
      computing to SMEs. To achieve that goal, we model a BPMN 2.0 business
      process that calls cloud services (e.g., google app engine and twitter) during
      its flow through the Mule ESB, message oriented middleware.
      Resumo. Arquitetura orientada a serviços e computação nas nuvens possuem
      um estreito relacionamento. Saber como tirar proveito desses dois
      paradigmas pode representar grande vantagem competitiva em um mercado
      que demanda rápida adaptação a mudanças. Este artigo mostra uma prova de
      conceito que, baseado apenas em ferramentas open source, destaca os
      benefícios de SOA e computação em nuvens para pequenas e médias
      empresas. Para isso foi modelado um processo de negócio no padrão BPMN
      2.0 que durante sua execução chama serviços nas nuvens (ex: google app
      engine e twitter) via middleware orientado a mensagens, Mule ESB.



1. Introdução
Até poucos anos atrás, quando se falava em implantar uma arquitetura orientada a
serviços (SOA, da sigla em inglês), mencionava-se que esse tipo de abordagem era mais
adequada para empresas que possuíam grandes sistemas legados. Josuttis(2007) afirma
que SOA é um conceito para grandes sistemas distribuídos. Ele afirma que SOA é uma
técnica para a manutenção desses grandes sistemas. Dessa forma, era natural que se
associasse a implantação desse tipo de arquitetura a grandes empresas. Outros fatores
que limitavam SOA às grandes empresas eram: o custo e a complexidade dos projetos.
O custo era elevado porque apenas ferramentas de mercado com licenças bastante caras
eram capazes de oferecer as funcionalidades necessárias para um ambiente de produção
baseado em SOA. A complexidade era outro fator crítico porque a implantação de tais
soluções demandavam um grande esforço e mudanças de paradigmas nas empresas,
portanto, justificando-se apenas para grandes empresas capazes de suportar tamanha
mudança e dispostas ao investimento necessário.
      Contudo, a adoção de SOA nos últimos anos entre empresas de diferentes portes
e ramos de atividades tem aumentado. É o que comprova Heffner (2010) no estudo
realizado pelo instituto Forrester. Ele mostra que as iniciativas SOA avançaram 27%
entre grandes empresas e 45% entre médias e pequenas empresas mesmo em tempos de
crise. O estudo foi realizado em 2009, ano em que a economia global ainda se
recuperava da grande crise de 2008.
       No Brasil, em estudo realizado na Universidade de Brasília por Puttini and
Sousa (2011), pôde ser constado que 91.67% das empresas já consideram SOA
importante ou muito importante em sua estrutura de TI e 53.8% consideram que SOA
tem importância estratégica no negócio; 100% observaram, em parte ou totalmente, o
aumento do alinhamento entre TI e Negócio, e também o aumento na reutilização das
aplicações; 90% observaram alguma redução do custo de TI; 54% observaram,
totalmente ou acima do esperado, o suporte a novos serviços.
       Com o surgimento de ferramentas open source mais completas e com o advento
da computação nas nuvens (Cloud Computing), soluções SOA passaram a ser mais
acessíveis para empresas de pequeno e médio porte, além de permitir para diferentes
empresas a realização de uma prova de conceito, sem muito custo, o que permite a
avaliação da solução também com menor esforço.
       Power (2010) descreve alguns problemas que atingiam pequenas empresas antes
do surgimento da arquitetura orientada a serviços. Segundo este trabalho, essas
empresas sofreram no passado devido ao custo de integração com seus fornecedores de
grande porte, que era muitas vezes proibitivo. Com o advento de SOA, seus parceiros
estão agora aptos a expor serviços que podem ser consumidos por diversas aplicações
que são usadas hoje. Produtos como Excel e Word podem se integrar com os sistemas
de TI dos seus parceiros de uma forma antes inimaginável. Com o advento do Software
como Serviço (SaaS, da sigla em inglês) e dos serviços estabelecidos nas nuvens,
pequenas e médias empresas podem se utilizar de sistemas complexos e antes de alto
custo ao utilizar apenas uma fração deles e, consequentemente, sendo cobradas apenas
por essa utilização e não pelo custo envolvido no desenvolvimento da aplicação.
       Podemos entender que SOA não deve restringir-se apenas a grandes empresas,
embora grandes empresas com sistemas legados configurem um cenário bastante
propício para implantação desse tipo de arquitetura.
       Sezov (2011) aponta algumas vantagens dos projetos que utilizam ferramentas
open source:
   •   Não tem o problema de ter que aguardar muito tempo por correções e decisões
       sobre melhorias;
   •   Tendem a implementar o que os usuários querem o mais rápido possível;
   •   Geralmente são mais leves: não há necessidade de um servidor dedicado para
       iniciar a implantação;
   •   Elas permitem que o desenvolvimento flua mais rapidamente pelo fato de não
       ser necessário o entendimento de toda a arquitetura para ser efetivo;
   •   Não é necessário grande investimento para iniciar um projeto que utilize
       ferramentas open source. Pode-se iniciar pequeno (open source) e então
       aumentar os investimentos conforme sua aplicação cresça.
A motivação para a realização deste estudo parte do princípio de que podemos
fazer não apenas aplicações complexas, mas também aplicações mais simples. O
objetivo deste artigo é dar subsídios para o entendimento de como podemos iniciar a
implantação de um projeto SOA utilizando apenas ferramentas open source. Para isso,
será desenvolvido um estudo de caso em que será implementado um processo de
negócio utilizando o BPMS Bonita Open Solution. O processo será responsável por
coordenar chamadas a serviços disponíveis em plataformas nas nuvens, como Google
App Engine e Twitter. Esses serviços por sua vez, serão chamados por meio de um ESB
open source, o Mule ESB.
        O artigo será compreendido da seguinte forma: na seção 2 temos uma visão
geral de SOA, Computação em nuvem, ESB e BPMS, onde será mostrado como os
conceitos se relacionam. Em seguida, na seção 3, são apresentadas as ferramentas
utilizadas na implementação e dada uma breve explanação de como elas são utilizadas
no estudo de caso. Na seção 4, é apresentado o estudo de caso, em que foi escolhida
uma aplicação para ser desenvolvida utilizando as ferramentas apresentadas na seção 3.
Na seção 5, são apresentados trabalhos relacionados ao tema em estudo. Por fim, na
seção 6, são descritas a conclusão e sugestão de trabalhos futuros.

2. Visão geral sobre SOA, Computação em nuvem, ESB e BPMS

2.1 SOA
De acordo com Davis (2009), arquitetura orientada a serviços é uma estratégia de TI
que organiza as funções discretas nas aplicações empresariais em serviços
interoperáveis e baseados em padrões que podem ser combinados e reusados
rapidamente de forma a atender as necessidades de negócios.
       Outra definição mais atual pode ser a dada por OpenGroup (2011):
       Arquitetura orientada a serviços é um estilo de arquitetura que suporta
orientação a serviço. Orientação a serviço é uma forma de pensar em termos de
serviços e desenvolvimento baseado em serviços e seus resultados.
       Um serviço:

   •   É uma representação lógica de uma atividade de negócio que pode ser executada
       repetidamente e tem um resultado específico (ex., consultar crédito do cliente;
       consulta saldo em estoque);
   •   É autônomo, independente;
   •   Pode ser composto por outros serviços;
   •   É uma “caixa preta” para os seus consumidores.

        Um estilo arquitetural é uma combinação de características distintas em que a
arquitetura é executada ou expressa. O estilo da arquitetura empregada em SOA tem as
seguintes características:

   •   É baseado no design dos serviços – que espelha as atividades comerciais do
       mundo real – compreendendo os processos de negócios da empresa;
•   A representação de serviços utiliza descrições de negócios para fornecer o
       contexto (ex., processos de negócios, objetivo, regra, política) e implementa
       serviços usando orquestração;
   •   Demanda aspectos específicos de infraestrutura – recomenda-se o uso de
       padrões abertos (ex: SOAP, WSDL, REST) de modo a atingir a
       interoperabilidade.




                     Figura 1. Metamodelo SOA (Linthicum, 2009)
       O metamodelo SOA oferece uma boa maneira de ver como SOA utiliza uma
camada de processo / orquestração para mudar os processos de negócios importantes,
sem promover mudanças em todos os sistemas. Esta é uma arquitetura de baixo
acoplamento (Linthicum, 2009). Neste artigo essa camada de orquestração será
executada pelo processo desenhado no Bonita Open Solution (que será apresentado na
seção 4, com o estudo de caso), e a camada “Services” será executada pelo Mule ESB.

2.2 Cloud Computing
Uma definição de Cloud Computing (Computação nas Nuvens, em português) bastante
utilizada é a dada por Mell and Grance (2011), que dizem que Computação nas Nuvens
é um modelo que permite acesso à rede de forma ubíqua, conveniente e sob demanda a
um pool de recursos computacionais (redes, servidores virtuais ou físicos,
armazenamento, aplicações e serviços) que podem ser rapidamente provisionados.
        Cloud Computing pode ser visto como um recurso de TI, que pode ser utilizado
na implantação de uma arquitetura orientada a serviços. Recursos como
armazenamento, capacidade de processamento e softwares provendo serviços podem ser
utilizados e pagos sob demanda, além de delegar a responsabilidade de gerenciamento
desses recursos para o provedor de nuvem.
Algumas características do modelo de nuvem, segundo Mell and Grance (2011),
são:

   • Atendimento self-service e sob demanda. Um consumidor de um serviço de
     nuvem pode requisitar automaticamente (normalmente usando-se de interfaces
     de programação ou APIs) um recurso computacional (por exemplo, um servidor
     virtual ou espaço em um servidor de armazenamento em rede);
   • Elasticidade. O consumidor do serviço pode requisitar dinamicamente mais ou
     menos recursos para sua aplicação para se adaptar à demanda dos seus usuários.
     Por exemplo, em períodos de pico, o consumidor solicita à nuvem mais recursos
     computacionais (como, por exemplo, servidores adicionais), podendo, depois,
     liberar tais recursos, quando estes não forem mais necessários;
   • Pagamento pelo Uso e Garantias de Serviço (Service Level Agreements –
     SLAs). Os consumidores pagam aos provedores de serviço de nuvem de acordo
     com o consumo efetuado (modelo de pagamento pelo uso semelhante a
     utilidades como energia e gás). A nuvem possui mecanismos para permitir o
     compartilhamento dos recursos existentes de forma eficiente para os diversos
     clientes e monitorar as aplicações e os recursos de forma a respeitar as garantias
     de serviço oferecidas, como, por exemplo, disponibilidade de 99.9%;
   • Acesso ubíquo através da rede. Os recursos computacionais podem ser acessados
     através de padrões (como APIs REST baseadas em HTTP ou SOAP) por
     diversos tipos de clientes (browsers, PDAs, celulares) e seus detalhes de
     funcionamento e complexidades ficam “escondidos” pela nuvem.
Quanto ao modelo de serviço, podemos ter os seguintes tipos de nuvem:
   •   Software as a Service (SaaS): quando software é fornecido como um serviço na
       internet para vários dispositivos através de um cliente (como um browser),
       eliminando a necessidade de instalação da aplicação no computador consumidor
       do serviço (Ex: Google Docs);
   •   Platform as a Service (PaaS): quando uma infraestrutura é disponibilizada como
       serviço. Facilita a disponibilização de aplicações criadas usando as linguagens
       de programação e ferramentas suportadas pelo provedor. O consumidor não
       controla a infraestrutura da nuvem, incluindo rede, servidores, sistemas
       operacionais ou banco de dados, mas tem controle sobre as aplicações e suas
       configurações (Ex: Google App Engine);
   •   Infrastructure as a Service (IaaS): disponibiliza infraestrutura de equipamentos -
       tipicamente em ambiente virtualizado - como serviço. Essa infraestrutura pode
       incluir: processamento, sistema operacional, banco de dados, rede e firewall (Ex:
       EC2 da Amazon).

2.3 Enterprise Service Bus (ESB)
Em grandes implantações, é muito provável a necessidade de se fazer integração entre
sistemas. É também muito provável que esses sistemas não “falem” a mesma língua, ou
seja, não utilizem o mesmo protocolo para se comunicarem. Muitas vezes, não é apenas
a comunicação que é diferente; pode ocorrer que a disponibilidade de uma aplicação
seja diferente do momento em que outra necessite de uma informação. É nesse tipo de
cenário que um Enterprise Service Bus (ESB) pode ser bastante útil.
De acordo com Josuttis (2009), em SOA, o ESB faz parte da infraestrutura que
nos permite usar serviços em ambiente de produção. É de responsabilidade dele expor
serviços e deixá-los disponíveis para serem consumidos pelas aplicações clientes. Seu
principal papel é prover a interoperabilidade. Essa sua caracterização se deve pelo fato
de essa camada da arquitetura SOA servir para promover a integração de diferentes
plataformas, serviços, linguagens de programação, além da transformação e do
roteamento de dados, que são algumas de suas principais atribuições. Um ESB deve
permitir a chamada e o recebimento de mensagens de um consumidor para um provedor
de serviço e vice-versa.

2.4 Business Process Management (BPM) e Business Process Management
System (BPMS)
Business Process Management (BPM) está cada vez mais ganhando atenção em grandes
e médias empresas e é vista como uma ponte entre o setor de TI e a área de negócios.
BPM ajuda as empresas a identificarem a importância estratégica de seus processos e a
tirarem vantagens competitivas disso. Serve também para proporcionar ao gestor do
negócio uma maior facilidade de encontrar oportunidades de melhoria para o serviço
prestado ao cliente, através de indicadores de resultados. As ferramentas tecnológicas
que são utilizadas para aplicar efetivamente BPM nas empresas são chamadas de
Business Process Management Systems (ou Suites), ou apenas BMPS. Existem várias
definições para BPMS, mas uma que é bem recente e influente é a dada por Weske
(2007), que diz que um Business Process Management System é um software genérico
que é orientado por representações de processos para coordenar a execução de processos
de negócios.
        A maioria das ferramentas de BPM, atualmente, são comerciais pagas e caras.
Não é toda empresa que está disposta a realizar um grande investimento numa
ferramenta dessas. As ferramentas open source podem ajudar nesse sentido de auxiliar
no processo de entrada no universo BPM sem grandes investimentos. Até pouco tempo
atrás, não se imaginava essa possibilidade, porque existia uma grande distância entre o
que as ferramentas comerciais implementavam e o que as open source
disponibilizavam. Hoje, as soluções gratuitas já representam uma ótima opção para a
implantação da cultura BPM nas empresas, além de trazer os benefícios intrínsecos do
open source como possibilidade de obter correções mais rápidas da comunidade
mantenedora e das soluções inovadoras muitas vezes disponibilizadas.

3. Ferramentas utilizadas
3.1 Google App Engine
O Google App Engine pode ser classificado como um PaaS e com ele, segundo
Appengine (2011), é possível que aplicações sejam desenvolvidas através de um
framework que facilita a implementação de aplicações em diversas linguagens, como
Java, Phyton e Go1, e sua implantação utilizando a infraestrutura de nuvem do Google.
Além disso, a plataforma permite escalar o tráfico da aplicação de forma automática à
medida que a demanda imposta pelos usuários da aplicação aumentar ou diminuir.
1
  Go é uma linguagem de programação desenvolvida pelo Google e tem como principal objetivo
combinar a eficiência de linguagens tipadas e compiladas com as facilidades de linguagens interpretadas
(Pike, 2009).
Como é característica de uma nuvem PaaS, abstrai-se a necessidade de
manutenção de servidores e facilita-se o desenvolvimento de aplicações prontas para
executarem em um ambiente de nuvem escondendo os detalhes do programador.

3.2 Twitter
É uma ferramenta online de microblogging que permite compartilhar posts (conhecidos
como tweets) de até 140 caracteres. É definido por Twitter (2011) como uma rede em
tempo real em que é possível se conectar às mais recentes informações sobre o que se
julga interessante.

3.3 Mule ESB
De acordo com Mulesoft (2011), Mule ESB é uma plataforma de integração
desenvolvida na linguagem Java que permite aos desenvolvedores conectar aplicações
de forma rápida e fácil, fazendo com que elas possam trocar mensagens. Ele permite a
integração de sistemas independentes das diferentes tecnologias que eles utilizem,
incluindo JMS, Web Services, JDBC, HTTP, entre outros.
       A vantagem principal de um ESB é que ele permite que diferentes aplicações se
comuniquem com outras atuando como um sistema de transporte por carregarem dados
entre aplicações e das aplicações para a internet. Mule ESB possui poderosas
funcionalidades, dentre elas:

   •   Criação e hospedagem de serviços — é possível expor e hospedar serviços,
       usando Mule como um repositório;
   •   Mediação de serviços — proteger serviços de formatos e protocolos, separar a
       lógica de negócios das mensagens, e habilitar chamadas de serviços
       independente de onde eles estejam disponíveis;
   •   Roteamento de mensagens — rotear, filtrar, juntar e resequenciar mensagens,
       baseando-se no seu conteúdo e regras;
   •   Transformação de dados — troca de dados entre uma variedade de formatos e
       protocolos.




                 Figura 2. Infraestrutura do Mule ESB (Dirksen, 2008)
       Conforme indicado na Figura 2, a arquitetura do Mule ESB, segundo Dirksen
(2008), pode ser definida da seguinte forma:
   •   Component: Contém a lógica do negócio. Pode ser, por exemplo, um spring
       bean, um serviço REST, um simples POJO etc;
   •   Transport: Lida com a conectividade com a tecnologia em questão ou com a
       aplicação (ex: JMS, SAP, FTP, HTTP);
•   Transformers: Transforma os dados para o formato que o próximo componente
       está esperando receber;
   •   Inbound Routers: determina o que fazer com a mensagem recebida antes de ela
       ser enviada para um serviço;
   •   Outbound Routers: determina para onde a mensagem precisar ser enviada após
       ter sido processada por um serviço.

3.4 Bonita Open Solution
Bonita Open Solution, da empresa BonitaSoft, vem sendo chamada de a ferramenta
responsável por democratizar BPM ao disponibilizar funcionalidades antes apenas
vistas em ferramentas comerciais, tornando-a altamente competitiva nesse mercado
(Rigsby, 2011). Lançada em 2009, não demorou muito para ela se popularizar. Em
menos de dois anos, a comunidade atingiu a marca de 3.000 membros, meio milhão de
downloads e 100 clientes. Esse rápido crescimento é atribuído ao forte foco da
ferramenta em usabilidade, facilitando o manuseio por usuários não técnicos.
       Carthuatocto (2011) realizou um estudo em que compara algumas das
ferramentas BPMS open source mais populares do mercado. O estudo mostra que
Bonita Open Solution é a solução mais completa quando foram analisados os critérios:
workflow, modelador de processos, criador de formulários, monitoramento de
processos, motor de regras de negócios e conexão com ferramentas externas.
       Bonita é composta de três componentes principais:

   •   Bonita Studio: permite ao usuário graficamente alterar processos de negócios
       seguindo o padrão BPMN 2.0. O usuário pode também conectar o processo a
       outros sistemas (como, ERP, ECM, databases...) de forma a permitir a criação de
       uma aplicação autônoma e acessível como formulário web. Bonita Studio, que é
       baseado no eclipse, também permite o usuário desenhar graficamente os
       formulários que serão exibidos para o usuário final do processo permitindo a
       interação com o processo;
   •   Bonita BPM Engine: o motor de execução é próprio e disponibiliza uma API
       Java que permite a interação com os processos;
   •   Bonita User Experience: é um portal que permite cada usuário final controlar na
       forma de webmail todas as suas tarefas que lhe foram atribuídas ou que o
       envolvem de alguma forma. O portal também permite ao responsável pelo
       processo administrar e obter relatórios sobre os processos.

4. Estudo de Caso
Atualmente, é muito improvável que uma empresa, seja ela, pequena, média ou grande,
não tenha um sistema para controlar suas rotinas básicas, como compra de mercadorias
e/ou serviços, estoque, vendas, contas a pagar e a receber etc. Muitas possuem os
chamados ERPs, que são sistemas que integram todos os módulos usados pelas diversas
áreas da empresa em um único sistema.
       Não é raro encontrar casos em que é necessário se realizar uma integração, seja
pela chegada de um novo parceiro comercial, seja devido à equipe de TI ter julgado
necessária a adoção de uma nova tecnologia, por decisão estratégica da direção da
empresa ou até mesmo por uma fusão.
O caso a ser demonstrado abaixo tem como objetivo a simulação de um cenário
muito possível em empresas que estão dispostas a adotar uma solução SOA para
projetos internos. Principalmente para empresas que não se utilizam ou não têm
experiência, ele ilustra uma possível alternativa dando a direção para a criação de uma
prova de conceito com algum processo da empresa, o que permite a avaliação da
arquitetura para projetos maiores.
                      Figura 3. Arquitetura da aplicação




                                   Mule ESB




        Não é objetivo deste estudo a criação de uma aplicação complexa e nem a
criação de um tutorial de como utilizar as ferramentas utilizadas, e, sim, o de apresentar
os conceitos envolvidos e mostrar que é possível, apenas com ferramentas open source,
a criação de uma solução SOA, que pode ser aplicada na realidade de qualquer empresa,
desassociando a imagem de que SOA é apenas para grandes empresas e envolve altos
custos. Dessa forma, esse exemplo é uma aplicação simplificada, comparada a uma
aplicação que seria desenvolvida em ambiente de produção. Portanto alguns aspectos
que devem ser levados em consideração em aplicações corporativas não foram
observados, como fatores de segurança, validações das entradas de dados e tratamento
de exceções no processo (situação que será bastante comum nas aplicações dessa
natureza).
        Como pode ser observado na Figura 3, a aplicação consiste de um processo
desenhado no Bonita Open Solution (processo completo pode ser visto no Apêndice B),
processo esse que fará a orquestração de todas as etapas da aplicação. Durante o
processo, serão realizadas chamadas a serviços que estão sendo executados em
plataforma de nuvem, um deles é um serviço disponibilizado no Google App Engine, e
outro é uma conta no Twitter. As chamadas serão realizadas utilizando o intermédio do
Mule ESB.
4.1. Processo no Bonita
Nesse exemplo, foi escolhido um processo de compra para ser automatizado. O
processo envolve os seguintes atores:
   •   Cliente: usuário final que usará a interface web para solicitar a compra do
       material
•   Mule ESB: será responsável pela comunicação com a aplicação no Google App
       Engine e com a conta do gerente no twitter, durante a execução do processo;
   •   Gerente: será responsável por aprovar novos pedidos
      Inicialmente, foi desenvolvido o processo no designer do Bonita. O processo
contém as tarefas definidas a seguir.
4.2. Criar Pedido
Essa é a primeira tarefa e foi definida para ser atendida pelo “usuário iniciador”
(Initiator) do processo. Quando o processo “Pedido de compra” é executado pela
interface web do Bonita, conhecida como User XP, o formulário que foi desenhado,
como mostrado na Figura 4 e atribuído a essa tarefa, é apresentado para o usuário de
acordo com a Figura 5.




         Figura 4. Formulário desenhado no gerador de formulários do Bonita




                    Figura 5. Formulário em execução no browser
       Quando o usuário preenche as informações relativas ao seu pedido e clica no
botão “Enviar”, o processo segue, conforme foi definido no diagrama do processo, para
a próxima tarefa, “Verificar Pendência”.
4.4. Verificar Pendência
Essa é uma tarefa que, de acordo com a notação BPMN 2.0 (Silver, 2009), é chamada
de “Service Task”. Ela é assim chamada por ser uma tarefa automática, sem a
intervenção humana. Comumente, essas tarefas terão associadas a elas conectores. O
Bonita pode se comunicar com diversas plataformas e sistemas via conectores. Essa foi
um das formas que os idealizadores da ferramenta encontraram para permitir que a
comunidade contribua de forma mais ativa e direta para o desenvolvimento da
ferramenta.
       Dentro do nosso processo, a atividade “Verificar Pendência” se utiliza do Mule
ESB Conector (BonitaSoft, 2011). Ele possibilita que um processo no Bonita se
aproveite de toda a infraestrutura do Mule ESB. Dessa forma, foi criada uma aplicação
que faz a consulta ao serviço publicado no Google App Engine. Aplicações no Mule são
XMLs com as instruções de como tratar a mensagem que foi enviada para ele.
       A seguir parte do XML da aplicação que é responsável pela comunicação com o
serviço no App Engine (para ver o XML completo, ver Apêndice A)
       <http:inbound-endpoint
       address=http://localhost:8888
       exchange-pattern="request-response"/>


        <http:outbound-endpoint
address=http://aplicacao.appspot.com#[header:INBOUND:http.request]
       exchange-pattern="request-response" />

        A aplicação está publicando na máquina local em, http://localhost:8888, um
serviço que, automaticamente, redireciona a chamada para a aplicação que está
disponível no endereço http://aplicacao.appspot.com, e repassa os dados recebidos no
cabeçalho da requisição. Neste caso, foi realizado um simples redirecionamento, mas o
Mule permite o uso de transformadores de mensagens, mecanismos de decisão e
escolha, que poderiam também ser utilizados para incrementar segurança ou escolher o
serviço a ser chamado, dependendo da mensagem que chegar. Uma vantagem de se
utilizar o Mule como intermediário neste ponto, além dos citados, é que, caso a url do
serviço precise ser alterada, por exemplo, ou a aplicação seja movida para outra
plataforma de nuvens, o processo no Bonita não precisaria ser alterado, apenas a
aplicação no Mule, um simples XML, o que é bem mais simples.
        O “Verificar Pendência”, portanto, chama o serviço, que, por sua vez, executa a
regra de negócio, no caso, verificar se o usuário possui alguma pendência financeira que
o impeça de realizar novos pedidos, e retorna para o Bonita. O retorno dessa chamada é
guardado em uma variável global definida na modelagem e será usada no próximo
elemento do diagrama, que é um “Gateway de decisão Exclusivo”. Esse Gateway
verifica se o valor retornado é igual a “ok”, caso afirmativo, segue para “Avisar
Gerente”; do contrário, vai para “Avisar Solicitante de Pendência”.
Figura 6. Gateway que decide para onde seguir após consulta ao serviço no
    GAE


4.5. Avisar Solicitante de Pendência
Essa atividade existe apenas para avisar ao usuário que ele não pode realizar o pedido
pelo fato de existirem pendências financeiras. Foi criado um formulário com a
identificação do pedido e uma descrição sobre a pendência encontrada no sistema.




   Figura 7. Formulário apresentado para o cliente em caso de pendência financeira


4.6. Avisar Gerente
Essa tarefa é executada caso o solicitante não possua nenhuma pendência financeira.
Neste caso, o processo aciona o Mule via Connector, a aplicação recebe o número do
pedido e posta uma mensagem no twitter usado pelo gerente para acompanhar a
necessidade de aprovar novos pedidos.
Figura 8. Conta do gerente no Twitter, com mensagem indicando que deve ser
    aprovado pedido.
       Conforme ilustrado na Figura 9 (a aplicação foi desenvolvida no Mule Studio -
ferramenta gráfica para criação dos XMLs do Mule ESB), o Mule aguarda requisições
HTTP e encaminha para o Twitter.
       Para conseguir a comunicação, foi necessária a geração de alguns parâmetros
pelo próprio Twitter. Após isso, foram configurados no componente os dados para que o
acesso à conta fosse permitido.




      Figura 9. Fluxo da aplicação que atualiza o twitter desenhada no Mule Studio

A seguir, parte do XML que foi gerado pelo Mule Studio.

<twitter:update-status consumerKey="xx" consumerSecret="xx"
status="#[header:INBOUND:status]" doc:name="Update Status" doc:description="Update
Twitter status with message."/>
4.7. Aprovar Pedido
Após o gerente ser avisado de que existe um pedido novo para ser aprovado, ele deve
seguir para sua caixa de entrada de pendências no Bonita User XP (Figura 12), onde
poderá ser visualizada a tarefa de aprovação de pedido.




  Figura 10. Inbox do usuário com a tarefa “Aprovar Pedido” pendente de atendimento


        Ao clicar na tarefa, será aberto o formulário com os dados do pedido (Figura
11), e ele terá a oportunidade de aprovar ou não o pedido. Após a decisão do gerente, o
solicitante do pedido será notificado da decisão na próxima atividade “Notificar
Resultado”.




                        Figura 11. Tela de aprovação de pedido


4.8. Notificar Resultado
Depois que o gerente toma a decisão na tarefa “Aprovar Pedido”, a tarefa “Notificar
Resultado” se encarrega de enviar um email para o solicitante informando a decisão.
Nesse caso, foi utilizado o conector Mail Connector do Bonita Open Solution, com o
qual permite fazer a configuração dos dados da conta de email que será utilizada e o
corpo da mensagem (Figura 12). Após o envio do email, o processo é finalizado.
Figura 12. Configuração do conector para envio de email

5. Trabalhos relacionados
Wei and Blake (2010) mencionam as dificuldades encontradas pelas empresas de lidar
com as rápidas mudanças exigidas pelo mercado, pelas demandas de seus clientes e as
constantes mudanças nos processos de negócios. Eles trazem uma análise dos desafios
surgidos com o uso da computação em nuvens, a arquitetura SOA e de como as
empresas podem se beneficiar desses dois paradigmas.
       Raines (2009) destaca o grande movimento em direção à plataforma de nuvens e
a mudança nas relações entre fornecedores e clientes, com o surgimento desse novo
paradigma. Ele destaca os benefícios e os riscos que devem ser analisados pelos
gestores de TI nesse novo cenário e lembra que SOA e Cloud computing são atividades
complementares e que devem desempenhar papel de destaque no planejamento de TI.
        O estudo realizado por Allweyer (2011) mostra um cenário de colaboração entre
dois parceiros que utilizam um BPMS. Ele reforça que é cada vez mais comum a adoção
de sistemas BPMS nas empresas e que o cenário proposto é muito provável de ocorrer.
Ele utiliza o Bonita Open Solution para a criação dos diagramas utilizados nas
aplicações, além de usar também o engine de execução de processos e orquestração. No
cenário, ele utiliza um banco de dados para intermediação de mensagens entre os dois
processos. A utilização do Mule ESB para essa finalidade também é possível com a
utilização de uma fila de mensagens, conforme descreve Ricston (2010).
       Vollmer (2009) fala sobre a experiência do uso de SOA e BPM na Florida
Community College, em Jacksonville. Ele destaca o tempo de preparação que a equipe
levou antes de colocar a solução em produção e de como o parceiro ajudou para que os
objetivos fossem atingidos. Ele conclui mostrando que os planos de crescimento da
universidade para comportar mais alunos só foram possíveis devido à estratégia adotada
com a adoção do novo modelo de desenvolvimento utilizando SOA.
6. Conclusão e trabalhos futuros
Como o objetivo do artigo foi o de mostrar como seria possível o desenvolvimento de
uma aplicação SOA utilizando apenas ferramentas open source e dar subsídios para
permitir a criação de uma prova de conceito utilizando um processo de negócio da
empresa, as ferramentas foram selecionadas e utilizadas na criação de um estudo de
caso. A aplicação foi definida de forma a permitir a utilização das camadas
“orquestração” e “serviços” descritas no metamodelo SOA. A orquestração, nesse caso,
foi feita pelo processo de negócio modelado no Bonita Open Solution, e os serviços
foram disponibilizados no Mule ESB que, por sua vez, se comunicava com o Twitter e
com uma aplicação disponível na plataforma de nuvens do Google.
        A utilização do Bonita se mostrou bastante intuitiva, revelando o que já se
esperava quando da escolha da ferramenta. O uso dos conectores para integração com
serviços e aplicações externas também se mostrou bastante eficiente. A criação de
formulários também não apresentou dificuldades. O gerador só deixa a desejar na
possibilidade de se personalizar o espaçamento dos campos, mas isso pode ser
contornado com a utilização de templates, que permitem inclusive a total remodelagem
da aparência dos formulários. O fato de o designer utilizar, a notação BPMN 2.0
também ajuda bastante, uma vez que o padrão é familiar aos analistas de processos que
vão modelar o processo. É importante ressaltar a importância da escolha de qual
processo automatizar em um ambiente corporativo. A escolha de um processo não
crítico e de baixa complexidade pode fazer grande diferença nas primeiras
implementações.
       A utilização do Mule ESB intermediando as chamadas aos serviços pôde revelar
algumas vantagens: na necessidade de alterações dos urls dos serviços, o processo não
precisou ser alterado, apenas o XML da aplicação do Mule. Isso pode ser importante
para evitar o envolvimento desnecessário de analistas de processos nesse tipo de
mudança.
       Por se tratar de uma aplicação que utiliza apenas ferramentas open source, a
documentação poderia representar um problema na criação do estudo de caso. Contudo,
foi constatada uma boa documentação das ferramentas nos sites dos fabricantes e uma
ampla base de conhecimento disponibilizada pela comunidade que as utiliza.
       Um estudo semelhante com a utilização de ferramentas comerciais seria válido
para a comprovação do benefício da utilização de ferramentas open source. Podem
também ser realizados os seguintes estudos complementares ao apresentado aqui:
   •   Integração de processos de negócios com o portal open source Liferay para
       disponibilização de processos dentro de uma intranet;
   •   Adicionar um motor de regras de negócios open source, por exemplo, o Drools.
       Ele possui integração com o Bonita e com o Mule ESB.
7. Referências

Heffner, Randy and Leganza, Gene (2010) Pesquisa “Adoption Of SOA: Still Strong,
  Even In Hard Times” publicada por Forrester Research, Inc., em 21 de junho de 2010
Sezov, Rich Jr. (2011) “Liferay in Action”. Manning
Linthicum , David S., (2009) “Cloud Computing and SOA Convergence in Your
   Enterprise” Addison Wesley
Davis, Jeff. (2009) “Open Source SOA”. Manning
Power, Jonh. (2010) “Is SOA Only for Large Organizations?” Disponível em:
  http://www.theinfoboom.com/articles/is-soa-only-for-large-organizations/, Acessado
  em 11/09/2011
Carthuatocto, Roger. (2011) “jBPM, Bonita, Intalio, ProcessMaker, Activiti. Qué BPM
  Suite uso” Disponível em: http://holisticsecurity.wordpress.com/2011/07/21/jbpm-
  bonita-intalio-processmaker-activiti-que-bpm-suite-uso/, Acessado em: 24/09/2011
Mell, P. and Grance, T. (2011), "National Institute of Standards and Technology,
Information Technology Laboratory (NIST) Working Definition of Cloud ", Disponível
   em: http://www.nist.gov/itl/cloud/index.cfm, Acessado em: 11/09/2011
Appengine (2009) “Google App Engine” Disponível em:
  http://code.google.com/appengine/docs/whatisgoogleappengine.html, Acessado em:
  11/09/2011.
Josuttis, Nicolai M., (2007) “SOA in Practice” O’Reilly
Puttini, Ricardo and Sousa, Rafael. (2011) “SOA Adoption in Brazilian Institutions:
  How Is It Going?”. Disponível em:
  http://www.soasymposium.com/home2011/pdf_brazil/Ricardo_Puttini_Agnostic_Ser
  vices.pdf, Acessado em: 20/09/2011
OpenGroup (2011), “Service-Oriented Architecture” Disponível em:
  http://www.opengroup.org/projects/soa/page.tpl?CALLER=newpage.tpl&ggid=1575
  , Acessado em: 20/09/2011
MuleSoft (2011), “What is Mule ESB”, Disponível em: http://www.mulesoft.org/what-
  mule-esb, Acessado em: 01/09/2011
BonitaSoft (2011) “Bonita Mule Connector”, Disponível em:
  http://www.bonitasoft.org/exchange/extension_view.php?eid=117, Acessado em:
  15/08/2011
Silver, Bruce (2009) “BPMN Method & Style”, Cody-Cassidy Press
Rigsby, Josette. (2011) “BonitaSoft's Open Source BPM Platform Supports CMIS,
  Cloud Deployments” Disponível em : http://www.cmswire.com/cms/information-
  management/bonitasofts-open-source-bpm-platform-supports-cmis-cloud-
  deployments-010071.php, Acessado em: 01/09/2011
Dirksen, Jos (2008) “Open-Source ESBs in Action: Example Implementations in Mule
   and ServiceMix” Manning ( p. 42)
Allweyer , Thomas (2011) “Creating a Simple Business Colaboration Scenario With a
   BPMS – Using BPMN 2.0 and Bonita Open Solution”, Disponível em:
   http://www.kurze-prozesse.de/implementing-a-business-collaboration-with-bpmn-
   and-bonita/, Acessado em: 15/08/2011
Wei, Yi and Blake, M. Brian. (2010) "Service-Oriented Computing and Cloud
  Computing - Challenges and Opportunities". IEEE Internet Computing,Volume: 14
  Issue:6 páginas(s): 72 - 75
Vollmer, Ken and Leganza, Gene and Czarnecki, Matt (2009) "Case Study: Using SOA
  And BPM To Support Enterprise Agility: How A Florida College Used An
  Integrated Approach To Reach Its Goals", Forrester Research
Raines, Geoffrey (2009) "Cloud Computing and SOA". MITRE, Relatório técnico
  número: 09-0743 MTR090026
Ricston (2010) “Asynchronous Processing With Mule”, Disponível em:
   http://www.ricston.com/portal/web/guest/bonita-mule-connector, Acessado em:
   15/07/2011
Apêndice A

Aplicação que se comunica com o Twitter via Mule ESB


<?xml version="1.0" encoding="UTF-8"?>


//[schema definitions ocultadas]


   <twitter:config name="twitter" format="JSON" oauthToken="xxxx"
oauthTokenSecret="xxx" consumerKey="xxx" consumerSecret="xxx" doc:name="Twitter
Configuration" doc:description="Global Twitter configuration information"/>


   <flow name="7ebc1f53-2e83-4248-8ea9-73c686c9174a">


          <http:inbound-endpoint host="localhost" port="1081" path="updateTwitterStatus"
keep-alive="false" disableTransportTransformer="true" exchange-pattern="request-
response" doc:name="HTTP" doc:description="Process HTTP request for web service."/>


          <async doc:name="Async" doc:description="Asynchronous block of execution">


             <twitter:update-status consumerKey="xx" consumerSecret="xx"
status="#[header:INBOUND:status]" doc:name="Update Status" doc:description="Update
Twitter status with message."/>
          </async>
</flow>


Aplicação que se comunica com o Google App Engine via Mule ESB
<?xml version="1.0" encoding="UTF-8"?>


//[schema definitions ocultadas]
<flow name="check_account_serviceFlow1">
  <http:inbound-endpoint address=http://localhost:8888 exchange-pattern="request-
response" />
   <http:outbound-endpoint
address=http://aplicacao.appspot.com#[header:INBOUND:http.request] exchange-
pattern="request-response" />


</flow>
Apêndice B

Mais conteúdo relacionado

Mais procurados

BPM: Conceitos de Gestão de Processos de Negócios
BPM: Conceitos de Gestão de Processos de NegóciosBPM: Conceitos de Gestão de Processos de Negócios
BPM: Conceitos de Gestão de Processos de NegóciosSergio Sorrentino Moraes
 
Bpnm - Entendendo a técnica bpmn
Bpnm - Entendendo a técnica bpmnBpnm - Entendendo a técnica bpmn
Bpnm - Entendendo a técnica bpmnSaulo Oliveira
 
[Café com BPM - Setor Privado] Como implantar transformações organizacionais ...
[Café com BPM - Setor Privado] Como implantar transformações organizacionais ...[Café com BPM - Setor Privado] Como implantar transformações organizacionais ...
[Café com BPM - Setor Privado] Como implantar transformações organizacionais ...EloGroup
 
Marcus leite gestao & automacao de processos
Marcus leite gestao & automacao de processosMarcus leite gestao & automacao de processos
Marcus leite gestao & automacao de processosSoftware AG
 
BPM Sucesu BA 2013
BPM Sucesu BA 2013BPM Sucesu BA 2013
BPM Sucesu BA 2013ejedelmal
 
Fundamentos da gestao_de_processos_41744
Fundamentos da gestao_de_processos_41744Fundamentos da gestao_de_processos_41744
Fundamentos da gestao_de_processos_41744mapaiva
 
BPM e Reengenharia de Processos
BPM e Reengenharia de ProcessosBPM e Reengenharia de Processos
BPM e Reengenharia de Processoscomunidades@ina
 
Gestão de Projetos de TI em Empresas
Gestão de Projetos de TI em EmpresasGestão de Projetos de TI em Empresas
Gestão de Projetos de TI em EmpresasCamilo Almendra
 
Arquitetura Orientada a Servicos (SOA)
Arquitetura Orientada a Servicos (SOA)Arquitetura Orientada a Servicos (SOA)
Arquitetura Orientada a Servicos (SOA)Marcelo Sávio
 
Estudo de Caso - Arquitetura Orientada à Serviço
Estudo de Caso - Arquitetura Orientada à ServiçoEstudo de Caso - Arquitetura Orientada à Serviço
Estudo de Caso - Arquitetura Orientada à Serviçojeanstreleski
 
Gerenciamento de Processos de Negócio - BPM: O modelo de gestão do Século XXI
Gerenciamento de Processos de Negócio - BPM: O modelo de gestão do Século XXIGerenciamento de Processos de Negócio - BPM: O modelo de gestão do Século XXI
Gerenciamento de Processos de Negócio - BPM: O modelo de gestão do Século XXICRA-BA
 
[BPM Day Porto Alegre] Maurício Bitencourt - Como o iBPM e as tecnologias mai...
[BPM Day Porto Alegre] Maurício Bitencourt - Como o iBPM e as tecnologias mai...[BPM Day Porto Alegre] Maurício Bitencourt - Como o iBPM e as tecnologias mai...
[BPM Day Porto Alegre] Maurício Bitencourt - Como o iBPM e as tecnologias mai...EloGroup
 
Processos de software
Processos de softwareProcessos de software
Processos de softwareDann Volpato
 
Apresentação Institucional Teclógica
Apresentação Institucional TeclógicaApresentação Institucional Teclógica
Apresentação Institucional TeclógicaTeclógica
 

Mais procurados (20)

Exemplo do uso de BPMN
Exemplo do uso de BPMNExemplo do uso de BPMN
Exemplo do uso de BPMN
 
BPM: Conceitos de Gestão de Processos de Negócios
BPM: Conceitos de Gestão de Processos de NegóciosBPM: Conceitos de Gestão de Processos de Negócios
BPM: Conceitos de Gestão de Processos de Negócios
 
Bpnm - Entendendo a técnica bpmn
Bpnm - Entendendo a técnica bpmnBpnm - Entendendo a técnica bpmn
Bpnm - Entendendo a técnica bpmn
 
[Café com BPM - Setor Privado] Como implantar transformações organizacionais ...
[Café com BPM - Setor Privado] Como implantar transformações organizacionais ...[Café com BPM - Setor Privado] Como implantar transformações organizacionais ...
[Café com BPM - Setor Privado] Como implantar transformações organizacionais ...
 
Marcus leite gestao & automacao de processos
Marcus leite gestao & automacao de processosMarcus leite gestao & automacao de processos
Marcus leite gestao & automacao de processos
 
BPM Sucesu BA 2013
BPM Sucesu BA 2013BPM Sucesu BA 2013
BPM Sucesu BA 2013
 
Guia BPM CBOK
Guia BPM CBOK Guia BPM CBOK
Guia BPM CBOK
 
Fundamentos da gestao_de_processos_41744
Fundamentos da gestao_de_processos_41744Fundamentos da gestao_de_processos_41744
Fundamentos da gestao_de_processos_41744
 
BPM e Reengenharia de Processos
BPM e Reengenharia de ProcessosBPM e Reengenharia de Processos
BPM e Reengenharia de Processos
 
Gestão de Projetos de TI em Empresas
Gestão de Projetos de TI em EmpresasGestão de Projetos de TI em Empresas
Gestão de Projetos de TI em Empresas
 
Arquitetura Orientada a Servicos (SOA)
Arquitetura Orientada a Servicos (SOA)Arquitetura Orientada a Servicos (SOA)
Arquitetura Orientada a Servicos (SOA)
 
Estudo de Caso - Arquitetura Orientada à Serviço
Estudo de Caso - Arquitetura Orientada à ServiçoEstudo de Caso - Arquitetura Orientada à Serviço
Estudo de Caso - Arquitetura Orientada à Serviço
 
Soa Fundamentos
Soa FundamentosSoa Fundamentos
Soa Fundamentos
 
Tcc geral 0.2
Tcc geral 0.2Tcc geral 0.2
Tcc geral 0.2
 
Artigo BPM
Artigo BPMArtigo BPM
Artigo BPM
 
Memorex itil-v3
Memorex itil-v3Memorex itil-v3
Memorex itil-v3
 
Gerenciamento de Processos de Negócio - BPM: O modelo de gestão do Século XXI
Gerenciamento de Processos de Negócio - BPM: O modelo de gestão do Século XXIGerenciamento de Processos de Negócio - BPM: O modelo de gestão do Século XXI
Gerenciamento de Processos de Negócio - BPM: O modelo de gestão do Século XXI
 
[BPM Day Porto Alegre] Maurício Bitencourt - Como o iBPM e as tecnologias mai...
[BPM Day Porto Alegre] Maurício Bitencourt - Como o iBPM e as tecnologias mai...[BPM Day Porto Alegre] Maurício Bitencourt - Como o iBPM e as tecnologias mai...
[BPM Day Porto Alegre] Maurício Bitencourt - Como o iBPM e as tecnologias mai...
 
Processos de software
Processos de softwareProcessos de software
Processos de software
 
Apresentação Institucional Teclógica
Apresentação Institucional TeclógicaApresentação Institucional Teclógica
Apresentação Institucional Teclógica
 

Semelhante a SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ESB e Google App Engine

Aumentando escalabilidade com SOA
Aumentando escalabilidade com SOAAumentando escalabilidade com SOA
Aumentando escalabilidade com SOAHugo Marques
 
SOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a ServiçosSOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a Serviçosalinebicudo
 
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...Glauco Vinicius Argentino de Oliveira
 
SOA: Avaliação sobre os modelos de maturidade SOAMM e OSIMM
SOA: Avaliação sobre os modelos de maturidade SOAMM e OSIMMSOA: Avaliação sobre os modelos de maturidade SOAMM e OSIMM
SOA: Avaliação sobre os modelos de maturidade SOAMM e OSIMMRafael Ramalho
 
Artigo - Arquitetura Orientada a Serviços (Estudo de Caso)
Artigo - Arquitetura Orientada a Serviços (Estudo de Caso)Artigo - Arquitetura Orientada a Serviços (Estudo de Caso)
Artigo - Arquitetura Orientada a Serviços (Estudo de Caso)Carlos Hisamitsu
 
Sistemas Distribuídos - Comunicação Distribuída – SOA
Sistemas Distribuídos - Comunicação Distribuída – SOASistemas Distribuídos - Comunicação Distribuída – SOA
Sistemas Distribuídos - Comunicação Distribuída – SOAAdriano Teixeira de Souza
 
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANDesenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANFernando Palma
 
Saa s software como serviço (slides)
Saa s   software como serviço (slides)Saa s   software como serviço (slides)
Saa s software como serviço (slides)Daniela Nunes
 
possibilitando negócios ágeis e inteligentes
possibilitando negócios ágeis e inteligentespossibilitando negócios ágeis e inteligentes
possibilitando negócios ágeis e inteligentesKellvyn Pereira
 
Como Trazer o Legado para SOA
Como Trazer o Legado para SOAComo Trazer o Legado para SOA
Como Trazer o Legado para SOADavi Silva
 
SOA e BPM, duas disciplinas, um só objectivo
SOA e BPM, duas disciplinas, um só objectivoSOA e BPM, duas disciplinas, um só objectivo
SOA e BPM, duas disciplinas, um só objectivoslidesharemsm
 
Teoria de Sistemas de Informação - Atividade: Tecnologia e SI
Teoria de Sistemas de Informação - Atividade: Tecnologia e SITeoria de Sistemas de Informação - Atividade: Tecnologia e SI
Teoria de Sistemas de Informação - Atividade: Tecnologia e SIAlessandro Almeida
 
SOA Gerando Valor e Como Vender SOA na Crise
SOA Gerando Valor e Como Vender SOA na CriseSOA Gerando Valor e Como Vender SOA na Crise
SOA Gerando Valor e Como Vender SOA na CriseDavi Silva
 
O desafio de sustentar centenas de servicos
O desafio de sustentar centenas de servicosO desafio de sustentar centenas de servicos
O desafio de sustentar centenas de servicosGraziella Bonizi
 
Engenharia de software orientada a servicos
Engenharia de software orientada a servicosEngenharia de software orientada a servicos
Engenharia de software orientada a servicosLeonardo Eloy
 
Arquitetura Orientada a Serviços e BPM
Arquitetura Orientada a Serviços e BPMArquitetura Orientada a Serviços e BPM
Arquitetura Orientada a Serviços e BPMRoger Ritter
 
Arquitetura orientada a servicos soa
Arquitetura orientada a servicos   soaArquitetura orientada a servicos   soa
Arquitetura orientada a servicos soaLeonardo Eloy
 
MODERNIZAÇÃO DE SISTEMAS LEGADOS: um estudo de caso sobre integração de siste...
MODERNIZAÇÃO DE SISTEMAS LEGADOS: um estudo de caso sobre integração de siste...MODERNIZAÇÃO DE SISTEMAS LEGADOS: um estudo de caso sobre integração de siste...
MODERNIZAÇÃO DE SISTEMAS LEGADOS: um estudo de caso sobre integração de siste...Paulo Rodrigues
 

Semelhante a SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ESB e Google App Engine (20)

Aumentando escalabilidade com SOA
Aumentando escalabilidade com SOAAumentando escalabilidade com SOA
Aumentando escalabilidade com SOA
 
SOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a ServiçosSOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a Serviços
 
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
Estudo da aplicação da arquitetura orientada a serviços em um sistema de gest...
 
SOA: Avaliação sobre os modelos de maturidade SOAMM e OSIMM
SOA: Avaliação sobre os modelos de maturidade SOAMM e OSIMMSOA: Avaliação sobre os modelos de maturidade SOAMM e OSIMM
SOA: Avaliação sobre os modelos de maturidade SOAMM e OSIMM
 
Artigo - Arquitetura Orientada a Serviços (Estudo de Caso)
Artigo - Arquitetura Orientada a Serviços (Estudo de Caso)Artigo - Arquitetura Orientada a Serviços (Estudo de Caso)
Artigo - Arquitetura Orientada a Serviços (Estudo de Caso)
 
Sistemas Distribuídos - Comunicação Distribuída – SOA
Sistemas Distribuídos - Comunicação Distribuída – SOASistemas Distribuídos - Comunicação Distribuída – SOA
Sistemas Distribuídos - Comunicação Distribuída – SOA
 
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANDesenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
 
Saa s software como serviço (slides)
Saa s   software como serviço (slides)Saa s   software como serviço (slides)
Saa s software como serviço (slides)
 
possibilitando negócios ágeis e inteligentes
possibilitando negócios ágeis e inteligentespossibilitando negócios ágeis e inteligentes
possibilitando negócios ágeis e inteligentes
 
Como Trazer o Legado para SOA
Como Trazer o Legado para SOAComo Trazer o Legado para SOA
Como Trazer o Legado para SOA
 
SOA e BPM, duas disciplinas, um só objectivo
SOA e BPM, duas disciplinas, um só objectivoSOA e BPM, duas disciplinas, um só objectivo
SOA e BPM, duas disciplinas, um só objectivo
 
Teoria de Sistemas de Informação - Atividade: Tecnologia e SI
Teoria de Sistemas de Informação - Atividade: Tecnologia e SITeoria de Sistemas de Informação - Atividade: Tecnologia e SI
Teoria de Sistemas de Informação - Atividade: Tecnologia e SI
 
SOA Gerando Valor e Como Vender SOA na Crise
SOA Gerando Valor e Como Vender SOA na CriseSOA Gerando Valor e Como Vender SOA na Crise
SOA Gerando Valor e Como Vender SOA na Crise
 
O desafio de sustentar centenas de servicos
O desafio de sustentar centenas de servicosO desafio de sustentar centenas de servicos
O desafio de sustentar centenas de servicos
 
SOA
SOASOA
SOA
 
Engenharia de software orientada a servicos
Engenharia de software orientada a servicosEngenharia de software orientada a servicos
Engenharia de software orientada a servicos
 
Arquitetura Orientada a Serviços e BPM
Arquitetura Orientada a Serviços e BPMArquitetura Orientada a Serviços e BPM
Arquitetura Orientada a Serviços e BPM
 
Artigo cloud computing pdf
Artigo cloud computing pdfArtigo cloud computing pdf
Artigo cloud computing pdf
 
Arquitetura orientada a servicos soa
Arquitetura orientada a servicos   soaArquitetura orientada a servicos   soa
Arquitetura orientada a servicos soa
 
MODERNIZAÇÃO DE SISTEMAS LEGADOS: um estudo de caso sobre integração de siste...
MODERNIZAÇÃO DE SISTEMAS LEGADOS: um estudo de caso sobre integração de siste...MODERNIZAÇÃO DE SISTEMAS LEGADOS: um estudo de caso sobre integração de siste...
MODERNIZAÇÃO DE SISTEMAS LEGADOS: um estudo de caso sobre integração de siste...
 

SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ESB e Google App Engine

  • 1. SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ESB e Google App Engine 1 Michel A. Soares 1 Universidade de Fortaleza – Desenvolvimento de Sistemas com Ênfase na Plataforma JEE {michel.azevedo@gmail.com} Abstract. SOA and cloud computing are two close related subjects. Knowing how to take advantage of these paradigms might place a company ahead of its competitors, especially in a demanding market where a company has to adapt quickly to changes. This paper shows a proof of concept application that basead only on open source tools, highlights the benefits of SOA and cloud computing to SMEs. To achieve that goal, we model a BPMN 2.0 business process that calls cloud services (e.g., google app engine and twitter) during its flow through the Mule ESB, message oriented middleware. Resumo. Arquitetura orientada a serviços e computação nas nuvens possuem um estreito relacionamento. Saber como tirar proveito desses dois paradigmas pode representar grande vantagem competitiva em um mercado que demanda rápida adaptação a mudanças. Este artigo mostra uma prova de conceito que, baseado apenas em ferramentas open source, destaca os benefícios de SOA e computação em nuvens para pequenas e médias empresas. Para isso foi modelado um processo de negócio no padrão BPMN 2.0 que durante sua execução chama serviços nas nuvens (ex: google app engine e twitter) via middleware orientado a mensagens, Mule ESB. 1. Introdução Até poucos anos atrás, quando se falava em implantar uma arquitetura orientada a serviços (SOA, da sigla em inglês), mencionava-se que esse tipo de abordagem era mais adequada para empresas que possuíam grandes sistemas legados. Josuttis(2007) afirma que SOA é um conceito para grandes sistemas distribuídos. Ele afirma que SOA é uma técnica para a manutenção desses grandes sistemas. Dessa forma, era natural que se associasse a implantação desse tipo de arquitetura a grandes empresas. Outros fatores que limitavam SOA às grandes empresas eram: o custo e a complexidade dos projetos. O custo era elevado porque apenas ferramentas de mercado com licenças bastante caras eram capazes de oferecer as funcionalidades necessárias para um ambiente de produção baseado em SOA. A complexidade era outro fator crítico porque a implantação de tais soluções demandavam um grande esforço e mudanças de paradigmas nas empresas, portanto, justificando-se apenas para grandes empresas capazes de suportar tamanha mudança e dispostas ao investimento necessário. Contudo, a adoção de SOA nos últimos anos entre empresas de diferentes portes e ramos de atividades tem aumentado. É o que comprova Heffner (2010) no estudo
  • 2. realizado pelo instituto Forrester. Ele mostra que as iniciativas SOA avançaram 27% entre grandes empresas e 45% entre médias e pequenas empresas mesmo em tempos de crise. O estudo foi realizado em 2009, ano em que a economia global ainda se recuperava da grande crise de 2008. No Brasil, em estudo realizado na Universidade de Brasília por Puttini and Sousa (2011), pôde ser constado que 91.67% das empresas já consideram SOA importante ou muito importante em sua estrutura de TI e 53.8% consideram que SOA tem importância estratégica no negócio; 100% observaram, em parte ou totalmente, o aumento do alinhamento entre TI e Negócio, e também o aumento na reutilização das aplicações; 90% observaram alguma redução do custo de TI; 54% observaram, totalmente ou acima do esperado, o suporte a novos serviços. Com o surgimento de ferramentas open source mais completas e com o advento da computação nas nuvens (Cloud Computing), soluções SOA passaram a ser mais acessíveis para empresas de pequeno e médio porte, além de permitir para diferentes empresas a realização de uma prova de conceito, sem muito custo, o que permite a avaliação da solução também com menor esforço. Power (2010) descreve alguns problemas que atingiam pequenas empresas antes do surgimento da arquitetura orientada a serviços. Segundo este trabalho, essas empresas sofreram no passado devido ao custo de integração com seus fornecedores de grande porte, que era muitas vezes proibitivo. Com o advento de SOA, seus parceiros estão agora aptos a expor serviços que podem ser consumidos por diversas aplicações que são usadas hoje. Produtos como Excel e Word podem se integrar com os sistemas de TI dos seus parceiros de uma forma antes inimaginável. Com o advento do Software como Serviço (SaaS, da sigla em inglês) e dos serviços estabelecidos nas nuvens, pequenas e médias empresas podem se utilizar de sistemas complexos e antes de alto custo ao utilizar apenas uma fração deles e, consequentemente, sendo cobradas apenas por essa utilização e não pelo custo envolvido no desenvolvimento da aplicação. Podemos entender que SOA não deve restringir-se apenas a grandes empresas, embora grandes empresas com sistemas legados configurem um cenário bastante propício para implantação desse tipo de arquitetura. Sezov (2011) aponta algumas vantagens dos projetos que utilizam ferramentas open source: • Não tem o problema de ter que aguardar muito tempo por correções e decisões sobre melhorias; • Tendem a implementar o que os usuários querem o mais rápido possível; • Geralmente são mais leves: não há necessidade de um servidor dedicado para iniciar a implantação; • Elas permitem que o desenvolvimento flua mais rapidamente pelo fato de não ser necessário o entendimento de toda a arquitetura para ser efetivo; • Não é necessário grande investimento para iniciar um projeto que utilize ferramentas open source. Pode-se iniciar pequeno (open source) e então aumentar os investimentos conforme sua aplicação cresça.
  • 3. A motivação para a realização deste estudo parte do princípio de que podemos fazer não apenas aplicações complexas, mas também aplicações mais simples. O objetivo deste artigo é dar subsídios para o entendimento de como podemos iniciar a implantação de um projeto SOA utilizando apenas ferramentas open source. Para isso, será desenvolvido um estudo de caso em que será implementado um processo de negócio utilizando o BPMS Bonita Open Solution. O processo será responsável por coordenar chamadas a serviços disponíveis em plataformas nas nuvens, como Google App Engine e Twitter. Esses serviços por sua vez, serão chamados por meio de um ESB open source, o Mule ESB. O artigo será compreendido da seguinte forma: na seção 2 temos uma visão geral de SOA, Computação em nuvem, ESB e BPMS, onde será mostrado como os conceitos se relacionam. Em seguida, na seção 3, são apresentadas as ferramentas utilizadas na implementação e dada uma breve explanação de como elas são utilizadas no estudo de caso. Na seção 4, é apresentado o estudo de caso, em que foi escolhida uma aplicação para ser desenvolvida utilizando as ferramentas apresentadas na seção 3. Na seção 5, são apresentados trabalhos relacionados ao tema em estudo. Por fim, na seção 6, são descritas a conclusão e sugestão de trabalhos futuros. 2. Visão geral sobre SOA, Computação em nuvem, ESB e BPMS 2.1 SOA De acordo com Davis (2009), arquitetura orientada a serviços é uma estratégia de TI que organiza as funções discretas nas aplicações empresariais em serviços interoperáveis e baseados em padrões que podem ser combinados e reusados rapidamente de forma a atender as necessidades de negócios. Outra definição mais atual pode ser a dada por OpenGroup (2011): Arquitetura orientada a serviços é um estilo de arquitetura que suporta orientação a serviço. Orientação a serviço é uma forma de pensar em termos de serviços e desenvolvimento baseado em serviços e seus resultados. Um serviço: • É uma representação lógica de uma atividade de negócio que pode ser executada repetidamente e tem um resultado específico (ex., consultar crédito do cliente; consulta saldo em estoque); • É autônomo, independente; • Pode ser composto por outros serviços; • É uma “caixa preta” para os seus consumidores. Um estilo arquitetural é uma combinação de características distintas em que a arquitetura é executada ou expressa. O estilo da arquitetura empregada em SOA tem as seguintes características: • É baseado no design dos serviços – que espelha as atividades comerciais do mundo real – compreendendo os processos de negócios da empresa;
  • 4. A representação de serviços utiliza descrições de negócios para fornecer o contexto (ex., processos de negócios, objetivo, regra, política) e implementa serviços usando orquestração; • Demanda aspectos específicos de infraestrutura – recomenda-se o uso de padrões abertos (ex: SOAP, WSDL, REST) de modo a atingir a interoperabilidade. Figura 1. Metamodelo SOA (Linthicum, 2009) O metamodelo SOA oferece uma boa maneira de ver como SOA utiliza uma camada de processo / orquestração para mudar os processos de negócios importantes, sem promover mudanças em todos os sistemas. Esta é uma arquitetura de baixo acoplamento (Linthicum, 2009). Neste artigo essa camada de orquestração será executada pelo processo desenhado no Bonita Open Solution (que será apresentado na seção 4, com o estudo de caso), e a camada “Services” será executada pelo Mule ESB. 2.2 Cloud Computing Uma definição de Cloud Computing (Computação nas Nuvens, em português) bastante utilizada é a dada por Mell and Grance (2011), que dizem que Computação nas Nuvens é um modelo que permite acesso à rede de forma ubíqua, conveniente e sob demanda a um pool de recursos computacionais (redes, servidores virtuais ou físicos, armazenamento, aplicações e serviços) que podem ser rapidamente provisionados. Cloud Computing pode ser visto como um recurso de TI, que pode ser utilizado na implantação de uma arquitetura orientada a serviços. Recursos como armazenamento, capacidade de processamento e softwares provendo serviços podem ser utilizados e pagos sob demanda, além de delegar a responsabilidade de gerenciamento desses recursos para o provedor de nuvem.
  • 5. Algumas características do modelo de nuvem, segundo Mell and Grance (2011), são: • Atendimento self-service e sob demanda. Um consumidor de um serviço de nuvem pode requisitar automaticamente (normalmente usando-se de interfaces de programação ou APIs) um recurso computacional (por exemplo, um servidor virtual ou espaço em um servidor de armazenamento em rede); • Elasticidade. O consumidor do serviço pode requisitar dinamicamente mais ou menos recursos para sua aplicação para se adaptar à demanda dos seus usuários. Por exemplo, em períodos de pico, o consumidor solicita à nuvem mais recursos computacionais (como, por exemplo, servidores adicionais), podendo, depois, liberar tais recursos, quando estes não forem mais necessários; • Pagamento pelo Uso e Garantias de Serviço (Service Level Agreements – SLAs). Os consumidores pagam aos provedores de serviço de nuvem de acordo com o consumo efetuado (modelo de pagamento pelo uso semelhante a utilidades como energia e gás). A nuvem possui mecanismos para permitir o compartilhamento dos recursos existentes de forma eficiente para os diversos clientes e monitorar as aplicações e os recursos de forma a respeitar as garantias de serviço oferecidas, como, por exemplo, disponibilidade de 99.9%; • Acesso ubíquo através da rede. Os recursos computacionais podem ser acessados através de padrões (como APIs REST baseadas em HTTP ou SOAP) por diversos tipos de clientes (browsers, PDAs, celulares) e seus detalhes de funcionamento e complexidades ficam “escondidos” pela nuvem. Quanto ao modelo de serviço, podemos ter os seguintes tipos de nuvem: • Software as a Service (SaaS): quando software é fornecido como um serviço na internet para vários dispositivos através de um cliente (como um browser), eliminando a necessidade de instalação da aplicação no computador consumidor do serviço (Ex: Google Docs); • Platform as a Service (PaaS): quando uma infraestrutura é disponibilizada como serviço. Facilita a disponibilização de aplicações criadas usando as linguagens de programação e ferramentas suportadas pelo provedor. O consumidor não controla a infraestrutura da nuvem, incluindo rede, servidores, sistemas operacionais ou banco de dados, mas tem controle sobre as aplicações e suas configurações (Ex: Google App Engine); • Infrastructure as a Service (IaaS): disponibiliza infraestrutura de equipamentos - tipicamente em ambiente virtualizado - como serviço. Essa infraestrutura pode incluir: processamento, sistema operacional, banco de dados, rede e firewall (Ex: EC2 da Amazon). 2.3 Enterprise Service Bus (ESB) Em grandes implantações, é muito provável a necessidade de se fazer integração entre sistemas. É também muito provável que esses sistemas não “falem” a mesma língua, ou seja, não utilizem o mesmo protocolo para se comunicarem. Muitas vezes, não é apenas a comunicação que é diferente; pode ocorrer que a disponibilidade de uma aplicação seja diferente do momento em que outra necessite de uma informação. É nesse tipo de cenário que um Enterprise Service Bus (ESB) pode ser bastante útil.
  • 6. De acordo com Josuttis (2009), em SOA, o ESB faz parte da infraestrutura que nos permite usar serviços em ambiente de produção. É de responsabilidade dele expor serviços e deixá-los disponíveis para serem consumidos pelas aplicações clientes. Seu principal papel é prover a interoperabilidade. Essa sua caracterização se deve pelo fato de essa camada da arquitetura SOA servir para promover a integração de diferentes plataformas, serviços, linguagens de programação, além da transformação e do roteamento de dados, que são algumas de suas principais atribuições. Um ESB deve permitir a chamada e o recebimento de mensagens de um consumidor para um provedor de serviço e vice-versa. 2.4 Business Process Management (BPM) e Business Process Management System (BPMS) Business Process Management (BPM) está cada vez mais ganhando atenção em grandes e médias empresas e é vista como uma ponte entre o setor de TI e a área de negócios. BPM ajuda as empresas a identificarem a importância estratégica de seus processos e a tirarem vantagens competitivas disso. Serve também para proporcionar ao gestor do negócio uma maior facilidade de encontrar oportunidades de melhoria para o serviço prestado ao cliente, através de indicadores de resultados. As ferramentas tecnológicas que são utilizadas para aplicar efetivamente BPM nas empresas são chamadas de Business Process Management Systems (ou Suites), ou apenas BMPS. Existem várias definições para BPMS, mas uma que é bem recente e influente é a dada por Weske (2007), que diz que um Business Process Management System é um software genérico que é orientado por representações de processos para coordenar a execução de processos de negócios. A maioria das ferramentas de BPM, atualmente, são comerciais pagas e caras. Não é toda empresa que está disposta a realizar um grande investimento numa ferramenta dessas. As ferramentas open source podem ajudar nesse sentido de auxiliar no processo de entrada no universo BPM sem grandes investimentos. Até pouco tempo atrás, não se imaginava essa possibilidade, porque existia uma grande distância entre o que as ferramentas comerciais implementavam e o que as open source disponibilizavam. Hoje, as soluções gratuitas já representam uma ótima opção para a implantação da cultura BPM nas empresas, além de trazer os benefícios intrínsecos do open source como possibilidade de obter correções mais rápidas da comunidade mantenedora e das soluções inovadoras muitas vezes disponibilizadas. 3. Ferramentas utilizadas 3.1 Google App Engine O Google App Engine pode ser classificado como um PaaS e com ele, segundo Appengine (2011), é possível que aplicações sejam desenvolvidas através de um framework que facilita a implementação de aplicações em diversas linguagens, como Java, Phyton e Go1, e sua implantação utilizando a infraestrutura de nuvem do Google. Além disso, a plataforma permite escalar o tráfico da aplicação de forma automática à medida que a demanda imposta pelos usuários da aplicação aumentar ou diminuir. 1 Go é uma linguagem de programação desenvolvida pelo Google e tem como principal objetivo combinar a eficiência de linguagens tipadas e compiladas com as facilidades de linguagens interpretadas (Pike, 2009).
  • 7. Como é característica de uma nuvem PaaS, abstrai-se a necessidade de manutenção de servidores e facilita-se o desenvolvimento de aplicações prontas para executarem em um ambiente de nuvem escondendo os detalhes do programador. 3.2 Twitter É uma ferramenta online de microblogging que permite compartilhar posts (conhecidos como tweets) de até 140 caracteres. É definido por Twitter (2011) como uma rede em tempo real em que é possível se conectar às mais recentes informações sobre o que se julga interessante. 3.3 Mule ESB De acordo com Mulesoft (2011), Mule ESB é uma plataforma de integração desenvolvida na linguagem Java que permite aos desenvolvedores conectar aplicações de forma rápida e fácil, fazendo com que elas possam trocar mensagens. Ele permite a integração de sistemas independentes das diferentes tecnologias que eles utilizem, incluindo JMS, Web Services, JDBC, HTTP, entre outros. A vantagem principal de um ESB é que ele permite que diferentes aplicações se comuniquem com outras atuando como um sistema de transporte por carregarem dados entre aplicações e das aplicações para a internet. Mule ESB possui poderosas funcionalidades, dentre elas: • Criação e hospedagem de serviços — é possível expor e hospedar serviços, usando Mule como um repositório; • Mediação de serviços — proteger serviços de formatos e protocolos, separar a lógica de negócios das mensagens, e habilitar chamadas de serviços independente de onde eles estejam disponíveis; • Roteamento de mensagens — rotear, filtrar, juntar e resequenciar mensagens, baseando-se no seu conteúdo e regras; • Transformação de dados — troca de dados entre uma variedade de formatos e protocolos. Figura 2. Infraestrutura do Mule ESB (Dirksen, 2008) Conforme indicado na Figura 2, a arquitetura do Mule ESB, segundo Dirksen (2008), pode ser definida da seguinte forma: • Component: Contém a lógica do negócio. Pode ser, por exemplo, um spring bean, um serviço REST, um simples POJO etc; • Transport: Lida com a conectividade com a tecnologia em questão ou com a aplicação (ex: JMS, SAP, FTP, HTTP);
  • 8. Transformers: Transforma os dados para o formato que o próximo componente está esperando receber; • Inbound Routers: determina o que fazer com a mensagem recebida antes de ela ser enviada para um serviço; • Outbound Routers: determina para onde a mensagem precisar ser enviada após ter sido processada por um serviço. 3.4 Bonita Open Solution Bonita Open Solution, da empresa BonitaSoft, vem sendo chamada de a ferramenta responsável por democratizar BPM ao disponibilizar funcionalidades antes apenas vistas em ferramentas comerciais, tornando-a altamente competitiva nesse mercado (Rigsby, 2011). Lançada em 2009, não demorou muito para ela se popularizar. Em menos de dois anos, a comunidade atingiu a marca de 3.000 membros, meio milhão de downloads e 100 clientes. Esse rápido crescimento é atribuído ao forte foco da ferramenta em usabilidade, facilitando o manuseio por usuários não técnicos. Carthuatocto (2011) realizou um estudo em que compara algumas das ferramentas BPMS open source mais populares do mercado. O estudo mostra que Bonita Open Solution é a solução mais completa quando foram analisados os critérios: workflow, modelador de processos, criador de formulários, monitoramento de processos, motor de regras de negócios e conexão com ferramentas externas. Bonita é composta de três componentes principais: • Bonita Studio: permite ao usuário graficamente alterar processos de negócios seguindo o padrão BPMN 2.0. O usuário pode também conectar o processo a outros sistemas (como, ERP, ECM, databases...) de forma a permitir a criação de uma aplicação autônoma e acessível como formulário web. Bonita Studio, que é baseado no eclipse, também permite o usuário desenhar graficamente os formulários que serão exibidos para o usuário final do processo permitindo a interação com o processo; • Bonita BPM Engine: o motor de execução é próprio e disponibiliza uma API Java que permite a interação com os processos; • Bonita User Experience: é um portal que permite cada usuário final controlar na forma de webmail todas as suas tarefas que lhe foram atribuídas ou que o envolvem de alguma forma. O portal também permite ao responsável pelo processo administrar e obter relatórios sobre os processos. 4. Estudo de Caso Atualmente, é muito improvável que uma empresa, seja ela, pequena, média ou grande, não tenha um sistema para controlar suas rotinas básicas, como compra de mercadorias e/ou serviços, estoque, vendas, contas a pagar e a receber etc. Muitas possuem os chamados ERPs, que são sistemas que integram todos os módulos usados pelas diversas áreas da empresa em um único sistema. Não é raro encontrar casos em que é necessário se realizar uma integração, seja pela chegada de um novo parceiro comercial, seja devido à equipe de TI ter julgado necessária a adoção de uma nova tecnologia, por decisão estratégica da direção da empresa ou até mesmo por uma fusão.
  • 9. O caso a ser demonstrado abaixo tem como objetivo a simulação de um cenário muito possível em empresas que estão dispostas a adotar uma solução SOA para projetos internos. Principalmente para empresas que não se utilizam ou não têm experiência, ele ilustra uma possível alternativa dando a direção para a criação de uma prova de conceito com algum processo da empresa, o que permite a avaliação da arquitetura para projetos maiores. Figura 3. Arquitetura da aplicação Mule ESB Não é objetivo deste estudo a criação de uma aplicação complexa e nem a criação de um tutorial de como utilizar as ferramentas utilizadas, e, sim, o de apresentar os conceitos envolvidos e mostrar que é possível, apenas com ferramentas open source, a criação de uma solução SOA, que pode ser aplicada na realidade de qualquer empresa, desassociando a imagem de que SOA é apenas para grandes empresas e envolve altos custos. Dessa forma, esse exemplo é uma aplicação simplificada, comparada a uma aplicação que seria desenvolvida em ambiente de produção. Portanto alguns aspectos que devem ser levados em consideração em aplicações corporativas não foram observados, como fatores de segurança, validações das entradas de dados e tratamento de exceções no processo (situação que será bastante comum nas aplicações dessa natureza). Como pode ser observado na Figura 3, a aplicação consiste de um processo desenhado no Bonita Open Solution (processo completo pode ser visto no Apêndice B), processo esse que fará a orquestração de todas as etapas da aplicação. Durante o processo, serão realizadas chamadas a serviços que estão sendo executados em plataforma de nuvem, um deles é um serviço disponibilizado no Google App Engine, e outro é uma conta no Twitter. As chamadas serão realizadas utilizando o intermédio do Mule ESB. 4.1. Processo no Bonita Nesse exemplo, foi escolhido um processo de compra para ser automatizado. O processo envolve os seguintes atores: • Cliente: usuário final que usará a interface web para solicitar a compra do material
  • 10. Mule ESB: será responsável pela comunicação com a aplicação no Google App Engine e com a conta do gerente no twitter, durante a execução do processo; • Gerente: será responsável por aprovar novos pedidos Inicialmente, foi desenvolvido o processo no designer do Bonita. O processo contém as tarefas definidas a seguir. 4.2. Criar Pedido Essa é a primeira tarefa e foi definida para ser atendida pelo “usuário iniciador” (Initiator) do processo. Quando o processo “Pedido de compra” é executado pela interface web do Bonita, conhecida como User XP, o formulário que foi desenhado, como mostrado na Figura 4 e atribuído a essa tarefa, é apresentado para o usuário de acordo com a Figura 5. Figura 4. Formulário desenhado no gerador de formulários do Bonita Figura 5. Formulário em execução no browser Quando o usuário preenche as informações relativas ao seu pedido e clica no botão “Enviar”, o processo segue, conforme foi definido no diagrama do processo, para a próxima tarefa, “Verificar Pendência”.
  • 11. 4.4. Verificar Pendência Essa é uma tarefa que, de acordo com a notação BPMN 2.0 (Silver, 2009), é chamada de “Service Task”. Ela é assim chamada por ser uma tarefa automática, sem a intervenção humana. Comumente, essas tarefas terão associadas a elas conectores. O Bonita pode se comunicar com diversas plataformas e sistemas via conectores. Essa foi um das formas que os idealizadores da ferramenta encontraram para permitir que a comunidade contribua de forma mais ativa e direta para o desenvolvimento da ferramenta. Dentro do nosso processo, a atividade “Verificar Pendência” se utiliza do Mule ESB Conector (BonitaSoft, 2011). Ele possibilita que um processo no Bonita se aproveite de toda a infraestrutura do Mule ESB. Dessa forma, foi criada uma aplicação que faz a consulta ao serviço publicado no Google App Engine. Aplicações no Mule são XMLs com as instruções de como tratar a mensagem que foi enviada para ele. A seguir parte do XML da aplicação que é responsável pela comunicação com o serviço no App Engine (para ver o XML completo, ver Apêndice A) <http:inbound-endpoint address=http://localhost:8888 exchange-pattern="request-response"/> <http:outbound-endpoint address=http://aplicacao.appspot.com#[header:INBOUND:http.request] exchange-pattern="request-response" /> A aplicação está publicando na máquina local em, http://localhost:8888, um serviço que, automaticamente, redireciona a chamada para a aplicação que está disponível no endereço http://aplicacao.appspot.com, e repassa os dados recebidos no cabeçalho da requisição. Neste caso, foi realizado um simples redirecionamento, mas o Mule permite o uso de transformadores de mensagens, mecanismos de decisão e escolha, que poderiam também ser utilizados para incrementar segurança ou escolher o serviço a ser chamado, dependendo da mensagem que chegar. Uma vantagem de se utilizar o Mule como intermediário neste ponto, além dos citados, é que, caso a url do serviço precise ser alterada, por exemplo, ou a aplicação seja movida para outra plataforma de nuvens, o processo no Bonita não precisaria ser alterado, apenas a aplicação no Mule, um simples XML, o que é bem mais simples. O “Verificar Pendência”, portanto, chama o serviço, que, por sua vez, executa a regra de negócio, no caso, verificar se o usuário possui alguma pendência financeira que o impeça de realizar novos pedidos, e retorna para o Bonita. O retorno dessa chamada é guardado em uma variável global definida na modelagem e será usada no próximo elemento do diagrama, que é um “Gateway de decisão Exclusivo”. Esse Gateway verifica se o valor retornado é igual a “ok”, caso afirmativo, segue para “Avisar Gerente”; do contrário, vai para “Avisar Solicitante de Pendência”.
  • 12. Figura 6. Gateway que decide para onde seguir após consulta ao serviço no GAE 4.5. Avisar Solicitante de Pendência Essa atividade existe apenas para avisar ao usuário que ele não pode realizar o pedido pelo fato de existirem pendências financeiras. Foi criado um formulário com a identificação do pedido e uma descrição sobre a pendência encontrada no sistema. Figura 7. Formulário apresentado para o cliente em caso de pendência financeira 4.6. Avisar Gerente Essa tarefa é executada caso o solicitante não possua nenhuma pendência financeira. Neste caso, o processo aciona o Mule via Connector, a aplicação recebe o número do pedido e posta uma mensagem no twitter usado pelo gerente para acompanhar a necessidade de aprovar novos pedidos.
  • 13. Figura 8. Conta do gerente no Twitter, com mensagem indicando que deve ser aprovado pedido. Conforme ilustrado na Figura 9 (a aplicação foi desenvolvida no Mule Studio - ferramenta gráfica para criação dos XMLs do Mule ESB), o Mule aguarda requisições HTTP e encaminha para o Twitter. Para conseguir a comunicação, foi necessária a geração de alguns parâmetros pelo próprio Twitter. Após isso, foram configurados no componente os dados para que o acesso à conta fosse permitido. Figura 9. Fluxo da aplicação que atualiza o twitter desenhada no Mule Studio A seguir, parte do XML que foi gerado pelo Mule Studio. <twitter:update-status consumerKey="xx" consumerSecret="xx" status="#[header:INBOUND:status]" doc:name="Update Status" doc:description="Update Twitter status with message."/>
  • 14. 4.7. Aprovar Pedido Após o gerente ser avisado de que existe um pedido novo para ser aprovado, ele deve seguir para sua caixa de entrada de pendências no Bonita User XP (Figura 12), onde poderá ser visualizada a tarefa de aprovação de pedido. Figura 10. Inbox do usuário com a tarefa “Aprovar Pedido” pendente de atendimento Ao clicar na tarefa, será aberto o formulário com os dados do pedido (Figura 11), e ele terá a oportunidade de aprovar ou não o pedido. Após a decisão do gerente, o solicitante do pedido será notificado da decisão na próxima atividade “Notificar Resultado”. Figura 11. Tela de aprovação de pedido 4.8. Notificar Resultado Depois que o gerente toma a decisão na tarefa “Aprovar Pedido”, a tarefa “Notificar Resultado” se encarrega de enviar um email para o solicitante informando a decisão. Nesse caso, foi utilizado o conector Mail Connector do Bonita Open Solution, com o qual permite fazer a configuração dos dados da conta de email que será utilizada e o corpo da mensagem (Figura 12). Após o envio do email, o processo é finalizado.
  • 15. Figura 12. Configuração do conector para envio de email 5. Trabalhos relacionados Wei and Blake (2010) mencionam as dificuldades encontradas pelas empresas de lidar com as rápidas mudanças exigidas pelo mercado, pelas demandas de seus clientes e as constantes mudanças nos processos de negócios. Eles trazem uma análise dos desafios surgidos com o uso da computação em nuvens, a arquitetura SOA e de como as empresas podem se beneficiar desses dois paradigmas. Raines (2009) destaca o grande movimento em direção à plataforma de nuvens e a mudança nas relações entre fornecedores e clientes, com o surgimento desse novo paradigma. Ele destaca os benefícios e os riscos que devem ser analisados pelos gestores de TI nesse novo cenário e lembra que SOA e Cloud computing são atividades complementares e que devem desempenhar papel de destaque no planejamento de TI. O estudo realizado por Allweyer (2011) mostra um cenário de colaboração entre dois parceiros que utilizam um BPMS. Ele reforça que é cada vez mais comum a adoção de sistemas BPMS nas empresas e que o cenário proposto é muito provável de ocorrer. Ele utiliza o Bonita Open Solution para a criação dos diagramas utilizados nas aplicações, além de usar também o engine de execução de processos e orquestração. No cenário, ele utiliza um banco de dados para intermediação de mensagens entre os dois processos. A utilização do Mule ESB para essa finalidade também é possível com a utilização de uma fila de mensagens, conforme descreve Ricston (2010). Vollmer (2009) fala sobre a experiência do uso de SOA e BPM na Florida Community College, em Jacksonville. Ele destaca o tempo de preparação que a equipe levou antes de colocar a solução em produção e de como o parceiro ajudou para que os objetivos fossem atingidos. Ele conclui mostrando que os planos de crescimento da universidade para comportar mais alunos só foram possíveis devido à estratégia adotada com a adoção do novo modelo de desenvolvimento utilizando SOA.
  • 16. 6. Conclusão e trabalhos futuros Como o objetivo do artigo foi o de mostrar como seria possível o desenvolvimento de uma aplicação SOA utilizando apenas ferramentas open source e dar subsídios para permitir a criação de uma prova de conceito utilizando um processo de negócio da empresa, as ferramentas foram selecionadas e utilizadas na criação de um estudo de caso. A aplicação foi definida de forma a permitir a utilização das camadas “orquestração” e “serviços” descritas no metamodelo SOA. A orquestração, nesse caso, foi feita pelo processo de negócio modelado no Bonita Open Solution, e os serviços foram disponibilizados no Mule ESB que, por sua vez, se comunicava com o Twitter e com uma aplicação disponível na plataforma de nuvens do Google. A utilização do Bonita se mostrou bastante intuitiva, revelando o que já se esperava quando da escolha da ferramenta. O uso dos conectores para integração com serviços e aplicações externas também se mostrou bastante eficiente. A criação de formulários também não apresentou dificuldades. O gerador só deixa a desejar na possibilidade de se personalizar o espaçamento dos campos, mas isso pode ser contornado com a utilização de templates, que permitem inclusive a total remodelagem da aparência dos formulários. O fato de o designer utilizar, a notação BPMN 2.0 também ajuda bastante, uma vez que o padrão é familiar aos analistas de processos que vão modelar o processo. É importante ressaltar a importância da escolha de qual processo automatizar em um ambiente corporativo. A escolha de um processo não crítico e de baixa complexidade pode fazer grande diferença nas primeiras implementações. A utilização do Mule ESB intermediando as chamadas aos serviços pôde revelar algumas vantagens: na necessidade de alterações dos urls dos serviços, o processo não precisou ser alterado, apenas o XML da aplicação do Mule. Isso pode ser importante para evitar o envolvimento desnecessário de analistas de processos nesse tipo de mudança. Por se tratar de uma aplicação que utiliza apenas ferramentas open source, a documentação poderia representar um problema na criação do estudo de caso. Contudo, foi constatada uma boa documentação das ferramentas nos sites dos fabricantes e uma ampla base de conhecimento disponibilizada pela comunidade que as utiliza. Um estudo semelhante com a utilização de ferramentas comerciais seria válido para a comprovação do benefício da utilização de ferramentas open source. Podem também ser realizados os seguintes estudos complementares ao apresentado aqui: • Integração de processos de negócios com o portal open source Liferay para disponibilização de processos dentro de uma intranet; • Adicionar um motor de regras de negócios open source, por exemplo, o Drools. Ele possui integração com o Bonita e com o Mule ESB.
  • 17. 7. Referências Heffner, Randy and Leganza, Gene (2010) Pesquisa “Adoption Of SOA: Still Strong, Even In Hard Times” publicada por Forrester Research, Inc., em 21 de junho de 2010 Sezov, Rich Jr. (2011) “Liferay in Action”. Manning Linthicum , David S., (2009) “Cloud Computing and SOA Convergence in Your Enterprise” Addison Wesley Davis, Jeff. (2009) “Open Source SOA”. Manning Power, Jonh. (2010) “Is SOA Only for Large Organizations?” Disponível em: http://www.theinfoboom.com/articles/is-soa-only-for-large-organizations/, Acessado em 11/09/2011 Carthuatocto, Roger. (2011) “jBPM, Bonita, Intalio, ProcessMaker, Activiti. Qué BPM Suite uso” Disponível em: http://holisticsecurity.wordpress.com/2011/07/21/jbpm- bonita-intalio-processmaker-activiti-que-bpm-suite-uso/, Acessado em: 24/09/2011 Mell, P. and Grance, T. (2011), "National Institute of Standards and Technology, Information Technology Laboratory (NIST) Working Definition of Cloud ", Disponível em: http://www.nist.gov/itl/cloud/index.cfm, Acessado em: 11/09/2011 Appengine (2009) “Google App Engine” Disponível em: http://code.google.com/appengine/docs/whatisgoogleappengine.html, Acessado em: 11/09/2011. Josuttis, Nicolai M., (2007) “SOA in Practice” O’Reilly Puttini, Ricardo and Sousa, Rafael. (2011) “SOA Adoption in Brazilian Institutions: How Is It Going?”. Disponível em: http://www.soasymposium.com/home2011/pdf_brazil/Ricardo_Puttini_Agnostic_Ser vices.pdf, Acessado em: 20/09/2011 OpenGroup (2011), “Service-Oriented Architecture” Disponível em: http://www.opengroup.org/projects/soa/page.tpl?CALLER=newpage.tpl&ggid=1575 , Acessado em: 20/09/2011 MuleSoft (2011), “What is Mule ESB”, Disponível em: http://www.mulesoft.org/what- mule-esb, Acessado em: 01/09/2011 BonitaSoft (2011) “Bonita Mule Connector”, Disponível em: http://www.bonitasoft.org/exchange/extension_view.php?eid=117, Acessado em: 15/08/2011 Silver, Bruce (2009) “BPMN Method & Style”, Cody-Cassidy Press Rigsby, Josette. (2011) “BonitaSoft's Open Source BPM Platform Supports CMIS, Cloud Deployments” Disponível em : http://www.cmswire.com/cms/information- management/bonitasofts-open-source-bpm-platform-supports-cmis-cloud- deployments-010071.php, Acessado em: 01/09/2011 Dirksen, Jos (2008) “Open-Source ESBs in Action: Example Implementations in Mule and ServiceMix” Manning ( p. 42)
  • 18. Allweyer , Thomas (2011) “Creating a Simple Business Colaboration Scenario With a BPMS – Using BPMN 2.0 and Bonita Open Solution”, Disponível em: http://www.kurze-prozesse.de/implementing-a-business-collaboration-with-bpmn- and-bonita/, Acessado em: 15/08/2011 Wei, Yi and Blake, M. Brian. (2010) "Service-Oriented Computing and Cloud Computing - Challenges and Opportunities". IEEE Internet Computing,Volume: 14 Issue:6 páginas(s): 72 - 75 Vollmer, Ken and Leganza, Gene and Czarnecki, Matt (2009) "Case Study: Using SOA And BPM To Support Enterprise Agility: How A Florida College Used An Integrated Approach To Reach Its Goals", Forrester Research Raines, Geoffrey (2009) "Cloud Computing and SOA". MITRE, Relatório técnico número: 09-0743 MTR090026 Ricston (2010) “Asynchronous Processing With Mule”, Disponível em: http://www.ricston.com/portal/web/guest/bonita-mule-connector, Acessado em: 15/07/2011
  • 19. Apêndice A Aplicação que se comunica com o Twitter via Mule ESB <?xml version="1.0" encoding="UTF-8"?> //[schema definitions ocultadas] <twitter:config name="twitter" format="JSON" oauthToken="xxxx" oauthTokenSecret="xxx" consumerKey="xxx" consumerSecret="xxx" doc:name="Twitter Configuration" doc:description="Global Twitter configuration information"/> <flow name="7ebc1f53-2e83-4248-8ea9-73c686c9174a"> <http:inbound-endpoint host="localhost" port="1081" path="updateTwitterStatus" keep-alive="false" disableTransportTransformer="true" exchange-pattern="request- response" doc:name="HTTP" doc:description="Process HTTP request for web service."/> <async doc:name="Async" doc:description="Asynchronous block of execution"> <twitter:update-status consumerKey="xx" consumerSecret="xx" status="#[header:INBOUND:status]" doc:name="Update Status" doc:description="Update Twitter status with message."/> </async> </flow> Aplicação que se comunica com o Google App Engine via Mule ESB <?xml version="1.0" encoding="UTF-8"?> //[schema definitions ocultadas] <flow name="check_account_serviceFlow1"> <http:inbound-endpoint address=http://localhost:8888 exchange-pattern="request- response" /> <http:outbound-endpoint address=http://aplicacao.appspot.com#[header:INBOUND:http.request] exchange- pattern="request-response" /> </flow>