Processo
Processo de Integração¶
O processo de integração acontece em duas etapas, a primeira como descrita na introdução faz parte do Fluxo Inicial da Integração onde os dados a serem sincronizados são coletados via Triggers, passam pelas validações e são inseridas nas tabela de integração. A partir desse momento começa o processo de envio para o DRP.
Processo de Envio¶
O Processo de envio acontece através da execução de duas Tasks, uma responsável pelo envio dos dados pendentes e a outra responsável pelo envio dos erros. Ambas possuem o mesmo fluxo de trabalho, porém são separadas para evitar problemas com grandes massas de dados em todas as requisições.
O fluxo de envio acontece da seguinte maneira:
-
Exclusão de registros inconsistentes: Nese momento são excluídos todos os registros que não existem em suas respectivas views, isso ocorre pois não é possível fazer esse controle de forma efetiva no momento da inserção dos registros na tabela e para evitar processar dados desnecessários.
-
Busca de Processos a Executar: Nesse momento será buscado todos os processos pendentes de envio, para processar apenas os envios que realmente existam dados pendentes
-
Envio de Dados: Neste momento, o sistema irá iterar para todas as integrações ativas, realizando o envio dos processos encontrados.
Fluxo de Envio¶
O fluxo de envio é responsável por buscar as informações do registro, enviar para o DRP e manipular os retornos, todos os processo possuem o mesmo fluxo como descrito abaixo:
-
Busca de Dados: Neste momento o sistema busca os dados pendentes de envio para o processo que está sendo executado. Existem processos onde essa busca possui limites de quantidades de registros, isso foi feito pensando em performance de sistema.
-
Criação do Lote de Envio: Neste momento serão criados lotes de envio com o tamanho definido nas configurações de lotes e os mesmos serão serializados para serem enviados para o DRP
-
Execução do Envio: É neste momento que é realizada o envio para o DRP, isso ocorre através da chamada do Gateway do processo em questão.
-
Manipulação de retorno: Neste momento será manipulado os retornos do DRP, tratando individualmente o retorno de cada registro.
4.1. Manipulação de Sucessos: Itens que tenham retornado o Status OK serão excluídos da fila de processamento
4.2. Manipulação de Erros: Os itens que forem retornados com qualquer erro, terão seu registro na fila de envios alterada de Pendente (P) para Erro (E). No caso de envios de erros, esses registros serão excluidos da fila e será adicionado um histórico do erro de envio, para posterior análise desses registros.
Observações¶
-
Alguns processos podem ser enviados de forma simultânea, esses são processos que não possuem dependencias de dados e serão enviados antes de qualquer outro. Para saber se um processo pode ser enviado de forma simultânea, deve ser observado a propriedade PodeProcessarAssincrono na implementação do envio.
-
Para fins de performance de sistema, foi definido um limite de 20 iterações por processo. Cada iteração executa o fluxo inteiro documentado acima, respeitando as quantidades de dados enviados.