💻 Exemplos — Cap 07: Processos de Negócio com BPMN
Guia Extra: Engenharia de Software e Modelagem UML • Bloco 2: Requisitos e Processos em Modelo • Demonstrações Práticas
🏢 Exemplo 1: Empréstimo entre Bibliotecas — AS-IS
Hoje, quando uma unidade não tem o livro, o leitor precisa ir até outra unidade.
flowchart LR
subgraph LEITOR["Raia: Leitor"]
S((Início)) --> A["Pedir livro no balcão"]
C["Ir até a outra unidade"] --> F(((Fim)))
end
subgraph BIB["Raia: Bibliotecária"]
A --> B{"× Tem na unidade?"}
B -->|"sim"| D["Emprestar"]
B -->|"não"| E["Telefonar para as outras unidades"]
E --> C
D --> F2(((Fim)))
end
Gargalos observados: o telefonema leva em média 12 minutos; em 30% das vezes o livro já foi emprestado quando o leitor chega.
🚚 Exemplo 2: O Mesmo Processo — TO-BE
flowchart LR
subgraph REDE["Piscina: Rede de bibliotecas"]
subgraph LEI["Raia: Leitor"]
S((Início)) --> P["Solicitar pelo SGB"]
R["Retirar na unidade escolhida"] --> F(((Fim)))
end
subgraph SIS["Raia: SGB"]
P --> G{"× Disponível na rede?"}
G -->|"não"| RES["Registrar reserva"] --> F3(((Fim: na fila)))
G -->|"sim"| PAR{"+ divide"}
PAR --> AV["Avisar unidade de origem"]
PAR --> BL["Bloquear exemplar"]
AV --> J{"+ junta"}
BL --> J
end
subgraph MAL["Raia: Malote"]
J --> T["Transportar em até 2 dias"] --> R
end
end
O gateway paralelo (+) mostra que avisar a unidade e bloquear o exemplar acontecem ao mesmo tempo, e a junção espera os dois terminarem.
🐍 Exemplo 3: Medindo o Ganho
# ganho_to_be.py — comparação de tempo médio do leitor (em minutos)
as_is = {"balcão": 5, "telefonemas": 12, "deslocamento": 45}
to_be = {"pedido no SGB": 2, "retirada na unidade": 5}
total_as_is = sum(as_is.values())
total_to_be = sum(to_be.values())
print(f"AS-IS: {total_as_is} min | TO-BE: {total_to_be} min")
print(f"Redução: {100 * (total_as_is - total_to_be) / total_as_is:.0f}%")
Saída:
AS-IS: 62 min | TO-BE: 7 min
Redução: 89%