Skip to content
IRC-CodingIRC-Coding
BPMNBusiness Process ModelProcess ModelingEvents Gateways TasksBusiness Process Optimization

BPMN Fundamentals: Process Modeling & Gateways

Learn BPMN notation for business process modeling. Master events, gateways, tasks, pools, and lanes with practical examples.

S

schutzgeist

5 min read
BPMN Fundamentals: Process Modeling & Gateways

BPMN Fundamentals: Process Modeling, Events, Gateways & Tasks

This article explains Business Process Model Notation (BPMN) with practical examples and relevance to professional certifications.

In a Nutshell

BPMN is the graphical notation for modeling business processes, providing a common language across business analysts, developers, and management.

Technical Overview

Business Process Model Notation (BPMN) is an international standard for graphically representing business processes. Developed by the Object Management Group (OMG), version 2.0 has been available since 2011.

Core Objectives:

  • Standardization: Unified notation for all stakeholders
  • Communication: Improved understanding between business and IT teams
  • Automation: Foundation for process automation and workflow engines
  • Optimization: Visual representation for process analysis and improvement

Key Elements:

  • Events: Start, intermediate, and end events
  • Activities: Tasks and sub-processes
  • Gateways: Decisions and branching logic
  • Connections: Sequence and message flows
  • Pools & Lanes: Organizational units and responsibilities

BPMN supports complete process lifecycles from analysis through implementation, monitoring, and optimization.

Exam Essentials

  • Standard notation for business process modeling
  • Events: Start, Intermediate, End Events with various types
  • Gateways: Exclusive, Parallel, Inclusive for process control
  • Tasks: User, Service, Script, Manual Tasks
  • Pools & Lanes: Organization and assignment of responsibilities
  • Sequence Flow: Order of process steps
  • Message Flow: Communication between pools
  • Certification-relevant for process management and optimization

Core Components

  1. Events: Circular symbols representing process events
  2. Activities: Rectangular symbols for tasks
  3. Gateways: Diamond-shaped symbols for decisions
  4. Connections: Arrows indicating process and message flows
  5. Pools: Containers for complete processes
  6. Lanes: Divisions within pools by responsibility
  7. Artifacts: Documents, data, and groupings
  8. Data Objects: Information elements in the process

Practical Examples

1. Order Processing (Basic Example)

<!-- BPMN 2.0 XML Structure -->
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL">
  
  <!-- Pool for the overall process -->
  <process id="bestellprozess" name="Bestellprozess">
    
    <!-- Start Event -->
    <startEvent id="start" name="Bestellung eingegangen"/>
    
    <!-- Task: Review order -->
    <userTask id="pruefen" name="Bestellung prüfen">
      <documentation>Verfügbarkeit und Kundendaten prüfen</documentation>
    </userTask>
    
    <!-- Exclusive Gateway: Decision -->
    <exclusiveGateway id="entscheidung" name="Verfügbarkeit prüfen"/>
    
    <!-- Task: Reject order -->
    <userTask id="ablehnen" name="Bestellung ablehnen">
      <documentation>Kunde über Nichtverfügbarkeit informieren</documentation>
    </userTask>
    
    <!-- Task: Process order -->
    <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. Approval Process with Parallel Steps

<process id="genehmigungsprozess" name="Genehmigungsprozess">
  
  <!-- Start Event -->
  <startEvent id="start" name="Antrag eingegangen"/>
  
  <!-- User Task: Review request -->
  <userTask id="antragPruefen" name="Antrag prüfen">
    <potentialOwner>
      <resourceAssignmentExpression>${manager}</resourceAssignmentExpression>
    </potentialOwner>
  </userTask>
  
  <!-- Parallel Gateway -->
  <parallelGateway id="parallelStart" name="Parallelprüfung beginnen"/>
  
  <!-- Parallel Tasks -->
  <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 Merge -->
  <parallelGateway id="parallelEnd" name="Ergebnisse zusammenführen"/>
  
  <!-- Exclusive Gateway: Decision -->
  <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"/>
  
  <!-- Parallel branches -->
  <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"/>
  
  <!-- Decision -->
  <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. Multi-Pool Process (Cross-Department)

