App.Service(Tarefa de serviço)
Localizado na categoria Entradas do Stencil, este node é responsável por:
Permitir a execução de código em linguagem RUBY armazenando o resultado em seu respectivo Node_X.
-
Alguns exemplos de utilização de código Ruby em fluxo de captura:
-
Formatação de textos, números e datas, como:
- Datas, ordenação de listas numericamente ou alfabeticamente, conversão e normalização de texto em Maiúsculo e Minúsculo.
-
Sanitização de textos (Substituição e ou remoção de caracteres indesejados).
-
Execução de testes condicionais complexos, utilizando como entrada, valores de variáveis (Node_x) do fluxo
-
Integração com outros sistemas, realizando chamadas de APIs, conexões com bancos de dados, etc.
-
Lembre-se que este é um componente extremamente flexível, então se você pode fazer algo em Ruby (atualmente Versão 2.6.7 ) logo é possível aproveitar todo o poder de Ruby aqui no Service. Para facilitar a organização e legibilidade dos seu código (script), você pode utilizar vários node Services para cada etapa, sendo o input de um Service, o resultado da execução de um service anterior.
Sua propriedades do Inspector são: campos indicados com * indicam obrigatórios.
IDENTIFICAÇÃO
ID
Identificador único (somente leitura) do node criado no Graph.
Alias
Identificador único (somente leitura) amigável do node criado no Graph.
O valor do campo Alias, pode ser utilizado como substituto do campo ID em expressões.
CONFIGURAÇÃO
Voltar
- Caixa de seleção onde é possível especificar para qual node (etapa do fluxo) a execução do fluxo deve voltar quando o usuário clicou no botão voltar na tela do equipamento de captura
Código
-
Campo do tipo texto, onde deve ser inserido o código em linguagem Ruby (Versão
2.6.7), utilizando ponto e virgula como quebra de linha.Vamos a alguns exemplos práticos.
EX: Formatar uma data com Dia-Mês-Ano
CODEdate = Date.new(2023, 12, 31);
date.strftime("%d-%m-%Y");Resultado:
CODE31-12-2023*Considere que a variável date ou seus argumentos poderia ser valores de variáveis (Node_x ) de etapas anteriores.
EX: Requisitar um web service de consulta de CEP, via chamada HTTP GET, formatar o JSON em valores separados por ponto e virgula para servir como entrada para um Menu:
RUBY#As 4 primeiras linhas de codigo realizam a chamada HTTP GET
uri = URI.parse("https://viacep.com.br/ws/MG/Belo%20Horizonte/Domingos/json/")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
response = http.get(uri.request_uri)
#Aqui convertemos o resultado retornado pela API em um JSON
json_result=JSON.parse(response.body)
#A variável abaixo ficara responsável por acumular os resutados
menu_content=[]
#percorrendo cada item do JSON para extrair somente o nome da rua e o bairro
json_result.each do |cidade|
menu_content.append(cidade['logradouro']+' - '+cidade['bairro'])
end
#realizando os tratamnetos necessários para montar nosso menu: removendo carecteres indesejados. Trocando , por:
menu_content.to_s.gsub(',',';').gsub('[','').gsub(']','').gsub('"','').stripEste será o retorno da requisição HTTP (exemplo do formato do 1º item):
JSON[ {"cep": "31910-690", "logradouro": "Rua Domingos", "complemento": "", "bairro": "Pirajá", "localidade": "Belo Horizonte", "uf": "MG", "ibge": "3106200", "gia": "", "ddd": "31", "siafi": "4123" }]Este deverá ser o resultado final do seu código, após as formatações necessárias para usar o valor com conteúdo de um Menu:
CODERua Domingos - Pirajá; Rua São Domingos - Barreiro; Rua São Domingos - Jardim América; Rua Domingos Porto - Jardim Montanhês; Rua Domingos Rocha - Salgado Filho; Beco São Domingos - Vera Cruz; Rua Domingos Rocha - Nova Suíssa; Rua Domingos Leão - Horto Florestal; Beco São Domingos - Jardim Leblon; Rua Heron Domingos - Lajedo; Beco São Domingos - Pompéia; Rua Domingos Vieira - Santa Efigênia; Rua Domingos Garcia - São João Batista (Venda Nova); Rua Domingos Grosso - Venda Nova; Rua Domingos Caldas - Madre Gertrudes; Rua Domingos Vieira - Santa Efigênia; Rua Domingos Viotti - Santa Amélia; Rua Domingos Camilo - Santa Margarida (Barreiro); Rua Domingos Sávio - Santa Efigênia; Rua Domingos Bernis - Castelo; Beco Domingos Ramos - São Cristóvão; Rua Domingos Mancini - Brasil Industrial (Barreiro); Praça Domingos Gatti - Barreiro; Rua Domingos Cobério - Jardim Alvorada; Rua Domingos de Souza - Caiçaras; Rua Domingos de Souza - Novo Tupi; Rua Domingos Rodrigues - Conjunto Taquaril; Rua Domingos Ricaldoni - João Pinheiro; Rua Domingos Fernandes - União; Rua Domingos de Azeredo - Salgado Filho; Rua Domingos Martins Pena - Diamante (Barreiro); Rua Domingos Costa Rezende - Braúnas; Rua São Domingos do Prata - São Pedro; Rua São Domingos do Prata - Santo Antônio; Rua João Domingos Fassarela - Confisco; Rua Domingos Francis Drumond - Ouro Preto; Rua Domingos Alexandre Gatti - Diamante (Barreiro); Rua Domingos Rodrigues Costa - Belmonte; Rua Domingos de Souza Bastos - Tirol (Barreiro); Rua Domingos de Souza Bastos - Marilândia; Rua Professor Domingos Gandra - Jardim América; Praça Domingos Perez Furletti - Mantiqueira; Rua Domingos Moutinho Teixeira - Palmares; Rua José Domingos de Oliveira - Lagoa; Rua Monsenhor Domingos Pinheiro - CalafatedicaUtilize o Terminal localizado na barra de ferramentas, para testar a execução e o valor de saída do seu código.
APRESENTAÇÃO
Permite customizar a aparência do componente, aplicando um preenchimento (cor de fundo), contorno (cor das bordas) e estilo das bordas (ex: tracejado).
TEXTO
Permite alterar o texto padrão “Tipo_de_Componente_Node_x“ que é exibido para identificar o componente no fluxo, para um texto personalizado.