Explorando Git e Automação de Processos de Negócios em Workshops

    Nesta semana, nossa equipe participou de dois workshops que irão contribuir para nossa capacitação em Hyperautomation. Nos dias 9 e 10 de outubro de 2024, imergimos em atividades práticas que abrangeram o uso de Git e a aplicação de padrões de design em automação de processos, sob a orientação dos professores Ruddá Beltrão e do Dr. Thiago Menezes. Esses workshops não apenas reforçaram nossas habilidades técnicas, mas também expandiram nossa visão sobre a importância de ferramentas e métodos colaborativos em projetos de automação.

Workshop Git (9 de outubro de 2024) – Prof. Ruddá Beltrão

    Durante este workshop, dominamos os principais comandos do Git, como git status, git clone, git add, git commit, git push, e git pull, além de explorarmos a criação de branches com o comando git checkout -b. Uma das atividades práticas incluiu fazer um fork no repositório do professor no GitHub, adicionar nossos nomes ao arquivo README.md, e realizar um pull request para integrar as mudanças.     Como forma de incentivo a participação, o professor escolheu dois membros da equipe para realizar tarefas no fluxo de trabalho do Git. Fui escolhida para criar uma nova branch, enquanto o Ademar ficou responsável por fazer o pull request.

    Além disso, o professor destacou a importância de utilizar mensagens de commit padronizadas, como [FEAT][DEBUG] [DOCS] para facilitar a comunicação e organização do histórico de commits em equipes. Outra lição valiosa foi sobre a resolução de issues em equipe, o que nos preparou para futuros desafios de colaboração no desenvolvimento de software. 

    As issues passadas foram: 

  1.  Registrar nome pessoa
  2. Adicionar colaboradores
  3. Verificar se um número é par ou ímpar
  4. Verificar se um número é primo
  5. Verificar duplicados em um array
  6. Comprimento da última palavra
  7. Resolver o problema: palíndromo de inteiro

Issues do repositório

    Nossa equipe fez a de verificar se um número é par ou ímpar e do comprimento da última palavra, embora não tenhamos sido os mais rápidos a concluir as issues.

Workshop Design Patterns e Business Process Automation (10 de outubro de 2024) – Prof. Thiago Menezes

    No dia seguinte, nos aprofundamos na automação de processos de negócios (BPA) e em como padrões de design e arquiteturas de software contribuem para o desenvolvimento de soluções mais robustas. O Prof. Dr. Thiago iniciou o workshop explicando o conceito de Business Process, que se refere a um conjunto de tarefas interdependentes que, com uma ou mais entradas, gera saídas específicas com um propósito claro.

Exploramos três abordagens de BPA:

  1. Traditional BPA (TBPA) – Implementado através de linguagens de programação convencionais.
  2. Robotic Process Automation (RPA) – Utiliza robôs para simular interações humano-computador.
  3. Hyperautomation (HA) – Combina BPA, IA e ML para executar processos com mínima intervenção humana.

    Além disso, identificamos padrões de design (como Command, Factory, Singleton, entre outros) e arquiteturas de software (como Client-Server, Microservices e Layered Architecture) em projetos reais, o que foi útil, especialmente por termos aplicado o conhecimento em uma atividade que envolvia a modelagem de um processo em Python com RWL design.

Atividade: Modelagem de Processos em Python

    Uma das atividades práticas foi a modelagem de um processo em Python com base no RWL design. Nesta tarefa, modelamos um sistema em UML e implementamos um programa que realiza operações aritméticas simples, como somar, subtrair e multiplicar valores inteiros, através de uma API REST. Concluímos a atividade de forma eficiente e fomos a primeira equipe a finalizá-la, utilizando os padrões de design e arquiteturas discutidos.

    O projeto do professor Thiago no GitHub já implementava as operações de soma e a estrutura dos arquivos já estava pré-definida, então foi preciso apenas se concentrar em adaptar para implementar as operações de multiplicação e subtração. A implementação dos bots de multiplicação e subtração, assim como os steps correspondentes, seguem uma abordagem estruturada para automatizar um processo de negócio (Business Process Automation - BPA) utilizando design patterns e arquitetura de orquestração. Vamos detalhar os conceitos aplicados:

