Skip to content
IRC-CodingIRC-Coding
BPMNBusiness Process Model NotationModelado de procesosEvents Gateways TasksOptimización de procesos

BPMN Fundamentos: Modelado de Procesos y Tareas

BPMN es la notación estándar para modelado de procesos empresariales. Events, Gateways, Tasks, Pools y Lanes con ejemplos prácticos.

S

schutzgeist

5 min read
BPMN Fundamentos: Modelado de Procesos y Tareas

Fundamentos de BPMN: Modelado de Procesos, Eventos, Gateways y Tareas

Este artículo es una explicación de conceptos sobre Business Process Model Notation (BPMN), con ejemplos prácticos y relevancia para exámenes de certificación.

De un Vistazo

BPMN es la notación gráfica para modelar procesos empresariales, proporcionando un lenguaje común para analistas de negocios, desarrolladores y gerentes.

Descripción Técnica Concisa

Business Process Model Notation (BPMN) es un estándar internacional para la representación gráfica de procesos empresariales. Fue desarrollado por la Object Management Group (OMG) y está disponible en versión 2.0 desde 2011.

Objetivos principales:

  • Estandarización: Notación uniforme para todos los participantes
  • Comunicación: Mejora de la comprensión entre departamentos y TI
  • Automatización: Base para automatización de procesos y workflow engines
  • Optimización: Visualización para análisis y mejora de procesos

Elementos principales:

  • Events: Eventos de inicio, intermedios y finales
  • Activities: Tareas y subprocesos
  • Gateways: Decisiones y bifurcaciones
  • Connections: Flujos de secuencia y mensajes
  • Pools & Lanes: Unidades organizacionales y responsabilidades

BPMN respalda ciclos de vida completos de procesos, desde el análisis pasando por la implementación hasta el monitoreo y optimización.

Puntos Clave para Exámenes de Certificación

  • Notación estándar para modelado de procesos empresariales
  • Events: Start, Intermediate, End Events con diferentes tipos
  • Gateways: Exclusive, Parallel, Inclusive para control de procesos
  • Tasks: User, Service, Script, Manual Tasks
  • Pools & Lanes: Organización y responsabilidades
  • Sequence Flow: Orden de los pasos del proceso
  • Message Flow: Comunicación entre pools
  • Relevante para exámenes de gestión y optimización de procesos

Componentes Principales

  1. Events: Elementos circulares para eventos del proceso
  2. Activities: Elementos rectangulares para tareas
  3. Gateways: Elementos de forma de rombo para decisiones
  4. Connections: Flechas para flujos de proceso y mensajes
  5. Pools: Contenedores para procesos completos
  6. Lanes: Subdivisión de pools por responsabilidades
  7. Artifacts: Documentos, datos, grupos
  8. Data Objects: Elementos de información en el proceso

Ejemplos Prácticos

1. Proceso de Pedidos (Ejemplo Simple)

<!-- Estructura XML BPMN 2.0 -->
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL">
  
  <!-- Pool para el proceso completo -->
  <process id="bestellprozess" name="Bestellprozess">
    
    <!-- Start Event -->
    <startEvent id="start" name="Bestellung eingegangen"/>
    
    <!-- Task: Verificar pedido -->
    <userTask id="pruefen" name="Bestellung prüfen">
      <documentation>Verfügbarkeit und Kundendaten prüfen</documentation>
    </userTask>
    
    <!-- Exclusive Gateway: Decisión -->
    <exclusiveGateway id="entscheidung" name="Verfügbarkeit prüfen"/>
    
    <!-- Task: Rechazar pedido -->
    <userTask id="ablehnen" name="Bestellung ablehnen">
      <documentation>Kunde über Nichtverfügbarkeit informieren</documentation>
    </userTask>
    
    <!-- Task: Procesar pedido -->
    <serviceTask id="bearbeiten" name="Bestellung bearbeiten">
      <documentation>Automatische Verarbeitung im System</documentation>
    </serviceTask>
    
    <!-- End Events -->
    <endEvent id="ende_ablehnung" name="Bestellung abgelehnt"/>
    <endEvent id="ende_erfolg" name="Bestellung bearbeitet"/>
    
    <!-- Sequence Flows -->
    <sequenceFlow sourceRef="start" targetRef="pruefen"/>
    <sequenceFlow sourceRef="pruefen" targetRef="entscheidung"/>
    <sequenceFlow sourceRef="entscheidung" targetRef="ablehnen">
      <conditionExpression xsi:type="tFormalExpression">${nichtVerfuegbar}</conditionExpression>
    </sequenceFlow>
    <sequenceFlow sourceRef="entscheidung" targetRef="bearbeiten">
      <conditionExpression xsi:type="tFormalExpression">${verfuegbar}</conditionExpression>
    </sequenceFlow>
    <sequenceFlow sourceRef="ablehnen" targetRef="ende_ablehnung"/>
    <sequenceFlow sourceRef="bearbeiten" targetRef="ende_erfolg"/>
    
  </process>
