agora que já construímos os valores padrão para poder fazer a paginação é hora de decidir qual etapa está a partir do step o step vai nos definir se estamos no momento de extração de dados ou estamos no momento de esperar que a paginação comece por conta da lógica de negócio de Next execution timestamp juntamente com a data de início o o Amp de início dessa execução então no momento que o início dessa execução for maior que next execution timestamp significa que está na hora de começar uma nova extração de dados isso porque vamos imaginar que
esse nex execution time stamp significa 1 hora da manhã do dia 12 de Agosto todos os momentos anteriores a isso de execução no dia 10 de Agosto 9 de agosto eu tentar executar não deve acontecer nada porque o momento que está executando não está no momento da próxima execução Isso só vai mudar quando a execução ultrapassar uma hora da manhã de agosto e nesse momento quer dizer que deve começar a extração E aí a gente vai mudar o step para extracting data e vamos iniciar mas para isso vamos colocar um Choice no final e analisar
sobre esse step onde devemos seguir então o primeiro passo aqui é buscar pelo componente Choice vou buscar por componentes log para seguir as boas práticas como estamos acostumados e que vamos ter três condições nesse componente de Choice a primeira condição vai ser no caso de step com strc data Então vou colocar em letra maiúscula exting data para isso eu vou vir aqui e vou perguntar se o meu config pon step exatamente igual atingira Esse é o primeiro caso eu vou colocar no meu log esse valor ele vai ser simplesmente info e eu vou colocar message
também como STR Neira Antes de iniciar o estado de finalizado eu vou iniciar um estado de erro quando não é nem strc data nem finalizado então eu vou buscar aqui eu vou colocar como od Rise então aqui step desconhecido eu vou colocar como od Rise vou copiar esse valor para colocar no meu log e esse valor vai ser um erro nós vamos parar o fluxo visto que não programamos esse step então eh ele não não deve continuar o fluxo nós devemos interromper com provavelmente um trow erro então vamos buscar o Troll e já parar esse
fluxo depois nós vamos configurar o troll da maneira adequada mas já vou parar esse fluxo diretamente nesse step desconhecido agora que a gente já pode configurar o extraction data data eu vou reorganizar meu pipeline e aqui a gente vai iniciar essa construção de quando devemos extrair o dado que deve acontecer então primeiro passo aqui é o seguinte já tínhamos esse todo esse valor construído anteriormente que corresponde a simplesmente extrair os dados e publicar eventos aqui essa api ela é paginável para isso a gente utiliza como Carry nesse data eu vou pegar os controles que definimos
como e control para poder decidir em qual página está essa execução Então o que eu vou fazer aqui é buscar por config vez que control ele já se enc já se encontra noss de saída por meio do nós temos control aqui mas nós não temos config Então o que vou fazer vai ser buscar esse componente então copiar e colar vou colar na frente do conector log se eu executar provavelmente vamos ter agora o config justamente juntamente com essas informações aqui resultou em erro é porque ele está indo pro caminho de baixo o step tá como
desconhecido eu vou procurar qual esse erro provavelmente Foi um erro dentro de das configurações da condição e a gente vai avaliar o que que aconteceu mas antes eu vou acessar as mensagens entender que antes de ir pro l descido aqui ó Foi log descido temos control e dentro de control temos step provavelmente coloquei config control acessar o step stru data justamente aqui era control eu coloquei config Vou confirmar e vou testar novamente Agora eu tenho tanto os dados de control quanto os dados de config presentes no meu n cam de com isso eu já posso
ligar diretamente o meu session a minha api que estamos paginando fica dessa forma e aqui nós vamos vamos utilizar esses dados que recuperamos nos Carry par dessa requisição então aqui em configurações eu Vou acessar os Carry PMs eu vou apenas colocar um atributo chamado page size esse page size vai ser justamente meu message pon config p limit e o outro parâmetro que vamos adicionar é o skip skip nos Dios dados vamos P enquanto P si nos diz apenas o tamanho da página assim eu vou colocar e o resultado o adulto que procurando na mensagem é
o mest p contol ISO precisamos tanto de config quanto de control para fazer a paginação e é por isso que utilizamos o s a fazer isso nós já estamos utilizando a API de maneira paginada o problema é como vimos no slide para fazer isso nós precisamos também atualizar os dados de paginação o que está acontecendo aqui é que eu estou sempre pegando o start 6 e o end 8 eu não estou atualizando os dados então todas as execuções vão pegar apenas esses dois registros repetidamente e continuadamente devemos atualizar esses dados constantemente a cada execução para
fazer essa mudança dinamicamente para fazer essa atualização eu vou colocar os resultados dentro de um Block execution no momento eu vou vir no resom da execução eu vou diretamente depois do resultado da do meu forit inici colocar um Bloc execution com as atualizações do meu Cassandra Depois a gente pensa em resumo da execução então o ponto principal aqui é pegar todos esses valores vamos deixar ele em segundo plano por enquanto e vamos atualizar os parâmetros de paginação Então vou cortar essa ligação eu vou colar aqui um Block execution que é o update data control dentro
desse Block execution nós vamos acessar o Cassandra e vamos atualizar os dados de paginação dinamicamente então aqui dentro após eu ter feito a o envio de todos os registros me meio do forit a gente vai vai ver o seguinte temos o resultado desse forit dentro de um atributo chamado result então se eu acessar as configurações na verdade temos um local dentro de summary Eu vou acessar esse sumary para entender se está no fim ou não Da Nossa paginação então aqui dentro temos o seguinte a gente pega o resultado de control config e o resultado da
da stream que seria o sumary e aqui a gente vai ver o seguinte a gente vai avaliar se Estamos no Fim da paginação ou se existem novas páginas para serem lidas e a gente vai fazer isso da seguinte forma se o resultado da stream que tá dentro de sumary ponto total no caso não é ponto total porque Total já estamos avaliando dentro da expressão em si Então dentro de sumary T foi maior do que zero se ele for maior que zero significa que na última execução ele conseguiu ler dados a gente só vai falar que
está no fim da página ação quando toro foi igual a zero então se ele não for maior do que zero significa que ele não leu nada isso significa que a gente chegou no fim da execução no fim da página ação Então temos o seguinte quando Total for maior do que zero nós vamos ter mais páginas a serem lidas e aqui a gente vai fazer o update do cont de pgina ação primeiro passo aqui é por meio do de generator fazer com que o start receba o end Anor uma vez que se Começamos do elemento 100
e fomos até o 199 ou 200 agora a gente vai começar do 200 até o 300 e assim por diante e o end ser o novo é o limite mais o end anterior então se o meu end nessa execução era 200 meu próximo end vai ser o end atual mais o limite que é 100 Então seria por exemplo 200 mais 100 300 assim depois que a gente atual esses dados É só inserir eles novamente dentro do Cassandra que a gente vai fazer esse update dos dados da paginação então aqui a gente faz o update por
meio do Set colocamos o start e o Eng dinamicos que acabamos de definir e o execution k continua o mesmo definido na mensagem assim toda vez que a gente passar para uma execução que está fazendo a página em si ele já vai atualizar os dados para que na próxima execução ele consiga de maneira adequada entender Qual é a página e quais são os dados que devem ser pulados Vou confirmar e agora a gente vai pro caminho do finalizado o que acontece aqui é o seguinte se não existem mais páginas a serem analisadas então a paginação
acabou e se isso aconteceu visualizar o de maneira que a paginação tenha acabado para fazer isso você colocar o step como Fer para que a gente saia desse caminho do looping e colocar o execution Key mantendo esse execution Key para fazer com que todo esse registro de paginação se com isso a gente finaliza a etapa de exting data aqui nós estamos atualizando o finisher para quando acharmos a última página mas também estamos colocando a atualização quando estamos ainda processão dos dados paraas próximas páginas dinamicamente o passo a se fazer agora é voltar no início do
fluxo e começar a fazer o caminho de finisher nos vemos nos próximos vídeos