Olá estamos na terceira etapa do rendez de paginação aqui nós já construímos os parâmetros iniciais para caso a base de dados retorne valores nulos ou vazios já construímos o caminho de extracting data então a paginação já está acontecendo Nós só precisamos definir agora a regra de negócio que faz com que a paginação só inicie a 1 hora da manhã porque aqui o meu Trigger funciona a cada 5 minutos Então esse pipeline ele vai ficar executando a cada 5 minutos e à medida que eu chego no final da pagina ação ele ainda vai continuar executando Ele
só não vai fazer registro nenhum eu preciso entender quando que deve ser a hora de iniciar uma nova migração diária E para isso eu vou criar um novo caminho no choice definido como finisher e aqui ele vai fazer essa regra de negócio para entender se o momento atual é maior do que o momento que deveria ter sido iniciada a paginação E caso seja ele vai mudar o step para extraction data novamente então começando as configurações eu vou duplicar esse log de ex data e vou gerar uma nova configuração essa condição vai ser uma condição eu
vou até copiar a cição de cima para facilitar Vou colocar aqui quando for o status for finish Então vou copiar esse Jon Expression vou fazer a configuração do meu choice e aqui na condição O que eu vou mudar é que em vez de extract data eu quero colocar finisher confirmar e aqui no log eu também vou mudar para finisher vamos entender o que tá chegando tá chegando strc data pra gente então ele tá fazendo a paginação vindo pro meio do registro e eu vou aumentar esse limite para que ele atinja por exemplo o final da
paginação de maneira mais mais rápida Vou colocar aqui como 1000 e vou executar colocar aqui como 1000 e assim eu vou executar o meu fluxo para ver se ele chega com step finish nas próximas execuções utilizando um limite elevado ele rapidamente eh já alterou o step para finisher visto que ao tentar fazer a leitura dessa base de dados e ele procurou por registros muito na frente do que a base de dados possui então o resultado foi que ele fez um forit com zero elementos tendo zero elementos ele entende com o step que a paginação acabou
e ele configura o step para finalizado e quando a gente executa aqui na próxima execução a gente cai justamente no step de finisher então estamos aqui temos esses dados presentes no nosso desão de entrada e aqui a gente deve atualizar esses valores para começar novamente colocar start como zero limite como o tamanho do limite o end como tamanho do limite e aí comparar o nex execution timestamp com horário atual para saber se se está na hora ou não de iniciar uma nova paginação então para fazer isso a gente vai fazer o seguinte eu vou atualizar
os dados da paginação para que esse start esse end se torne os valores iniciais e para que control Execute ID caso não exista Caso esteja nulo visto que ao fazer a configuração do valor inicial nós não estamos colocando um defo ele pode vir nulo E aí vindo nulo a gente precisa fazer com que ele deixe de ser nulo logo no começo então vamos aqui eu vou colar aqui esse Block execution que faz o reset desses parâmetros Então vamos ver o que tem dentro doone process a gente tem aqui o seguinte se o start time stamp
foi configurado a gente segue direto se não foi configurado a gente vai configurar esse control ID visto que ele pode vir como nulo já que ele não utiliza da função Def ele Tá acessando diretamente a base de dados Nós também vamos fazer aqui o seguinte nós vamos colocar dentro do do nossa base de dados temporária in paginação os valores iais start end que estão vindo justamente desses registros que já configuramos após isso nós vamos fazer uma a verificação em si que a verificação se está na hora ou não de iniciar uma nova paginação para fazer
isso a gente vai fazer o seguinte logo após e esses registros então eu vou executar novamente para entender o que temos no final desses registros e o que temos é uma inserção no banco de dados então a gente precisa recuperar config e recuperar control também então vou buscar aqui esse componente de session vou vincular ao meu Block execution Então vou colocar aqui get conf config get control e aqui nos Fields eu vou adicionar o control ao confirmar e executar novamente eu vou eu devo ter no meu Dion de saída essas configurações para que eu possa
fazer então a minha verificação vou executar novamente agora sim eu tenho os registros que eu armazenei e aqui eu posso utilizar o next execution time stamp e o start time stamp dentro de config para fazer a verificação se está na hora ou não de executar então para isso eu vou utilizar mais uma vez o componente Choice vou buscar ele aqui e vou buscar também o componente log para poder fazer as verificações seguindo as boas práticas vou fechar todas essas telas de test mode e de paleta de componentes e vamos iniciar a configuração Então a gente
vai saber que está na hora de fazer o Restart quando o momento de execução do pipeline for maior do que o momento de execução definido pela regra de negócio então aqui vai ser o caso de Restart e aqui a gente vai fazer o seguinte na condição quando o meu config ponto start time stamp for maior ou igual ao meu control ponto next execution time stamp time stamp então está na hora de fazer o Restart Então vamos conferir isso novamente antes de tudo deixa eu conferir se eu peguei os valores correto temos aqui ó next execution
time stamp e temos também o start time stamp então está a princípio Está correto vou configurar o meu log Esse vai ser o caso de Restart eu vou colocar como warn porque esse Restart acontece apenas uma vez ao dia e aqui eu vou configurar também o caso que ele não vai fazer o Restart porque ainda não está na hora de começar então ele simplesmente vai parar execução Então esse caso aqui vai ser o Rise o caso de baixo e o nome dele vai ser por exemplo ah esperar a próxima execução ele não vai acontecer nada
ele só vai executar novamente e fazer essa verificação novamente até que o momento esteja adequado poderia ter outro nome o desenvolvedor escolhe o nome que seja descritivo nesse caso aqui o log não vai ser mais a start ele vai ser esperar a próxima execução a aqui o log level vai ser info e aqui eu vou repetir a mensagem aqui quando a gente tá esperando a próxima execução eu não preciso fazer mais nada eu só preciso dizer que estamos esperando a próxima execução e por isso eu já vou buscar um Jon deerat e vou fazer um
Jon de saída então buscando pelo Jason generator na paleta de componentes eu vou simplesmente criar uma mensagem dizendo que está na hora de ele vai simplesmente esperar a próxima execução mensagem que eu coloquei foi um Dion de saída Dizendo que ainda não é hora de recomear a migração diária vamos esperar até a próxima execução eu vou confirmar eu vou voltar pro caminho em que está na hora de começar a a a migração que é o caminho de Restart E para isso a gente deve definir o step como strating data novamente e a gente vai recomeçar
o looping vindo aqui até o momento que ele vai parar a paginação e vai vir para cá e assim por diante seguindo nesses dois caminhos de de Choice à medida que está na hora ou não de começar a migração para fazer essa atualização no Cassandra dizendo que está na hora de comear com STR Indira eu vou colar mais uma vez um Block execution que é correspondente ao update desses dados do Cassandra aqui vamos vamos linkar o connector log com esse com esse Block execution e aqui dentro que a gente vai fazer as atualizações vai ser
o seguinte a gente vai fazer o update na paginação para que o meu step se torne STR data e meu end aqui se torne o posso colocar inclusive como nulo aqui para que meu end ele seja vinculado no momento de início do do line com aqueles parâmetros iniciais e com isso a gente já está praticamente no fim da nossa página ação Só precisamos agora fazer as boas práticas e preparar todas as saídas para que fiquem da maneira correta então recapitulando nós fizemos aqui eh o início dos parâmetros de paginação e para cada caminho aqui no
caso de extração de dados ele faz o upload o update nesses registros então a cada execução eu pego novos registros e não registros repetidos até o momento que ele reconhece que está no fim e ele coloca o step como finish quando o step estiver como finisher ou seja finalizado ele vai ficar executando nesse caminho até o momento de recomeçar uma nova migração e quando recomeçar a nova migração que é 1 hora da manhã do dia nós vamos entrar nesse Block execution e Vamos definir o step como extraction data novamente e o start como zero e
o end como esse end que iniciamos de valor padrão o que nos resta agora é simplesmente colocar as saídas de erro adequada para que a gente consiga entender o que está acontecendo em todos os casos eu vou fazer essa eh esse resumo da execução essa esse tratamento de output e eu já mostro os componentes em breve após configurar os outputs temos aqui por exemplo esse set output depois do update data control que vimos anteriormente para que tenhamos uma mensagem assim que a paginação recomece Então a gente vai fazer o update para exct data logo depois
vamos receber informação de que está na Hora de Recomeçar o outro tópico aqui é que depois do update data control nós vamos colocar aqui esses valores pra gente encontrar e os dados da paginação para fazer um output mais mais compreensível para o desenvolvedor então caso eu teste novamente todo esse fluxo os resultados são por exemplo nós estamos lendo os resultados do Database então a gente tá no momento Dea se a gente continuar executando esse resultado tá como nulo porque eu coloquei como sumário Então vou alterar esses valores e a gente vai perceber que aqui a
gente tá lendo os registros do Database então ele tá vindo por esse caminho aqui E à medida que chega o momento que esses registros acabarão nós vamos pro caminho de baixo é entender quando que está na hora de executar novamente ou não com os valores atualizados colocando agora como summary logo depois do Da stram e atualizando aqui os os parâmetros de F de controle paginação ao fazer a execução nós temos aqui o o resultado da stream nós vemos que o total é zero então provavelmente o meu step se torna finish E aí a gente segue
o caminho de baixo e fica no caminho de baixo até o momento do do início da paginação então nós transformamos esse pipeline aqui que tínhamos o a consulta com a base de dados e um um pipeline paginado utilizando os controles de paginação e utilizando e utilizando o Choice fazendo dois caminhos que são traction data e fined E assim a gente consegue fazer o controle e fazer a nossa api se tornar uma API paginada is se a gente finaliza aqui o nosso R Zone finalizamos também a integração e demonstra arquitetura e padrões de projeto Dois