Material educativo · OFL-1.1

Referência BPMN 2.0

Participantes

Pool
Participant
Raia (Lane)
Lane

Pool

Contêiner para um processo. Participante de uma interação. A troca entre pools acontece apenas por fluxos de mensagens. Pode ser recolhido para ocultar detalhes.

Pool com raias: modelo de orquestração
O pool como «maestro»: um processo coordenador distribui tarefas entre os participantes
Colaboração: dois pools trocam mensagens
Colaboração: pools independentes (cliente e pizzaria) conectados por fluxos de mensagens

Raia

Uma faixa dentro do pool que indica quem executa as tarefas (cargo, papel, departamento ou sistema de TI).

Raias: distribuição de tarefas por papel
Raias dentro do pool «apartamento compartilhado» — as tarefas são distribuídas entre os colegas (Christian, Falko, Robert); um gateway XOR escolhe o que cozinhar

Atividades (Activities)

Tipos de tarefa

Abstrata
Task (None)
Manual
Manual
De usuário
User Task
Envio
Send Task
Recebimento
Receive Task
Script
Script Task
De serviço
Service Task
Regra de negócio
Business Rule

Abstrata (None Task)

Tipo não especificado. Usado nas primeiras fases da modelagem, quando o método de execução ainda não foi definido ou quando ele não é relevante para o objetivo do diagrama. Em essência, um marcador que depois é refinado.

Tarefa de usuário (User Task)

Executada por uma pessoa por meio de uma interface de software: um formulário no CRM, uma tela em um app web, uma tarefa em um gerenciador. A diferença chave em relação à tarefa manual é que a pessoa trabalha dentro do sistema que monitora o status da tarefa.

Exemplos: aprovar uma solicitação no sistema, preencher um formulário, revisar um documento no portal do cliente.

Tarefa manual (Manual Task)

Executada por uma pessoa sem a participação do motor BPM. O sistema não consegue detectar automaticamente o início ou o fim desse trabalho.

Exemplos: assinar fisicamente um documento, ligar para o cliente, realizar uma reunião presencial, entregar uma encomenda por mensageiro.

Tarefa de serviço (Service Task)

Executada automaticamente por um programa ou serviço. Nenhuma pessoa está envolvida. É o tipo mais comum em processos executáveis.

Exemplos: uma requisição HTTP a uma API, uma gravação no banco de dados, uma chamada de microsserviço, executar um cálculo.

Tarefa de envio (Send Task)

Envia uma mensagem para um participante externo específico (outro processo ou sistema) e termina imediatamente, sem aguardar resposta. Padrão «atire e esqueça».

Exemplos: enviar um e-mail ao cliente, publicar um evento em uma fila de mensagens, enviar uma notificação via webhook.

Tarefa de recebimento (Receive Task)

Aguarda uma mensagem recebida de um participante externo. O processo pausa nessa tarefa até a mensagem chegar.

Variante especial: a Receive instanciadora (instantiated): se essa tarefa for o primeiro passo do processo, a própria recepção da mensagem cria uma nova instância (alternativa ao evento de início por mensagem).

Exemplos: aguardar a resposta de uma contraparte, aguardar um callback do gateway de pagamento, aguardar a confirmação de entrega.

Tarefa de script (Script Task)

Executa um script embutido (código) definido diretamente dentro do modelo do processo. Diferente da tarefa de serviço, o código não chama nenhum sistema externo — ele roda dentro do motor BPM.

Exemplos: converter um formato de dados, calcular um prazo, montar uma string para um e-mail, verificar uma condição.

Tarefa de regra de negócio (Business Rule Task)

Invoca um motor de decisões (por exemplo uma tabela DMN). As entradas são avaliadas contra um conjunto de regras e uma decisão é retornada.

Exemplos: determinar um desconto pela categoria do cliente, calcular um prêmio de seguro, verificar uma solicitação contra uma política, classificar um chamado.
Todos os tipos de tarefa BPMN em um único diagrama
Visão geral dos tipos de tarefa: abstrata, manual, de usuário, de recebimento, de envio, de script, de serviço, de regra de negócio

Marcadores de tarefa

Pequenos ícones na parte inferior central do retângulo da tarefa. Indicam o comportamento — não o seu tipo.