Bots de Multiplicação e Subtração

    Os bots são responsáveis por executar tarefas específicas, como a soma, multiplicação e a subtração de valores. A lógica para esses bots está encapsulada em classes específicas dentro do sistema, usando o padrão Factory para criar instâncias dos bots. A separação em camadas de bots, steps, business process e orchestrator reflete a arquitetura Layered Architecture, promovendo uma clara divisão de responsabilidades e facilitando a manutenção do código.

  • Subtractor Bot

    Realiza a operação de subtração de 25% sobre o valor recebido. Segue a convenção definida no sistema para tratar operações aritméticas dentro de processos de negócio.

    O nome subtract_25_percent reflete claramente a operação realizada pelo bot, que subtrai 25% de um valor. Isso ajuda na documentação e compreensão do propósito.

  • Multiplier Bot

    Multiplica o valor recebido por 4. Similar ao Subtractor Bot, mas com uma operação de multiplicação.

    Os nomes dos bots foram escolhidos para representar diretamente as operações matemáticas que realizam, facilitando o entendimento e alinhamento com os princípios do Workshop Design Patterns, onde a transparência e a compreensão de processos são fundamentais.

Steps de Multiplicação e Subtração

    Os "steps" ou etapas, como StepMultiplying e StepSubtracting, representam as fases de um processo de negócio onde operações aritméticas são realizadas. Eles são implementados como Command Patterns, onde cada step encapsula uma ação concreta (no caso, a multiplicação ou subtração).

  • StepMultiplying

    Executa a multiplicação por 4. Em um fluxo automatizado, esta etapa poderia ser parte de um processo mais complexo, como ajuste de preço, cálculo de taxas, ou qualquer outra aplicação que envolva multiplicação.

  • StepSubtracting

    Aplica a subtração de 25% em um valor durante a execução do processo. Poderia ser usado em cenários como desconto de preços, dedução de impostos ou outros tipos de reduções proporcionais.

  • Lógica em business_process.py

    O arquivo business_process.py é responsável por definir a estrutura do processo de negócio. Ele encapsula os steps e os organiza em uma sequência lógica. A implementação segue o Template Method Pattern, onde a sequência de execução dos steps é pré-definida, mas os detalhes de cada step podem variar dependendo da operação. O processo recebe dados de entrada, passa por cada etapa (soma, multiplicação, subtração) e produz um resultado final.

    Esse padrão organiza tarefas repetitivas de forma escalável, permitindo adicionar novos steps ou modificar existentes sem alterar a estrutura principal do processo.

  • Lógica em orchestrator.py

    O orchestrator.py segue o padrão de orquestração, que coordena a execução de múltiplas tarefas (steps) em sequência. Ele atua como um controlador central para garantir que cada etapa do processo seja executada na ordem correta, passando dados de um step para o outro.

    A função dele é iniciar, coordenar e monitorar a execução dos bots e steps. O Orchestrator centraliza a execução do fluxo de trabalho. O Orchestrator é um dos principais padrões de arquitetura utilizados no desenvolvimento de BPA, já que permite a gestão eficiente de processos complexos e garante a robustez na execução.

    Uma demonstração em vídeo da atividade você pode ver abaixo:

    Além das atividades práticas, aproveitamos o momento para tirar fotos com os professores, registrando a experiência de aprendizado colaborativo. Também fizemos uma publicação no LinkedIn para compartilhar nossos resultados e divulgar o trabalho desenvolvido durante os workshops.

    Estamos ansiosos para ver como o conhecimento adquirido nesses workshops contribuirá para o avanço de nossos projetos de automação e satisfeitos de ter participado dessas experiências tão ricas. Finalizamos a semana começando o módulo de Programação Orientada a Objetos em Python com o professor Paulo Sérgio Aguila, falaremos disso na próxima postagem. Continuem acompanhando o Blog para mais novidades e futuros desafios que nossa equipe enfrentará!

#sextou com felicidade!👋