Material educativo · OFL-1.1

Referencia BPMN 2.0

Participantes

Pool
Participant
Carril (Lane)
Lane

Pool

Contenedor de un proceso. Participante de la interacción. El intercambio entre pools solo se hace por flujos de mensajes. Se puede contraer para ocultar detalles.

Pool con carriles: modelo de orquestación
El pool como «director de orquesta»: un proceso coordinador reparte tareas entre los participantes
Colaboración: dos pools intercambian mensajes
Colaboración: pools independientes (cliente y pizzería) conectados por flujos de mensajes

Carril

Una franja dentro del pool que indica quién ejecuta las tareas (puesto, rol, departamento o sistema de TI).

Carriles: reparto de tareas por rol
Carriles dentro del pool «piso compartido» — las tareas se reparten entre los compañeros (Christian, Falko, Robert); una compuerta XOR elige qué cocinar

Actividades (Activities)

Tipos de tarea

Abstracta
Task (None)
Manual
Manual
De usuario
User Task
Envío
Send Task
Recepción
Receive Task
Script
Script Task
De servicio
Service Task
Regla de negocio
Business Rule

Abstracta (None Task)

Tipo no especificado. Se usa en fases tempranas del modelado, cuando aún no se ha decidido el método de ejecución o cuando no es relevante para el objetivo del diagrama. En esencia, un marcador que más tarde se concreta.

Tarea de usuario (User Task)

Lo ejecuta una persona mediante una interfaz de software: un formulario en el CRM, una pantalla en una app web, una tarea en un gestor de tareas. La diferencia clave con la tarea manual es que la persona trabaja dentro del sistema que monitoriza el estado de la tarea.

Ejemplos: aprobar una solicitud en el sistema, rellenar un formulario, revisar un documento en el portal del cliente.

Tarea manual (Manual Task)

Lo ejecuta una persona sin la participación del motor BPM. El sistema no puede detectar automáticamente el inicio ni el fin de este trabajo.

Ejemplos: firmar físicamente un documento, llamar al cliente por teléfono, celebrar una reunión presencial, entregar un paquete por mensajería.

Tarea de servicio (Service Task)

Se ejecuta automáticamente por un programa o servicio. No interviene ninguna persona. Es el tipo más habitual en procesos ejecutables.

Ejemplos: una petición HTTP a una API, una escritura en base de datos, una llamada a un microservicio, ejecutar un cálculo.

Tarea de envío (Send Task)

Envía un mensaje a un participante externo concreto (otro proceso o sistema) y termina de inmediato, sin esperar respuesta. Patrón «dispara y olvida».

Ejemplos: enviar un correo al cliente, publicar un evento en una cola de mensajes, enviar una notificación por webhook.

Tarea de recepción (Receive Task)

Espera un mensaje entrante de un participante externo. El proceso se detiene en esta tarea hasta que llegue el mensaje.

Variante especial: la Receive instanciadora (instantiated): si una tarea de este tipo es el primer paso del proceso, la propia recepción del mensaje crea una nueva instancia (alternativa al evento de inicio por mensaje).

Ejemplos: esperar la respuesta de una contraparte, esperar un callback de la pasarela de pagos, esperar la confirmación de entrega.

Tarea de script (Script Task)

Ejecuta un script embebido (código) definido directamente dentro del modelo de proceso. A diferencia de la tarea de servicio, el código no llama a un sistema externo: se ejecuta dentro del motor BPM.

Ejemplos: convertir un formato de datos, calcular un plazo, construir una cadena para un correo, comprobar una condición.

Tarea de regla de negocio (Business Rule Task)

Invoca un motor de decisiones (por ejemplo una tabla DMN). Las entradas se evalúan contra un conjunto de reglas y se devuelve una decisión.

Ejemplos: determinar un descuento según el segmento del cliente, calcular una prima de seguro, comprobar una solicitud contra una política, clasificar una consulta.
Todos los tipos de tareas BPMN en un único diagrama
Visión general de los tipos de tareas: abstracta, manual, de usuario, de recepción, de envío, de script, de servicio, de regla de negocio

Marcadores de tarea

Pequeños iconos en el centro inferior del rectángulo de la tarea. Indican el comportamiento — no su tipo.

