Como vamos de BPEL Parte 2 - ODE

No post anterior escrevi um pouco sobre BPEL. Neste post vou continuar no assunto mas falando de uma implementação de BPEL que é o ODE. O Apache ODE é uma implementação open source 100% aderente a WS-BPEL 2.0 e compatível com BPEL4WS 1.1.

Orchestration Director Engine é uma implementação muito leve de BPEL, não só pelo fato do ODE rodar em Apache Tomcat ou Jetty que são soluções leves para Java.

A solução de BPEL da Apache conta com uma brilhante solução de arquitetura chamada de JACOB. Essa solução compila o BPEL através de um recurso que pode ser executado em linha de comando para verificar a syntax e a validade do BPEL produzido, esse recurso se chama bpelc.

Desta forma a solução da Apache em tempo de runtime pode executar um processo totalmente em memória, que faz como que a performance seja muito boa, ou utilizar a persistência em banco de dados. Por default o ODE usa o banco de dados Derby mas você pode mudar essa configuração para utilizar outro banco.

Você pode acessar WebService REST com o ODE através de uma extensão, esse recurso é bom mas isso mata a portabilidade do BPEL. A Figura a baixo retirada do site da apache ilustra o desenho geral da boa arquitetura do ODE.


Arquitetura Geral do ODE

Como você pode perceber tudo começa com a compilação do BPEL, depois disso o que foi compilado é feito o deploy para o runtime do ODE, esse deploy pode ser feito de forma automatizada utilizando a linha de comando, ant, maven ou o console do ODE.

O ODE por dafault roda os processo de maneira Statefull, isso esse statefull é o mesmo statefull do EJB, mas o ODE não usa EJB para fazer isso, ele mantém os estados e cuida da tolerância a falhas com adaptadores de acesso a um Banco de Dados.

No seu cerne está o JACOB que utilizando as técnicas de Closures e Canais consegue ter auto desempenho em paralelismo e nos abstrair desse tipo de complexidade. O Acesso aos WebService se dá ao sua camada de integração utilizando outro produto da Apache o Axis2.

Uma Ferramenta para Design de BPEL

O Pessoal do ODE recomenda o uso do BPEL Designer que é um plugin do eclipse que apesar de alguns bugs é funcional. Esse projeto ainda se encontra na embarcadoura da eclipse. Mas em resumo você pode usar qualquer editor de XML por que o ODE como dito antes é aderente aos padrões de BPEL.

Você pode fazer o deploy de um processo apénas zipando o processo junto do seu descritor que é um arquivo xml chamado obrigatoriamente de deploy.xml. Como dito no outro post esse é um ponto que a especificação de WS-BPEL 2.0 não cobre e nos deixa na mão. Pois falando da solução da ORACLE esse mesmo arquivo se chama bpel.xml e tem outra estrutura.

ODE Embarcado?

ODE é perfeito para ser embarcado com outras aplicações pois ele é muito leve e tem poucas dependências em termos de jars, outra forma de usar a solução é com a integração que ele possui para JBI, dessa forma você usa-lo como solução de orquestração no ESB da Apache o ServiceMix.

Você pode usar o ODE em outros servidor como o Weblogic, Websphere ou até mesmo o JBOSS com o mínimo de configurações. Se preferir pode distribuir o mesmo no Tomcat ou Jetty, isso vai depender da sua estratégia e preocupação com manutenção e gerência de configuração.

Em termos de desenvolvimento é interessante deixar o ODE no Jetty pois ai com o uso de Maven pode automatizar o processo de deploy e start/stop do servidor com o ODE.

Está nos planos do pessoal do ODE em realizar uma integração com SCA usando outro projeto da Apache o Tuscany.

No próximo post pretendo postar "códigos" de exemplo do uso de ODE e com uma aplicação cliente que inicia o processo do ODE e obtém o resultado do processo. Nesse exemplo vou usar o BPEL Designer do eclipse para fazer o BPEL.

Abraços e até a próxima.

Popular posts from this blog

Kafka Streams with Java 15

Rust and Java Interoperability

HMAC in Java