Automatizações de registros

Regras de automatização de informações

AUTREG.FAQ-72405
A automatização de registros é composta por uma expressão que define um ou mais registros que devem ser automaticamente criados sob determinadas condições.
A condição está sempre relacionada a uma determinada entidade. Toda vez que esta entidade sofrer alguma modificação, a expressão é verificada e os respectivos registros atualizados.

Com a automatização de registros é possível disparar processos que não seriam possíveis através do comportamento padrão que o sistema oferece.

Exemplos:


Criando regras de automatização

As regras de automatização devem ser cadastradas em Regras de automatizações de registros.
Nas regras, existem 3 campos que são os principais:

O SQL deve retornar linhas com os atributos dos registros que devem ser criados. Qualquer atributo pode ser informado. Note que todas as regras relacionada a entidade serão executadas da mesma forma que seriam no caso de uma manutenção direta através de alguma interface.

Além dos atributos, TODAS as expressões terão de incluir uma coluna a mais com o nome "_CHAVE" (não esqueça de incluir o "_" na frente). Esta coluna será utilizada para identificar o mesmo registro nos eventos de alteração.

Para entender melhor, digamos que a automatização da inclusão de uma determinada tabela tenha criado 2 registros em uma segunda tabela e que a expressão tenha gerado as chaves de identificação X-21 e X-22. Neste momento, o sistema mantém uma memória indicando o ID dos registros criados pela automatização e estas chaves. Mais tarde, se ocorrer uma alteração do mesmo registro na primeira tabela, a expressão é novamente verificada. Caso ela retorne novamente 2 registros mas com chaves X-21 e X-28, por exemplo, o registro criado originalmente com a chave X-21 será alterado, o criado com a chave X-22 será excluído e um novo registro com a chave X-28 será inserido.

Opcionalmente, a expressão poderá incluir uma coluna "_MENSAGEM" que, caso exista, irá gerar uma mensagem na interface para o usuário final na forma:

Exemplos:


Buscando valores atuais na expressão

Em cenários onde a automatização permite a alteração de registros criados automaticamente anteriormente e que exigem que a expressão utilize o valor atual de um atributo, será necessário incluir um "left join" do registro de contexto com o respectivo registro automatizado conforme a combinação regra/chave e outro "left join" para o registro propriamente dito.

Exemplo:

Digamos que existe uma regra de automatização que cria uma tarefa (atividade) para cada item de uma ordem de um pedido de venda e cujo tempo estimado é arbitrado por uma expressão na inclusão apenas. Depois disso, alterações no pedido/item não devem alterar o tempo estimado. Para fazer isso, será necessário com que a expressão considere o valor atual da atividade e utilize uma função tipo "coalesce(valor_atual, novo_valor)". Neste caso, sempre que o registro já existir, então o valor atual será utilizado.

Exemplo:

select ...
, ...
, ped.id || '-' || item.produto_id as _chave
from pedidos ped
join itens_pedidos item on item.pedido_id = ped.id
left join registros_automatizados ra on ra.automatizacao_id = 99999
                                     and chave = ped.id || '-' || item.produto_id
left join atividades ativ_atual on ativ_atual.id = registro_id
where ped.id = ?
...

Gerando registros mestre-detalhe

Muitas vezes, a automatização exige que criemos vários registros em diferentes entidades que sejam dependentes entre si, como relações mestre-detalhe. Nestes casos, será necessário proceder da seguinte forma: