BPEL é um padrão. Mais popularmente conhecido como uma “linguagem” de
orquestração e interação com WebServices. A idéia não é especificar
como se construir um WebService, mas sim como orquestrar de certa forma
o comportamento de WebServices em termos de um fluxo de sistema.
Quando utilizamos Web Services – Business Process Execution Language estamos falando de um padrão que começou como BPEL4WS e depois evoluiu e se tornou um padrão aberto mantido pela OASIS.
Um pouco de história
Tudo
começou com empresas privadas como a IBM, Microsoft, SAP e outras que
em 2003 criaram o BPEL4WS 1.1. Hoje ainda temos players que implementam
esse padrão, a ORACLE por exemplo, em sua solução de SOA ,o SOA Suite 10g,
ainda conta com BPEL4WS 1.1 e isso já está assim desde 2006, a
primeira vez que utilizei o produto da ORACLE.
O problema do
produtos deles é que eles têm adapters que fazem coisas que não são de
responsabilidade de um BPEL fazer, e sim de um ESB. A próxima versão do
Suite da ORACLE promete ser aderente à especificação nova de BPEL que é
a WS-BPEL 2.0, que de nova não tem nada, em 2004 já existia um draft
sobre esse padrão e em 2007 saiu a versão final.
No mesmo ano de 2007 a OASIS publicou a especificação do BPEL4People,
que especifica como seria a integração com as pessoas através de human
tasks. Em 2006, quando trabalhei com Human Tasks da ORACLE via BPEL,
também tinha diversas limitações, até porque não passava de uma
aplicação gerada usando JSP com Scriplets. Pouco mudou de 2006 para
2009 no SOA Suite 10g da ORACLE.
Quais as vantagens de usar BPEL?
Várias.
Teoricamente falando, porque é um padrão de orquestração que, uma vez
você fazendo suas orquestrações com ele, você poderia ter a tão sonhada
independência de fornecedor. Pura balela… Atualmente os grandes
players como ORACLE e IBM não implementam a versão 2.0 do WS-BPEL, sem
falar que a especificação tem falhas como não especificar o mecanismo
de deploy, por conta disso nascem coisas proprietárias em forma de
descritores e extensões, se foi de propósito eu não sei, mas acaba que
voltamos ao bom e velho lock in nos vendors, ou seja, você não tem a portabilidade, não de uma maneira fácil e rápida.
O problema dos WebServices
WebServices
são legais. Mas você tem que ter uma grande infra-estrutura para
conseguir fazer uma arquitetura robusta e, acima de tudo, escalável.
Isso acaba sendo luxo das grandes corporações, para pequenas aplicações
o uso de WebServices pode ser custoso em tempo de execução e
consumo de recursos, bem como em recursos financeiros.
Mas se você
tem uma grande empresa e grandes sistemas corporativos, isso pode ser
uma boa idéia. Nesse caso os custos podem ser justificados, então se
você quer atingir SOA não é mandatário o uso de WebServices, mas se
você os utiliza e quer deixar a orquestração fora dos sistema seria uma
boa usar BPEL.
Orquestração de dentro de um Sistema
Isso
não é necessariamente ruim. Porque tradicionalmente se você não usar
BPEL, a sua orquestração acaba ocorrendo dentro do seu código. Isso só é
ruim se isso faz com que as mudanças no seus sistemas sejam realmente
lentas e isso esteja gerando grandes custos de manutenção. Nesse caso
seria bom ir para BPEL se não, talvez seja apenas adicionar mais
complexidade ao seus sistemas.
SOA do zero?
Não
existe esse negocio de SOA do zero hoje em dia. Simplesmente pelo fato
de que existe a globalização e empresas estão toda hora comprando
outras empresas e logo refazer sistemas todos do zero, além de inviável,
seria um grande risco. Você pode e deve começar a sua adoção de SOA aos
poucos, de preferência com um projeto piloto, mas o grande ganho vai vir
só depois. A grande vantagem não será o bom design ou a coesão e
robustez arquitetural, mas sim a flexibilidade para o negócio.
BPM e BPMN para BEPL?
Existe
uma frente tentando juntar BPMN com SOA. SOA é como se fosse um subset
de uma arquitetura Corporativa e BPM é um modelo de gestão. Usar BPM
apenas para gerar insumos para o uso de BPEL é sem sentido. Mas pode
ser seu ponto de início, seu primeiro passão para adoção, mas a adoção
de BPM mexe no negócio da empresa, onde o furo é bem mais embaixo e
as coisas acabam saindo da TI.
BPMN é a padronização de uma
notação, mas nem todas as ferramentas a usam e pouquíssimas seguem o
padrão da ultima versão de XPDL que está na versão 2.1. XPDL seria uma
forma de trocar de BPM de uma ferramenta para outra, mas tal
portabilidade ainda é lenda.
Xml, Xsd e Xpath…
BPEL
é sinônimo disso. Você não consegue evitá-los. Falando do BPEL da
ORACLE, por exemplo, quando através de um wizard vocês configura a
leitura de um arquivo texto ou de um banco de dados ele cria um schema
XSD o qual vai utilizar, prepare-se para mexer com muito XML e XSD e
em muitas vezes com XPATH para fazer operações no XML.
Para mais detalhes disso e sobre BPEL no geral, você pode conferir a especificação de BPEL da OASIS aqui neste link.
No próximo artigo vou mostrar como usar o BPEL na prática através do
Apache ODE, que é um excelente engine de BPEL que é aderente ao padrão
WS-BPEL 2.0.
Abraços e até a próxima.







