Por Uanderson Carvalho
Postado em Fevereiro 2015
Revisado por Marcelo Pivovar - Solution Architect
Neste artigo irei descrever como faremos para receber um Attachment no OSB e passa-lo ao nosso BPEL para gravação em um Banco de dados.
Para nosso entendimento, os Attachments podem ser de dois tipos.
No OSB tenho a estrutura de pastas conforme abaixo, sugiro que você também tenha para separarmos nossos Proxy, WSDL, Business, XSD e etc..
Na imagem abaixo estou supondo que nós já tenhamos um Projeto criado, no meu caso com o nome OSBProject
Copie o conteúdo do WSDL fazendo o Download do arquivo Attachment.wsdl
Abaixo uma breve explicação sobre o conteúdo do arquivo:
Aqui nesta primeira parte, em nosso SubmitAttachmentRequestTypevamos precisar que seja passado um ID deste arquivo que poderá ser uma transação qualquer do tipo integer e mais abaixo no element name=”anexo” estou dizendo que este arquivo é do tipo base64Binary
Prossiga e espere terminar a instalação.
Ainda no Message de Request, estou usando o name=”anexo” do tipo base64Binary
No Response abaixo vou definir apenas uma mensagem de resposta que pode ser do tipo String
No biding estou usando o style=”rpc” e não o document
Em input estou usando as tags
Dentro de
Agora vamos criar um Proxy baseado neste WSDL:
Em cima da Pasta Proxy, clique agora no Menu e selecione File >> New >>File
Em File Name: Coloque AttachmentPS e clique em Finish
Para a implementação em produção, faça a instalação de pelo menos dois servidores CMAN para não haver um ponto único de falha da arquitetura. Nesse caso, repita o mesmo procedimento de instalação realizado para o servidor oralab1 em um novo servidor, por exemplo o oralab2.
Abaixo na guia General, clique em WSDL Web Service e clique em Browse
Selecione a opção SOAPwithAttachmentSOAP (port) e clique em OK
Na tela abaixo clique em Yes
Agora vá até a guia Message Flow e sobre o AttachmentPS insira um Pipeline Pair
Abaixo de Request Pipeline, adicione um Stage e dentro dele adicione um Replace
Abaixo na guia Properties adicione os seguintes parâmetros:
Em Expression: coloque conforme abaixo pois será o payload responsável por passar ao nosso BPEL os parâmetros necessários para gravação de nosso arquivo que no caso será um ID de Transação de um arquivo de Imagem.
{data($body/soap:submitAttachment/submitAttachment/idArquivoTransacao)}
Logo abaixo do Replace adicione um Publish conforme abaixo e na guia Properties clique em Browse para adicionar o nosso serviço BPEL que fará a gravação do arquivo.
No meu caso estou adicionando o GravaArquivoBusiness que é o serviço do BPEL exposto o qual fará a gravação do arquivo
Agora abaixo de Request Action (dentro de Publish) adicione um Routing Options e na guia Properties adicione os seguinte parâmetros:
Marque a opção Qos: e selecione Exactly Once
Marque a opção Mode: e selecione a opção Request-Response
Agora no Response Pipeline adicione um Stage e dentro do Stage um Replace
Abaixo na guia Properties adicione os seguintes parâmetros:
Em Expression: coloque conforme abaixo pois será o payload de resposta de nosso serviço:
ARQUIVO GRAVADO COM SUCESSO
Feito isso, caso não tenha feito ainda, você já pode fazer o Publish:
Certifique-se de que seu Publish foi executado com sucesso, pois deverá ficar conforme acima (Started, Synchronized)
Para testarmos, vamos enviar um arquivo do tipo JPEG através do SOAUI, primeiro vamos inserir o WSDL do nosso projeto conforme abaixo:
Abra o Request e em idTransacao coloque o numero 1 para criarmos uma transação com numero 1, e clique em Attachments conforme abaixo:
Agora clique no sinal +
Será aberto um popup para que você localize a imagem que deseja inserir, no meu caso Imagem.jpeg
Clique em Open e outro popup será aberto conforme abaixo, clique em Yes em seguida para que a imagem seja anexada ao SoapUi
Veja que a imagem agora foi anexada e logo abaixo em attachments está com o numero 1
Porem veja que na guia Part conforme indica a seta vermelha, está vazia e em Type está UNKNOWN.
Clique em Part e escolha a opção anexo e veja que em Type irá automaticamente mudar para MIME.
Agora no seu SoapUi clique em Submit (setinha > verde) para executar o nosso processo.
Caso sua mensagem seja essa, o nosso processo foi concluído com sucesso.
Agora basta conferir no seu banco de Dados o ID da transação referente a imagem que inserirmos.
Abraços e até a Próxima!
Uanderson Carvalho é um Especialista Oracle SOA com foco em integração entre sistemas legado utilizando as tecnologias Oracle Fusion Middleware e SOA, Pós-graduado em Administração de Banco de Dados Oracle. Certificado pela Oracle como: Oracle SOA Suite 11g Certified Implementation Specialist.
Este artigo foi revisto pela equipe de produtos Oracle e está em conformidade com as normas e práticas para o uso de produtos Oracle.