Fonte de dados Genérica
Como fazer uso dela e otimizar a performance de seus artefatos?
A fonte genérica é uma fonte de dados existente nos scripts dos sistemas Folha (Cloud), Recursos Humanos (Cloud) e Ponto (Cloud), a qual tem por finalidade auxiliar na criação de scripts que necessitam de um controle do dado gerado/enviado. Basicamente esta fonte faz operações de CRUD em uma tabela onde o desenvolvedor cria um identificador único para o item, para que assim, ele possa consultar, inserir, alterar e remover um dado via fonte de dados.
Confira abaixo as propriedades da fonte e exemplo de uso de cada método.
id
É o id do próprio registro da tabela dinâmica, é necessário quando for atualizar um, excluir um registro existente, neste caso será passado o id que deseja alterar.
TipoRegistro
Use um identificador macro como integracao-minha-folha-pessoas ou integracao-tribunal-SC-ATOS. Você deve definir um identificador que faça sentido ao tipo de registro que está guardando, não use um identificador muito genérico como pessoas ou atos" para não correr o risco de algum acabar usando indevidamente para outro fim, como sugestão sempre use a finalidade no tipo de registro conforme exemplos acima.
Identificador
O identificador único do registro, normalmente o mais indicado é utilizar o próprio id do registro que está integrando, por exemplo, se for uma integração de matrículas, pode usar o id da matrícula, de pessoas, o id da pessoa, quando for necessário criar outro identificador pode ser feito, respeitando que: o integrador deve ser único por tipo de registro e você deve ter uma lógica que lhe permita recuperá-lo na consulta.
Conteúdo
O conteúdo é a informação que necessita ser armazenada, normalmente um id de um registro integrado, no entanto, é possível armazenar qualquer outra informação no formato de uma string.
Caso o valor a ser armazenado seja um json ele deve ser guardado como uma string de json, podendo utilizar a função JSON.escrever() para isso, e posteriormente a função JSON.ler() quando for necessário parsear o json na consulta.
Consulta
tipoRegistro = "integracao-exemplo-pessoas"
identificador = pessoas.id
idBanco = buscaPorIdentificador(tipoRegistro, tipoRegistro, true )
/**
*Abaixo uma função de busca que pode ser utilizada na consulta, podendo retornar o id do registro ou conteúdo*
*/
def buscaPorIdentificador = { tipoRegistro, identificador, somenteID = false ->
String tipo = tipoRegistro
def json
json = fonteFonteGenerica.busca( criterio : "tipoRegistro = '${tipo}' and identificador = '${identificador.toString()}'" , campos: "id, identificador, tipoRegistro, conteudo", primeiro : true )
if ( somenteID ){
return json?.id
}
}
Inserção
fonteFonteGenerica = Dados.folha.v1.fonteGenerica;
tipoRegistro = "integracao-exemplo-pessoas"
idIntegracao = pessoas.id
idGerado = "5f158cfa0e717c0001488f2c"
Object registro = [ tipoRegistro : tipoRegistro , identificador : idIntegracao , conteudo : idGerado ]
fonteFonteGenerica.importa(conteudo : registro);
Atualização
fonteFonteGenerica = Dados.folha.v1.fonteGenerica;
tipoRegistro = "integracao-exemplo-pessoas"
idIntegracao = pessoas.id
idGerado = "5f158cfa0e717c0001488f2c"
idBancoFolha = buscaPorIdentificador(tipoRegistro , idIntegracao, true );
Object registro = [ id : idBancoFolha, tipoRegistro : tipoRegistro , identificador : idIntegracao , conteudo : idGerado ]
fonteFonteGenerica.atualiza( parametros : [ "id" : idBancoFolha ] , conteudo : registro );
Remoção
fonteFonteGenerica = Dados.folha.v1.fonteGenerica;
idBancoFolha = buscaPorIdentificador(tipoRegistro , idIntegracao, true );
fonteFonteGenerica.exclui(parametros : [ "id" : idBancoFolha] );