Actividades

Subproceso de Transacción(Transaction Sub-Process)

Un subproceso con semántica de todo o nada: o bien cada paso se completa y la transacción se confirma, o bien se cancela y los pasos completados se compensan. Se dibuja con un borde doble.

El Subproceso de Transacción envuelve pasos que deben completarse con éxito como una unidad — el clásico ejemplo de reserva de viaje: vuelo + hotel + pago. Su protocolo tiene tres resultados: éxito (salida por el flujo normal), cancelación (un Fin de Cancelación se activa dentro → los gestores de compensación deshacen los pasos completados → salida por el Contorno de Cancelación) y riesgo (algo falló en medio del protocolo; salida mediante un contorno de error).

Cuándo usar y evitar

Cuándo usar

  • Para unidades de negocio de todo o nada: reservas multiartículo, asientos contables coordinados, pedidos combinados.

  • Cuando los pasos completados tienen gestores de compensación declarados que hacen la reversión automática al cancelar.

  • Cuando el negocio distingue explícitamente los resultados confirmar/cancelar/riesgo.

Cuándo NO usar

  • Para una agrupación ordinaria sin semántica transaccional — subproceso incrustado.

  • Cuando los pasos no pueden compensarse — el protocolo no tiene nada que deshacer.

  • Para transacciones técnicas ACID de bases de datos — esto es un protocolo *de negocio*, de mucha mayor duración.

Ejemplo de negocio

Reservar un viaje como transacción

Diagrama BPMN: Reservar un viaje como transacción
Reservar un viaje como transacción

Abra este ejemplo en el editor de procesos de HEFLO y explore el diagrama por dentro.

Abrir en el editor HEFLO →

Paso a paso

  1. La Transacción (resaltada, borde doble) reserva vuelo y hotel como una unidad.
  2. Si el cliente desiste, el Fin de Cancelación interno se activa: las reservas completadas se compensan automáticamente.
  3. El token sale por el Contorno de Cancelación hacia la ruta de reembolso — sin dejar nunca medio viaje reservado.

Diferencias

Transacción vs Subproceso Incrustado

Ambos contienen flujo; solo la transacción lleva el protocolo de cancelación y compensación (borde doble, Fin/Contorno de Cancelación, compensación automática). Si no hay nada que deshacer, un simple subproceso incrustado basta.

Preguntas frecuentes

¿Qué activa la compensación dentro de una transacción?

Alcanzar un Evento de Fin de Cancelación en su interior (o una cancelación externa). El motor ejecuta entonces los gestores de las actividades completadas en orden inverso.

¿Qué es el resultado de 'riesgo'?

Un fallo del propio protocolo de la transacción (modelado con un contorno de error) — ni un éxito limpio ni una cancelación ordenada.

Elementos relacionados