BPEL tem sua origem através de um consórcio de padrões consistindo de empresas como BEA Systems, IBM e Microsoft. BPEL combina e substitui as especificações IBM's WebServices Flow Language (WSFL) e Microsoft's XLANG. O BPEL provê uma Engine de orquestração para descrever a troca de informação internamente ou externamente. Ele é uma excelente forma de implementar integração com parceiros comerciais através da Internet. BPEL fornece a capacidade de uma empresa para se adaptar ou criar novos processos de negócios de forma rápida, tanto internamente quanto para sua comunidade de parceiros de negócio.

O BPEL é uma das possibilidades para a definição da lógica de acoplamento/fluxo entre serviços. O BPEL pode ser expresso de maneira visual através de diversas ferramentas de edição. Assim como Web Services, BPEL pode ser exposto como WSDL para que outros serviços possam utilizá-lo. BPEL também é executado no servidor.

Portanto, o BPEL é um padrão de orquestração que usa um Web Service como base, permitindo dessa forma a criação de um serviço composto que oferece uma visão externa única. Por exemplo, um cliente poderia estar planejando uma viagem onde um serviço BPEL faria a reserva da passagem e a reserva do hotel. Cada serviço poderia estar sendo feita de forma única, porém todas essas etapas são consolidadas por um serviço de orquestração. Assim, a combinação de serviços é fracamente acoplada, permitindo reuso e substituição.

BPEL usa XML como base e é um padrão industrial. Quem já trabalha com BPMN pode exportar o seu modelo para BPEL fazendo algumas alterações no modelo, como a definição dos serviços externos ou internos para cada uma das atividades.

Para operarmos o BPEL necessitamos de uma Engine, tal como Apache ODE, Microsoft BizTalk Server, Oracle Process Manager, entre outras Engine.

O BPEL nos permite receber requisições de um cliente (receive), invocar Web Services em uma composição (invoke), retornar uma resposta ao cliente (reply), copiar dados de parte de uma mensagem ou variável para outra (assign), representar e manipular exceções (throw, catch, catchall), implementar lógica condicional (switch, if, else, case, pick), iterar (while), executar um passo do processo depois de uma certa condição como após uma certa hora específica, duração ou data (wait).

Na figura abaixo demonstramos como é o ciclo de vida do BPEL. Primeiramente recebe-se uma mensagem, processamos os dados dessa mensagem utilizando variáveis, invocamos outros Web Services e novamente processamos esses dados, e assim consequentemente, e por fim, retornamos uma resposta para o cliente.

Ciclo de Vida do BPEL.

Figura 1: Ciclo de Vida do BPEL.

No restante do artigo veremos como podemos criar um projeto simples com BPEL onde recebemos uma mensagem de um cliente e exibimos ela na tela. Poderíamos manipular essa mensagem, mas isso ficará de exercício para o leitor. Nesse artigo já vamos nos ambientando com a ferramenta Eclipse BPEL Designer e aprenderemos na prática como o BPEL funciona.

Instalando Softwares Necessários

Primeiramente instale o Eclipse (para plataforma JEE) e o plugin Eclipse BPEL Designer. A instalação do plugin no Eclipse está descrito no artigo “Introduzindo Business Process Execution Language (BPEL)” disponibilizado aqui no portal. Também devemos instalar o Apache ODE disponibilizado no site http://ode.apache.org/getting-ode.html. Após baixar o Eclipse ODE descompacte o arquivo zip em alguma pasta.

Para instalar o servidor vá no eclipse e clique em New Server na aba Server.

Adicionando um novo servidor na aba Servers

Figura 2: Adicionando um novo servidor na aba Servers.

Na janela “New Server” que é aberta selecione a opção “Ode v1.x Server” e clique em Finish.

Selecionando o servidor Apache ODE.

Figura 3: Selecionando o servidor Apache ODE.

Agora que tudo foi instalado podemos ver o primeiro exemplo utilizando BPEL e o Eclipse BPEL Designer.

Criando o Primeiro Projeto com BPEL

Primeiramente vamos criar um novo projeto clicando com o botão direito do mouse sobre uma área livre na janela “Project Explorer”.

Criando um novo Projeto com BPEL Designer do Eclipse

Figura 4: Criando um novo Projeto com BPEL Designer do Eclipse.

Na próxima Janela devemos selecionar criar um projeto do tipo BPEL, conforme é ilustrado na figura abaixo:

Criando um projeto do tipo BPEL.

Figura 5: Criando um projeto do tipo BPEL.

Na próxima janela coloque o nome do projeto em “Project name” de “OlaBPEL” e deixe selecionado a opção “Use default location”. Por fim na opção “Target runtime” selecione a opção “Apache Ode 1.x Runtime” e clique em “Finish”.

O próximo passo será criar um novo processo BPEL. Para isso clique com o botão direito em cima do projeto na janela “Project Explorer” e selecione New e Other conforme ilustra a figura abaixo:

Criando um novo processo BPEL.

Figura 6: Criando um novo processo BPEL.

Quando o assistente abrir selecione “BPEL Process File” e clique em Next.

Selecionando um novo processo BPEL

Figura 7: Selecionando um novo processo BPEL.

Agora basta configurar as opções conforme a figura abaixo e clique em Next:

Configurando as opções para o novo processo BPEL criado

Figura 8: Configurando as opções para o novo processo BPEL criado.