Loop
Loop
Múlt. inst. ∥
Parallel MI
Múlt. inst. ≡
Sequential MI
Compensação
Compensation
Ad-hoc ~
Ad-hoc
Subprocesso +
Subprocess
MarcadorSignificadoExemplo
↻ LoopA tarefa se repete enquanto a condição for verdadeira (uma instância, várias iterações)Revisar o documento → enviar → se rejeitado, repetir
∥ Múlt. inst. em paraleloSão iniciadas N instâncias ao mesmo tempo — uma por item da coleçãoEnviar a notificação a todos os aprovadores ao mesmo tempo
≡ Múlt. inst. sequencialAs mesmas N instâncias, mas uma após a outraEntrevistar cada candidato em sequência
⏪ CompensaçãoTarefa de reversão: executa apenas quando a compensação é acionada, para desfazer uma ação já concluída«Cancelar reserva» após «Reservar» já ter sido executado
~ Ad-hocAs tarefas dentro do subprocesso são executadas em qualquer ordem, podem se repetir ou ser puladas; eventos de início/fim não são permitidos dentroEscolha livre de passos durante uma consultoria ao cliente
+ SubprocessoAtividade composta com uma sequência interna oculta; os fluxos não atravessam sua borda«Processamento do pedido» oculta 10 passos internos
Marcador de loop em uma tarefa
Marcador de loop (↻): a tarefa se repete até a condição ser satisfeita
Marcador de múltiplas instâncias em uma tarefa
Múltiplas instâncias em paralelo (∥): «escolher pizza» roda simultaneamente com uma instância por colega
Marcador de compensação em uma tarefa
Marcador de compensação (⏪): tarefa de reversão executada quando uma ação concluída é desfeita

Subprocesso

Atividade composta marcada com «+». Contém sua própria sequência de passos. Os fluxos não podem atravessar sua borda. Eventos intermediários são anexados à borda.

Subprocesso: complexidade oculta
Um subprocesso encapsula sua sequência interna — de fora vê-se apenas o marcador «+»

Atividade de chamada (Call Activity)

Borda grossa. Referencia um subprocesso global (p. ex. «Compras») reutilizado em diferentes processos.

Diferença para um subprocesso embutido: no embutido os dados ficam acessíveis diretamente (escopo compartilhado com o pai). Já uma Call Activity é um processo separado — entradas e saídas exigem mapeamento de dados explícito: o que se passa na chamada e o que se recolhe no retorno.
Call Activity: subprocesso compartilhado reutilizado em vários processos
Call Activity: um único subprocesso global «Compra de artigo» (borda grossa) é invocado tanto a partir de «Processamento do pedido» quanto de «Manutenção de estoque»

Subprocesso Ad-hoc

Marcador «~». As atividades internas podem ser executadas em qualquer ordem, repetir-se ou ser puladas. Eventos de início/fim não são permitidos dentro.

Subprocesso Ad-hoc: tarefas em qualquer ordem
Ad-hoc (~): as tarefas internas rodam em qualquer ordem e podem ser repetidas

Subprocesso por eventos

Borda tracejada dentro de um processo. Disparado por um evento de início enquanto o pai está ativo. Interrompe — cancela o pai. Não interrompe — executa em paralelo.

Subprocesso por eventos
Subprocesso por eventos (borda tracejada): disparado por um evento dentro do processo pai ativo

Gateways

Controlam ramificação e convergência. Um gateway não é uma tarefa! A decisão é tomada antes do gateway.

Exclusivo XOR
Ou um ou outro
Paralelo AND
E/E
Inclusivo OR
Um ou mais
Por eventos
Event-based
Complexo
Complex
Vazio
None

Gateway exclusivo (XOR)

O gateway mais comum. Ao dividir, ativa exatamente um caminho de saída — aquele cuja condição é satisfeita primeiro. Se nenhuma condição é atendida, o processo falha com erro (por isso é boa prática sempre definir uma ramificação «padrão»). Ao convergir, deixa cada token que chega passar imediatamente, sem esperar os demais.

Analogia: uma bifurcação na estrada onde você segue apenas em uma direção.

Exemplos: «Pedido pago? → Sim / Não», «Valor > 10 000? → Sim / Não».
Recomendação: formule a pergunta antes do gateway e coloque as respostas nas setas de saída.
Gateway exclusivo (XOR) — exemplo
Gateway XOR: «qual prato?» → escolha de uma receita entre várias (apenas um caminho é ativado)

Gateway paralelo (AND)

Ao dividir, ativa todos os caminhos de saída simultaneamente, sem condições — sem verificações. Ao convergir, aguarda tokens em todos os caminhos de entrada e somente quando todos chegam é que passa um único token adiante.

Analogia: um gerente distribui tarefas a cinco funcionários e aguarda até que todos os cinco terminem.

Exemplos: envio do produto e emissão da fatura em paralelo; revisão simultânea de documentos por diferentes departamentos.
Antipadrão: não convirja com AND ramos que foram divididos por XOR ou que são percorridos apenas uma vez. O AND ficará esperando para sempre tokens em todas as entradas — o processo trava (deadlock). Após um XOR, convirja com um XOR (ou um losango vazio).
Gateway paralelo (AND) — exemplo
Gateway AND: todos os ramos iniciam ao mesmo tempo e são sincronizados na convergência (esperamos todos)

