Gostaria da opinião de vocês a respeito de um problema real:
Minha empresa trabalha com “modelos de negócio”. Explicando melhor: cada área possui um modelo que é um projeto JEE e é empacotado num EAR. Utilizando estes modelos (para obter os dados necessários de cada área da empresa), temos aplicações web que possuem seus clients. Só exemplificando: se eu precisar de uma aplicação web para controlar o pagamento dos funcionários, vou ter nela um client do modelo do RH (para recuperar o nome, cargo, etc do funcionário), um client do modelo do financeiro (para recuperar o valor da hora do funcionário, agendar o pagamento, etc) e assim por diante.
Agora, vamos ter um novo projeto que utilizará o BPEL da Oracle para controlar alguns fluxos. Vai ser, resumidamente, da seguinte maneira: um ator qualquer acessa uma funcionalidade da nova aplicação e acaba caindo num fluxo do BPEL. O BPEL, durante a realização do fluxo, precisa acessar os serviços disponibilizados pelos modelos de negócio das diferentes áreas da empresa. Então ele (o BPEL) realiza chamadas para estes “serviços” já prontos nos modelos de negócio.
O problema é o seguinte: segundo o pessoal da consultoria contratada para montar os fluxos disse que a melhor maneira para que o BPEL acesse os nossos modelos é fazer com que cada modelo tenha um WSDL (é assim que o BPEL “conversa”, via WSDL). Logo de cara, sugeri que fosse implementado um Service Façade somente com chamadas para os métodos necessários dos modelos de negócio. Como a gente utiliza o WSAD (Websphere 5.1 com JRE 1.3 ) e ele gera, a partir de um EJB, um Webservice com WSDL e tudo mais pensei que seria a melhor solução.
Mas… no final de semana estava estudando uns patterns JEE e vi o Web Service Broker. Achei mais adequado do que o Service Façade para o nosso caso. Eu criaria um WebServiceBroker (SessionBean) e um WebServiceBrokerWSDL (WSDL que que descreve o WebServiceBroker) que seria acessado pelo meu cliente (no caso o BPEL). No WebServiceBroker, teria os clients dos modelos necessários e faria as chamadas para obter as informações necessárias.
O que vocês acham da abordagem? Alguma sugestão pra melhorar ou algum comentário?
Muito obrigado!!