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