Gravando um anexo (Attachment) no Banco de Dados com o BPEL

Um processo BPEL pode receber um anexo (Attachment) MIME juntamente com um Payload. O anexo pode estar em qualquer formato (Por exemplo, DOC, PDF, JPEG, XML, Texto, e assim por diante).

Vamos neste primeiro momento enviar um arquivo do tipo JPEG ao BPEL e gravá-lo em um Banco de Dados usando a função ora:getAttachmentContent do BPEL

A grande jogada para fazermos isso está nas definições do WSDL, o restante será muito tranquilo.

Vamos a definição do WSDL por partes:

Aqui teremos as operações de Request e Response normalmente, no Request enviaremos um ID de Transação.

No Response receberemos um código e uma mensagem de erro ou sucesso da nossa operação de Gravação.

Abaixo terá um detalhe muito importante na definição das mensagens onde estará o nosso “anexo” que deverá ser do tipo “binário”

Logo Abaixo também teremos outro passo muito importante do nosso WSDL que será no “input” do nosso “operation”, veja que é imprescindível que esteja entre uma tag do tipo <mime:multipartRelated>

Abaixo segue o nosso WSDL completo:

WSDL OK.

Agora vamos criar um DBAdapter para realizar a gravação do nosso arquivo.

Observação: o campo da tabela no banco de dados onde iremos gravar o arquivo deverá ser do tipo BLOB

Abaixo um DBAdapter criado com o nome GravaArquivoDBAdapter

Agora vamos criar um BPEL baseado em nosso WSDL criado anteriormente e ligarmos em nosso novo DBAdapter.

Agora abra o BPEL e arraste um Assign para iniciarmos nossas variáveis e um Invoke para nosso DBAdapter:

Após isso arraste mais um Assign abaixo do Invoke para colocarmos uma mensagem de sucesso caso nossa imagem seja gravada com sucesso e adicione também um CatchAll com outro Assign em caso de nossa imagem não ser gravada conforme abaixo:

Vamos iniciar nossas variáveis:

  1. Ligue o idTransacao do input do seu WSDL com o input da sua variável criada para seu Invoke
  2. Ainda no seu input da variável do seu Invoke arraste uma Expression para ela e coloque o código abaixo

ora:getAttachmentContent(“inputVariable”,”anexo”)

Então ficaremos assim:

Preencha sua Variável abaixo do Invoke caso a imagem seja gravada com sucesso.

Pronto.. Agora realize o deploy localmente e vamos testá-lo.

Primeiro no EM pegue o WSDL do seu BPEL

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 + e 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.

Duvidas ? Deixe seu comentário e faça download deste Projeto

Abraços e até a Próxima

/:-D

 

 

Gravando um anexo (Attachment) no Banco de Dados com o BPEL was last modified: agosto 6th, 2015 by Uanderson Carvalho
Uanderson Carvalho: Uanderson Carvalho é um Oracle ACE, 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.
Leave a Comment