Páginas filhas
  • Documentação Jolt customizado

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

  1. Criar uma classe com o nome no formato ‘Jolt____.java’. Na package infra.jolt.custom.functions.impl;

  2. Sua classe deve ser anotada com o Bean @JoltCustomFunctionEnable para que ele possa ser compreendido pelo projeto;

  3. Sua classe deve implementar a interface JoltCustomFunction;

  4. Você deve implementar todos os métodos da interface;
    1. O método execute(Object value) tem como objetivo implementar a lógica das funções Jolt que não recebem parâmetro;
      1. Caso você não deseje implementar uma operação para esse cenário, você deve retornar o próprio atributo ‘value’. Caso isso não seja feito, pode causar uma exceção.

    2. O método execute(Map<String, Object> jsonValue, List<Object> parâmetros) tem como objetivo implementar a lógica das funções Jolt que recebem parâmetro;
      1. Caso você não queira implementar um método para quando for informado um parâmetro deve retornar null;
      2. Nos casos em que você quer usar só uma quantidade limitada de parâmetros, você pode acessa-lo através da função this.getValueParameterByIndex(INDEX, parâmetros). Sendo Index o número do index do parâmetro que você quer acessar. Exemplo:


    3. O método getFunctionName() tem como objetivo nomear sua operação customizada;
      1. Retornar uma String com o nome do método que será utilizado no Jolt customizado.
    Alterar em /src/test/resources/Jolt/dados/dados-base64.jsonEsse json representa o json recebido pelo WSH e que irá ser convertido. Você pode adicionar um novo atributo para poder usar suas funções de conversão conforme próximo tópico.
    Alterar em /src/test/resources/Jolt/layout/layout0base0640decode.jsonEsse json é onde utiliza as funções Jolt para fazer as transformações. Nela você irá usar sua função customizada para verificar se as transformações estão funcionando conforme o esperado.
    Para testar, será necessário acessar a classe de teste em /src/test/java/winthorsmarthube.domain.transformador/TransformadorLayoutTest.javaExecutar essa classe no modo debug com um breakpoint na função ‘test()’ na linha do assert para verificar o atributo ‘dadosTransformados’. Caso a classe transformada esteja conforme o esperado, sua função está funcionando
  5. E para utilizar a função é só realizar a operação do tipo 'operation' sendo "br.com.totvs.integracao.winthosmarthube.infra.jolt.custom.JoltModifyCustomOperation'. e dentro de spec, utilizar as funções customizadas criadas.


Como criar e testar funções customizadas:

...

  1. Criamos a classe JoltHorarioAtual.java


  2. Anotamos a classe com o bean @JoltCustomFunctionEnable e implementamos a interface JoltCustomFunction


  3. Implementamos os métodos obrigatórios da interface


  4. Quando formos utilizar nossa função, quero que seja chamado o método “=horarioAgora”.


  5. Para as regras, vou implementar o método caso não seja informado nenhum parâmetro retornando o localDateTime atual. Exemplo de uso dessa função “=horarioAgora” e irá retornar o valor: “2022-08-19 18:51:48”


  6. E caso ela queira me passar um formato de data especifico, ela deve passar os parâmetros. Conforme podemos ver, só o primeiro parâmetro será utilizado nessa função.


  7. Para testar, vamos editar o arquivo dados-base64.json na package “src/test/resource/jolt/dados”dados” 


  8. E vamos editar nosso layout de teste na package “src/test/resource/jolt/layout”. Inicialmente, vamos fazer a operação sem passar parâmetros e sobre escrevendo o ‘horarioAntes’. 

  9. Verificando no debug do nosso teste, vemos que o Jolt transformado contem nossa variável ‘horarioAntes’ com o valor atual.


  10. Agora para testar a versão em que é passado o parâmetro de formato de data esperado, vamos alterar nosso layout de transformação Jolt de teste para um formato diferente. 

  11. E ao executar com o debug, vemos que o formato retornado foi conforme informado no layout.