</definitions>

2. Proceso de Aprobación con Paralelización

<process id="genehmigungsprozess" name="Genehmigungsprozess">
  
  <!-- Start Event -->
  <startEvent id="start" name="Antrag eingegangen"/>
  
  <!-- User Task: Revisar solicitud -->
  <userTask id="antragPruefen" name="Antrag prüfen">
    <potentialOwner>
      <resourceAssignmentExpression>${manager}</resourceAssignmentExpression>
    </potentialOwner>
  </userTask>
  
  <!-- Parallel Gateway -->
  <parallelGateway id="parallelStart" name="Parallelprüfung beginnen"/>
  
  <!-- Tareas Paralelas -->
  <serviceTask id="finanzPruefung" name="Finanzprüfung">
    <documentation>Budget und Kosten prüfen</documentation>
  </serviceTask>
  
  <userTask id="rechtlichePruefung" name="Rechtliche Prüfung">
    <documentation>Rechtliche Aspekte prüfen</documentation>
  </userTask>
  
  <!-- Parallel Gateway Convergencia -->
  <parallelGateway id="parallelEnd" name="Ergebnisse zusammenführen"/>
  
  <!-- Exclusive Gateway: Decisión -->
  <exclusiveGateway id="genehmigungsEntscheidung" name="Genehmigung"/>
  
  <!-- Tasks -->
  <userTask id="genehmigen" name="Antrag genehmigen">
    <documentation>Genehmigung erteilen und umsetzen</documentation>
  </userTask>
  
  <userTask id="ablehnen" name="Antrag ablehnen">
    <documentation>Ablehnung begründen und kommunizieren</documentation>
  </userTask>
  
  <!-- End Events -->
  <endEvent id="genehmigt" name="Antrag genehmigt"/>
  <endEvent id="abgelehnt" name="Antrag abgelehnt"/>
  
  <!-- Sequence Flows -->
  <sequenceFlow sourceRef="start" targetRef="antragPruefen"/>
  <sequenceFlow sourceRef="antragPruefen" targetRef="parallelStart"/>
  
  <!-- Ramas Paralelas -->
  <sequenceFlow sourceRef="parallelStart" targetRef="finanzPruefung"/>
  <sequenceFlow sourceRef="parallelStart" targetRef="rechtlichePruefung"/>
  
  <sequenceFlow sourceRef="finanzPruefung" targetRef="parallelEnd"/>
  <sequenceFlow sourceRef="rechtlichePruefung" targetRef="parallelEnd"/>
  
  <sequenceFlow sourceRef="parallelEnd" targetRef="genehmigungsEntscheidung"/>
  
  <!-- Decisión -->
  <sequenceFlow sourceRef="genehmigungsEntscheidung" targetRef="genehmigen">
    <conditionExpression>${genehmigt}</conditionExpression>
  </sequenceFlow>
  <sequenceFlow sourceRef="genehmigungsEntscheidung" targetRef="ablehnen">
    <conditionExpression>${abgelehnt}</conditionExpression>
  </sequenceFlow>
  
  <sequenceFlow sourceRef="genehmigen" targetRef="genehmigt"/>
  <sequenceFlow sourceRef="ablehnen" targetRef="abgelehnt"/>
  
</process>

3. Proceso Multi-Pool (Interdepartamental)

<!-- Pool 1: Ventas -->
<pool id="vertrieb" name="Vertrieb">
  <lane id="vertriebLane" name="Vertriebsmitarbeiter">
    
    <startEvent id="angebotErstellen" name="Angebot erstellen"/>
    <userTask id="angebotErstellenTask" name="Angebot ausarbeiten"/>
    <endEvent id="angebotGesendet" name="Angebot gesendet"/>
    
    <sequenceFlow sourceRef="angebotErstellen" targetRef="angebotErstellenTask"/>
    <sequenceFlow sourceRef="angebotErstellenTask" targetRef="angebotGesendet"/>
    
  </lane>
</pool>

<!-- Pool 2: Gestión -->
<pool id="management" name="Management">
  <lane id="managementLane" name="Manager">
    
    <intermediateCatchEvent id="angebotErhalten" name="Angebot erhalten"/>
    <userTask id="angebotPruefen" name="Angebot prüfen"/>
    <exclusiveGateway id="genehmigungsGateway" name="Genehmigung"/>
    
    <sequenceFlow sourceRef="angebotErhalten" targetRef="angebotPruefen"/>
    <sequenceFlow sourceRef="angebotPruefen" targetRef="genehmigungsGateway"/>
    
  </lane>
