67 lines
1.3 KiB
Markdown
67 lines
1.3 KiB
Markdown
# ADR 0016 — Modul-Lifecycle
|
|
|
|
## Status
|
|
Accepted
|
|
|
|
## Kurz erklärt
|
|
Der Modul-Lifecycle beschreibt, was mit einem Modul passiert, wenn es installiert, aktiviert, deaktiviert oder entfernt wird.
|
|
|
|
## Kontext
|
|
Das Architekturreview hat kritisiert, dass Module zwar aktivierbar/deaktivierbar sein sollen, aber nicht definiert war, was mit bestehenden Daten passiert.
|
|
|
|
## Entscheidung
|
|
Module haben definierte Zustände:
|
|
|
|
- available
|
|
- installed
|
|
- enabled
|
|
- disabled
|
|
- archived
|
|
|
|
Deinstallation mit Datenlöschung ist kein Standardfall.
|
|
|
|
## Zustände
|
|
|
|
### available
|
|
Modul ist im System vorhanden, aber nicht installiert.
|
|
|
|
### installed
|
|
Modul ist installiert, aber nicht aktiv.
|
|
|
|
### enabled
|
|
Modul ist aktiv.
|
|
|
|
### disabled
|
|
Modul ist deaktiviert, Daten bleiben erhalten.
|
|
|
|
### archived
|
|
Modul wird nicht mehr genutzt, Daten bleiben aus Nachvollziehbarkeitsgründen erhalten.
|
|
|
|
## Datenregel
|
|
Daten werden beim Deaktivieren nicht gelöscht.
|
|
|
|
Grund:
|
|
|
|
- Audit
|
|
- GoBD
|
|
- Nachvollziehbarkeit
|
|
- Referenzintegrität
|
|
|
|
## Modul-Abhängigkeiten
|
|
Module müssen Abhängigkeiten deklarieren.
|
|
|
|
Beispiel:
|
|
|
|
```text
|
|
Invoice Ninja Adapter benötigt Billing-Modul.
|
|
```
|
|
|
|
## Migrationen
|
|
Jedes Modul verwaltet eigene Migrationen.
|
|
|
|
Core-Migrationen dürfen keine Anbieterlogik enthalten.
|
|
|
|
## Verwandte ADRs
|
|
- ADR 0007 — Modul-System
|
|
- ADR 0009 — Core-Grenzen
|