Problema
Nas telas de configurações de passagem de parâmetros para Extratores de Arquivos ou Bots de Mensagens, o nome dos parâmetros é obtido da tabela core.LatromiObjects_Parameters
. Essa tabela serve unicamente para fornecer a listagem dos parâmetro de uma forma fácil, já que a definição dos parâmetros encontra-se no JSON junto com toda a definição do Objeto.
No entando, quando um Extrator de Arquivo ou Bot de Mensagens é importado através de um arquivo LCP (Latromi Content Pakage),bos parâmetros não são exibidos nas telas de passagem de parâmetro.
Causa
Quando um Extrator de Arquivo ou Bot de Mensagens é importado através de um arquivo LCP (Latromi Content Pakage), os registros referente aos parâmetros, na tabela core.LatromiObjects_Parameters
, não são atualizados.
Solução
Enquanto a correção no Software está pendente, existe uma solução paliativa para exibir os parâmetros.
Solução Paliativa
É possível fazer com que os parâmetros sejam exibidos executando um script de banco de dados (SQL) que busque o nome dos parâmetros no JSON e crie os registros correspondentes na tabela de parâmetros.
É isso que o script a seguir faz. Execute-o no banco de dados do Latromi:
DO LANGUAGE plpgsql
$BODY$
DECLARE
r RECORD;
BEGIN
FOR r IN
select
o.id AS objectid,
j.value ->> 'name' AS name,
j.value ->> 'dataType' AS dataType
from core.latromiobjects o
join core.blobreferences br ON br.id = o.blobrefid
join core.blobs b ON b.hash = br.blobhash
join lateral json_array_elements(convert_from(b.content, 'utf-8')::JSON -> 'parameters') j ON true
LOOP
PERFORM TRUE
FROM core.latromiobjects_parameters
WHERE objectid = r.objectid
AND name = r.name;
IF NOT FOUND THEN
INSERT INTO core.latromiobjects_parameters
( objectid, sequence, name, datatype)
VALUES
( r.objectid
, (SELECT COALESCE(MAX(sequence),-1)+1 FROM core.latromiobjects_parameters op WHERE op.objectid = r.objectid)
, r.name
, CASE r.dataType
WHEN 'Number' THEN 1
WHEN 'Date' THEN 3
WHEN 'Boolean' THEN 4
ELSE 2
END
);
RAISE INFO 'Parâmetro % adicionado', r.name;
END IF;
END LOOP;
END;
$BODY$
Correção no Software
Para corrigir o problema definitivamente, é necessário modificar a rotina de importarção de arquivos de LCP para incluir os parâmetros dos Extratores de Arquivos e dos Bots de Mensagens na tabela core.LatromiObjects_Parameters
.