# Business Protocol Model and Notation (BPMN)
## [BPMN Modellierungstool](https://demo.bpmn.io/)
## Analytische vs. ausführbare Modellierung
### Analytisch
- Grafische Modellierung von Prozess im IST- und SOLL-Zustand
- Modellierungsmethodik
- Teilweise Simulation von Prozessdaten

### Ausführbar
- Definition von Benutzerinteraktion
  - Rollen, Aufgaben, Deadlines, Exceptionhandling, etc.
- Definition von Systeminteraktion
- Definition des Datenflusses

## BPMN-Basiselemente
![image_206.png](image_206.png)

## Aktivitäten
![image_207.png](image_207.png)
> **nicht weiter zergliederte, operative ausführbare Bearbeitungseinheit**

- Definiert Arbeit die im GP ausgeführt wird
- kann manuell oder automatisiert ausgeführt werden

### Aufgabentypen
![image_208.png](image_208.png)

## Teilprozesse
![image_209.png](image_209.png)
![image_210.png](image_210.png)

- Subprozess muss IMMER mit leerem Startereignis beginnen

## Ereignisse
![image_211.png](image_211.png)
- hat keine eigene Dauer

![image_227.png](image_227.png)

### Zeitereignisse
#### Unterbrechendes Zeitereignis
![image_231.png](image_231.png)

#### Nicht-unterbrechendes Zeitereignis
![image_232.png](image_232.png)

### Bedingungsereignis
- Unterbrechung/Fortsetzung des Prozesses bis/wenn Bedingung eingesetzt ist
- ![image_233.png](image_233.png)

### Fehlerereignis
![image_234.png](image_234.png)

## Konnektoren
### Sequenzflüssse
- ![image_212.png](image_212.png)
- Verbinden Aktivitäten untereinander/mit Events/Gateways

### Nachrichtenflüsse
- ![image_213.png](image_213.png)
- Kommunikation über einen Pool heraus

### Assoziation
- ![image_214.png](image_214.png)
- Verbindet Kommentare, Datenobjekte, zusätzliche Teilnehmer, IT-System

## Tokenkonzept
### XOR-Joins
- ![image_215.png](image_215.png)
- kein Warten
- Leitet alle Token durch

### AND-Joins
- ![image_216.png](image_216.png)
- Synchronisiert
- Wartet auf alle Token

### OR-Joins
- ![image_217.png](image_217.png)
- Synchronisiert
- Wartet auf alle aktiven Token


## Gateways
- Verzweigung muss mit gleicher Verzweigung zusammengeführt werden
- Stellt nut Logik dar
  - Verrichtet keine Arbeit
  - Keine Aktivität
### Datenbasiertes exklusives Gateway
- Es kann nur eine der Verzweigungen ausgewählt werden
- ![image_218.png](image_218.png)
### Paralleles Gateway
- ![image_219.png](image_219.png)
### Datenbasiertes inklusives Gateway
- beschreibt UND-/ODER-Situation
- ![image_220.png](image_220.png)
  - Salat / Salat und etwas Ordentliches / etwas Ordentliches
### Ereignisbasiertes exklusives Gateway
- Es wird gewartet bis eines der nachfolgenden Ereignisse eintritt
  - Der Pfad wird dann gewählt
- ![image_221.png](image_221.png)

## Pools und Lanes
### Pool
- Einheit mit klar voneinander abgegrenzten organisatorischen Grenzen
  - bspw. Unternehmen

#### Pools zuklappen (Blackbox)
- ![image_230.png](image_230.png)
- Vereinbarte Schnittstellen einhalten


### Lane
- repräsentiert verschiedene Prozessteilnehmen
  - Abteilungen / Personen / Rollen

#### typische Fehler
##### Swimlanes :(
![image_222.png](image_222.png)
→ ![image_223.png](image_223.png)

## Nachrichtenfluss
### Nachrichtenfluss innerhalb eines Pools
![image_228.png](image_228.png)

### Nachrichtenfluss innerhalb mehrerer Pools
![image_229.png](image_229.png)

## Artefakte
### Textanmerkungen
![image_235.png](image_235.png)

### Gruppierungen
![image_236.png](image_236.png)


## Daten
- Repräsentieren alle möglichen Informationen
### Datenspeicher
![image_237.png](image_237.png)

## Best-Practices
### Strenges Labelling
- Aktivitäten
  - Bezeichnung aus Objekt und Verb
  - Keine Abkürzungen
- Ereignisse
  - Beschriftungen, bei mehreren Start-/Endereignissen
- Gateways
  - Eindeutige Namen
    - Gibt Entscheidung oder Bedingung an
    - Objekt, Verb, "?"

###  Klarer Anfang, klares Ende
- Jeder Prozess hat mind. 1 Start- & Endereignis

### Konsistente Flussrichtung
- Prozesslogik sichtbar machen
- gekreuzte Linien vermeiden
#### Happy Path
- Sollte leicht zu erkennen sein
- zuerst zeichnen, dann alternative Abläufe hinzufügen

### Diagramme Vereinfachen
- Anzahl redundanter Aufgaben verringern
- Unterprozesse verwenden, um Aufgaben mit demselben Zweck zu gruppieren
- ![image_238.png](image_238.png)

### Aktivitäten modellieren
- nicht mehrere Instanzen der gleichen Aktivität
  - Mehrfachausführung
    - als Zuweisungsbedingung in der Dokumentation und den Zuweisungsregeln
- Nur eine Aufgabe in einen Bereich


### Gateways modellieren
![image_239.png](image_239.png)

![image_240.png](image_240.png)

- Falls ereignisbasierter Split → KEIN ereignisbasierter Join
  - ![image_241.png](image_241.png)

![image_242.png](image_242.png)

### Konnektoren modellieren
![image_243.png](image_243.png)


### Pools modellieren
- Keine Abläufe über Poolgrenzen hinweg
  - ![image_244.png](image_244.png)
- Es muss immer mindestens ein Pool vorhanden sein
  - ![image_245.png](image_245.png)

### Lanes modellieren
- Keine Lanes für automatisierte Aufgaben
  - ![image_246.png](image_246.png)
- nix in der Mitte von zwei Lanes
  - ![image_247.png](image_247.png)