Mas que raios é esse tal de BPEL?!

quinta-feira, 05/03/2009 1:44 pm  

Estou eu aqui, trabalhando com integração de dados e nada como a maravilha do ORIB ( Oracle Retail Integration Bus) até o dia de dizerem, “vamos usar BPEL” para todos os novos fluxos de integração…
 
Epa, mas que vem a ser esse raio de BPEL?
 
BPEL é uma sigla em inglês : Business Process Expression Language ou em português Linguagem de Expresão de Processos de Negócio.
 
Nessas alturas você já deve estar pensando, “sim e dai?!”
 
Bom digamos que o BPEL[wiki en] é uma evolução dos Simples WebServices da tão falada SOA[wiki pt]Service-oriented architecture (Arquitetura Orientada a Serviços), que nada mais é que mensagens trocadas através de XML[wiki pt] sobre o protocolo HTTP. Obs.: Não que o BPEL seja um outro tipo de WebService do SOA, mas utiliza o WSDL[wiki pt] do SOAP[wiki pt] para efetuar/disponibilizar acesso a seus processos.
 
Para maiores informações de uma olhada nessa apresentação:


 
De forma geral é uma maneira muito interessante de organizar a comunicação entre muitas aplicações. Porém dificilmente você irá utilizar isso em algum projeto de pequeno ou médio porte, a menos que este acesse algum serviço/processo disponibilizado através do BPEL.
 
A visão geral do funcionamento é a seguinte: é feito uma requisição a um processo, sendo este feito através de um XML com 2 envelopes, o mais externo do SOAP e o interno segue a especificação de como efetuar a requisição.
 
A resposta da requisição pode ser de 2 tipos:
 
Síncrona: onde a resposta retorna no response da requisição, em um formato XML, também com 2 envelopes, o externo do SOAP e o interno segue a sintaxe referente a uma resposta vinda de um processo BPEL.
 
exemplo request:

1
2
3
4
5
6
7
8
9
<inputVariable>
	<part name="payload" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
		<req:methodRequest xmlns:req="http://host.dom/xsdName">
			<req:param1>value1</req:param1>
			<req:param2>value1</req:param2>
			...
		</req:methodRequest>
	</part>
</inputVariable>

exemplo response:

1
2
3
4
5
6
7
8
9
<outputVariable>
	<part name="payload" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
		<res:methodResponse xmlns:res="http://host.dom/xsdName">
			<res:param1>value1</res:param1>
			<res:param2>value1</res:param2>
			...
		</res:methodResponse>
	</part>
</outputVariable>

envelope SOAP:

1
2
3
4
5
6
7
8
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
   <env:Header/>
   <env:Body>
 
	<TAGS/>
 
   </env:Body>
</env:Envelope>

 
Assíncrona: Este é um tipo interessante, pois é o processo BPEL que irá acessar algum serviço ou API, por exemplo: serviço – pode acessar um WebService ou outro processo BPEL, ou ainda acessar diretamente uma base de dados e realizar manipulações de dados através de uma SQL ou funcionalidade interna, isto chamariamos também de API, no Oracle por exemplo, chamar uma Package.Procedure e repassar as informações.
 
 
A minha percepção de o que é o BPEL:
 
– Algo muito interessante;
 
– Excelente forma de organizar/estruturar/disponibilizar um processo de negócio que possa ser utilizado por várias aplicações;
 
– Interessante o fato de utilizar WebService para disponibilizar acesso aos processos, pois temos muitas ferramentas que nos auxiliam a trabalhar com WebServices, ficando quase que transparante para quem irá desenvolver o lado da aplicação que acessa o processo BPEL.
 
– Bom para utilizar em projetos onde mais de uma empresa participa do desenvolvimento e há necessidade de integração/comunicação entre as várias aplicações ou módulos.
 
– Quanto a compreenção e aprendizado do BPEL, isto achei um tanto complicado e confuso, para conseguir me achar e entender o que e onde estão cada parte do processo, como que funciona, como que acesso, como é que o processo me retorna um resultado.
 
– BPEL é algo que muito provavelmente utilizarei apenas em projetos grandes, com necessidade de integração de informações entre aplicações e módulos.
 
 
Caso tenha interesse em olhar o BPEL, você poderá utilizar para desenvolver gratuitamente:
 
Eclipse + Plugin BPEL [ tutorial inglês: Eclipse | IBM ]
Apache ODE (é uma aplicação web java que implementa o suporte para executar processos BPEL)
Apache Tomcat (Servidor web java) [ou você pode utilizar outro de sua preferência]
 
 
Outra informações úteis, você encontra:
 
Especifiação padrão BPEL 2.0
Oracle BPEL Process Manager [tutoriais]

, , , , , , , , , , , ,

Este post foi escrito por:

- que escreveu 500 post(s).


Entre em contato