Tags

, , ,

Vamos neste Post utilizar nosso FileAdapter para Renomear ou Mover um arquivo, este Post não será uma sequência dos anteriores e poderá ser feito a parte.

Consulte os Links abaixo para verificar as demais partes deste nosso Projeto:

Vamos fazer um projeto a parte para caso você precise apenas dele no futuro para acoplar em algum projeto específico, por isso vamos primeiro criar um projeto chamado FileAdapterUtilBPEL conforme abaixo:

Imagem Blog UansCarvalho

Vamos agora importar um WSDL que irá definir nossas operações e nele conterá nosso input(Request) e output(Response) responsáveis pelos nossos parâmetros de entrada e saída que iremos utilizar em nosso projeto BPEL

Então importe o WSDL para nosso projeto FileAdapterUtilBPEL clicando aqui

Agora copie este WSDL para dentro de SOA Content do seu projeto

Imagem Blog UansCarvalho

Criando o BPEL:

Arraste um componente BPEL Process, e deixe as opções conforme abaixo:

  • Selecione a opção BPEL 2.0 Specification
  • Dê o nome de RenameOrMoveBPELProcess
  • Em Template selecione Base on a WSDL
  • Em Service Name coloque RenameOrMoveFile
  • Deixe marcado o flag de Expose as a SOAP serivice
  • Em WSDL URL procure o WSDL que baixamos: FileUtilContract.wsdl

Imagem Blog UansCarvalho

Arraste agora um File Adapter para dentro do seu composite.xml e dê o nome de RenameOrMoveFileAdapter

Imagem Blog UansCarvalho

Deixe marcado a opção Define from operation and schema (specified later)

Imagem Blog UansCarvalho

Abaixo marque a opção Write

Imagem Blog UansCarvalho

Abaixo não é necessário especificarmos muita coisa pois os dados que inserirmos aqui serão perdidos posteriormente pois iremos alterar as propriedades deste componente e por isso podemos colocar o que quisermos neste passo.

Então, coloque apenas uma barra / em Directory for Outgoing Files e coloque um * em File Naming Convention e clique em Next

Imagem Blog UansCarvalho

Marque a opção Native format translation is not required

Imagem Blog UansCarvalho

Clique em Finish

Imagem Blog UansCarvalho

Ligue agora seu RenameOrMoveBPELProcess com seu File Adapter e ficará conforme abaixo:

Imagem Blog UansCarvalho

No seu Projeto procure o arquivo RenameOrMoveFileAdapter_file.jca, pois dentro dele iremos alterar as propriedades do componente.

Imagem Blog UansCarvalho

Fique atento a linha <interaction-spec pois iremos alterar o ClassName e suas propriedades, então troque somente esta linha e as propriedades conforme abaixo:

<interaction-spec className="oracle.tip.adapter.file.outbound.FileIoInteractionSpec">
      <property name="SourcePhysicalDirectory" value="/tmp"/>
      <property name="SourceFileName" value="arquivo.txt"/>
      <property name="TargetPhysicalDirectory" value="/tmp"/>
      <property name="TargetFileName" value="arquivo2.txt"/>
      <property name="Type" value="MOVE"/>
</interaction-spec>

Feito isso abra nosso Processo BPEL:

Imagem Blog UansCarvalho

Em Variables… defina as seguintes variaveis:

  • nomeArquivoOrigem do tipo String
  • diretorioOrigem do tipo String
  • nomeArquivoDestino do tipo String
  • diretorioDestino do tipo String
  • retornoSucesso do tipo Integer
  • retornoErro do tipo Integer

Imagem Blog UansCarvalho

Agora para dentro do seu BPEL arraste um Assign e renomeie para Variaveis_Entrada

Imagem Blog UansCarvalho

