Otimize tempo com PIPELINE TEMPLATES em seus Barramentos Oracle (OSB)

Alguns anos atrás, ainda no período de faculdade, lembro que os professores sempre diziam algo que tornou-se comum a ponto de virar jargão em sala de aula que era o seguinte : Não pense como programador, que ouve o que um usuário quer e só pensa em como implementar.

Acredito que você já ouviu isso também e hoje vejo que é uma grande verdade, por que, quando você pensa apenas na implementação você esquece de detalhes que não deveriam passar e acaba entrando num ciclo de desenvolvimento sem fim. Tanto é que surgiram funções como Analista de Requisitos, por exemplo, que tem a primordial função de ouvir o usuário e criar uma documentação de todo processo
de negócio e o que deve ser feito afim de atendê-lo.

Acontece que o mercado tem exigido de nós, profissionais de TI, a capacidade de atendermos a diversas áreas ao invés de ficarmos focados apenas naquela função que queremos ou sabemos trabalhar. Temos visto que a otimização de tempo e a entrega rápida de resultados tem sido considerado como alvos muito importante atualmente.

Como consequência disso temos visto surgir inúmeras metodologias de desenvolvimento, gerenciamento de demandas entre outros recursos. Um exemplo muito interessante é o conceito de SOA e Microserviços que trazem a ideia de Reusabilidade e otimização de tempo.  Mas, mesmo tendo a nossa disposição recursos tão incríveis, se nós não fizermos nossa parte de nada adiantará tanto aparato.

Pensando nisso, decidi escrever este artigo para trazer uma ideia para quem não tem este hábito, ao mesmo tempo que reforçar para quem já tem que é o desenvolvimento de Templates de Pipeline.

Todas as vezes que atuamos como Arquiteto de Integração temos que compreender :  a regra de negócio do cliente, suas políticas e necessidades para podermos gerar uma integração que traga os resultados esperados pelo mesmo.

Acontece que, a depender do negócio, muitos passos precisam ser refeitos com certa repetição e como estamos num momento em que o “Reuso” tem sido valorizado não podemos desenvolver aplicações que tenham métodos que não possam ser reutilizados e para solucionar isso, a melhor coisa a fazer é desenvolvermos TEMPLATES que nos ajudam bastante com este propósito.

Falando especificamente de Integração com o OSB (Oracle Service Bus), temos o PIPELINE TEMPLATE que nos dá a possibilidade de garantir o mesmo padrão e ou impor a mesma lógica do fluxo de mensagens para todos serviços de Proxy. Ou seja, uma vez desenvolvido o TEMPLATE você terá a mesma regra para todos os proxy’s que você vier a fazer. Isso já economiza um bom tempo.

Ensinarei como você pode criar um PIPELINE TEMPLATE do zero, mas antes disso é importante que você tenha os arquivos que utilizaremos nos exemplos que seguirão a partir de agora. Por isso, clique aqui e baixe os arquivos que utilizaremos neste tutorial.

PS1.: Este artigo é o primeiro de uma série que publicaremos em nosso blog, por isso, mantenha os arquivos para os próximos artigos.
PS2.: Faça exatamente como estamos ensinando. Depois você melhora, ok.

Bom, antes de criarmos o template é necessário executarmos algumas tarefas imprescindíveis:
1 – Criar uma aplicação
2 – Criar um Projeto
3 – Importar os WSDLs ( que você deve baixar clicando aqui )
4 – Criando Business Services

1 – Criando uma aplicação
Dentro de uma aplicação você pode ter vários projetos, ok. Então, quando você cria uma aplicação é semelhante a você estar criando um diretório para reunir vários projetos em um lugar só.

Para criar uma aplicação vá em File -> New -> From Gallery -> Service Bus Tier, selecione Service Bus Application e dê um nome para sua aplicação,  que deve ser ServiceBusAppl.

Em seguida clique em Finish.  

 

2 – Criando um Projeto
Para criar um projeto o processo é muito parecido, vá em File -> New -> From Gallery -> Service Bus Tier, selecione Service Bus Project e dê um nome para  seu projeto, que deve ser XYZCommon, em seguida clique em Finish.

3 – Importar os WSDL’s
Agora é a hora de importar os WSDLs que disponibilizamos. Você pode fazer isso de uma forma bem rápida que é acessando o diretório do “JDeveloper/MyWork” e colando todos os WSDLs na raiz da aplicação que você criou. Feito isso, volte ao JDev e atualize o projeto. Você verá que todos os arquivos que você colou no diretório estarão visíveis em seu projeto.

 

4 – Criando Business Services
Após importar todos os WSDLs, vamos criar um Business Service pra cada WSDL.  Manteremos a mesma nomenclatura dos WSDLs acrescentando a sigla BS para identificar como Business Service.

Clique com o botão direito do mouse sobre XYZCommon -> New -> Business Service

Nomeie como “CustomerServiceBS”

Clique para procurar o WSDL correspondente (se você não encontrar em Application, clique em File System e vá até o diretório onde você colocou os arquivos)


Após selecionar o arquivo você retornará para a tela de criação do Business Service, clique em Finish.


