Olá esse é o integration developer Camp estamos na etapa de boas práticas de desenvolvimento hoje falaremos sobre componentes de Loops alguns componentes da plataforma de B nos permitem criar Loops eflux processamento conform necessário esses componentes nos permitem criar sub pipelines para processamento e os principais componentes que nos permitem isso são Block EB os únicos componentes de loop nessa imag são o for ndb Block execution não é um componente de loop ele é apenas um componente que possui a tecnologia de subfluxo falando do farit componente farit Recebe como um parâmetro um Array cada item desse Array
irá passar pelo subfluxo criado dentro do um process na barra de navegação superior é apresentado um mapa informando a posição do loop nesse caso temos um loop dentro de pipeline principal dessa forma no Nosso pipeline principal Nós entramos no process de um farit logo um subfluxo do on process será aberto e no no caso da imagem há um log presente o on process do meu farit componentes de loop geram sumarizadas ao final da execução sumarizadas gerados são total success e failed para que o sumarizadas seja incrementado um atributo denominado success com valor true deve estar
presente no dião de saída do componente de loop então aqui temos o caso de um farit que está iterando dois elementos de um Array então Total aqui ficou como dois success e fail representam sucesso ou falha no on process desse forit porém o sumarizados Jon dentro do on process ou dentro do do Exception seja success com valor true vamos dar uma olhada na plataforma para entender como que funciona a configuração desse componente e entender um pouco melhor sobre essa sumar adores agora com a plataforma aberta nós puxamos O componente for it e dentro do meu
on process eu coloquei um log apenas para demonstração aqui nós percebemos a que existe um um certo mapa cima perto do título pra gente navegar entre os subfluxo então estou no meu pipeline principal ao acessar o farit o on process do farit aparece farit on process para voltar ao pipeline principal eu preciso clicar no título vamos configurar esse componente parit anteriormente eu vou colocar no meu Dion de entrada a lista que possui dois elementos que são dois objetos e dentro das configurações do meu forit eu vou iterar essa minha lista for utiliza do Jason pef
Expression para fazer filtros então aqui eu coloquei que na minha raiz eu vou iterar a lista Minha lista ao confirmar e executar o resultado é que ele me dá um sumarizados total success e failed Total representa quantos registros foram iterados nesse caso colocamos para todos os registros de minha lista serem iterados e a minha lista possui dois registros logo o resultado foram duas iterações quantidade de sucessos e falhas é medida a partir de um atributo chamado success Então para que dentro do meu forit seja considerada uma interação como sucesso eu preciso colocar um atributo success
com valor true no final do meu de saída do forit demonstração vou pegar o Jason generator e eu vou colocar essa configuração para demonstração do do incremento do sumador então aqui sucesso e aqui eu vou colocar um atributo chamado success valor confirmar toda a iteração desse loop ele vai vai entrar no meu process vai verificar essa chave de sucesso e vai aumentar no meu sumador então a pressionar Play novamente resultado é que ele percebe que todos os casos foram Sucesso Por conta desse suador vamos entender melhor esse processo de entrada da mensagem dentro do meu
forit vamos ver isso a partir das mensagens então nessa execução Eu tenho dois registros sendos iterados e dois casos de sucesso quando eu vou em mensagens e aperto em update vou fechar a paleta de componentes antes eu tenho o seguinte o input do meu pipeline foi a minha lista Então é isso é o que o Trigger Está entregando para o forit e dentro do forit nós temos esses seguintes cards acontece é o seguinte agora que ele já sabe qual lista nós temos que iterar dentro do me process ele vai fazer essa repetição para cada elemento
da minha lista então tínhamos esse dião de entrada e ao entrar no meu farit ele vai pegar cada elemento dessa lista e vai iterar Então nesse caso a primeira iteração é a partir do registro um Então ele pegou o meu primeiro objeto e a partir desse primeiro objeto nós fazemos um um certo processamento aqui colocamos um log colocamos logo depois o sues como TR depois que ele fez a iteração do primeiro elemento ele faz a iteração do segundo elemento então O resultado é que esse procedimento se repete Agora nós estamos no registro dois e aqui
temos o CP do registro dois ele passa pelo log e depois passa pelo pelo Jão de generator novamente O resultado vai fazer com que nesses dois casos o sumarizados como só temos dois x sucesso ficou como dois assim nós voltamos ao fluxo principal depois do processamento de looping e aqui ele continuaria algum processamento caso definimos é assim que funciona o componente de loop na plataforma tanto para o forit quanto para stram DB por ele utilizada a expressão Jon pa nós poderíamos colocar mais atributos aqui para por exemplo pegar um caso em que o nome possui
registro um o ID possui registro maior que 10 entre outros fazer algum tipo de filtro para selecionar os elementos que serão interados por exemplo eu posso pegar apenas o primeiro elemento eu vou pegar o elemento de índice zero Vou confirmar e o resultado é que ele vai iterar somente esse elemento ao apertar play nós temos que um registro foi iterado e aqui temos o caso de sucesso um quando eu vou em mensagens novamente eu percebo que o registro iterado foi o primeiro e logo depois o loop parou justamente para eu definir aqui no Jon press
Expression o que eu quero iterar ou não caso acontecesse algum tipo de erro dentro do meu home process assim como todos os componentes de subfluxo esse erro seria encadeado para o forate para o One então eu vou provocar um erro colocando um trow e todos os meus registros resultarão em erro por conta desse troll como agora a última chave não é su de valor true temos aqui duas iterações com duas falhas forit ele disparou o erro para os dois registros logo por conta disso ao irem mensagens e update nós não conseguimos enxergar o erro porque
nós não definimos nada no meu no no Exception então o Exception Está capturando erro mas como não colocamos nenhum valor lá dentro nós não conseguimos pontuar O que que está acontecendo percebemos que ele vai pro log vai pro Sucesso depois ele vai pro log vai pro Sucesso mas os summarizes estão dando falha então para entender melhor o que tá acontecendo nós vamos notion que primeiramente está vazio mas vamos colocar um log mesmo que não façamos nenhum tipo de tratamento de erro e esse log ele vai se chamar erro colocar como um war por exemplo eu
vou só copiar essa mensagem aquix confirmar e apenas de colocar o log dentro do meu Exception e executar novamente os resultados dos summarizes são os mesmos mas na hora de fazer a manutenção do pipeline vamos perceber que agora nós temos a mensagem de erro provocada dentro do me process e é por isso que todas as vezes que nós utilizarmos componentes de subfluxo é de extrema importância você colocar pelo menos um log para entender o erro que tá chegando lá mas não está entre aspas planejando esse erro Nós não estávamos preparados então todo erro que acontecer
no process ele será capturado pelo Exception conseguiremos aqui fazer algum tipo de manutenção agora vamos voltar pra apresentação e falar agora sobre compb o componente stram DB ele faz referência a tecnologia de banco de dados então a diferença é ele recebe como parâmetro uma consulta ao banco de dados e cada registro retornado da consulta pel fluxo criado dentro de um process então componentes de stream funcionam como buffers de dados gerando processamentos conforme os dados são recebidos então aqui o ponto é o seguinte no componente DB V2 por exemplo que é um componente que chamamos fazemos
consultas ao banco de dados nós podemos selecionar diversos componentes a partir do skl Statement o string DB ele faz com que o resultado dessa consulta já seja iterado como se fosse pelo forit então a lógica dos resultados é a mesma vamos olhar no novamente nesse componente diretamente na plataforma antes de demonstrar o funcionamento do stream DB vamos olhar primeiro o dbv 2 então aqui no fluxo eu coloquei o componente de banco de dados eu estou fazendo referência a três registros de uma tabela chamada NB Person aqui ao executar nós temos o seguinte temos um Array
data retornando três registros de pessoas aleatórias aqui para ar c da registro eu puxaria o componente for it como vios anteriormente depois o forit eu pegaria esse Array e faria as iterações na hora de configurar teria que vir no Jon PF Expression e pedir para ele iterar o Array dat confirmar aqui apenas de apertar play o resultado retornará um o resultado será um erro porque nós não colocamos nenhum componente dentro do process do farit então nós precisamos entrar no nos process e colocar pelo menos alguma coisa aqui para que ele funcione Vamos colocar um log
assim nós conseguiremos ver qual a mensagem que está chegando com o log dentro do farit eu vou apertar em Play novamente resultado São três iterações Quando vamos em mensagens e depois update veremos o seguinte temos o select do banco de dados que puxou o Array data com três elementos e o forit pegando cada elemento iterando um por um então em D1 e D2 e T3 como não colocamos o sues com valor true O resultado é que ele considerou como Três falhas porém tem uma maneira mais performática de fazer isso é utilizando o string DB B3
vamos puxar esse componente e vamos configurar o string DB assim como configuramos o banco de dados aqui Então vou pegar a mesma sentenç skl vou copiar Vou acessar o string DB vou colar a mesma e vou manter as configurações também com essa Database URL confirmar então aqui nós já conf configuramos o banco de dados agora Precisamos configurar o mesmo tratamento aqui colocamos o mesmo processamento aqui colocamos um log então aqui dentro também colocaremos um l dentro do process do meu stream DB com componente configurado podemos fazer a comparação aqui nesse caso anterior nós temos o
banco de dados puxando todos os registros E logo depois as iterações do registr com string DB nós podemos fazer a a mesma coisa em uma única execução vou clicar em Play novamente e o resultado assim como anteriormente são três iterações e Três falhas ao olhar em mensagens nós vamos ver que o componente ele fez as mesmas iterações do forit ele é um componente de loop A diferença é que ele não teve que puxar todos os elementos do banco de dados e depois iterar um por um isso acontece porque o stram DB funciona como um buffer
à medida que a leitura ao banco de dados está sendo feita processamento já acontece e ele é mais performático por conta disso porque ele não precisa trazer todos os registros pro meu gão de entrada para depois iterar um por um então todos os casos que nós precisamos fazer uma consulta um banco de dados e logo depois eh uma iteração desses registros é recomendado utilizar esse componente Essa foi a apresentação sobre Loops e subfluxo nós entend um pouco melhor sobre funcionamento do for dob e quais são as vantagens de usar um E as vantagens de usar
outro obrigado e até o próximo vídeo