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:
- Trabalhando com FileAdapter no BPEL – Parte 1: Lendo o arquivo de um diretório
- Trabalhando com FileAdapter no BPEL – Parte 2: Lendo o conteúdo do arquivo
- Trabalhando com FileAdapter no BPEL – Parte 3: Gravando o conteúdo do arquivo no Banco de Dados
- Trabalhando com FileAdapter no BPEL – Parte 4: Renomeando ou Movendo um arquivo
- Trabalhando com FileAdapter no BPEL – Parte 5: Deletando um arquivo
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:
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
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
Arraste agora um File Adapter para dentro do seu composite.xml e dê o nome de RenameOrMoveFileAdapter
Deixe marcado a opção Define from operation and schema (specified later)
Abaixo marque a opção Write
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
Marque a opção Native format translation is not required
Clique em Finish
Ligue agora seu RenameOrMoveBPELProcess com seu File Adapter e ficará conforme abaixo:
No seu Projeto procure o arquivo RenameOrMoveFileAdapter_file.jca, pois dentro dele iremos alterar as propriedades do componente.
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:
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
Agora para dentro do seu BPEL arraste um Assign e renomeie para Variaveis_Entrada
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
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.
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
Obs: Está é apenas uma tática para aparecer em nosso código fonte as propriedades que precisamos alterar.
Clique em OK acima e no seu BPEL RenameOrMoveBPELProcess clique sobre a caixa do seu Invoke_RenameOrMoveFileAdapter e clique depois em Source abaixo:
Veja abaixo que o cursor irá parar no seu Invoke e então teremos o código entre a tag <bpelx:toProperty> conforme abaixo:
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:
Pronto, agora abaixo do seu Invoke arraste mais um Assign e coloque o nome de Variaveis_Saida.
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.
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:
Faça o deploy da sua aplicação
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:
Clique no seu projeto: FileAdapterUtilBPEL[1.0]
Ao lado direito da tela clique em Test
Então preencha conforme abaixo e coloque os dados de onde você criou o arquivo, no meu caso estão assim:
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
Veja abaixo o retorno do nosso serviço:
Duvidas ? Deixe seu comentário e faça download deste Projeto
Abraços e até a Próxima
/:-D