Abra este Assign e ligue as variaveis de seu Request do lado esquerdo com as variáveis que criamos acima que estão do lado direito e na variável $retornoSucesso inicialize com 0, veja abaixo como deverá ficar:

  • $inputVariable.parameters/ns1:request/ns2:nomeArquivoOrigem ligar em $nomeArquivoOrigem
  • $inputVariable.parameters/ns1:request/ns2:diretorioOrigem ligar em $diretorioOrigem
  • $inputVariable.parameters/ns1:request/ns2:nomeArquivoDestino ligar em $nomeArquivoDestino
  • $inputVariable.parameters/ns1:request/ns2:diretorioDestino ligar em $diretorioDestino
  • Colocar zero 0 em $retornoSucesso

Imagem Blog UansCarvalho

Arraste um Invoke abaixo do seu Assign Variaveis_Entrada e coloque o nome de Invoke_RenameOrMoveFileAdapter, então clique no sinal + em Input para que crie a variavél de Input conforme abaixo, posteriormente clique em OK.

Imagem Blog UansCarvalho

Clique agora na guia Properties e em To clique no sinal + e em Name: escolha a opção jca.file.FileName e em Variable selecione a variável $nomeArquivoOrigem

Imagem Blog UansCarvalho

Obs: Está é apenas uma tática para aparecer em nosso código fonte as propriedades que precisamos alterar.

Imagem Blog UansCarvalho

Clique em OK acima e no seu BPEL RenameOrMoveBPELProcess clique sobre a caixa do seu Invoke_RenameOrMoveFileAdapter e clique depois em Source abaixo:

Imagem Blog UansCarvalho

Veja abaixo  que o cursor irá parar no seu Invoke e então teremos o código entre a tag <bpelx:toProperty> conforme abaixo:

Imagem Blog UansCarvalho

Agora troque esta propriedade com as abaixo:

<bpelx:toProperty name="jca.file.SourceDirectory"
                          variable="diretorioOrigem"/>
        <bpelx:toProperty name="jca.file.SourceFileName"
                          variable="nomeArquivoOrigem"/>
        <bpelx:toProperty name="jca.file.TargetDirectory"
                          variable="diretorioDestino"/>
        <bpelx:toProperty name="jca.file.TargetFileName"
                          variable="nomeArquivoDestino"/>
</bpelx:toProperties>

Veja abaixo como ficou:

Imagem Blog UansCarvalho

Pronto, agora abaixo do seu Invoke arraste mais um Assign e coloque o nome de Variaveis_Saida.

Imagem Blog UansCarvalho

Dê um duplo clique sobre Variaveis_Saida e ligue a variavel $retornoSucesso que está ao seu lado esquerdo com $outputVariable.parameters/ns1:response/ns2:codigoRetorno do seu lado direito.

Imagem Blog UansCarvalho

Obs: Neste exemplo estou acrescentando algumas variáveis de retornoSucesso e retornoErro caso seja necessário realizar algum tratamento de erro, porem não farei neste Post já que não será nosso foco.

Crie um arquivo em um local qualquer com o nome arquivo.txt e coloque algo dentro deste arquivo para termos certeza que não iremos mexer dentro deste arquivo.

No meu caso criei em /home/uans/Arquivos

Está com o seguinte conteúdo:

Imagem Blog UansCarvalho

Faça o deploy da sua aplicação

Imagem Blog UansCarvalho

No seu Browser vá no endereço http://localhost:10000/em

Obs: A porta 10000 é o numero que escolhi ao criar o meu Domínio do BPEL

Faça o Login:

Imagem Blog UansCarvalho

Clique no seu projeto: FileAdapterUtilBPEL[1.0]

Imagem Blog UansCarvalho

Ao lado direito da tela clique em Test

Imagem Blog UansCarvalho

Então preencha conforme abaixo e coloque os dados de onde você criou o arquivo, no meu caso estão assim:

Imagem Blog UansCarvalho

Obs: Veja que estamos renomeando o arquivo.txt que está em /home/uans/Arquivos para arquivoTeste.txt e estamos movendo para a pasta /home/uans/Arquivos/BKP

Clique em seguida em Test Web Service do lado direito superior da tela

Imagem Blog UansCarvalho

Veja abaixo o retorno do nosso serviço:

Imagem Blog UansCarvalho

 

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

 

Abraços e até a Próxima

/:-D