Bucle
Loop
Múlt. inst. ∥
Parallel MI
Múlt. inst. ≡
Sequential MI
Compensación
Compensation
Ad-hoc ~
Ad-hoc
Subproceso +
Subprocess
MarcadorSignificadoEjemplo
↻ BucleLa tarea se repite mientras se cumpla la condición (una instancia, varias iteraciones)Revisar el documento → enviar → si se rechaza, repetir
∥ Múlt. inst. en paraleloSe inician N instancias a la vez — una por elemento de la colecciónEnviar la notificación a todos los aprobadores a la vez
≡ Múlt. inst. secuencialLas mismas N instancias, pero una tras otraEntrevistar a cada candidato por turno
⏪ CompensaciónTarea de reversión: se ejecuta solo cuando se activa la compensación, para deshacer una acción ya finalizada«Cancelar reserva» después de que «Reservar» ya se haya ejecutado
~ Ad-hocLas tareas dentro del subproceso se ejecutan en cualquier orden, pueden repetirse o saltarse; no se permiten eventos de inicio/fin en su interiorSelección libre de pasos durante la consultoría a un cliente
+ SubprocesoActividad compuesta con una secuencia interna oculta; los flujos no cruzan su borde«Procesamiento del pedido» oculta 10 pasos internos
Marcador de bucle en una tarea
Marcador de bucle (↻): la tarea se repite hasta que se cumple la condición
Marcador de múltiples instancias en una tarea
Múltiples instancias en paralelo (∥): «elegir pizza» se lanza simultáneamente con una instancia por cada compañero
Marcador de compensación en una tarea
Marcador de compensación (⏪): tarea de reversión que se ejecuta al deshacer una acción ya finalizada

Subproceso

Actividad compuesta marcada con «+». Contiene su propia secuencia de pasos. Los flujos no pueden cruzar su borde. Los eventos intermedios se adhieren al borde.

Subproceso: complejidad oculta
Un subproceso encapsula su secuencia interna — desde fuera solo se ve el marcador «+»

Actividad de llamada (Call Activity)

Borde grueso. Referencia a un subproceso global (p. ej. «Compras») que se reutiliza en distintos procesos.

Diferencia con un subproceso embebido: en el embebido los datos están accesibles directamente (mismo ámbito que el padre). Una Call Activity es un proceso aparte — sus entradas y salidas requieren un mapeo de datos explícito: qué se pasa al invocar y qué se recoge al volver.
Call Activity: subproceso compartido reutilizado en varios procesos
Call Activity: un único subproceso global «Compra de artículo» (borde grueso) se invoca tanto desde «Procesamiento del pedido» como desde «Mantenimiento de stock»

Subproceso Ad-hoc

Marcador «~». Las actividades internas pueden ejecutarse en cualquier orden, repetirse o saltarse. No se permiten eventos de inicio/fin en su interior.

Subproceso Ad-hoc: tareas en cualquier orden
Ad-hoc (~): las tareas internas se ejecutan en cualquier orden y pueden repetirse

Subproceso por eventos

Borde discontinuo dentro de un proceso. Se dispara con un evento de inicio mientras el padre esté activo. Interrumpe — cancela al padre. No interrumpe — se ejecuta en paralelo.

Subproceso por eventos
Subproceso por eventos (borde discontinuo): se dispara con un evento dentro del proceso padre activo

Compuertas (Gateways)

Controlan la bifurcación y la convergencia. ¡Una compuerta no es una tarea! La decisión se toma antes de la compuerta.

Exclusiva XOR
O uno u otro
Paralela AND
Y/Y
Inclusiva OR
Una o varias
Por eventos
Event-based
Compleja
Complex
Vacía
None

Compuerta exclusiva (XOR)

La compuerta más habitual. Al dividir, activa exactamente una ruta saliente — aquella cuya condición se cumple primero. Si no se cumple ninguna, el proceso falla con un error (por eso conviene definir siempre una rama «por defecto»). Al converger, deja pasar cada token entrante de inmediato, sin esperar a los demás.

Analogía: una bifurcación en la carretera donde tomas un único camino.

Ejemplos: «¿Pedido pagado? → Sí / No», «¿Importe > 10 000? → Sí / No».
Recomendación: formula la pregunta antes de la compuerta y coloca las respuestas en las flechas salientes.
Compuerta exclusiva (XOR) — ejemplo
Compuerta XOR: «¿qué plato?» → se elige una receta entre varias (solo se activa un camino)

Compuerta paralela (AND)

Al dividir, activa todas las rutas salientes a la vez, sin condiciones — sin comprobaciones. Al converger, espera tokens por todas las rutas entrantes y solo cuando llegan todas pasa un único token adelante.

Analogía: un jefe reparte tareas entre cinco empleados y espera a que los cinco terminen.

Ejemplos: envío del producto y emisión de la factura en paralelo; revisión simultánea de documentos por distintos departamentos.
Antipatrón: no converjas con AND ramas que se dividieron con XOR o que solo se recorren una vez. AND esperará para siempre tokens en todas las entradas — el proceso se bloquea (deadlock). Tras un XOR conviene converger con un XOR (o un rombo vacío).
Compuerta paralela (AND) — ejemplo
Compuerta AND: todas las ramas se inician a la vez y se sincronizan en la convergencia (esperamos a todas)

Compuerta inclusiva (OR)

Híbrido entre XOR y AND. Al dividir, activa una o varias rutas según las condiciones — cada condición se evalúa de forma independiente. Al converger, espera tokens solo en las rutas realmente activadas (no en todas, como hace AND).

Analogía: un bufé — tomas un plato, dos o todos, pero nunca cero.

Ejemplos: el cliente eligió entrega y/o recogida y/o envoltorio de regalo — hay que ejecutar las opciones elegidas y esperar a que terminen todas.
Atención: Las compuertas OR son más difíciles de analizar. En diagramas ramificados las reglas de sincronización pueden no ser obvias. No todos los motores las implementan correctamente.
Compuerta inclusiva (OR) — ejemplo
Compuerta OR: se activan una o varias rutas según las condiciones; la convergencia solo espera a las ramas realmente activadas

Compuerta basada en eventos

Es fundamentalmente distinta del resto: enruta no por los datos, sino por el evento que ocurra primero. Tras la compuerta se colocan eventos intermedios de espera (temporizador, mensaje, condición, señal). En cuanto uno se dispara, los demás se cancelan.

Analogía: pediste una pizza — si no llega en 60 minutos, llamas a la pizzería; si llega antes, comes.

Ejemplos: esperar el pago con un temporizador (no pagado en 3 días → cancelar el pedido); esperar la respuesta del cliente o un plazo.
Compuerta basada en eventos — ejemplo
Compuerta basada en eventos: enruta según el evento que ocurra primero (temporizador vs. mensaje)

Compuerta compleja

Se usa cuando la lógica de bifurcación no puede expresarse con las compuertas estándar. La condición de convergencia se define mediante una expresión (por ejemplo, «continuar cuando 3 de 5 ramas hayan terminado» o «cuando llegue la primera respuesta y hayan pasado 10 minutos»).

En la práctica: poco frecuente y no todos los motores BPM la soportan. Si basta con una combinación de XOR / AND / OR, mejor optar por ella.

Vacía (None / Exclusiva por defecto)

Un rombo sin marcador. Semánticamente equivalente a la exclusiva (XOR) — el estándar BPMN permite omitir la cruz. Algunos metodólogos lo consideran mala práctica porque resta legibilidad: no queda claro si el autor olvidó el marcador o eligió XOR deliberadamente.

Eventos (Events)

Conceptos clave

Un evento es algo que ocurre (un hecho), a diferencia de una tarea (acción activa). Se dibujan como círculos.

Inicio
Círculo fino
Intermedio
Círculo doble
Fin
Círculo grueso

Catching (marcador sin relleno) — espera. Throwing (relleno) — lanza. Eventos de frontera: interrumpen (continuo) y no interrumpen (discontinuo).

Tabla resumen de eventos

Iconos de bpmn-font (Camunda). «—» = no definido por el estándar.

TipoInicioIntermedioFin
NormalSubpr. ev.No int.CapturaFronteraFrontera no int.Lanza
Vacío (None)
✉ Mensaje
⏱ Temporizador
⚡ Error
▲ Señal
📋 Condicional
↗ Escalación
⬤ Terminar
⏪ Compensación
✖ Cancelar
➡ Enlace
⬠ Múltiple
➕ Mult. paralelo

Mensaje (Message)

Intercambio con un destinatario concreto: correo, llamada, HTTP, push. Disponible en todas las posiciones.

Evento de mensaje — ejemplo
Evento de mensaje: el envío del pedido de pizza como evento throwing dispara el proceso en el lado del receptor

Temporizador (Timer)

Fecha/hora, intervalo, cuenta atrás (plazo). Solo catching.

Evento temporizador — ejemplo
Temporizador: de inicio (lanzamiento programado), de frontera interruptivo (plazo), de frontera no interruptivo (recordatorio)

Error

Fallo grave. Catching — solo en frontera. Throwing — solo final.

Evento de error — ejemplo
Evento de error en frontera sobre el subproceso «Compra de artículo»: ante un fallo, el flujo va al manejador «manejar fallo de compra»; el camino feliz continúa con el pago de la factura

Condicional (Conditional)

Espera de una condición externa («el horno se calentó»). Solo catching.

Evento condicional — ejemplo
Conditional: el proceso espera condiciones externas — la pizza no se mete en el horno hasta que alcance los 180°, y no se saca hasta que esté lista

Señal (Signal)

Difusión (frente a mensaje dirigido). Cualquier suscriptor reacciona.

Evento de señal — ejemplo
Signal: un anuncio de pizza en TV inicia el proceso mediante un signal start; tras la compra se abre el apetito (condición) y se come la pizza; el signal end difunde la evaluación a pizzatest.de

Terminar (Terminate)

Detiene de inmediato toda la instancia del proceso. Solo final.

Proceso paralelo con eventos de fin normales
Sin Terminate: tras la división AND los tokens corren en paralelo. La tarea 2 dura 45 minutos, la tarea 3 dura 30; la instancia finaliza a los 55 minutos, cuando ambos tokens son consumidos por sus eventos de fin «vacíos» (none).

¿Y si después de terminar la tarea 3 ya no tiene sentido continuar la tarea 2? Entonces se aplica el siguiente patrón:

El mismo proceso con un evento de fin Terminate
Con Terminate: tras la tarea 3 se comprueba la condición «¿sigue haciendo falta la tarea 2?». Si no — el flujo va a un evento Terminate que consume al instante todos los tokens restantes de la instancia (incluida la tarea 2 aún en ejecución). Terminate solo es válido como evento de fin.
Evento de enlace — ejemplo
Evento Link: «teletransporte» — el throwing lanza el flujo, el catching lo recoge, sustituyendo a una flecha larga que cruza el diagrama

Compensación (Compensation)

Revierte una acción ya ejecutada. La tarea compensadora se vincula mediante una asociación.

Evento de compensación — ejemplo
Compensación: al deshacer una acción ya finalizada se invocan tareas de reversión (por ejemplo, cancelar la reserva de un vuelo)

Escalación (Escalation)

Va del subproceso al padre, sin ser un error. Puede ser no interrumpiente.

Evento de escalación — ejemplo
Escalation: el subproceso «Entrega» lanza «retraso»; el padre lo captura con una escalation de frontera no interruptiva y notifica al cliente en paralelo — el flujo principal continúa

Cancelar (Cancel)

Solo en el contexto de transacciones. Final — rollback. Frontera — catch.

Datos, artefactos, flujos

Objeto de datos
Data Object
Almacén
Data Store
Entrada de datos
Data Input
Salida de datos
Data Output
Anotación
Text Annotation
Grupo
Group
Flujo
Sequence Flow
Flujo de mens.
Message Flow
Condicional
Conditional Flow
Predeterm.
Default Flow
Transacción
Transaction

Objeto de datos (Data Object)

«Hoja de papel» con la esquina doblada. Representa información que se crea, consume o transfiere entre tareas dentro de una instancia del proceso. Solo existe mientras la instancia esté viva.

Ejemplos: una solicitud de cliente, un borrador de contrato, un informe que se va completando durante el proceso.

Almacén de datos (Data Store)

Un cilindro. Almacenamiento persistente que sobrevive a la instancia del proceso: base de datos, registro, almacenamiento de archivos. Las tareas lo leen y escriben.

Ejemplos: CRM, ERP, base de datos de pedidos, archivo de documentos.

Entrada / Salida de datos (Data Input / Output)

Parámetros del proceso o subproceso en su frontera. Entrada — lo que se aporta desde fuera; salida — lo que se devuelve. Flecha con un triángulo hueco/relleno.

Ejemplos: a la entrada del subproceso «Compras» — una lista de artículos; a la salida — una factura.

Anotación de texto (Text Annotation)

Un comentario conectado a cualquier elemento mediante una línea discontinua. No afecta a la ejecución — solo sirve para aclarar el diagrama al lector.

Grupo (Group)

Rectángulo discontinuo con esquinas redondeadas. Agrupación visual de elementos (por ejemplo, «todas las tareas de logística»). No tiene semántica de ejecución; los flujos pueden cruzar su frontera libremente.

Flujo de secuencia (Sequence Flow)

Flecha sólida con punta rellena. Define el orden de ejecución dentro de un mismo pool. No puede cruzar las fronteras del pool.

Flujo condicional (con un pequeño rombo en el origen) — se activa solo si la condición es verdadera. Se usa en las flechas salientes de una tarea sin compuerta.

Flujo por defecto (con una marca en el origen) — la ruta de respaldo de una compuerta XOR/OR o de una bifurcación condicional, que se toma si no se cumple ninguna condición.

Flujo de mensajes (Message Flow)

Flecha discontinua con punta hueca. Conecta distintos pools — un mensaje intercambiado entre participantes independientes. No se usa dentro de un mismo pool.

Ejemplos: el cliente envía el pedido a la pizzería; el banco envía la confirmación de pago.

Transacción (Transaction)

Subproceso con doble borde. Semántica ACID: o todas las acciones internas se confirman correctamente, o toda la transacción se revierte mediante un evento Cancel (con compensaciones). Se usa para mantener la consistencia en operaciones distribuidas.

Ejemplos: reservar un paquete «vuelo + hotel + coche» — si algo falla, se cancela todo.

¿Listo para probar?

Crea tu primer diagrama BPMN gratis — sin registro ni tarjeta de crédito.

Comenzar a generar diagramas BPMN con IA
Ejemplos adaptados de camunda.com. Compilado por BP1.AI.