</pool>

<!-- Message Flow entre Pools -->
<messageFlow id="angebotFlow" sourceRef="angebotGesendet" targetRef="angebotErhalten"/>

Elementos BPMN en detalle

Eventos

○ Evento de inicio       ○ Evento intermedio      ● Evento final
  (círculo vacío)          (círculo con símbolo)    (línea gruesa)
  
Tipos:
- Timer Event (⏰)
- Message Event (✉)
- Error Event (❌)
- Signal Event (📡)
- Terminate Event (⏹)

Tareas

□ User Task             ◇ Service Task           ◈ Script Task
  (usuario)              (automática)             (script)
  
Tipos:
- Manual Task (manual)
- Receive Task (recibir)
- Send Task (enviar)
- Business Rule Task (reglas)

Gateways

◇ Exclusive Gateway     + Parallel Gateway      ○ Inclusive Gateway
  (exclusivo O)           (paralelo Y)            (inclusivo O)
  
Tipos:
- Complex Gateway (complejo)
- Event Gateway (dirigido por eventos)

Pools y Lanes

┌─────────────────────────────────────┐
│ Pool (unidad organizacional)        │
├─────────────────────────────────────┤
│ Lane (área de responsabilidad)      │
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐    │
│ │Task │ │GW   │ │Task │ │End  │    │
│ └─────┘ └─────┘ └─────┘ └─────┘    │
└─────────────────────────────────────┘

Ventajas e inconvenientes

Ventajas de BPMN

  • Estandarización: notación uniforme para todos los participantes
  • Visualización: representación intuitiva de procesos complejos
  • Automatización: implementación directa en motores de workflow
  • Documentación: documentación de procesos viva y actualizada
  • Análisis: base para la optimización de procesos

Inconvenientes

  • Complejidad: procesos muy grandes pueden resultar confusos
  • Curva de aprendizaje: requiere familiarización con la notación
  • Over-Engineering: modelado demasiado detallado puede ser contraproducente
  • Mantenimiento: los cambios exigen adaptación de los modelos

BPMN en la práctica

Optimización de procesos

  1. Análisis As-Is: modelar el proceso actual
  2. Identificar debilidades: encontrar cuellos de botella y redundancias
  3. Diseño To-Be: diseñar el proceso optimizado
  4. Implementación: introducir los nuevos procesos
  5. Monitoreo: medir resultados y hacer ajustes

Automatización

// Ejemplo con Camunda BPM Engine
import org.camunda.bpm.engine.*;

@Service
public class BestellService {
    
    @Autowired
    private RuntimeService runtimeService;
    
    @Autowired
    private TaskService taskService;
    
    public void starteBestellprozess(Bestellung bestellung) {
        // Iniciar proceso
        Map<String, Object> variables = new HashMap<>();
        variables.put("bestellung", bestellung);
        variables.put("kundenId", bestellung.getKundenId());
        
        ProcessInstance process = runtimeService.startProcessInstanceByKey(
            "bestellprozess", variables);
        
        System.out.println("Proceso iniciado: " + process.getId());
    }
    
    public void bearbeiteAufgabe(String taskId, Map<String, Object> variables) {
        // Completar User Task
        taskService.complete(taskId, variables);
    }
}

Preguntas frecuentes de examen

  1. ¿Cuál es la diferencia entre Pool y Lane? Un Pool es una unidad organizacional, mientras que una Lane subdivide el Pool según responsabilidades.

  2. ¡Explica los diferentes tipos de Gateway! Exclusive Gateway (O exclusivo), Parallel Gateway (Y paralelo), Inclusive Gateway (O inclusivo).

  3. ¿Cuándo se usa Message Flow en lugar de Sequence Flow? Message Flow para la comunicación entre Pools, Sequence Flow dentro de un Pool.

  4. ¿Cuál es el propósito de BPMN en el desarrollo de software? Base para la automatización de workflows e implementación de procesos.

Fuentes principales

  1. https://www.omg.org/spec/BPMN/2.0/
  2. https://de.wikipedia.org/wiki/Business_Process_Model_and_Notation
  3. https://www.bpmn.io/

Más artículos sobre BPMN

BPMN es el estándar para la modelización de procesos de negocio. Los siguientes artículos te ayudan a comprender todos los aspectos de BPMN y aplicarlos en la práctica.

Fundamentos y conceptos

Volver al blog
Share:

Entradas relacionadas