Na próxima tela mudando a opção template para Synchronous BPEL Process e também devemos acertar o Service Address. A figura abaixo ilustra as configurações.

Definindo os parâmetros de configuração para o processo BPEL

Figura 9: Definindo os parâmetros de configuração para o processo BPEL.

Selecione a pasta bpelContent e clique em Finish.

Selecionando a pasta bpelContent.

Figura 10: Selecionando a pasta bpelContent.

Abaixo segue o processo pré-configurado pelo template padrão para começarmos os trabalhos. O template já cria um processo que tem um receive, uma atividade genérica e um reply.

Na aba design do projeto visualizamos o processo pré-configurado.

Figura 11: Na aba design do projeto visualizamos o processo pré-configurado.

Vamos fazer uma pequena alteração mudando a atividade genérica “FIX_ME-Add_Business_Logic_Here” transformando-a numa atividade do tipo Assign. Para isso clique na atividade genérica e na aba Properties selecione Details e clique em Assign. A figura abaixo mostra os detalhes da operação:

Alterando uma atividade genérica para o tipo Assign

Figura 12: Alterando uma atividade genérica para o tipo Assign.

Agora ao fazermos isso, seus detalhes mudam para os detalhes de uma atividade do tipo “Assign” (atribuição). Podemos ver abaixo a mudança dos detalhes.

Alteração da interface dos detalhes para um tipo Assign.

Figura 13: Alteração da interface dos detalhes para um tipo Assign.

Nosso próximo passo é Clicar em “new” para criar uma nova atribuição. Escolha "variable to variable".

Ao clicar em new configuramos From como Variable e To como Variable

Figura 14: Ao clicar em new configuramos From como Variable e To como Variable.

Escolha a variável input (do método OlaBPELRequestMessage) como origem e a variável result (do método OlaBPELResponseMessage) como destino. A figura abaixo demonstra as configurações:

Configurando as variáveis

Figura 15: Configurando as variáveis.

Se o editor perguntar sobre a inicialização da variável clique em Yes para inicializar a variável com um valor padrão.

Selecione o arquivo OlaBPELArtifacts.wsdl clicando duas vezes sobre o arquivo. Agora clique em OlaBPELService, em seguida em Properties arrume Address com a URL correta conforme a imagem abaixo:


Figura 16: Alterando as configurações do arquivo wsdl. Agora vamos criar o descritor de processo. Para isso selecione o nome do projeto e clique com o botão direito do mouse selecionando New e Other. Por fim selecionamos BPEL Deployment Descriptor e clique em Next e na próxima janela clique em Finish. Criando um descritor de processo

Figura 17: Criando um descritor de processo.

Criando um novo descritor no Wizard.

Figura 18: Criando um novo descritor no Wizard.

Podemos notar que o arquivo deploy.xml foi criado para o projeto. Clique duas vezes em cima do nome do novo arquivo criado. Selecione OlaBPELPort e salve tudo.

Selecionando a porta correta no arquivo deploy.xml.

Figura 19: Selecionando a porta correta no arquivo deploy.xml.

Agora basta inicializar o servidor ODE clicando com o botão direito do mouse em cima do nome do servidor e clicando em “Start”.

Inicializando o servidor Apache ODE

Figura 20: Inicializando o servidor Apache ODE.

Agora vamos dar um deploy do nosso processo no servidor. Para isso selecione o ODE e com o botão direito do mouse selecione "Add and Remove...". Na janela "Add and Remove..." selecione o projeto OlaBPEL e clique em "Add >". Agora aguardamos a mensagem de deploy no console. As figuras abaixo ilustram os passos descritos acima.

Configurando o nosso projeto BPEL para deploy

Figura 21: Configurando o nosso projeto BPEL para deploy.

Adicionando o nosso projeto BPEL para deploy no servidor

Figura 22: Adicionando o nosso projeto BPEL para deploy no servidor.

Confirmação que o projeto foi publicado (deployed) no servidor

Figura 23: Confirmação que o projeto foi publicado (deployed) no servidor.

Pronto! Nosso primeiro projeto BPEL utilizando o Eclipse BPEL Designer está pronto. No entanto, temos ainda que fazer um teste para verificar que o que foi feito realmente está funcionando.

Testando o Projeto

Para testar o projeto recém criado basta clicar com o botão direito do mouse em cima do arquivo “OlaBPELArtifacts.wsdl” selecionar Web Services e por fim a opção "Test with Web Services Explore".

Testando nosso projeto recém criado

Figura 24: Testando nosso projeto recém criado.

Para testarmos agora basta expandir o menu esquerdo indo em process, clicar sobre essa opção e digitar uma mensagem de entrada que o nosso processo recém criado irá receber. Por fim basta clicar em “Go”.

Digitando uma mensagem de entrada para o nosso projeto BPEL

Figura 25: Digitando uma mensagem de entrada para o nosso projeto BPEL.

Agora podemos observar no console a resposta apresentada.

Exibindo a mensagem de entrada na saída do processo

Figura 26: Exibindo a mensagem de entrada na saída do processo.

Como exercício tente manipular a mensagem de entrada recebida pelo nosso processo e exiba uma mensagem diferente na saída.

Conclusão

Neste artigo estudamos o que é o Eclipse BPEL Design e como podemos manipular essa ferramenta bastante utilizada nas corporações. Fizemos um primeiro exemplo para começarmos a nos ambientar nesta plataforma. Nos próximos artigos veremos como podemos chamar um Web Service e manipular suas entradas e saídas.