Ponteiro de atualização e Paginação
Criamos um video para exemplificar os conceitos descritos neste tópico. Sugerimos que, após a leitura, assista este vídeo para melhor compreensão.
Após a carga inicial das regras geradas pela Systax, o uso do recurso "Ponteiro de Atualização" permitirá chamar a API e receber somente as atualizações, ou seja, somente as regras novas (de novos produtos ou novas operações cadastrados) ou regras já entregues que sofreram alguma atualização.
A API entrega as regras ordenando-as por sequência númerica de cenário e, dentro de cada cenário, também ordena os produtos por sequência númerica. Assim, imagine que um cliente tem os cenários 1 e 2 e também os produtos 1, 2 e 3. Neste exemplo, a entrega das regras será ordenada da seguinte forma:
Id_cenário: 1 [
codigo_produto: 1
codigo_produto: 2
codigo_produto: 3
Id_cenário: 2 [
codigo_produto: 1
codigo_produto: 2
codigo_produto: 3
Assim, os campos da chamada deverão ser preenchidos da seguinte forma:
codigo_produto: A primeira chamada de cada processo de atualização será sempre com o menor código de produto existente ou com "1" (já que não existirá código menor que este, a API entregará o primeiro existente). A partir da segunda chamada, deverá ser informado sempre o último código de produto recuperado na resposta da chamada anterior, ou seja, na segunda chamada do dia (pressupondo um processo diário de atualização) é preciso informar o último produto retornado na resposta da primeira, já na terceira chamada é preciso informar o último produto retornado na resposta segunda e assim sucessivamente.
id_cenario: A primeira chamada de cada processo de atualização será sempre com o menor código de cenário existente ou por "1". A partir da segunda chamada, deverá ser informado sempre o último código de cenário recuperado na resposta da chamada anterior, ou seja, na segunda chamada é preciso informar o último cenário retornado na resposta da primeira, na terceira chamada é preciso informar o último cenário retornado na resposta segunda e assim sucessivamente. Vale lembrar que, dentro de uma página de dados, poderá ou não ocorrer a troca de cenários (fim dos dados de um cenário e início dos dados de outro).
paginacao: Limitada a 100 registros recuperados por “página” de resposta. Para obtenção de mais de 100 registros é necessário realizar mais requisições.
ponteiro_atualizacao: Informar o ponteiro capturado na resposta da primeira requisição do dia anterior (supondo atualizações diárias). Ressaltamos: não é o ponteiro da resposta obtida na requisição anterior e sim na “primeira” requisição do processo anterior (conjunto de requisições executados em data anterior).
Destacamos: A “paginação” de 100 em 100 registros é controlada pelo id_cenário e pelo código do produto e não pelo ponteiro_atualizacao (que serve apenas como “filtro” de seleção dos registros novos). Durante todo o processo (conjunto de requisições) o ponteiro_atualizacao deve permanecer o mesmo. Deve-se armazenar o ponteiro_atualizacao entregue na primeira página de dados do processo (início da lista de atualização), para que seja utilizado como parâmetro da atualização seguinte (no dia seguinte, quando o processo for diário por exemplo). Importante: Armazene o primeiro ponteiro do dia e não o último, pois durante o processo de leitura é possível que dados de sua base estejam sendo atualizados concomitantemente.
Exemplo de uma atualização em lote com caso de 220 registros atualizados (de um único cenário):
- 1ª Requisição: Retorna os 100 primeiros registros (registros 1 a 100). Retornará também a tag “ponteiro_atualizacao” preenchida com um novo valor de ponteiro, que deverá ser armazenado para utilização em todas as chamadas do próximo processo de atualização (no dia seguinte, p.ex.).
- 2ª Requisição: Deve ser alterado apenas os parâmetros de entrada “codigo_produto” e "id_cenario", informando os últimos retornados na 1ª requisição, com isso o sistema retornará 100 registros a partir daquele último informado (registros 100 a 199);
- 3ª Requisição: Assim como na 2ª requisição, devem ser alterados apenas os parâmetros de entrada “codigo_produto” e "id_cenario", informando os últimos códigos recebidos na resposta da 2ª requisição. Neste exemplo, o sistema retornará os últimos 22 registros do conjunto de 220 (registros 199 a 220).
No exemplo acima foram utilizadas 3 requisições para se obter 220 registros, porém esse processo deve ser repetido várias vezes, até que chegue ao final de toda atualização, que será percebido quando uma requisição retornar menos de 100 registros (isso considerando que o parâmetro “paginacao” esteja preenchido com "100", senão o processo encerrá assim que o número de regras entregues for menor que o número informado como parâmetro de "paginacao").