agora com a plataforma aberta podemos demonstrar a utilização do Block execution Qual o problema resolve e como configurar o One process E inception então vimos no caso anterior aqui o seguinte temos dentro do nosso Dion de entrada alguns atributos como nome cidade Sep empresa e aqui temos o seguinte tem um Choice que verifica se o atributo cidade está com valor vazio ou não então nas configurações dessa condição se cidade estiver com valor vazio ele vai seguir o caminho de de cima e caso contrário ele segurar o caminho de baixo só que precisamos entender um ponto
aqui caso ele esteja com valor vazio há um preenchimento de cidade do valor cidade com padrão E no caso contrário não há nenhum preenchimento Entretanto a partir desse desse componente toda essa transformação ela é exatamente igual tanto para cá quanto para cá então esses componentes eles estão repetidos no meu fluxo tanto no na condição de cima quanto na de baixo isso é um um problema de redundância além de ser eh ter uma performance inferior a quando resolvemos esse problema algum tipo de manutenção será terá que ser feita em todos os momentos que esse caminho repete
então por exemplo se alguma transformação mudou nesse componente eu teria que fazer transformação aqui e aqui na manutenção e não estaríamos fazendo de maneira centralizada para demonstração vou cortar nesses dois casos em que aqui são igual tanto é igual tanto em cima quanto embaixo abrir o meu test mode e eu vou executar temos aqui que quando cidade está vazio ele vai vir e vai preencher com valor padrão que é São Paulo agora se eu colocar qualquer outro valor como por exemplo Belo Horizonte apertar play ele vai seguir pelo caminho de Belo Horizonte o que está
acontecendo é quando o valor não é vazio ele vem pro caminho de baixo quando o valor é vazio ele vem pro caminho de cima e preenche com valor padrão São Paulo Entretanto a partir desse momento o pelod ele se torna igual o dião de entrada ele se torna igual para todos os casos e a transformação que eu vou fazer é exatamente a mesma então para corrigir esse problema da redundância vamos selecionar o componente Block execution arrastar e soltar e aqui só de passar o mouse por cima nós vamos ver essas configurações adicionais além da engrenagem
e da lixeira que estamos acostumados temos agora o One process e One Exception aqui vamos fazer o seguinte toda essa parte que faz com que o caminho Gere uma divergência vai ser copiada cont CRL C para copiar vou apagar vou ligar o meu Block execution e dentro do meu on process eu vou colar a minha seleção aqui fora como agora temos esses dois caminhos repetidos eu vou excluir um deles e vou selecionar vou conectar oo meu Block execution todo aquele processamento posterior aqui eu vou mudar as nas configurações do meu blo o nome para preenche
cidade quando necessário confirmar e aqui temos o seguinte caso dentro do meu on process do meu Block execution ao clicar nós vimos anteriormente que ele gera uma nova aba né de criação de de pipeline chamamos de subfluxo ou sub pipeline e aqui temos podemos navegar entre esses dois pipelines por meio do título que aparece aqui em cima então ao clicar no one process aparece aqui com process do meu componente preenche cidade quando for necessário então novamente V clicar em aqui title eu volto para o meu fluxo principal o que acontece é que o é o
seguinte ao Cortar esse componente aqui percebemos que as saídas continuam a mesma quando eu coloco Belo Horizonte saída que sai Belo Horizonte quando eu coloco um valor vazio a saída que sai é São Paulo que é o valor padrão então para cada um dos componentes que para cada um dos caminhos que temos aqui dentro todos eles são convergidas na saída do Block execution e assim podemos vincular essa saída com esse componente evitando que nós passamos como no caso anterior processamento repetido para cada uma das condições do Choice E aí a gente evita redundância mantm um
pipeline mais performático e mantemos a manutenção centralizada Esse é um dos casos de exemplo do Bloc execution e assim que configuramos o One process e One Exception um caso importante é o seguinte qualquer tipo de erro que acontecer no meu One process nós iremos diretamente para o One Exception Assim como process nós temos essa aba de configuração de pipeline e aqui definimos algum tipo de tratamento de erro eu vou apenas colocar um log para a demonstração nesse log eu vou escrever erro Block execution apenas para demonstração eu vou cortar esse componente aqui e vou demonstrar
o o seguinte caso eu clique em Play nós percebemos que já houve asas transformações decorrentes do jot vamos em mensagem update ele fez o seguinte ele encontrou o log de valor vazio dentro do meu on process do Block execution e logo depois eles preencheu os valores padrão decorrentes do transformer então aqui ele veio com para esse log para esse Transformer e depois ele foi para transformações de estrutura no meu pipeline padrão aqui então ele fez todo o caminho que definimos para ele a partir do do Block execution e do transformaç de estrutura que é o
j entretanto nós Não vimos nada ser disparado no Exception e para ser disparado num Exception a gente vê que esse sub pipeline será e iniciado eu vou gerar um erro apenas para demonstração vou clicar no componente TR erro e vou colocar esse fluxo aqui apenas de fazer isso como o meu fluxo do on process vai gerar um erro esse erro será disparado e dentro desse Bloc execution nós iremos para então pro inception demonstração vou executar exatamente as mesmas padrões de entrada Play e aqui temos o seguinte em mensagens Vimos que ele foi pro log cidade
com valor vazio ele preencheu o valor padrão São Paulo e ele foi para o log do erro do Block execution então uma vez que foi disparado pelo troll nós fomos para o One Exception no Block execution e atingimos esse log a mensagem que chegou é justamente a mensagem do TR erro em que ele fala um erro ocorreu o time stamp e o de 500 essa foi uma demonstração de como algum tipo de erro utilizado dentro do on process faz com que o on inception seja disparado e a partir disso nós conseguimos fazer algum tipo de
tratamento pensando nisso vamos reestruturar todo esse processo utilizando agora o validator e não o o Choice no caso da verificação do campo cidade agora dentro do me process foi substituo todo aquele processamento por um validator sabemos que o validator ele confere algum tipo a partir de um esquema faz algum tipo de verificação e a verificação que temos aqui é temos uma propriedade chamada cidade ela é do tipo string e ela precisa ter pelo menos o tamanho de um caracter caso não tenha ele vai disparar um erro na plataforma E aí esse erro diferente do que
estávamos acostumado ele vai ser capturado pelo meu on Exception e aqui podemos fazer algum tipo de tratamento então nós vimos anteriormente que caso essa cidade estivesse vazia nós viríamos para eh nós adicionariam o Transformer colocando um valor padrão para essa e vamos fazer o seguinte agora utilizando validator apenas clicando em Play a mensagem que vai chegar é a mesma da saída aqui temos o o campo cidade com o valor padrão vou testar de novo tinha um problema na configuração do validator quando colocamos um valor nulo algum erro é disparado que é o erro do validator
em si agora se passamos algum tipo de cidade aqui com o Belo Horizonte vamos ter o caso em que o pelud ele passa direto então o que está acontecendo é ele passa pelo bloco cion e verifica se a cidade está vazia ou não se não estiver vazia ele passa direto e vem direto para processamento agora Caso esteja vazio o meu validator vai provocar um erro ele vai parar o fluxo e esse erro vai ser capturado pelo meu One Exception e aqui nós vamos fazer o tratamento mas como vimos anteriormente para fazer esse tratamento nós precisaríamos
do campo cidade e ele está sendo Perdido ao fazer o cidade vazio por conta do validator então em mensagens nós vamos ir pro validator validator vai disparar um erro Vamos pro erro do Block execution que está dentro do Exception Então antes de fazer qualquer tipo de de tratamento de erro vamos buscar o session para salvar essa cidade então aqui vou buscar o session Vou salvar contributo cidade salvei Vou ligar de volta e agora dentro do meu on Exception eu vou buscar essa cidade de volta e aqui eu vou fazer a transformação então aqui recupero a
cidade aqui é get data e aqui o fi é cidade agora com cidade no meu payload aqui dentro do meu Exception eu posso buscar pelo componente Transformer e fazer aquela validação que vimos anteriormente que é eu vou adicionar uma ação ação vai ser de edição de valor atributo que está na raiz que se chama cidade valor padrão vai ser São Paulo confirmar e agora no fluxo principal temos o seguinte quando a cidade estiver vazio esse erro vai ser disparado porém diferente desse caso que estava acontecendo nós agora fizemos uma validação uma transformação possuímos agora cidade
com valor São Paulo que é o valor padrão aqui para ter as mesmas informações de quando a cidade possui algum valor nós poderíamos simplesmente adicionar nesse session as outras propriedades e chamar aqui assim a gente utiliza o Block execution junto com validator que é uma boa prática dentro da plataforma ent os como process funciona além de utilizar o Block ex para evitar qualquer tipo de redundância provocada por exemplo por componente de Choice Esse foi o vídeo sobre Block de Sub fluxos e nos vemos na próxima aula