<!-- Pool 1: Sales -->
<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: Management -->
<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 between Pools -->
<messageFlow id="angebotFlow" sourceRef="angebotGesendet" targetRef="angebotErhalten"/>

BPMN Elements in Detail

Events

○ Start Event          ○ Intermediate Event     ● End Event
  (empty circle)          (circle with symbol)      (thick line)
  
Types:
- Timer Event (⏰)
- Message Event (✉)
- Error Event (❌)
- Signal Event (📡)
- Terminate Event (⏹)

Tasks

□ User Task           ◇ Service Task          ◈ Script Task
  (user)               (automatic)             (script)
  
Types:
- Manual Task (manual)
- Receive Task (receive)
- Send Task (send)
- Business Rule Task (rules)

Gateways

◇ Exclusive Gateway   + Parallel Gateway      ○ Inclusive Gateway
  (exclusive OR)         (parallel AND)          (inclusive OR)
  
Types:
- Complex Gateway (complex)
- Event Gateway (event-driven)

Pools & Lanes

┌─────────────────────────────────────┐
│ Pool (organizational unit)          │
├─────────────────────────────────────┤
│ Lane (area of responsibility)       │
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐    │
│ │Task │ │GW   │ │Task │ │End  │    │
│ └─────┘ └─────┘ └─────┘ └─────┘    │
└─────────────────────────────────────┘

Advantages and Disadvantages

BPMN Advantages

  • Standardization: Consistent notation for all stakeholders
  • Visualization: Intuitive representation of complex processes
  • Automation: Direct implementation in workflow engines
  • Documentation: Living process documentation
  • Analysis: Foundation for process optimization

Disadvantages

  • Complexity: Large processes can become difficult to read
  • Learning Curve: Requires familiarity with the notation
  • Over-Engineering: Excessive detail in modeling can be counterproductive
  • Maintenance: Changes require model updates

BPMN in Practice

Process Optimization

  1. As-Is Analysis: Model the current process
  2. Identify Bottlenecks: Find inefficiencies and redundancies
  3. To-Be Design: Design the optimized process
  4. Implementation: Deploy the new processes
  5. Monitoring: Measure results and make adjustments

Automation

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

@Service
public class BestellService {
    
    @Autowired
    private RuntimeService runtimeService;
    
    @Autowired
    private TaskService taskService;
    
    public void starteBestellprozess(Bestellung bestellung) {
        // Start process
        Map<String, Object> variables = new HashMap<>();
        variables.put("bestellung", bestellung);
        variables.put("kundenId", bestellung.getKundenId());
        
        ProcessInstance process = runtimeService.startProcessInstanceByKey(
            "bestellprozess", variables);
        
        System.out.println("Prozess gestartet: " + process.getId());
    }
    
    public void bearbeiteAufgabe(String taskId, Map<String, Object> variables) {
        // Complete user task
        taskService.complete(taskId, variables);
    }
}

Common Exam Questions

  1. What is the difference between a pool and a lane? A pool represents an organizational unit, while a lane subdivides a pool by areas of responsibility.

  2. Explain the different gateway types! Exclusive Gateway (exclusive OR), Parallel Gateway (parallel AND), Inclusive Gateway (inclusive OR).

  3. When do you use message flow instead of sequence flow? Message flow communicates between pools, while sequence flow occurs within a pool.

  4. What is the purpose of BPMN in software development? It serves as the foundation for workflow automation and process implementation.

Key Resources

  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/

More on BPMN

BPMN is the standard for business process modeling. The following articles help you understand and apply all aspects of BPMN in practice.

Foundations and Concepts

Back to Blog
Share:

Related Posts