Funções Especiais e Ruby Scripts
A maioria dos projetos demandam que sejam aplicados tratamentos especiais nos dados recebidos e ou processados pelo fluxo.
Um ótimo exemplo são as validações de entradas de dados digitados pelo usuário, como Datas, intervalos numéricos, Placas de Veículo, número de documento pessoal (CPF/RG) etc.
Podemos citar alguns casos de como:
- Durante a execução do fluxo, nas validações de entradas de usuários;
- No processamento dos documentos durante a leitura e extração de indexadores (OCR,m Zonal, Barcode Etc)
- Integrações com o HTF Process (Sistema BPM/Workflows)
- Integrações com outros sistemas, por meio dos “integrators”. (item Integrador App.File(Arquivo)).
Para isso, podemos contar um poderoso conjunto de ferramentas, chamados de Funções, que basicamente, vão receber uma entrada (um ou mais valores), a qual denominados argumentos, e então vão processar este dados de acordo com a logica para a qual foi criada, e em seguida retornar o resultado.
Exemplo do formato de uma função:
minha_variavel = minhaFuncaoEspecial(argumento_1, argumento_2);
Neste exemplo acima, a FuncaoEspecial irá processar os dados recebidos via argumentos 1 e 2 e então o valor retornado será atribuído à variável minha_variavel.
HTF Scan Designer oferece nativamente um extenso conjunto de funções, cada uma para um proposito diferente.
A lista completa e sua documentação pode ser acessada aqui: HTF Apps - Funções Nativas
Vamos explicar alguns exemplos e casos de uso de cada:
- Validar CPF:
check_cpf(CPF_Value)
Parâmetro de entrada: Valor do CPF a ser validado (sem pontos ou hifen), entre aspas:
check_cpf("23637861062")
Retorno: true se CPF for válido, false se invalido.
- Validar data:
check_date(date,format)
Parâmetros de entrada:
Data separada por "/"(barra lateral) ou "-" (hífen). Formato desejado: Ano/Mês/Dia ou Ano-Mês-Dia.
check_date("2023/12/31","%Y/%m/%d")
Retorno: true se for uma data válida, false se invalida.
Além das funções nativas citadas acima, quando se deseja realizar uma validação específica ou tratamento nos dados, é perfeitamente possível criar um script customizado através da linguagem Ruby
O Ruby é uma das linguagens de programação mais populares do mundo. Foi criada em 1995 pelo japonês Yukihiro Matsumoto para ser usada como linguagem de script. Seu uso é de baixa complexidade, o que proporciona uma baixa curva de aprendizado e alta produtividade em pouco tempo de codificação. Possuir diversas bibliotecas (chamadas GEMs) para as mais diversas finalidades.
GEMs: listar aqui…
Atualmente o HTF Scan Desinger utiliza a versão Ruby 2.6.7, portanto sempre fique atento a compatibilidade do seu código/gem com a versão corrente do Ruby (runtime) incluída no HTF. Para checar, basta colar o seguinte comando no seu terminal:
RUBY_VERSION
# 2.6.7
Ruby String → Oferece uma enorme lista de funçoes para tratametnos de Strings (cadeias de texto), como por exemplo:
-
Converter texto para caixa alta ou baixa:
RUBY"abcd".upcase
# "ABCD"
"ABCD".downcase
# "abcd" -
Remover palavras ou caracteres de uma cadeia de texto:
RUBYstring = "bacon is expensive"
string.delete_suffix(" is expensive")
# "bacon"
-
Verificar se um determinado numero está dentro de um intervalo numérico:
RUBYa, b, c = 10, 14, 20
b.between?(a,c) # returns true/false. here true
-
Adicionar ou remover datas, como minutos, horas, dias, meses, anos etc.
RUBYmy_data_time =Time.new(2024, 1, 1) # Primeiro de janeiro do ano de 2024 ou seja: 2024-01-01 00:00:00 -0300
my_data_time - 1.day # soma 1 dia na data acima
#2023-12-31 00:00:00 -0300
Ruby Regex (Expressões regulares).
Uma expressão regular é uma poderosa ferramenta que permite encontrar valores em uma cadeia de caracteres, utilizando como base um padrão, previamente configurado, como por exemplo:
Encontrar a placa de um veículo em um cadeia de caracteres:
Adotemos aqui o novo padrão de placas mercosul: ABC 1C34
-
Encontrar a placa em uma cadeia de carecteres:
RUBY#placa no padrao mercosul esta contida no texto abaixo
str_palca = "A Placa Mercosul viabilizou a mudança da combinação composta por 3 letras e 4 números, ABC 1234, para o padrão ABC-1C34, com 4 letras e 3 números.";
#Expressao regular que procura uma sequencia formada por: 3 Letras - 1 digito e 1 letra e 2 digitos
placa_regex = /\b[A-Z]{3}-\d{1}[A-Z]{1}\d{2}\b/
#valor retornado é ABC-1C34
placa = str_palca.match(placa_regex)
O exemplo acima é um poderosa ferramenta para uso, por exemplo em documentos escaneados, onde o OCR FULL fez toda a extração de texto, mas precisamos extrair somente uma placa de veículo dentro de todo o conjunto de texto.
Apesar do HTF disponibilizar algumas GEMS, caso necessite de alguma GEM especial, que não esta incluída nativamente no “HTF RUBY Runtime” (ambiente de execução de scripts Ruby), entre com contato com nosso suporte técnico para avaliação técnica e possiblidade de instalação da mesma, via arquivo Docker File.