Tags
Attachments, BPEL, DBAdapter, Deploy, EM, Invoke, JDeveloper, MIME, Oracle, Payload, SOAUI, Submit
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:
- Ligue o idTransacao do input do seu WSDL com o input da sua variável criada para seu Invoke
- 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
Arthur Gomes said:
Não tem como você me disponibilizar esse WSDL? Só pra agilizar aqui. Muito bom o Post…valeu.
Uans said:
Opa, fiz ainda melhor, no final do Post disponibilizei o download do arquivo.
Espero que ajude.
Abraços