Migration & Versionierung
Diese Seite beschreibt, wie Flows exportiert, importiert und versioniert werden. Ein zentrales Werkzeug ist die Storage Extension, die Flows fuer Git-optimierte Zusammenarbeit speichert.
Flow-Export und -Import
Manueller Export
- Tab auswaehlen oder Nodes markieren
- Menue, dann “Export”, dann “Clipboard”
- Format waehlen: JSON (kompakt) oder JSON (formatiert)
- JSON-Code kopieren und in einer Datei speichern
Manueller Import
- Menue, dann “Import”
- JSON-Code einfuegen oder Datei auswaehlen
- Ziel waehlen: “Neuer Flow” oder “Aktueller Flow”
- Import bestätigen
Export per API
# Alle Flows als JSON exportieren
curl -s http://localhost:1880/flows \
-H "Content-Type: application/json" \
-o flows-backup.json# Flows per API importieren
curl -X POST http://localhost:1880/flows \
-H "Content-Type: application/json" \
-d @flows-backup.jsonStorage Extension
Die Storage Extension ist Teil der LowCode Runtime und ersetzt das Standard-Storage-Modul von Node-RED. Sie speichert Flows in einer strukturierten Verzeichnisstruktur, die fuer Git-Versionskontrolle optimiert ist.
Konfiguration
Die Storage Extension wird ueber Umgebungsvariablen konfiguriert:
| Variable | Standardwert | Empfohlen | Beschreibung |
|---|---|---|---|
NODERED_FLOW_STORAGE_OUTPUT_FORMAT | json | yaml | Ausgabeformat der Flow-Dateien |
NODERED_FLOW_STORAGE_SAVE_BY_NODE | true | false | Speicherung pro Node oder pro Tab |
docker-compose.yaml:
services:
lowcode:
image: marketplace.processcube.io/processcube-io/processcube_lowcode:latest
environment:
NODERED_FLOW_STORAGE_OUTPUT_FORMAT: yaml
NODERED_FLOW_STORAGE_SAVE_BY_NODE: falseWarum YAML-Format?
Im YAML-Format werden Funktionen mehrzeilig gespeichert, was Diffs in Git deutlich lesbarer macht:
JSON (schwer zu reviewen):
{"func":"const result = msg.payload.map(item => {\n return { id: item.id, name: item.name };\n});\nmsg.payload = result;\nreturn msg;"}YAML (gut zu reviewen):
func: |
const result = msg.payload.map(item => {
return { id: item.id, name: item.name };
});
msg.payload = result;
return msg;Speicherung pro Tab vs. pro Node
- Pro Tab (
SAVE_BY_NODE=false, empfohlen): Eine Datei pro Tab. Verschiedene Entwickler koennen an verschiedenen Tabs arbeiten, ohne Merge-Konflikte zu erzeugen. - Pro Node (
SAVE_BY_NODE=true): Eine Datei pro Node. Weniger Merge-Konflikte, aber Reviews werden schwieriger, da Aenderungen ueber viele Dateien verteilt sind.
Verzeichnisstruktur
$NODE_RED_HOME/
├── flowStorageDir/
│ ├── flows/
│ │ └── Bestellverarbeitung_12345/
│ │ ├── flow.yaml
│ │ └── positions.yaml
│ ├── subflows/
│ │ └── Validierung_abcde/
│ │ ├── subflow.yaml
│ │ └── positions.yaml
│ ├── configs/
│ │ └── processcube-engine-config_Produktion_fghij.yaml
│ └── credentials.json
├── .config.nodes.json
├── .config.users.json
└── .config.runtime.jsonGit-Workflow fuer Flows
Empfohlener Workflow
- Feature-Branch erstellen:
git checkout -b feature/neuer-workflow - Flows im Editor bearbeiten: Aenderungen im Node-RED-Editor vornehmen und deployen
- Aenderungen pruefen:
git diffzeigt die geaenderten Flow-Dateien - Commit erstellen:
git add . && git commit -m "feat: Bestellworkflow hinzugefügt" - Pull Request erstellen: Code-Review durch Teammitglieder
- Merge und Deploy: Nach Freigabe in den Hauptbranch mergen
.gitignore fuer LowCode-Projekte
# Sitzungsdaten und Credentials nicht versionieren
.sessions.json
credentials.json
# Runtime-Konfiguration
.config.runtime.json
# Node-Modules
node_modules/ArtifactShipper-Integration
Die Storage Extension stellt einen Endpunkt bereit, ueber den der ArtifactShipper Flow-Archive hochladen und deployen kann:
# Flow-Archiv per ArtifactShipper deployen
# Der ArtifactShipper erstellt ein tar.gz-Archiv der flowStorageDir-Struktur
# und laedt es auf die LowCode-Instanz hochMigration zwischen Versionen
Vor dem Update
- Backup erstellen: Flows exportieren und Git-Commit sicherstellen
- Release-Notes pruefen: Aenderungen in der neuen Version lesen
- Testumgebung nutzen: Update zuerst in einer Testumgebung durchfuehren
Flow-Kompatibilitaet
LowCode-Updates sind in der Regel abwaertskompatibel. Beachten Sie jedoch:
- Node-Versionen: Neue Versionen koennen zusaetzliche Konfigurationsfelder haben
- API-Aenderungen: Pruefen Sie die Engine-API-Kompatibilitaet
- Abhaengigkeiten: Installierte Third-Party Nodes muessen ggf. aktualisiert werden
Rollback-Strategie
# Git-basierter Rollback
git log --oneline # Letzte Commits anzeigen
git checkout <commit-hash> -- flowStorageDir/ # Flows zuruecksetzenBei Verwendung von Docker:
# Auf vorherige Image-Version zuruecksetzen
docker compose down
# In docker-compose.yaml das Image-Tag aendern
docker compose up -dWeiterführende Informationen
- Deployment — Flow-Deployment in Produktion
- Flow-Organisation — Flows strukturieren
- Runtime Extensions — Storage Extension im Detail