Orquestração de Web Services utilizando BPEL
Adilson Vahldick1, Juarez Bachmann11
Departamento de Sistemas e Computação
Universidade Regional de Blumenau (FURB) – Blumenau, SC – Brasil {adilsonv77, juarez.bachmann}@gmail.com
Resumo. Com a difusão da Internet e ascendência dos web services,
precisou-se definir formas de realizar e coordenar sua integração. Essa tarefa é chamada de orquestração, e a linguagem BPEL define como mapear e organizar o fluxo de troca de dados entre os web services. O presente artigo trata de ilustrar a BPEL, e apresenta duas ferramentas de modelagem BPEL e dois servidores para sua execução.
1. Introdução
Segundo Singh et al. (2006) a utilização de web services vem sofrendo rápida expansão devido à crescente necessidade de comunicação entre aplicativos.
Web service é um aplicativo de software, acessível na web (ou em uma intranet
corporativa) através de uma URL (Singh et al., 2006), com uma interface bem definida permitindo que as organizações tornem acessíveis as suas informações a outros programas (Sommerville, 2007). Este aplicativo pode ser acessado pelos clientes usando protocolos baseados em XML (tais como SOAP) e pode ter as mais diversas funções, desde o tratamento de requisições simples para informações até a implementação de complexos processos de negócio (Snell, 2002).
Os web services podem ser escritos em diversas linguagens de programação e podem ser acessados entre clientes escritos em linguagens diferentes, o que facilita a sua interoperabilidade e a integração entre diversos sistemas. Além disso, Sampaio (2006) destaca que um serviço deve executar unidades completas de trabalho, ou seja, deve processar a sua função de negócio específica sem depender do estado de outros componentes externos, o que acaba por aumentar a sua reutilização.
O crescimento das empresas e o processo de globalização fomentam a utilização dos web services. A característica de interoperabilidade permite que clientes e fornecedores, mesmo cada um com seu sistema de informação independente, possam operar com unicidade. A informatização do processo de negócio pode considerar atores externos ao ambiente das empresas, o que acaba por criar novas possibilidades e novas dificuldades para o funcionamento dos softwares corporativos.
Uma das formas existentes para a criação e execução destes processos de negócios cada vez mais complexos é a orquestração de web services. Segundo Rosato (2008), orquestração é a composição de web services para criar um novo serviço, o qual possibilita a resolução de uma tarefa em um processo de negócio. Conforme Pant e Juric (2008), a orquestração de serviços pode ser desenvolvida de diversas formas, porém, a solução mais difundida atualmente é a utilização da linguagem BPEL
(Business Process Execution Language), que é uma linguagem no formato XML, onde se mapeiam os web services e suas interações.
Este artigo descreve em mais detalhes a BPEL (seção 2), apresenta duas ferramentas de modelagem de BPEL (seção 3) e aborda o ambiente para execução desses processos (seção 4). Na última seção é feito um comparativo entre essas ferramentas.
2. BPEL
Sampaio (2006) define BPEL como uma linguagem utilizada para realizar a orquestração de um conjunto de web services para formar um fluxo de negócios, ou seja, sua função é modelar um processo de negócio com web services. A orquestração é um procedimento utilizado em processos privados, sendo que este modelo consiste na criação de um elemento centralizador que assume o controle dos web services participantes e coordena a execução de diferentes métodos desses serviços (Grahl, 2008).
De acordo com Sampaio (2006), a aplicação cliente se comunica com o processo central (coordenador) e faz uma solicitação, sendo que o coordenador inicia o fluxo interno de execução dos web services, invocando e verificando todas as etapas necessárias. A Figura 1 ilustra a estrutura de um processo de orquestração.
Figura 1. Orquestração de web services
A representação de um processo de negócios em BPEL é feita no formato XML, onde os web services e suas interações são mapeados, definindo assim o fluxo para a execução. Um exemplo de parte do código-fonte de um processo BPEL é representado na Figura 2.
Figura 2. Parte do código-fonte de um processo BPEL
A especificação WSBPEL 2.0 (Weerawarana, 2005) determina a estrutura e a semântica da linguagem, e os seus principais elementos são relacionados nas subseções seguintes.
2.1. Partner Link
O partner link é o canal de comunicação entre o processo e os web services que o compõe. Nestes elementos são definidos que métodos serão executados pelo coordenador.
2.2. Variables
O elemento variables é usado para definir as variáveis que serão utilizadas pelo processo. Estas variáveis podem receber tanto os dados de entrada vindos do cliente como os resultados da execução dos web services envolvidos no processo.
2.3. Activities
A linguagem BPEL disponibiliza inúmeros tipos de atividades que podem ser utilizadas na modelagem/execução dos processos, sendo os principais listados a seguir:
• receive: elemento que aguarda a chegada de uma mensagem;
• reply: envia uma mensagem de resposta para alguma solicitação recebida; invoke: invoca uma requisição para um web service através do partner link. • assign: utilizado para atribuir valores para as variáveis.
• if: elemento utilizado para possibilitar a escolha entre mais de uma atividade, de
acordo com alguma condição.
• while: define um laço de repetição para uma atividade enquanto a condição for
atendida.
Além dos elementos acima descritos, a especificação compreende inúmeros outros, contemplando desde atividades de espera de tempo (wait) até tratamentos de exceções (throw).
3. Ferramentas para modelagem de processos em BPEL
O desenvolvimento de processos de negócio na linguagem BPEL não é uma tarefa trivial, pois exige-se conhecimento dos esquemas da linguagem, além de ter de referenciar-se aos web services, onde precisa-se saber quais métodos e parâmetros estão à disposição.
Há diversas ferramentas no mercado que possibilitam a modelagem dos processos BPEL de forma gráfica e intuitiva. Entre elas estão o ActiveVOS (Active Endpoints, 2009a) e o plugin BPEL para o Eclipse (Eclipse, 2009).
Os recursos das ferramentas serão discutidos com base em um processo de negócio exemplo. O processo consiste na validação de dois campos comuns em um cadastro de pessoas, que são o endereço de e-mail e o CEP. Esse processo receberá dois valores de entrada (endereço de e-mail e CEP) e devolverá um valor indicando o sucesso ou fracasso da consistência: true ou false.
Para implementar este exemplo serão utilizados dois web services públicos disponíveis nos endereços abaixo:
• E-mail: http://www.webservicex.net/ValidateEmail.asmx?wsdl
• CEP: http://www.maniezo.com.br/webservice/soap-server.php?wsdl A lógica deste processo de negócio é exibida na Figura 3.
3.1. ActiveVOS
O ActiveVOS é um sistema construído sobre a plataforma Eclipse que oferece ferramentas para a modelagem, publicação e gerenciamento de aplicativos de processos de negócio (Active Endpoints, 2009a).
Essa ferramenta permite que os processos sejam modelados de forma gráfica, apresentando os elementos da linguagem BPEL em uma paleta de componentes, bastando que o usuário arraste os componentes desejados para a área de trabalho e monte os seus fluxos para os processos de negócio. Sendo assim, é desnecessário realizar alterações diretamente na estrutura XML do processo, pois até mesmo a alteração das propriedades de cada elemento é facilitada mediante uma interface gráfica amigável para este fim.
A paleta de componentes desta ferramenta é apresentada na Figura 4.
Figura 4. Paleta de componentes do ActiveVOS
A modelagem do fluxo usado para o processo de negócios exemplo pode ser vista na Figura 5, sendo que há um detalhamento sobre a sua execução logo a seguir.
Figura 5. Modelagem do processo de validação
O processo tem início na atividade receive chamada entrada, responsável por receber os parâmetros (endereço de e-mail e CEP). Em seguida é executada a atividade
assign chamada setEmail, cuja função é atribuir para o web service de validação de
e-mail o endereço informado como parâmetro para o processo.
A atividade invoke validarEmail é responsável por executar o web service de validação, sendo que se o retorno dessa execução for igual a false, então é executada atividade assign setFalse, que atribui também o valor false para a variável de saída do processo. Se o resultado da validação do endereço de e-mail for igual a true (endereço válido), então é executada a atividade assign setCep, que alimenta a variável do web
service de validação de CEP com o parâmetro de entrada do processo BPEL.
A atividade invoke validarCep executa o web service de validação do CEP. Se o resultado dessa execução retornar como CEP inválido, é executada a atividade assign setFalse, que atribui o valor false para a variável de saída do processo. Porém, se o CEP for válido, é executada assign setTrue para atribuir o valor true à variável de saída.
A última atividade é reply saída que retorna o valor previamente atribuído. Alguns aspectos merecem destaque para facilitar a compreensão da execução deste processo. Inicialmente é importante salientar que todos os parâmetros de entrada e de saída, tanto do processo BPEL em si quanto dos métodos dos web services que o compõe, são mapeados como variables dentro do processo. Exemplificando: o parâmetro de entrada do processo relativo ao e-mail transforma-se em uma variável chamada, por exemplo, inputEmail; o parâmetro de entrada do método que valida o
mail no web service é ligado a uma variável chamada, por exemplo, emailWS; e o parâmetro de retorno do web service que informa se o e-mail é válido ou não, é mapeado para uma variável chamada retornoWS. Dessa forma, o objetivo das atividades assign é alimentar as variáveis copiando os valores de uma para a outra conforme a necessidade. Neste exemplo, o assign setEmail é responsável por transferir o valor da variável inputEmail (parâmetro de entrada do processo BPEL) para a variável emailWS (parâmetro de entrada do web service).
Outra situação que merece maior esclarecimento é o relacionamento entre o elemento partner link e a atividade invoke. Como supracitado, o partner link é o responsável por realizar a ligação entre o processo BPEL e os web services envolvidos. Desta forma, toda atividade invoke está associada a um partner link para que seja possível executar os serviços.
O Eclipse possui uma ferramenta denominada Web Services Explorer cujo objetivo é permitir a realização de testes com web services e processos BPEL. Por ser desenvolvido sobre a plataforma Eclipse, o ActiveVOS também permite o acesso a esta ferramenta de testes, onde é possível informar os valores de entrada dos processos BPEL e executar todo o fluxo (inclusive depurando), obtendo o seu retorno conforme os resultados das execuções dos web services.
3.2. Plugin BPEL para o Eclipse
Segundo Eclipse (2009), o objetivo do plugin BPEL é adicionar à IDE do Eclipse suporte para definição, edição, publicação, testes e depuração de processos utilizando a linguagem WSBPEL 2.0. A modelagem também é feita de forma gráfica, arrastando os componentes.
A figura 6 apresenta a paleta de componentes disponibilizada por este plugin.
A figura 7 ilustra a modelagem do processo exemplo com a ferramenta.
Figura 7. Modelagem do processo de validação utilizando o plugin do Eclipse Para testar estes processos, assim como no ActiveVOS, deve-se utilizar a ferramenta Web Services Explorer disponível no Eclipse.
4. Execução de processos BPEL
Para a execução de uma aplicação BPEL é necessário publicá-la em um servidor de processos BPEL. Alguns servidores são pagos, como Oracle BPEL Process Manager, IBM WebSphere Business Integration Server Foundation e Microsoft BizTalk. Os servidores Apache ODE e ActiveBPEL Engine são dois exemplos de produtos de uso livre, e que serão descritos nessa seção.
De acordo com Apache (2009a), Apache ODE trata-se de uma ferramenta cujo objetivo é executar processos de negócio escritos com o padrão BPEL. Essa ferramenta é um complemento ao Apache Tomcat2, sendo instalada como um aplicativo web dentro deste servidor.
A figura 8 ilustra a arquitetura do Apache ODE. Os arquivos com a definição do processo BPEL são compilados pelo servidor e enviados à área de runtime (Ode BPEL Runtime). Essa área é responsável pela persistência dos dados, controle da concorrência e a navegação entre os web services envolvidos. Estes serviços, por sua vez, são
2 O Apache Tomcat é uma implementação das tecnologias Java Servlet e JavaServer Pages (Apache,
acessados pelo servidor através da sua camada de integração (ODE Integrationlayer), a qual se comunica tanto com os web services quanto com a camada de runtime.
Fonte: Apache (2009b)
Figura 8. Arquitetura do servidor Apache ODE
Para realizar o deploy de um processo BPEL no Apache ODE, basta copiar o diretório com os arquivos relacionados ao processo criado (arquivos .bpel, .wsdl, .xml, etc) para dentro do diretório de processos do servidor, num caminho como %TOMCAT_HOME%/webapps/ode/WEB-INF/processes (Apache, 2009c). Para facilitar este processo, é possível relacionar um servidor ODE diretamente com o Eclipse, fazendo com que esse deploy seja feito de forma automática pelo Eclipse.
O ActiveBPEL Engine, por sua vez, é uma ferramenta que pode ser acoplada a qualquer contêiner de servlets (Apache Tomcat, por exemplo) que utilize a especificação padrão (Active Endpoints, 2009b). Assim como o Apache ODE, o ActiveBPEL Engine também é instalado como um aplicativo web dentro do contêiner de
servlets. Para publicar um processo BPEL neste servidor, deve-se gerar um arquivo de deployment com a extensão .bpr, onde deverão constar os arquivos gerados durante a
fase de modelagem. A ferramenta de modelagem ActiveVOS, por exemplo, possui uma ferramenta que possibilita exportar os arquivos do processo gerando automaticamente o arquivo .bpr. Em seguida, utilizando-se a interface web do ActiveBPEL Engine acessível através do contêiner de servlets, deve-se selecionar este arquivo e realizar o seu deploy no servidor.
Uma vez que um processo BPEL seja publicado em qualquer um destes servidores, ele pode ser acessado da mesma forma que um web service comum, ou seja, é possível iniciar o seu processamento a partir de qualquer aplicação, escrita em
qualquer linguagem que permita tal recurso, o que reforça a flexibilidade e a facilidade na utilização da orquestração de serviços através de BPEL.
5. Considerações finais
A orquestração de serviços através da linguagem BPEL permite que fluxos de processo sejam executados com grande flexibilidade e facilidade. A linguagem BPEL oferece inúmeros recursos para a execução de processos de negócio, incluindo a capacidade de estruturas condicionais e de repetição. Para maximizar a produtividade na criação desses processos, torna-se necessário o uso de ferramentas de modelagem e execução.
As ferramentas de modelagem apresentadas neste trabalho são totalmente compatíveis com a especificação WSBPEL 2.0. Suas funcionalidades são bastantes semelhantes, haja vista a íntima ligação que ambas têm com a ferramenta Eclipse: uma é um plugin desta ferramenta e outra (ActiveVOS) é desenvolvida sobre esta plataforma. Apesar disto, durante os testes realizados, verificou-se que o ActiveVOS possui uma usabilidade ligeiramente superior ao plugin, pois este último, por algumas vezes, teve que ser reiniciado após inserir algum componente no fluxo, para que fosse possível visualizar e alterar as suas propriedades corretamente. Também foi mais simples implementar expressões condicionais no ActiveVOS, principalmente porque esta ferramenta possui construtores de expressões que permitem que os as expressões sejam construídas sem a necessidade de conhecer a fundo a respectiva sintaxe, bastando para tanto utilizar a interface gráfica. Com relação às instruções de utilização, as duas contam com bons materiais de apoio (apostilas, tutoriais, help, etc) na internet, mas neste quesito o ActiveVOS também se sobressai devido ao help on-line que pode ser acessado diretamente a partir da ferramenta, onde há uma vasta gama de informações e exemplos bastante didáticos e ilustrados de forma a facilitar o trabalho do usuário. Além disso, a maior diferença entre as ferramentas é o preço: o plugin pode ser utilizado gratuitamente enquanto o ActiveVOS é pago (para desenvolver este trabalho, foi utilizada a versão
trial que é gratuita por 30 dias).
Outra ferramenta gratuita avaliada foi a Oracle SOA Suite que utiliza uma linguagem proprietária. Por não seguir a especificação BPEL, ela não foi citada durante o trabalho.
A execução dos processos BPEL também mostrou-se simplificada, sendo necessária somente a sua publicação em um servidor adequado. Neste trabalho foram apresentados dois servidores de código aberto, integrados com o Apache Tomcat, e as atividades de implantação dos processos em ambos.
Com relação à utilização da orquestração de serviços no mercado, há de se levar em consideração estudos e notícias divulgadas na mídia a respeito deste tema. O IDG Now (2007), por exemplo, noticiou a adoção do suporte à linguagem BPEL na camada de gerenciamento de fluxo de processo do Windows Vista. Também segundo pesquisa divulgada pelo IDG Now (2009), 32% dos entrevistados demonstraram intenção em adotar soluções de gerenciamento de processos de negócio em 2010, enquanto 19% afirmaram já estar em busca de parceiros para implementação destas soluções. Sendo assim, pode-se afirmar que a orquestração é mais do que uma tendência: é uma realidade cada vez mais presente no dia a dia das organizações.
Uma das principais vantagens da orquestração é que, além de possibilitar a criação e gerenciamento destes fluxos, ela cria a possibilidade de adicionar ou remover
web services do processo com facilidade, sem necessidade de alterações no código-fonte
dos outros serviços envolvidos, resultando em maior flexibilidade e reutilização dos serviços.
Diante desta realidade, e analisando a usabilidade das ferramentas expostas e os experimentos efetuados, pode-se concluir que a orquestração de serviços é técnica das mais sólidas e apropriadas para disponibilizar soluções adequadas aos fluxos dos processos de negócio das organizações modernas. Com a sua adoção por parte de grandes empresas (como a Microsoft, por exemplo), tal técnica deve se tornar cada vez mais popular, podendo vir a mudar radicalmente o conceito de sistemas de informação existente atualmente, pois com a crescente adoção da arquitetura SOA no desenvolvimento de sistemas mais desacoplados, a orquestração tem grande potencial para integrar as diversas partes que formarão os processos de negócio das empresas.
Referências
Active Endpoints (2009a) “Welcome to Active Endpoints”, Disponível em <http://activevos.com/index.php/>. Acesso em 05 outubro 2009.
Active Endpoints (2009b) “The ActiveBPEL Engine”, Disponível em <http://www.activevos.com/community-open-source.php/>. Acesso em 05 outubro 2009.
Apache (2009a) “ODE – Architectural Overview”, Disponível em <http://ode.apache.org/architectural-overview.html/>. Acesso em 19 outubro 2009. Apache (2009b) “Welcome to Apache ODE”, Disponível em
<http://ode.apache.org/index.html/>. Acesso em 19 outubro 2009.
Apache (2009c) “Deploying a Process in Ode”, Disponível em <http://ode.apache.org/creating-a-process.html/>. Acesso em 19 outubro 2009.
Apache (2009d) “Apache TomCat”, Disponível em < http://tomcat.apache.org/>. Acesso em 19 outubro 2009.
Eclipse (2009) “BPEL Project”, Disponível em
<http://www.eclipse.org/bpel/index.php>. Acesso em 28 setembro 2009. Grahl, Carlos A. C. (2008) “O que é BPEL”, Disponível em
<http://soasoabem.blogspot.com/2008/10/o-que-bpel.html>. Acesso em 26 setembro 2009.
IDG Now (2007) “Microsoft adiciona BPM ao Windows Vista”, Disponível em <http://idgnow.uol.com.br/computacao_corporativa/2007/02/26/idgnoticia.2007-02-26.8579087326/>. Acesso em 28 outubro 2009.
IDG Now (2009) “Estudo identifica prioridades tecnológicas das companhias para 2010”, Disponível em < http://idgnow.uol.com.br/mercado/2009/10/02/estudo-identifica-prioridades-tecnologicas-das-companhias-para-2010/>. Acesso em 28 outubro 2009.
Pant, Kapil; Juric, Matjaz (2008) “Business Process Driven SOA using BPMN and BPEL: From Business Process Modeling to Orchestration and Service Oriented Architecture”, Packt Publishing.
Rosato, Fábio (2008) “Orquestração vs. Coreografia”, Disponível em
<http://www.aqueleblogdesoa.com.br/2008/10/orquestracao-vs-coreografia/>. Acesso em 26 setembro 2009.
Sampaio, Cleuton (2006) “SOA e Web Services em Java”, Rio de Janeiro: Brasport. Singh, Inderjeet et al. (2006) “Projetando Web Services com a Plataforma J2EE 1.4”,
Tradução Cláudio Rodrigues Pistilli, Rio de Janeiro: Ciência Moderna. Sommerville, Ian (2007) “Engenharia de Software”, São Paulo: Pearson-Addison
Wesley.
Snell, James (2002) “Programming Web Services with SOAP”, Beijing: O´Reilly. Weerawarana, Sanjiva et al. (2005) “Web Services Platform Architecture: SOAP,
WSDL, WS-Policy, WS-Addressing, WS-BPEL, WS-Reliable Messaging, and More”, Prentice-Hall.