Quando você finalizar o Business Service será aberto, deixe todos os valores default como estão.

Repita esses passos para todos os WSDLs. Ou seja, crie um Business Service para cada WSDL conforme foi feito acima.

 


Agora que todos os Business Service foram criados, vamos organizar os arquivo em pasta dentro do projeto. Para isso, clique com o botão direito e vá na opção REFACTOR => MOVE e defina pra onde você quer direcionar os arquivos. Por boa prática, nós colocamos os arquivos de acordo com sua tipologia.
WSDL’s numa pasta WSDL,  Business Services numa pasta BusinessService e assim por diante.

Obs.: É interessante você fazer como mostramos acima por que o JDeveloper reorganiza de forma correta os arquivos que você criou sem gerar problemas que talvez você tivesse se fosse feito de forma manual.

 


Vamos agora criar nosso Pipeline Template
Crie um novo projeto chamado XYZCustomer na aplicação ServiceBusApl e em seguida crie a seguinte estrutura de pastas (como na imagem abaixo) : Pipelines, XQueries, XSLTs, WSDLs and ProxyServices

Feito isso, clique com o botão direito na pasta Pipeline e selecione New -> Pipeline Template.  Dê o nome CustomerPipelineTemplate e clique em Next.

Em Service Type, escolha WSDL SOAP, clique em Finish e a tela do Pipeline será aberta pra você.

Como foi falado anteriormente, pelo Pipeline Template você consegue manter uma lógica comum ou o mesmo padrão de fluxo de mensagens que deve ser seguido em todos os serviços Proxy.

Quando os consumidores chamam o serviço de proxy, ele deve ter diferentes caminhos de execução com base na operação chamada.

O Service Bus fornece o nó do Ramo Operacional que atende a este propósito. Então, arraste o Operacional que está em Message Flow -> Template Placeholder para o Template.


Clique em BranchNode1 e nas propriedades altere o nome para “CustomerOperation”, conforme imagem abaixo.

Agora, arraste um PIPELINE PAIR para o Branch. Você pode encontrá-lo em NODES.  Clique em “Stage1″ do Request Pipeline, e em propriedades altere o nome para “Validation“. Desta forma, seu Template deve estar como na imagem abaixo.


Caso você esteja iniciando, observe uma coisa bem legal quanto ao BRANCH. Se você traduzir esta palavra em sua forma bruta você verá que significa RAMO.  Então, um ramo que possui vários caminhos a seguir, ok.  Desta forma, se um consumidor desejar CONSULTAR e outro INSERIR uma informação, você já entendeu que o BRANCH envia as solicitações para caminhos diferentes, certo?

Pois bem, vamos dar continuidade. No próximo artigo, nós criaremos um PROXY SERVICE utilizando este template e ai você poderá ver ele sendo utilizado na prática.


O Service Bus fornece atividades de validação de esquema. Então, para que possamos aplicar esta validação em nosso TEMPLATE, arraste a atividade VALIDATE para dentro de VALIDATION. Você pode encontrar esta atividade em MESSAGE PROCESSING.

Nas propriedades determine o Location padrão como BODY.  Como estamos construindo nosso template, não forneceremos nenhum WSDL como esquema.

Bom, pode acontecer de seu desenvolvedor precisar fazer outras validações. Então, para que exista esta possibilidade coloque a atividade ACTIONS abaixo de VALIDATE. Você encontra esta atividade em Template Placeholders.

Em RESPONSE PIPELINE, delete o Stage1 e depois adicione uma atividade STAGES. Adicione uma atividade STAGES também fora de VALIDATION em REQUEST PIPELINE. Esta atividade pode ser encontrada em Template Placeholders. Seu Template deve estar como na imagem abaixo.

Agora chegou a hora de colocarmos a atividade de Roteamento. O nó de roteamento sempre descreve o final do fluxo de mensagens e você não pode colocar outras atividades após esse nó.

Então, arraste e coloque o ROUTE após o PipelinePair que colocamos no TEMPLATE e defina o nome como ROUTE na guia Propriedades.  Observe o espaço reservado para ACTIONS, ele permite ao usuário colocar qualquer tipo de atividade ao projetar o fluxo de mensagens para seus pipeline’s

Por último, vamos adicioanr uma camada de TRATAMENTO DE ERRO. Esta atividade deve ser ligada diretamente ao CustomerPipelineTemplate. Para adicionar esta atividade, procure por ERROR HANDLING em Nodes. Assim seu Pipeline deve ficar como a imagem abaixo.

Pronto, concluímos a construção de seu TEMPLATE.

A partir de agora, ele poderá ser usado em qualquer projeto que você quiser e que ele for adequado.

No próximo artigo, criaremos um Serviço de Proxy que usará o template que acabamos de criar.

Referências
– Este artigo tomou como base uma documentação da Oracle desenvolvida por Sivakumar Gonugunta

Dúvidas, entre em contato.

Forte abraço.

Eduardo Santana
bufallos@bufallos.com.br

Leave a Reply

Your email address will not be published. Required fields are marked *