Prozessmodelle versioniert unter prozesse/<name>/ ablegen

Jedes Modell bekommt einen eigenen Ordner mit Steckbrief (README.md,
Status Entwurf|abgenommen), der maßgeblichen Arbeitsschritt-.md und der
daraus erzeugten .bpmn (ADR 0003).

- scripts/pruefe_prozesse.py prüft Ordnername, Dateien, Status und ob
  jede .bpmn byte-gleich mit der Umwandlung ihrer .md ist; --erzeugen
  erzeugt alle .bpmn neu. md_to_bpmn.py arbeitet deterministisch.
- tests/test_pruefe_prozesse.py: Bestandsprüfung plus 11 Fälle für die
  Prüflogik; pytest.ini sammelt .agents/skills und tests.
- Die in Anleitung.md genannten, nie committeten Beispiele liegen jetzt
  unter .agents/skills/sn-bpmn/beispiele/ und werden mitgeprüft.
- Skill sn-bpmn: Entwürfe nach entwuerfe/, neuer Schritt 5 „Ablegen“.
- Vorlage docs/vorlagen/prozess_readme.md, Doku und Fallstricke ergänzt.
- Tests: python -m pytest -q -> 44 bestanden.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-23 13:02:48 +02:00
co-authored by Claude Opus 5.5
parent 012509b6d1
commit 55c024dbc9
25 changed files with 835 additions and 35 deletions
@@ -36,7 +36,7 @@ git switch -c feature/<issue-nr>-<kurzname> # oder bugfix/… ; klein, ASCII,
```
## 4. Umsetzen
- Kleine Schritte, jeder für sich prüfbar. Nach jedem Schritt `python -m pytest -q .agents/skills`.
- Kleine Schritte, jeder für sich prüfbar. Nach jedem Schritt `python -m pytest -q`.
- Regeln aus `AGENTS.md`: nur Standardbibliothek, kein Umbau nebenbei, Stil der Datei beibehalten, Deutsch mit
echten Umlauten.
- **Neues Verhalten des Konverters bekommt einen Test** in `.agents/skills/sn-bpmn/test_md_to_bpmn.py` – pytest,
@@ -45,7 +45,7 @@ git switch -c feature/<issue-nr>-<kurzname> # oder bugfix/… ; klein, ASCII,
- Ändert sich die Markdown-Syntax oder ein Element: `Anleitung.md` bzw. `Elementkatalog.md` mitziehen.
## 5. Nachweis
- `python -m pytest -q .agents/skills` → alles grün.
- `python -m pytest -q` → alles grün.
- `python scripts/pruefe_umlaute.py` → keine Funde.
- Ändert sich die erzeugte BPMN-Datei: ein Beispiel erzeugen und in PICTURE importieren. Kannst du das nicht
selbst, im PR als offenen Punkt eintragen. **Nicht als erledigt ausgeben.**
+14 -5
View File
@@ -25,15 +25,19 @@ stehen in `Modellierregeln.md`.
## Aufruf
```bash
python3 md_to_bpmn.py <prozess.md> <ausgabe.bpmn>
python .agents/skills/sn-bpmn/md_to_bpmn.py <prozess.md> <ausgabe.bpmn>
```
Beispiel:
Beispiel (aus dem Workspace-Root):
```bash
python3 md_to_bpmn.py beispiel_prozess.md beispiel_prozess.bpmn
python .agents/skills/sn-bpmn/md_to_bpmn.py entwuerfe/antrag-pruefen.md entwuerfe/antrag-pruefen.bpmn
```
Versionierte Modelle unter `prozesse/` werden nicht einzeln, sondern gesammelt
erzeugt: `python scripts/pruefe_prozesse.py --erzeugen` (siehe
`prozesse/README.md`).
Die erzeugte `.bpmn`-Datei kann anschließend über den BPMN-Import-Dialog
in PICTURE geladen werden.
@@ -185,8 +189,13 @@ umformulieren.
### Vollständige Beispiele
- Ohne Lanes: `beispiel_prozess.md` / `beispiel_prozess.bpmn`
- Mit Lanes: `gewannenvermessung_lanes.md` / `gewannenvermessung_lanes.bpmn`
In `beispiele/` neben dieser Datei, reine Syntaxbeispiele (fachlich nicht geprüft):
- Ohne Lanes: `beispiele/beispiel_prozess.md` / `beispiele/beispiel_prozess.bpmn`
- Mit Lanes und externem Beteiligten: `beispiele/beispiel_lanes.md` / `beispiele/beispiel_lanes.bpmn`
Ein Test hält die `.bpmn` der Beispiele aktuell; nach einer Änderung am
Konverter `python scripts/pruefe_prozesse.py --erzeugen` ausführen.
## Einschränkungen der aktuellen Version
+19 -4
View File
@@ -19,13 +19,17 @@ schreibst oder bearbeitest.
## Ablauf
1. **Quelle ermitteln.** Frage nach der Rohtext-, Word- oder PDF-Quelle,
falls keine angegeben oder angehängt wurde.
falls keine angegeben oder angehängt wurde. Gibt es den Prozess schon
unter `prozesse/<name>/`, ist dessen `<name>.md` der Ausgangspunkt:
dann auf einem Arbeitsbranch direkt dort ändern statt in `entwuerfe/`,
und nach Schritt 3 mit Schritt 5 weitermachen.
2. **Entwurf erzeugen.** Lies die Quelle und leite daraus eine
strukturierte Arbeitsschritt-`.md` nach der Syntax aus `Anleitung.md`
ab. Triff nachvollziehbare fachliche Annahmen (Schrittgrenzen,
Verzweigungen, Verantwortliche wo erkennbar) und schreibe das Ergebnis
nach `entwuerfe/<name>.md` (Verzeichnis bei Bedarf anlegen). Gleiche den
nach `entwuerfe/<name>.md` (Verzeichnis bei Bedarf anlegen; `<name>` in
Kleinbuchstaben mit Bindestrichen, z. B. `antrag-pruefen`). Gleiche den
Entwurf gegen `Modellierregeln.md` ab und behebe Verstöße direkt im
Entwurf. Fasse kurz zusammen, welche Annahmen getroffen wurden, und
weise auf Stellen hin, die fachlich geprüft werden sollten.
@@ -38,9 +42,20 @@ schreibst oder bearbeitest.
4. **BPMN erzeugen.** Erst nach ausdrücklicher Freigabe (z. B. "ist
angepasst", "passt so", "wandle um"):
```
python .agents/skills/sn-bpmn/md_to_bpmn.py entwuerfe/<name>.md <name>.bpmn
python .agents/skills/sn-bpmn/md_to_bpmn.py entwuerfe/<name>.md entwuerfe/<name>.bpmn
```
Ergebnis kurz melden (Anzahl Schritte/Kanten/Lanes, Pfad der Datei).
Ergebnis kurz melden (Anzahl Schritte/Kanten/Lanes, Pfad der Datei) und
anbieten, das Modell im Repository abzulegen (Schritt 5).
5. **Ablegen (nur auf Wunsch).** Ablauf und Regeln: `prozesse/README.md`
(ADR 0003). Kurz: Branch `feature/<issue-nr>-<name>` von `main`, Ordner
`prozesse/<name>/` mit `<name>.md` und Steckbrief `README.md` aus
`docs/vorlagen/prozess_readme.md` (Status `Entwurf`, Annahmen aus
Schritt 2 unter „Annahmen und offene Punkte“), dann
`python scripts/pruefe_prozesse.py --erzeugen` und `python -m pytest -q`.
Vorher prüfen, dass keine Namen, Aktenzeichen oder Verfahrensdaten in der
`.md` stehen. Commit und Pull-Request-Text vorbereiten; pushen macht der
Mensch. Den Status `abgenommen` setzt nie der Agent von sich aus.
Wenn der Nutzer direkt eine bereits fertige Arbeitsschritt-`.md` angibt
und ausdrücklich nur die Umwandlung möchte, Schritt 2-3 überspringen
@@ -0,0 +1,176 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1" targetNamespace="http://picture-tool.local/bpmn" exporter="md_to_bpmn.py">
<bpmn:collaboration id="Collaboration_1">
<bpmn:participant id="Participant_1" name="Antrag prüfen mit Zuständigkeiten (Beispiel)" processRef="Process_1"/>
<bpmn:participant id="Participant_Ext_1" name="Antragsteller"/>
<bpmn:messageFlow id="MsgFlow_1" sourceRef="Participant_Ext_1" targetRef="StartEvent_S1"/>
<bpmn:messageFlow id="MsgFlow_2" sourceRef="SendTask_S4" targetRef="Participant_Ext_1"/>
<bpmn:messageFlow id="MsgFlow_3" sourceRef="SendTask_S7" targetRef="Participant_Ext_1"/>
</bpmn:collaboration>
<bpmn:process id="Process_1" name="Antrag prüfen mit Zuständigkeiten (Beispiel)" isExecutable="false">
<bpmn:laneSet id="LaneSet_1">
<bpmn:lane id="Lane_1" name="Posteingang">
<bpmn:flowNodeRef>StartEvent_S1</bpmn:flowNodeRef>
<bpmn:flowNodeRef>SendTask_S7</bpmn:flowNodeRef>
<bpmn:flowNodeRef>EndEvent_S8</bpmn:flowNodeRef>
</bpmn:lane>
<bpmn:lane id="Lane_2" name="Sachbearbeitung">
<bpmn:flowNodeRef>Task_S2</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_S3</bpmn:flowNodeRef>
<bpmn:flowNodeRef>SendTask_S4</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Task_S5</bpmn:flowNodeRef>
</bpmn:lane>
<bpmn:lane id="Lane_3" name="Teamleitung">
<bpmn:flowNodeRef>Task_S6</bpmn:flowNodeRef>
</bpmn:lane>
</bpmn:laneSet>
<bpmn:startEvent id="StartEvent_S1" name="Antrag geht ein">
<bpmn:outgoing>Flow_1</bpmn:outgoing>
<bpmn:messageEventDefinition id="StartEvent_S1_ed"/>
</bpmn:startEvent>
<bpmn:task id="Task_S2" name="Antrag erfassen">
<bpmn:incoming>Flow_1</bpmn:incoming>
<bpmn:incoming>Flow_5</bpmn:incoming>
<bpmn:outgoing>Flow_2</bpmn:outgoing>
</bpmn:task>
<bpmn:exclusiveGateway id="Gateway_S3" name="Antrag vollständig?">
<bpmn:incoming>Flow_2</bpmn:incoming>
<bpmn:outgoing>Flow_3</bpmn:outgoing>
<bpmn:outgoing>Flow_4</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sendTask id="SendTask_S4" name="Unterlagen nachfordern">
<bpmn:incoming>Flow_4</bpmn:incoming>
<bpmn:outgoing>Flow_5</bpmn:outgoing>
</bpmn:sendTask>
<bpmn:task id="Task_S5" name="Entscheidung vorbereiten">
<bpmn:incoming>Flow_3</bpmn:incoming>
<bpmn:outgoing>Flow_6</bpmn:outgoing>
</bpmn:task>
<bpmn:task id="Task_S6" name="Entscheidung zeichnen">
<bpmn:incoming>Flow_6</bpmn:incoming>
<bpmn:outgoing>Flow_7</bpmn:outgoing>
</bpmn:task>
<bpmn:sendTask id="SendTask_S7" name="Bescheid versenden">
<bpmn:incoming>Flow_7</bpmn:incoming>
<bpmn:outgoing>Flow_8</bpmn:outgoing>
</bpmn:sendTask>
<bpmn:endEvent id="EndEvent_S8" name="Antrag entschieden">
<bpmn:incoming>Flow_8</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_1" sourceRef="StartEvent_S1" targetRef="Task_S2"/>
<bpmn:sequenceFlow id="Flow_2" sourceRef="Task_S2" targetRef="Gateway_S3"/>
<bpmn:sequenceFlow id="Flow_3" sourceRef="Gateway_S3" targetRef="Task_S5" name="Ja"/>
<bpmn:sequenceFlow id="Flow_4" sourceRef="Gateway_S3" targetRef="SendTask_S4" name="Nein"/>
<bpmn:sequenceFlow id="Flow_5" sourceRef="SendTask_S4" targetRef="Task_S2"/>
<bpmn:sequenceFlow id="Flow_6" sourceRef="Task_S5" targetRef="Task_S6"/>
<bpmn:sequenceFlow id="Flow_7" sourceRef="Task_S6" targetRef="SendTask_S7"/>
<bpmn:sequenceFlow id="Flow_8" sourceRef="SendTask_S7" targetRef="EndEvent_S8"/>
</bpmn:process>
<bpmndi:BPMNDiagram id="Diagram_1">
<bpmndi:BPMNPlane id="Plane_1" bpmnElement="Collaboration_1">
<bpmndi:BPMNShape id="Participant_1_di" bpmnElement="Participant_1" isHorizontal="true">
<dc:Bounds x="0" y="0" width="1366" height="720"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_1_di" bpmnElement="Lane_1" isHorizontal="true">
<dc:Bounds x="0" y="0" width="1366" height="190"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_2_di" bpmnElement="Lane_2" isHorizontal="true">
<dc:Bounds x="0" y="190" width="1366" height="340"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_3_di" bpmnElement="Lane_3" isHorizontal="true">
<dc:Bounds x="0" y="530" width="1366" height="190"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Participant_Ext_1_di" bpmnElement="Participant_Ext_1" isHorizontal="true">
<dc:Bounds x="0" y="780" width="1366" height="100"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="StartEvent_S1_di" bpmnElement="StartEvent_S1">
<dc:Bounds x="110" y="77" width="36" height="36"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_S2_di" bpmnElement="Task_S2">
<dc:Bounds x="300" y="320" width="100" height="80"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_S3_di" bpmnElement="Gateway_S3">
<dc:Bounds x="490" y="335" width="50" height="50"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="SendTask_S4_di" bpmnElement="SendTask_S4">
<dc:Bounds x="680" y="235" width="100" height="80"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_S5_di" bpmnElement="Task_S5">
<dc:Bounds x="680" y="405" width="100" height="80"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_S6_di" bpmnElement="Task_S6">
<dc:Bounds x="870" y="585" width="100" height="80"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="SendTask_S7_di" bpmnElement="SendTask_S7">
<dc:Bounds x="1060" y="55" width="100" height="80"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="EndEvent_S8_di" bpmnElement="EndEvent_S8">
<dc:Bounds x="1250" y="77" width="36" height="36"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1">
<di:waypoint x="146" y="95"/>
<di:waypoint x="223" y="95"/>
<di:waypoint x="223" y="360"/>
<di:waypoint x="300" y="360"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2">
<di:waypoint x="400" y="360"/>
<di:waypoint x="400" y="310"/>
<di:waypoint x="515" y="310"/>
<di:waypoint x="515" y="335"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_3_di" bpmnElement="Flow_3">
<di:waypoint x="515" y="385"/>
<di:waypoint x="515" y="410"/>
<di:waypoint x="680" y="410"/>
<di:waypoint x="680" y="445"/>
<bpmndi:BPMNLabel>
<dc:Bounds x="523" y="389.5" width="30" height="14"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_4_di" bpmnElement="Flow_4">
<di:waypoint x="540" y="360"/>
<di:waypoint x="565" y="360"/>
<di:waypoint x="565" y="275"/>
<di:waypoint x="680" y="275"/>
<bpmndi:BPMNLabel>
<dc:Bounds x="537.5" y="340" width="30" height="14"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_5_di" bpmnElement="Flow_5">
<di:waypoint x="713.333" y="315"/>
<di:waypoint x="713.333" y="770"/>
<di:waypoint x="350" y="770"/>
<di:waypoint x="350" y="400"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_6_di" bpmnElement="Flow_6">
<di:waypoint x="780" y="445"/>
<di:waypoint x="825" y="445"/>
<di:waypoint x="825" y="625"/>
<di:waypoint x="870" y="625"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_7_di" bpmnElement="Flow_7">
<di:waypoint x="970" y="625"/>
<di:waypoint x="1015" y="625"/>
<di:waypoint x="1015" y="95"/>
<di:waypoint x="1060" y="95"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_8_di" bpmnElement="Flow_8">
<di:waypoint x="1160" y="95"/>
<di:waypoint x="1250" y="95"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="MsgFlow_1_di" bpmnElement="MsgFlow_1">
<di:waypoint x="341.5" y="780"/>
<di:waypoint x="128" y="113"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="MsgFlow_2_di" bpmnElement="MsgFlow_2">
<di:waypoint x="746.667" y="315"/>
<di:waypoint x="683" y="780"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="MsgFlow_3_di" bpmnElement="MsgFlow_3">
<di:waypoint x="1110" y="135"/>
<di:waypoint x="1024.5" y="780"/>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>
@@ -0,0 +1,20 @@
# Syntaxbeispiel mit Lanes und externem Beteiligten – fachlich nicht geprüft, nur zur Veranschaulichung.
Prozess: Antrag prüfen mit Zuständigkeiten (Beispiel)
Extern: Antragsteller
S1 Start Nachricht: Posteingang: Antrag geht ein
<~ Antragsteller
-> S2
S2 Task: Sachbearbeitung: Antrag erfassen
S3 Gateway XOR: Sachbearbeitung: Antrag vollständig?
Ja -> S5
Nein -> S4
S4 Sendeaufgabe: Sachbearbeitung: Unterlagen nachfordern
~> Antragsteller
-> S2
S5 Task: Sachbearbeitung: Entscheidung vorbereiten
S6 Task: Teamleitung: Entscheidung zeichnen
S7 Sendeaufgabe: Posteingang: Bescheid versenden
~> Antragsteller
-> S8
S8 Ende: Posteingang: Antrag entschieden
@@ -0,0 +1,171 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1" targetNamespace="http://picture-tool.local/bpmn" exporter="md_to_bpmn.py">
<bpmn:process id="Process_1" name="Antrag prüfen (Beispiel)" isExecutable="false">
<bpmn:startEvent id="StartEvent_S1" name="Antrag geht ein">
<bpmn:outgoing>Flow_1</bpmn:outgoing>
<bpmn:messageEventDefinition id="StartEvent_S1_ed"/>
</bpmn:startEvent>
<bpmn:task id="Task_S2" name="Antrag erfassen">
<bpmn:incoming>Flow_1</bpmn:incoming>
<bpmn:incoming>Flow_5</bpmn:incoming>
<bpmn:outgoing>Flow_2</bpmn:outgoing>
</bpmn:task>
<bpmn:exclusiveGateway id="Gateway_S3" name="Antrag vollständig?">
<bpmn:incoming>Flow_2</bpmn:incoming>
<bpmn:outgoing>Flow_3</bpmn:outgoing>
<bpmn:outgoing>Flow_4</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sendTask id="SendTask_S4" name="Unterlagen nachfordern">
<bpmn:incoming>Flow_4</bpmn:incoming>
<bpmn:outgoing>Flow_5</bpmn:outgoing>
</bpmn:sendTask>
<bpmn:task id="Task_S5" name="Antrag fachlich prüfen">
<bpmn:incoming>Flow_3</bpmn:incoming>
<bpmn:outgoing>Flow_6</bpmn:outgoing>
</bpmn:task>
<bpmn:exclusiveGateway id="Gateway_S6" name="Antrag begründet?">
<bpmn:incoming>Flow_6</bpmn:incoming>
<bpmn:outgoing>Flow_7</bpmn:outgoing>
<bpmn:outgoing>Flow_8</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:task id="Task_S7" name="Bewilligung vorbereiten">
<bpmn:incoming>Flow_7</bpmn:incoming>
<bpmn:outgoing>Flow_9</bpmn:outgoing>
</bpmn:task>
<bpmn:task id="Task_S8" name="Ablehnung vorbereiten">
<bpmn:incoming>Flow_8</bpmn:incoming>
<bpmn:outgoing>Flow_10</bpmn:outgoing>
</bpmn:task>
<bpmn:sendTask id="SendTask_S9" name="Bescheid versenden">
<bpmn:incoming>Flow_9</bpmn:incoming>
<bpmn:incoming>Flow_10</bpmn:incoming>
<bpmn:outgoing>Flow_11</bpmn:outgoing>
</bpmn:sendTask>
<bpmn:endEvent id="EndEvent_S10" name="Antrag entschieden">
<bpmn:incoming>Flow_11</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_1" sourceRef="StartEvent_S1" targetRef="Task_S2"/>
<bpmn:sequenceFlow id="Flow_2" sourceRef="Task_S2" targetRef="Gateway_S3"/>
<bpmn:sequenceFlow id="Flow_3" sourceRef="Gateway_S3" targetRef="Task_S5" name="Ja"/>
<bpmn:sequenceFlow id="Flow_4" sourceRef="Gateway_S3" targetRef="SendTask_S4" name="Nein"/>
<bpmn:sequenceFlow id="Flow_5" sourceRef="SendTask_S4" targetRef="Task_S2"/>
<bpmn:sequenceFlow id="Flow_6" sourceRef="Task_S5" targetRef="Gateway_S6"/>
<bpmn:sequenceFlow id="Flow_7" sourceRef="Gateway_S6" targetRef="Task_S7" name="Ja"/>
<bpmn:sequenceFlow id="Flow_8" sourceRef="Gateway_S6" targetRef="Task_S8" name="Nein"/>
<bpmn:sequenceFlow id="Flow_9" sourceRef="Task_S7" targetRef="SendTask_S9"/>
<bpmn:sequenceFlow id="Flow_10" sourceRef="Task_S8" targetRef="SendTask_S9"/>
<bpmn:sequenceFlow id="Flow_11" sourceRef="SendTask_S9" targetRef="EndEvent_S10"/>
</bpmn:process>
<bpmndi:BPMNDiagram id="Diagram_1">
<bpmndi:BPMNPlane id="Plane_1" bpmnElement="Process_1">
<bpmndi:BPMNShape id="StartEvent_S1_di" bpmnElement="StartEvent_S1">
<dc:Bounds x="165" y="80" width="36" height="36"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_S2_di" bpmnElement="Task_S2">
<dc:Bounds x="165" y="250" width="100" height="80"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_S3_di" bpmnElement="Gateway_S3">
<dc:Bounds x="165" y="420" width="50" height="50"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="SendTask_S4_di" bpmnElement="SendTask_S4">
<dc:Bounds x="80" y="590" width="100" height="80"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_S5_di" bpmnElement="Task_S5">
<dc:Bounds x="250" y="590" width="100" height="80"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gateway_S6_di" bpmnElement="Gateway_S6">
<dc:Bounds x="165" y="760" width="50" height="50"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_S7_di" bpmnElement="Task_S7">
<dc:Bounds x="80" y="930" width="100" height="80"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_S8_di" bpmnElement="Task_S8">
<dc:Bounds x="250" y="930" width="100" height="80"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="SendTask_S9_di" bpmnElement="SendTask_S9">
<dc:Bounds x="165" y="1100" width="100" height="80"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="EndEvent_S10_di" bpmnElement="EndEvent_S10">
<dc:Bounds x="165" y="1270" width="36" height="36"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1">
<di:waypoint x="183" y="116"/>
<di:waypoint x="183" y="183"/>
<di:waypoint x="215" y="183"/>
<di:waypoint x="215" y="250"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2">
<di:waypoint x="215" y="330"/>
<di:waypoint x="215" y="395"/>
<di:waypoint x="190" y="395"/>
<di:waypoint x="190" y="420"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_3_di" bpmnElement="Flow_3">
<di:waypoint x="190" y="470"/>
<di:waypoint x="190" y="495"/>
<di:waypoint x="300" y="495"/>
<di:waypoint x="300" y="590"/>
<bpmndi:BPMNLabel>
<dc:Bounds x="198" y="474.5" width="30" height="14"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_4_di" bpmnElement="Flow_4">
<di:waypoint x="215" y="445"/>
<di:waypoint x="240" y="445"/>
<di:waypoint x="240" y="590"/>
<di:waypoint x="130" y="590"/>
<bpmndi:BPMNLabel>
<dc:Bounds x="212.5" y="425" width="30" height="14"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_5_di" bpmnElement="Flow_5">
<di:waypoint x="80" y="630"/>
<di:waypoint x="20" y="630"/>
<di:waypoint x="20" y="290"/>
<di:waypoint x="165" y="290"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_6_di" bpmnElement="Flow_6">
<di:waypoint x="300" y="670"/>
<di:waypoint x="300" y="735"/>
<di:waypoint x="190" y="735"/>
<di:waypoint x="190" y="760"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_7_di" bpmnElement="Flow_7">
<di:waypoint x="190" y="810"/>
<di:waypoint x="190" y="835"/>
<di:waypoint x="130" y="835"/>
<di:waypoint x="130" y="930"/>
<bpmndi:BPMNLabel>
<dc:Bounds x="198" y="814.5" width="30" height="14"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_8_di" bpmnElement="Flow_8">
<di:waypoint x="215" y="785"/>
<di:waypoint x="240" y="785"/>
<di:waypoint x="240" y="930"/>
<di:waypoint x="300" y="930"/>
<bpmndi:BPMNLabel>
<dc:Bounds x="212.5" y="765" width="30" height="14"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_9_di" bpmnElement="Flow_9">
<di:waypoint x="130" y="1010"/>
<di:waypoint x="130" y="1055"/>
<di:waypoint x="198.333" y="1055"/>
<di:waypoint x="198.333" y="1100"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_10_di" bpmnElement="Flow_10">
<di:waypoint x="300" y="1010"/>
<di:waypoint x="300" y="1055"/>
<di:waypoint x="231.667" y="1055"/>
<di:waypoint x="231.667" y="1100"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_11_di" bpmnElement="Flow_11">
<di:waypoint x="215" y="1180"/>
<di:waypoint x="215" y="1225"/>
<di:waypoint x="183" y="1225"/>
<di:waypoint x="183" y="1270"/>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>
@@ -0,0 +1,19 @@
# Syntaxbeispiel ohne Lanes – fachlich nicht geprüft, nur zur Veranschaulichung der Markdown-Syntax.
Prozess: Antrag prüfen (Beispiel)
S1 Start Nachricht: Antrag geht ein
S2 Task: Antrag erfassen
S3 Gateway XOR: Antrag vollständig?
Ja -> S5
Nein -> S4
S4 Sendeaufgabe: Unterlagen nachfordern
-> S2
S5 Task: Antrag fachlich prüfen
S6 Gateway XOR: Antrag begründet?
Ja -> S7
Nein -> S8
S7 Task: Bewilligung vorbereiten
-> S9
S8 Task: Ablehnung vorbereiten
S9 Sendeaufgabe: Bescheid versenden
S10 Ende: Antrag entschieden