Atividades

Marcador de Compensação(Compensation Marker)

O marcador de retrocesso (◀◀) que designa uma atividade como tratadora de compensação — executada apenas para desfazer uma atividade concluída, nunca pelo fluxo normal.

Uma atividade marcada para compensação é a receita de desfazer de outra atividade: ligada à borda de compensação dela por uma associação pontilhada, fica totalmente fora do fluxo normal. Só executa quando a compensação é lançada depois que sua parceira concluiu.

Quando usar e evitar

Quando usar

  • Para definir a inversa de negócio de cada passo com consequências: cancelar reserva, estornar cobrança, reverter lançamento.

  • Em transações e sagas, onde os protocolos de cancelar/compensar as invocam automaticamente.

  • Um tratador por atividade — desfazer preciso e direcionado.

Quando NÃO usar

  • Para trabalho alcançável por fluxo de sequência — tratadores não podem ser ligados ao fluxo.

  • Quando o efeito da atividade não tem inversa significativa — a compensação não a inventa.

  • Como limpeza genérica sem relação com uma atividade concluída específica.

Exemplo de negócio

A receita de desfazer da reserva de hotel

Diagrama BPMN: A receita de desfazer da reserva de hotel
A receita de desfazer da reserva de hotel

Abra este exemplo no editor de processos da HEFLO e explore o diagrama por dentro.

Abrir no editor HEFLO →

Passo a passo

  1. Cancelar reserva do hotel (destacada, marcador de retrocesso) pende da tarefa de reserva pela associação pontilhada — fora do fluxo normal.
  2. Ela dorme durante a execução normal.
  3. Quando o pagamento é recusado e a compensação é lançada, o motor a invoca para desfazer a reserva concluída.

Diferenças

Tratador de compensação vs. caminho de exceção

Um caminho de exceção (de uma borda de erro) trata um passo que *falhou em execução*. Um tratador de compensação desfaz um passo que *teve sucesso* mas precisa ser revertido depois. Falha → exceção; desfazer retroativo → compensação.

FAQ

Por que ele não pode ter fluxos de entrada?

Por especificação: atividades de compensação são invocadas exclusivamente pelo mecanismo de compensação, nunca por tokens.

Ele recebe os dados da atividade original?

Sim — os motores fornecem o retrato da atividade concluída para o desfazer referenciar exatamente o que foi feito (ex.: o id da reserva).

Elementos relacionados