Como vamos de BPEL Parte 1

BPEL é uma padrão. Mais popularmente conhecida como uma "linguagem" de orquestração e interação com WebServices. A idéia não é especificar como se construir um WebService mais sim como orquestrar de certa forma o comportamento de WebServices em termos 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 evolui 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 des de 2006 que foi a primeira vez que utilizei o produto da ORACLE.

O problema do produtos deles é que ele tem adapters que fazem coisa que não é de responsabilidade de um BPEL fazer e sim de um ESB. A próxima versão do Suite da ORACLE promete ser aderente a 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, por que é 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 hoje(24/05/2009) 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, vou 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 um grande infra-estrutura para conseguir fazer uma arquitetura robusta e a cima de tudo escalável. Isso acaba sendo luxo das grandes corporações, para pequenas aplicações o uso de WebServices pode ser além de custoso em tempo de execução e consumo de recursos e bem como 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. Por que 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 apénas para gerar insumos para o uso de BPEL é sem sentido. Mas pode ser seu ponto de inicio, seu primeiro passão para adoção, mas a adoção de BPM mexe no negócio da empresa a onde o furo é bem mais embaixo e acaba saindo da TI as coisas.

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 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 post 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.

Popular posts from this blog

Kafka Streams with Java 15

Rust and Java Interoperability

HMAC in Java