Gateway inclusivo (OR)

Híbrido entre XOR e AND. Ao dividir, ativa um ou mais caminhos conforme as condições — cada condição é avaliada de forma independente. Ao convergir, aguarda tokens apenas nos caminhos que foram realmente ativados (não em todos, como o AND).

Analogia: um bufê — você pega um prato, dois ou todos, mas nunca zero.

Exemplos: o cliente escolheu entrega e/ou retirada e/ou embalagem para presente — execute as opções selecionadas e aguarde a conclusão de todas.
Atenção: Gateways OR são mais difíceis de analisar. Em diagramas ramificados as regras de sincronização podem não ser óbvias. Nem todos os motores os suportam corretamente.
Gateway inclusivo (OR) — exemplo
Gateway OR: um ou mais caminhos são ativados conforme as condições; a convergência espera apenas pelos ramos efetivamente ativados

Gateway baseado em eventos

É fundamentalmente diferente dos demais: roteia não pelos dados, mas pelo evento que ocorrer primeiro. Após o gateway são colocados eventos intermediários de espera (temporizador, mensagem, condição, sinal). Assim que um dispara, os demais são cancelados.

Analogia: você pediu uma pizza — se não chegar em 60 minutos, ligue para a pizzaria; se chegar antes, você come.

Exemplos: aguardar o pagamento com um temporizador (não pago em 3 dias → cancelar o pedido); aguardar a resposta do cliente ou um prazo.
Gateway baseado em eventos — exemplo
Gateway baseado em eventos: roteia pelo evento que ocorrer primeiro (temporizador vs. mensagem)

Gateway complexo

Usado quando a lógica de ramificação não pode ser expressa pelos gateways padrão. A condição de convergência é definida por uma expressão (por exemplo, «continuar quando 3 de 5 ramos tiverem finalizado» ou «quando chegar a primeira resposta e tiverem se passado 10 minutos»).

Na prática: raramente usado e nem todos os motores BPM o suportam. Se uma combinação de XOR / AND / OR for suficiente, prefira-a.

Vazio (None / Exclusivo por padrão)

Um losango sem marcador. Semanticamente equivalente ao exclusivo (XOR) — o padrão BPMN permite omitir a cruz. Alguns metodologistas consideram má prática, pois prejudica a legibilidade: não fica claro se o autor esqueceu o marcador ou escolheu XOR de propósito.

Eventos (Events)

Conceitos-chave

Um evento é algo que ocorre (um fato), ao contrário de uma tarefa (ação ativa). Representados por círculos.

Início
Círculo fino
Intermediário
Círculo duplo
Fim
Círculo grosso

Catching (marcador sem preenchimento) — espera. Throwing (preenchido) — dispara. Eventos de borda: interrompem (sólido) e não interrompem (tracejado).

Tabela resumo de eventos

Ícones de bpmn-font (Camunda). «—» = não definido pelo padrão.

TipoInícioIntermediárioFim
NormalSubpr. ev.Não int.CapturaBordaBorda não int.Dispara
Vazio (None)
✉ Mensagem
⏱ Temporizador
⚡ Erro
▲ Sinal
📋 Condicional
↗ Escalação
⬤ Terminar
⏪ Compensação
✖ Cancelar
➡ Link
⬠ Múltiplo
➕ Mult. paralelo

Mensagem (Message)

Troca com um destinatário específico: e-mail, chamada, HTTP, push. Disponível em todas as posições.

Evento de mensagem — exemplo
Evento de mensagem: o envio do pedido de pizza como evento throwing dispara o processo no lado do destinatário

Temporizador (Timer)

Data/hora, intervalo, contagem regressiva (prazo). Apenas catching.

Evento temporizador — exemplo
Temporizador: de início (execução programada), de borda interruptivo (prazo), de borda não-interruptivo (lembrete)

Erro

Falha grave. Catching — apenas em borda. Throwing — apenas final.

Evento de erro — exemplo
Evento de erro em borda no subprocesso «Compra de artigo»: em caso de falha, o fluxo vai para o handler «tratar falha de compra»; o caminho feliz continua com o pagamento da fatura

Condicional (Conditional)

Espera de uma condição externa («o forno aqueceu»). Apenas catching.

Evento condicional — exemplo
Conditional: o processo aguarda condições externas — a pizza só é colocada no forno quando ele atinge 180°, e só é retirada quando estiver pronta

Sinal (Signal)

Difusão (em oposição a uma mensagem endereçada). Qualquer assinante reage.

Evento de sinal — exemplo
Signal: um anúncio de pizza na TV inicia o processo via signal start; depois da compra surge o apetite (condição) e a pizza é comida; o signal end difunde a avaliação para pizzatest.de

Terminar (Terminate)

Encerra imediatamente toda a instância do processo. Apenas final.

