Faltando parâmetros de Extrator de Arquivos após importação de LCP

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.