💻 Exemplos — Cap 08: Diagrama de Atividades: Ações, Decisões, Concorrência e Raias
Guia Extra: Engenharia de Software e Modelagem UML • Bloco 2: Requisitos e Processos em Modelo • Demonstrações Práticas
🔄 Exemplo 1: Devolver Exemplar com Raias
flowchart TB
subgraph BIB["Bibliotecária"]
I(("●")) --> L["Ler código do exemplar"]
CE["Conferir estado físico"]
end
subgraph SGB["SGB"]
L --> BE["Buscar empréstimo ativo"]
BE --> D1{"atraso?"}
D1 -->|"[dias > 0]"| CM["Calcular multa"]
D1 -->|"[else]"| M1{" "}
CM --> M1
M1 --> CE
CE --> D2{"danificado?"}
D2 -->|"[sim]"| RP["Marcar em reparo"]
D2 -->|"[não]"| D3{"há reserva?"}
D3 -->|"[sim]"| SEP["Marcar separado"]
D3 -->|"[não]"| DISP["Marcar disponível"]
SEP --> AV["Enviar sinal: avisar leitor"]
RP --> FIM(("◉"))
DISP --> FIM
AV --> FIM
end
⏸️ Exemplo 2: Fork e Join no Fechamento do Dia
stateDiagram-v2
state fork_fech <<fork>>
state join_fech <<join>>
[*] --> ApurarEmprestimosDoDia
ApurarEmprestimosDoDia --> fork_fech
fork_fech --> EnviarLembretesDeVencimento
fork_fech --> CalcularMultasDoDia
fork_fech --> ExpirarReservas
EnviarLembretesDeVencimento --> join_fech
CalcularMultasDoDia --> join_fech
ExpirarReservas --> join_fech
join_fech --> GerarRelatorioDiario
GerarRelatorioDiario --> [*]
As três tarefas do meio rodam em paralelo; o relatório só é gerado depois que todas terminarem.
🐍 Exemplo 3: O Fork/Join em Código
# fechamento_do_dia.py
from concurrent.futures import ThreadPoolExecutor
def enviar_lembretes() -> str:
return "12 lembretes enviados"
def calcular_multas() -> str:
return "4 multas calculadas"
def expirar_reservas() -> str:
return "2 reservas expiradas"
print("Apurar empréstimos do dia")
with ThreadPoolExecutor() as pool: # fork
futuros = [pool.submit(f) for f in (enviar_lembretes, calcular_multas, expirar_reservas)]
resultados = [f.result() for f in futuros] # join: espera todos
for r in resultados:
print(" -", r)
print("Gerar relatório diário")
Saída:
Apurar empréstimos do dia
- 12 lembretes enviados
- 4 multas calculadas
- 2 reservas expiradas
Gerar relatório diário