Skip to content
IRC-Coding IRC-Coding
BPMN Business Process Model Process Modeling Events Gateways Tasks IHK relevant

BPMN Basics: Process Modeling, Events & Gateways

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

S

schutzgeist

2 min read

BPMN Basics: Process Modeling, Events, Gateways & Tasks

This article is a term explanation of Business Process Model Notation (BPMN) – including practical examples and relevance for German chambers of commerce (IHK).

In a Nutshell

BPMN is the graphical notation for modeling business processes, providing a unified language for business analysts, developers, and managers.

Compact Technical Description

Business Process Model Notation (BPMN) is an international standard for the graphical representation of business processes. It was developed by the Object Management Group (OMG) and has been available in version 2.0 since 2011.

Main Objectives:

  • Standardization: Uniform notation for all stakeholders
  • Communication: Improved understanding between business departments and IT
  • Automation: Foundation for process automation and workflow engines
  • Optimization: Visualization for process analysis and improvement

Core Elements:

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

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

Exam-Relevant Key Points

  • 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 responsibilities
  • Sequence Flow: Order of process steps
  • Message Flow: Communication between pools
  • IHK-relevant for process management and optimization

Core Components

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

Practical Examples

1. Order Process (Simple 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="Order Process">
    
    <!-- Start Event -->
    <startEvent id="start" name="Order received"/>
    
    <!-- Task: Check order -->
    <userTask id="pruefen" name="Check order">
      <documentation>Check availability and customer data</documentation>
    </userTask>
    
    <!-- Exclusive Gateway: Decision -->
    <exclusiveGateway id="entscheidung" name="Check availability"/>
    
    <!-- Task: Reject order -->
    <userTask id="ablehnen" name="Reject order">
      <documentation>Inform customer about unavailability</documentation>
    </userTask>
    
    <!-- Task: Process order -->
    <serviceTask id="bearbeiten" name="Process order">
      <documentation>Automatic processing in system</documentation>
    </serviceTask>
    
    <!-- End Events -->
    <endEvent id="ende_ablehnung" name="Order rejected"/>
    <endEvent id="ende_erfolg" name="Order processed"/>
    
    <!-- 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 Parallelization

<process id="genehmigungsprozess" name="Approval Process">
  
  <!-- Start Event -->
  <startEvent id="start" name="Request received"/>
  
  <!-- User Task: Check request -->
  <userTask id="antragPruefen" name="Check request">
    <potentialOwner>
      <resourceAssignmentExpression>${manager}</resourceAssignmentExpression>
    </potentialOwner>
  </userTask>
  
  <!-- Parallel Gateway -->
  <parallelGateway id="parallelStart" name="Begin parallel check"/>
  
  <!-- Parallel Tasks -->
  <serviceTask id="finanzPruefung" name="Financial check">
    <documentation>Check budget and costs</documentation>
  </serviceTask>
  
  <userTask id="rechtlichePruefung" name="Legal check">
    <documentation>Check legal aspects</documentation>
  </userTask>
  
  <!-- Parallel Gateway Merge -->
  <parallelGateway id="parallelEnd" name="Merge results"/>
  
  <!-- Exclusive Gateway: Decision -->
  <exclusiveGateway id="genehmigungsEntscheidung" name="Approval"/>
  
  <!-- Tasks -->
  <userTask id="genehmigen" name="Approve request">
    <documentation>Grant approval and implement</documentation>
  </userTask>
  
  <userTask id="ablehnen" name="Reject request">
    <documentation>Justify and communicate rejection</documentation>
  </userTask>
  
  <!-- End Events -->
  <endEvent id="genehmigt" name="Request approved"/>
  <endEvent id="abgelehnt" name="Request rejected"/>
  
  <!-- 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="Sales">
  <lane id="vertriebLane" name="Sales Representative">
    
    <startEvent id="angebotErstellen" name="Create offer"/>
    <userTask id="angebotErstellenTask" name="Prepare offer"/>
    <endEvent id="angebotGesendet" name="Offer sent"/>
    
    <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="Offer received"/>
    <userTask id="angebotPruefen" name="Review offer"/>
    <exclusiveGateway id="genehmigungsGateway" name="Approval"/>
    
    <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 (Responsibility area)          │
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐    │
│ │Task │ │GW   │ │Task │ │End  │    │
│ └─────┘ └─────┘ └─────┘ └─────┘    │
└─────────────────────────────────────┘

Advantages and Disadvantages

Advantages of BPMN

  • Standardization: Uniform 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: Becomes unwieldy with very large processes
  • Learning curve: Requires familiarization with the notation
  • Over-engineering: Overly detailed modeling can be counterproductive
  • Maintenance: Changes require model updates

BPMN in Practice

Process Optimization

  1. As-Is Analysis: Model current process
  2. Identify Weaknesses: Find bottlenecks and redundancies
  3. To-Be Design: Design optimized process
  4. Implementation: Introduce new processes
  5. Monitoring: Measure success and adjust

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("Process started: " + 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 pool and lane? A pool is 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 for communication between pools, sequence flow within a pool.

  4. What is the purpose of BPMN in software development? Foundation for workflow automation and process implementation.

Most Important Sources

  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/
Back to Blog
Share:

Related Posts