Processo paralelo com eventos de fim comuns
Sem Terminate: após o split AND os tokens correm em paralelo. A tarefa 2 leva 45 minutos, a tarefa 3 leva 30; a instância finaliza após 55 minutos, quando ambos os tokens forem consumidos pelos seus eventos de fim «vazios» (none).

E se depois de a tarefa 3 terminar já não fizer sentido continuar a tarefa 2? Aplica-se então o padrão abaixo:

O mesmo processo com um evento de fim Terminate
Com Terminate: depois da tarefa 3, verifica-se a condição «a tarefa 2 ainda é necessária?». Se não — o fluxo vai para um evento Terminate que consome instantaneamente todos os tokens restantes da instância (incluindo a tarefa 2 ainda em execução). Terminate só é válido como evento de fim.
Evento de link — exemplo
Evento Link: «teletransporte» — o throwing lança o fluxo, o catching captura, substituindo uma seta longa que atravessa o diagrama

Compensação (Compensation)

Reverte uma ação já executada. A tarefa compensatória é vinculada por uma associação.

Evento de compensação — exemplo
Compensação: ao desfazer uma ação já finalizada, são chamadas tarefas de reversão (por exemplo, cancelar a reserva de um voo)

Escalação (Escalation)

Vai do subprocesso para o pai, sem ser um erro. Pode ser não interruptora.

Evento de escalação — exemplo
Escalation: o subprocesso «Entrega» lança «atraso»; o pai captura com uma escalation de borda não-interruptiva e notifica o cliente em paralelo — o fluxo principal continua

Cancelar (Cancel)

Apenas no contexto de transações. Final — rollback. Borda — catch.

Dados, artefatos, fluxos

Objeto de dados
Data Object
Repositório
Data Store
Entrada de dados
Data Input
Saída de dados
Data Output
Anotação
Text Annotation
Grupo
Group
Fluxo
Sequence Flow
Fluxo de mens.
Message Flow
Condicional
Conditional Flow
Padrão
Default Flow
Transação
Transaction

Objeto de dados (Data Object)

«Folha de papel» com o canto dobrado. Representa informação que é criada, consumida ou transferida entre tarefas dentro de uma instância do processo. Só existe enquanto a instância estiver viva.

Exemplos: uma solicitação de cliente, um rascunho de contrato, um relatório montado ao longo do processo.

Repositório de dados (Data Store)

Um cilindro. Armazenamento persistente que sobrevive à instância do processo: banco de dados, registro, repositório de arquivos. As tarefas leem e escrevem nele.

Exemplos: CRM, ERP, base de dados de pedidos, arquivo de documentos.

Entrada / Saída de dados (Data Input / Output)

Parâmetros do processo ou subprocesso na sua borda. Entrada — o que é fornecido externamente; saída — o que é retornado. Seta com triângulo vazado/preenchido.

Exemplos: na entrada do subprocesso «Compras» — uma lista de itens; na saída — uma fatura.

Anotação de texto (Text Annotation)

Um comentário ligado a qualquer elemento por uma linha tracejada. Não afeta a execução — serve apenas para esclarecer o diagrama ao leitor.

Grupo (Group)

Retângulo tracejado de cantos arredondados. Agrupamento visual de elementos (por exemplo, «todas as tarefas de logística»). Não possui semântica de execução; os fluxos podem atravessar sua borda livremente.

Fluxo de sequência (Sequence Flow)

Seta sólida com ponta preenchida. Define a ordem de execução dentro de um mesmo pool. Não pode atravessar bordas de pool.

Fluxo condicional (com um pequeno losango na origem) — só dispara se a condição for verdadeira. Usado em setas de saída de uma tarefa sem gateway.

Fluxo padrão (com um traço na origem) — caminho de reserva de um gateway XOR/OR ou de uma bifurcação condicional, ativado quando nenhuma das condições é satisfeita.

Fluxo de mensagens (Message Flow)

Seta tracejada com ponta vazada. Conecta pools diferentes — uma mensagem trocada entre participantes independentes. Não é usado dentro de um mesmo pool.

Exemplos: o cliente envia o pedido para a pizzaria; o banco envia a confirmação de pagamento.

Transação (Transaction)

Subprocesso com borda dupla. Semântica ACID: ou todas as ações internas são confirmadas com sucesso, ou toda a transação é revertida via um evento Cancel (com compensações). Usada para manter consistência em operações distribuídas.

Exemplos: reservar um pacote «voo + hotel + carro» — se algo falhar, tudo é cancelado.

Pronto para experimentar?

Crie seu primeiro diagrama BPMN grátis — sem cadastro nem cartão de crédito.

Começar a gerar fluxogramas BPMN com IA
Exemplos adaptados de camunda.com. Compilado por BP1.AI.