SOA (Service Oriented Architecture) oferece uma arquitetura de acoplamento fraco para a integração de empresas. Além disso, é um tipo de arquitetura que usa serviços como blocos de construção de maneira a facilitar a integração empresarial e o reuso de componentes através de acoplamento fraco.

Alguns dos princípios do SOA são:

  • Acoplamento fraco: isto é, uma mudança efetuada em um componente não afeta os outros componentes.
  • Interoperabilidade: Toda troca de mensagem é independente de plataforma.
  • Reuso: Os serviços são utilizados por diversos cliente independentemente.
  • Capacidade de descoberta: O ambiente de execução e o contrato de um serviço devem ser identificados e vinculados durante a execução.

Outra característica da SOA é que ela lida com a composição e orquestração de serviços.

Um Serviço é um componente de software que possui uma interface independente de plataforma, está disponível na rede, possui operações realizando funções de negócio sobre um objetos de negócio e por fim a sua interface e implementação podem ser decorados com extensões que justamente ampliam o número de operações que um serviço pode prover.

Um Web Service nada mais é do que um serviço que utiliza protocolos e padrões da Web como base. Os Web Services facilitaram bastante a integração de sistemas que estão dentro da companhia e também a integração com aplicações externas. Além disso, permitiu que organizações pudessem se beneficiar de aplicações disponibilizadas por outras companhias por meio de componentes de fraco acoplamento, interoperáveis, reusáveis e com todas as características que os Web Services proporcionam. No entanto, nenhuma das especificações principais dos Web Services (como SOAP, WSDL, UDDI, etc) foram concebidos para proporcionar mecanismos por si só para descrever como Web Services individuais podem ser conectados para criar soluções de negócios confiável e seguro com o nível apropriado de complexidade, neste momento que o BPEL surge.

No restante do artigo veremos com mais detalhes o que é o BPEL, seu surgimento, suas principais características e que ferramenta pode nos auxiliar na criação de um documento BPEL.

BPEL (Business Process Execution Language)

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.

Orquestração

Orquestração é a execução automática de um fluxo de trabalho (workflow) onde tem-se um coordenador que controla diversos serviços de uma composição de forma automática entre diferentes organizações ou dentro de uma mesma organização.

Workflow (ou fluxo de trabalho) é uma estrutura de interação entre os vários participantes, com dependências entre as tarefas e as regras e os caminhos (ou rotas) entre eles, e todas as condições de quando as tarefas são iniciadas e avançadas para a próxima etapa ou então revertidas (rolled back)", disse James Kobielus, sênior analista do Burton Group. "Tradicionalmente, este tem sido um fluxo de trabalho humano, mas no contexto de Web Services agora isto relaciona-se com a interação aplicação-para-aplicação. É daí que vem o termo orquestração". BPEL permite a orquestração de tarefas em serviços baseados na web.

Visão Geral do BPEL

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.

Composição do BPEL

A especificação BPEL define a sintaxe e semântica da linguagem BPEL, que contém uma variedade de construções de fluxo de processo. Ela permite comandos condicionais, fluxos de processos paralelos, sub-processos aninhados, junção de processos e outros recursos relacionados. BPEL é definido em um formato XML.

O BPEL possui elementos e atividades. Nas próximas seções veremos quais são os elementos e atividades que compõem o BPEL.

Elementos

O BPEL é composto por três elementos, são eles: Process, Import e Variables.

O elemento <process> é a Raíz de todo documento BPEL que declara namespaces usados no processo, define atributos que indicam à Engine do BPEL como manipular diferentes aspectos durante a execução do workflow. Os seus atributos são: queryLanguage (especifica a linguagem para selecionar nodos ao processar XML), expressionLanguage (especifica a linguagem para as expressões em atividades do tipo assign), suppressJoinFailure (indica se erros de join serão expostos ou não) e exitOnStandardFault (indica se o fluxo deve terminal quando uma falha ocorrer ou se algum tratamento de exceção é especificado).

O elemento <import> declara as dependências a esquemas XML ou WSDL, possuindo três atributos: Location, Namespace e ImportType. Os dois primeiros não são obrigatórios. O atributo ImportType define o WSDL ou o XML Squema a importar.

O elemento <variables> declara as variáveis que serão utilizadas no processo.

Primitivas

As atividades primitivas são ações, contruções básica e tarefas comuns. Temos como atividades primitivas as seguintes: receive, assign, reply, invoke, wait, throw e terminate. Abaixo explicaremos os principais e mais utilizados.

<receive> é como o método main de uma linguagem de programação, ele é o ponto de entrada de um processo. Ou seja, é o ponto inicial que será invocado quando uma mensagem for recebida e sua função será capturar a mensagem e armazená-la em uma variável.

<assign> atribui e copia valores podendo criar novos dados com base em expressões.

<reply> é o final do processo onde retorna-se uma mensagem para quem invocou o processo.

Estruturadas

As atividades estruturadas combinam as atividades primitivas. Temos como atividades estruturadas as seguintes: sequence, flow, switch e pick.

A principal é a <sequence> que é uma coleção de atividades que executam em sequência.

Ferramentas

Uma das ferramentas mais utilizadas para quem quer usar BPEL é usar o Eclipse BPEL Designer. Para utilizá-lo basta baixar o Plugin dentro do próprio Eclipse acessando o menu do Eclipse HELP e depois INSTALL NEW SOFTWARE conforme indica a figura abaixo:

Selecionando a janela de instalação de plug-ins do Eclipse.

Figura 2: Selecionando a janela de instalação de plug-ins do Eclipse.

Após a janela Install ser aberta clique em "Add" conforme ilustra a figura abaixo.

Janela Install com o botão add

Figura 3: Janela Install com o botão “Add...”.

Agora que a nova janela foi aberta coloque em nome: "BPEL Designer" e em Location: "http://download.eclipse.org/bpel/site/". Após isso clique em OK conforme indica a figura abaixo.

Setando os valores para o Plugin BPEL Designer.

Figura 4: Setando os valores para o Plugin BPEL Designer.

Selecione "Eclipse BPEL Designer" na janela e clique em Next para prosseguir com a instalação do Plugin.

Nome do Plugin encontrado no repositório do Eclipse.

Figura 5: Nome do Plugin encontrado no repositório do Eclipse.

Após a finalização da instalação do Plugin já podemos utilizar todas as facilidades do editor BPEL Design podendo criar o nosso projeto BPEL e utilizar todas as ferramentas que ele nos oferece.

Conclusão

Neste artigo estudamos o que é BPEL e quais os principais conceitos relacionados a ele. Também vimos uma ferramenta muito utilizada para trabalharmos com BPEL e como instalar o Eclipse BPEL Design no ambiente de desenvolvimento Eclipse.