OSB

Usando o For Each do OSB

Quero neste Post demonstrar a vocês como podemos usar o componente For Each do OSB para fazer uma iteração em uma lista de empregados que serão retornados de um serviço exposto do BPEL

Alem de usar o componente For Each mostrarei também como podemos fazer a mesma iteração usando Xquery

Fiz um serviço no BPEL que retorna uma lista de Empregados que são retornados do meu banco de dados do Oracle XE.

Como a idéia deste Post é apenas demonstrar como usar o componente For Each irei diretamente para nosso foco e caso você tenha alguma duvida de como Expor um Serviço ou usar um Service Callout consulte os links abaixo:

Precisei então apenas expor o meu serviço criado no BPEL usando um Business Service e agora irei chamar este serviço usando o Service Callout, para isso criei um Proxy Service chamado ForEachProxyService.proxy

Um detalhe muito importante que você precisa estar atento é na construção do seu Contrato (WSDL), clique aqui e faça o Download do meu WSDL para que você veja como ficou a definição deste contrato.

Abaixo veja que criei a Variável obterDadosEmpregadosRequest para montar nosso Request e a Variável obterDadosEmpregadosResponse que guardará a resposta da chamada deste nosso serviço SelectEmployeeBusiness que é o serviço que precisei expor no OSB:

Imagem Blog UansCarvalho

Como minha intenção é apenas devolver esta Lista de Empregados que será retornado do nosso serviço serviço SelectEmployeeBusiness vamos adicionar diretamente no Response Pipeline um Stage e dentro deste Stage o componente For Each e também um Replace dentro do nosso For Each

Imagem Blog UansCarvalho

Veja abaixo em detalhes como ficará as propriedade do nosso For Each

Clique então na caixinha do nosso For Each e na guia Properties preencha conforme abaixo:

  • For Each Variable: empregado (Esta é apenas um nome que daremos para nossa iteração, ou seja, o que iterarmos será retornado nesta variável)
  • Xpath: <XPath> (Aqui por enquanto pode deixar como está)
  • In Variable: obterDadosEmpregadosResponse (Este é o nome da nossa variável de retorno do nosso serviço que adicionei em nosso Service Callout, usaremos esta variável para que possamos iterar em cima da lista que será retornada)

Imagem Blog UansCarvalho

Clique então agora sobre a tag <XPath>

Na caixa abaixo, arraste para o lado esquerdo nossa listaEmpregados que estará abaixo de nosso obterDadoEmpregadosResponse

Imagem Blog UansCarvalho

Aqui não precisamos de nosso for:obterDadosEmpregadosResponse pois não precisamos que esta tag também seja retornada em nosso Response, por isso podemos excluir esta parte e deixar apenas ./listaEmpregados

Imagem Blog UansCarvalho

Então nosso For Each ficará assim:

Imagem Blog UansCarvalho

Agora clique em nosso Replace e na guia Properties deixe conforme abaixo:

  • XPath: . (Ponto)
  • In Variable: body (Faremos o Replace do nosso body)
  • Expression: <Expression> (Aqui por enquanto pode deixar como está)
  • Replace node contents (Marque esta opção)

Imagem Blog UansCarvalho

Clique agora sobre <Expression> e monte seu payload de Response conforme abaixo:

Imagem Blog UansCarvalho

Obs: Duvidas como montar o Response ? Veja meu post Usando o Service Callout do OSB

Agora dentro da tag <listaEmpregados> acrescente nossa variável do For Each ($empregado), apenas colocaremos ela aqui entre chaves e após a variável colocaremos uma barra e um asterisco (/*) pois queremos que retorne tudo após esta variável que na verdade retornará tudo dentro da lista, como já iniciamos a tag <listaEmpregados> ela não precisa ser retornada e por isso colocamos o /*

Imagem Blog UansCarvalho

Clique em OK e teste o serviço:

Agora caso você não queira usar o componente For Each, podemos dentro do nosso Replace na mesma tela acima colocarmos em Xquery conforme abaixo:

Imagem Blog UansCarvalho

Obs: Lembrando que caso você prefira usar a Xquery, o nosso Replace não poderá estar dentro do componente For Each pois ele não deverá existir neste caso.

Chamando o nosso Serviço ForEachProxyService veja abaixo nosso retorno:

Imagem Blog UansCarvalho

Veja que agora temos vários <empregados> dentro de nossa <listaEmpregados>

 

Duvidas ? Deixe seu comentário e faça download do Projeto BPEL e deste Projeto OSB :-)

 

Abraços e até a Próxima

/:-D

 

 

Criei este Blog destinado a desenvolvedores e interessados na Tecnologia Oracle SOA Suite, minha idéia é que no futuro ele sirva de referência para Analistas e Desenvolvedores desde aprendizes a especialistas. Já existem alguns Posts interessantes que abordam um pouco do meu dia a dia, no passar do tempo irei alimentar este Blog com o máximo de informações possíveis, por isso peço por gentileza aos interessados e afins que caso tenham alguma dúvida, sugestão ou crítica que me digam para que eu possa da melhor forma suprir as expectativas e na medida do possível sanar todas as duvidas que vierem a surgir ou até mesmo criar novos Posts abordando algum tópico que venha a ser relevante para todos os interessados. Obrigado Uans Carvalho

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *