BPMN / Proceso de negocio

Acerca de los diagramas BPMN

Un diagrama BPMN documenta un proceso de negocio — las actividades, decisiones, eventos e intercambios de mensajes que ocurren entre roles, departamentos y sistemas. Es la notación dominante en BPM empresarial, auditorías ISO-9001 / SOX, y herramientas de minería de procesos. La única serialización oficial es BPMN 2.0 XML, que es verbosa y hostil para la generación con LLMs; Schematex proporciona un texto DSL compacto que produce un subconjunto visual conforme.

Schematex implementa OMG BPMN 2.0.2 / ISO/IEC 19510:2013 para los elementos que los analistas de negocio del mundo real realmente dibujan: pools, lanes, eventos (inicio / intermedio / fin con disparadores none / message / timer), actividades (tareas con marcadores + subprocesos colapsados), compuertas (XOR / OR / AND / basada en eventos), y flujos de secuencia / condicional / predeterminado / mensaje.

Nota — Schematex es una biblioteca de renderizado, no un motor de ejecución de procesos. No hay simulación de tokens, no hay round-trip XML, y no hay capa DI (Diagram Interchange). v0.1 cubre el subconjunto visual que la mayoría de los equipos usa; los eventos de límite, los subprocesos expandidos y los tipos de disparadores raros (cancelar / compensación / escalación / señal / enlace) están diferidos para v0.2+.

bpmn·§
↘ preview
100%
Loan Application Approval BPMN LR — 1 pool(s), 8 flow object(s). Bank Clerk Underwriter yes no approve reject Application received Check completeness Complete? Risk score Underwriter review Decision Approved Rejected
UTF-8 · LF · 28 lines · 469 chars✓ parsed·5.3 ms·8.2 KB SVG

1. Tu primer diagrama BPMN

Tres secciones: una línea de encabezado bpmn, uno o más bloques pool { … }, y un bloque flows. Dentro de cada pool pones bloques lane { … }, y dentro de cada lane listas objetos de flujo como id: tipo "etiqueta".

bpmn·§
↘ preview
100%
BPMN diagram BPMN LR — 1 pool(s), 3 flow object(s). Service Worker Request Process Done
UTF-8 · LF · 12 lines · 129 chars✓ parsed·0.8 ms·3.3 KB SVG

Cada objeto de flujo comienza con un id, dos puntos, el tipo, una sub-palabra clave opcional (disparador / marcador / tipo de compuerta), y una etiqueta entre comillas. Los ids se referencian en las líneas de flujo.


2. Pools y lanes

Un pool representa un participante — una organización, un departamento o un sistema. Un lane subdivide un pool en roles. La etiqueta del pool se renderiza girada 90° en el borde izquierdo de un pool horizontal.

pool "Customer" blackbox          // black-box pool — sin flujo interno
pool "Bank" {
  lane "Clerk" { … }
  lane "Underwriter" { … }
}

Un pool de caja negra es un participante cuyo proceso interno no se modela — típicamente un cliente externo o socio. Los pools de caja negra no deben contener objetos de flujo (Schematex lo hace cumplir en el parser).

El flujo de secuencia (-->) no está permitido cruzar límites de pool. Usa un flujo de mensaje (~~>) para la comunicación entre pools.


3. Eventos

Los eventos son círculos. El peso del trazo codifica el rol en el ciclo de vida:

TipoTrazoDSL
Iniciofino (1px)start
Intermediodoble anillo finointermediate
Fingrueso (3px)end

La palabra clave opcional trigger agrega un glifo interno. v0.1 admite los tres disparadores más comunes — none (sin glifo), message (sobre), y timer (carátula de reloj):

A: start                       // disparador none
A: start message "Inbound"     // captura de mensaje (sobre sin relleno)
T: intermediate timer "60 min" // timer (carátula de reloj)
F: end "Done"

Glifo con relleno = envío, glifo sin relleno = recepción. Schematex elige el relleno correcto automáticamente según el tipo de evento.


4. Actividades — tareas y subprocesos

Las actividades son rectángulos con esquinas redondeadas. Las dos formas de v0.1 son task y un subproceso colapsado (el marcador + indica detalles expandibles):

B: task "Generic abstract task"
U: task user "User decides"
S: task service "API call"
SE: task send "Send email"
RE: task receive "Wait for reply"
M: task manual "Hand-stamp the form"
SC: task script "Run rule engine"

X: subprocess "Verify identity" collapsed

El marcador de tarea (icono pequeño arriba a la izquierda) comunica quién o qué realiza el trabajo — una persona (user), un servicio de software (service), un mensaje saliente (send), una espera entrante (receive), un paso manual fuera del sistema (manual), o un script automatizado (script). En caso de duda, omite el marcador — por defecto es abstracto.


5. Compuertas

Las compuertas son diamantes. El glifo interno codifica la semántica de ramificación:

TipoGlifoSignificadoDSL
Exclusiva (XOR)XToma exactamente una rama saliente (basada en datos)gateway xor
Inclusiva (OR)OToma una o más ramas salientesgateway or
Paralela (AND)+Toma todas las ramas salientes concurrentementegateway and
Basada en eventospentágono en círculoElige la rama cuyo evento se dispara primerogateway event

Schematex usa el glifo X de Bruce Silver para XOR por defecto — esa es la convención que las auditorías BPMN reales esperan. La mayoría de los diagramas usan XOR (rama de datos) y AND (división / unión en paralelo); OR es rara y la basada en eventos aparece principalmente en modelos de condición de carrera.


6. Conectores

Cuatro tipos de conector. Tres de ellos permanecen dentro de un pool; solo el flujo de mensaje puede cruzar límites de pool.

A --> B                  // flujo de secuencia (predeterminado)
G --? "yes" --> C        // secuencia condicional (la etiqueta es un guardia)
G --* "default" --> D    // flujo predeterminado (uno por compuerta, máximo)
"Customer" ~~> A : "Submit application"   // flujo de mensaje
E ~~> "Customer" : "Notify approval"      // flujo de mensaje de vuelta
  • --> es el conector principal — línea sólida + punta de flecha triangular rellena.
  • --? "etiqueta" --> agrega un pequeño diamante sin relleno en la fuente. Úsalo cuando salgas de una actividad directamente en un resultado condicional. (En una compuerta, la etiqueta condicional es suficiente; el glifo de diamante no se dibuja.)
  • --* "etiqueta" --> agrega una marca de barra en la fuente. Un flujo predeterminado máximo por compuerta — Schematex lo hace cumplir.
  • ~~> es discontinuo con una punta de flecha abierta y un pequeño círculo sin relleno en la fuente. La fuente o el destino puede ser un nombre de pool entre comillas (para participantes de caja negra) o un id de objeto.

7. Validación

El parser rechaza diagramas que violan la semántica BPMN, con errores numerados por línea:

ReglaError
El flujo de secuencia cruza el poolsequence flow 'A --> B' crosses pool boundary — use message flow (~~>)
El flujo de mensaje dentro de un poolmessage flow 'A ~~> B' must cross pool boundaries
El pool de caja negra tiene internosblack-box pool "X" cannot contain lanes
Dos flujos predeterminados de la misma compuertagateway 'G' has 2 default flows (max 1)
ID duplicado dentro de un poolduplicate id 'A'
Fuente / destino desconocidounknown source 'X' in sequence flow

Estas verificaciones se activan durante el parse, por lo que un LLM obtiene una señal utilizable antes del paso de layout.


8. Ejemplo más grande — pedido de pizza con cliente de caja negra

Un tutorial canónico de BPMN: un cliente externo (cuyo proceso no modelamos) hace un pedido a una pizzería dividida en lanes de Cajero / Chef / Entrega, con un bucle de retrabajo en la verificación de calidad del chef.

bpmn·§
↘ preview
100%
Pizza order BPMN LR — 2 pool(s), 7 flow object(s). Customer Pizzeria Clerk Chef Delivery yes no Place order Pizza delivered Order received Take order Make pizza Pizza ok? Rework Deliver Done
UTF-8 · LF · 32 lines · 485 chars✓ parsed·2.0 ms·9.1 KB SVG

El bucle de retrabajo (D --> C) crea una arista hacia atrás que el layout detecta mediante DFS — el ordenamiento de capas por ruta más larga luego procede en el DAG hacia adelante para que las columnas permanezcan sensatas.


9. Limitaciones de v0.1

Estas están diferidas para una versión posterior. Si tu diagrama necesita una, abre un issue con el caso de uso:

  • Eventos de límite — eventos adjuntos al borde de una actividad (timer, error, escalación, compensación). Actualmente debes modelar el límite como un evento intermedio flotante con flujos manuales.
  • Subprocesos expandidossubprocess colapsado funciona; los bloques en línea expandidos (subprocess "X" { … }) están diferidos.
  • Disparadores de eventos raros — error / escalación / cancelar / compensación / señal / enlace / condicional / múltiple / múltiple-paralelo. Usa none o message como marcador de posición.
  • Actividades de transacción / llamada — se renderizan como tareas normales en v0.1.
  • Marcadores de bucle e instancias múltiples — glifos en el centro inferior de la actividad; diferidos.
  • Artefactos — objeto de datos / almacén de datos / grupo / anotación de texto. Diferidos.
  • Importar / exportar BPMN 2.0 XML — fuera del alcance. Schematex calcula el layout desde DSL; no hay capa DI para round-trip.

Ejemplos relacionados

Escenarios listos para usar de la galería de ejemplos:

bpmn·§ OMG BPMN 2.0.2 / ISO/IEC 19510:2013
Pizza order BPMN LR — 2 pool(s), 7 flow object(s). Customer Pizzeria Clerk Chef Delivery yes no Place order Pizza delivered Order received Take order Make pizza Pizza ok? Rework Deliver Done
Pizza order with black-box customer (BPMN)
Two-pool BPMN — external Customer (black-box) and a Pizzeria with Clerk / Chef / Delivery lanes. Exercises message flows across pools, manual / send task markers, and a rework loop on the chef's quality check. Canonical BPMN test case 7.1.
retail
bpmn·§ OMG BPMN 2.0.2 / ISO/IEC 19510:2013
Production incident response BPMN LR — 2 pool(s), 13 flow object(s). Monitoring Engineering On-call L1 On-call L2 Comms P1 P2-P3 info Alert Status Page received Acknowledge Triage Severity? Investigate Root cause Implement fix Deploy patch Status page 30 min Update users Post-mortem Resolved
Production incident response (BPMN)
Three-lane BPMN of an on-call rotation handling a production page — L1 triage, L2 investigation, and a Comms lane that posts status updates. Exercises timer intermediate event, severity-based XOR routing, and a self-loop on the triage gate.
software & it

Found this useful?

Schematex is free, fully open source, and zero-dependency. A star helps other developers discover it.