Skip to Content
Low-CodeTips and TricksMigration & Versionierung

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

  1. Tab auswaehlen oder Nodes markieren
  2. Menue, dann “Export”, dann “Clipboard”
  3. Format waehlen: JSON (kompakt) oder JSON (formatiert)
  4. JSON-Code kopieren und in einer Datei speichern

Manueller Import

  1. Menue, dann “Import”
  2. JSON-Code einfuegen oder Datei auswaehlen
  3. Ziel waehlen: “Neuer Flow” oder “Aktueller Flow”
  4. 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.json

Storage 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:

VariableStandardwertEmpfohlenBeschreibung
NODERED_FLOW_STORAGE_OUTPUT_FORMATjsonyamlAusgabeformat der Flow-Dateien
NODERED_FLOW_STORAGE_SAVE_BY_NODEtruefalseSpeicherung 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: false

Warum 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.json

Git-Workflow fuer Flows

Empfohlener Workflow

  1. Feature-Branch erstellen: git checkout -b feature/neuer-workflow
  2. Flows im Editor bearbeiten: Aenderungen im Node-RED-Editor vornehmen und deployen
  3. Aenderungen pruefen: git diff zeigt die geaenderten Flow-Dateien
  4. Commit erstellen: git add . && git commit -m "feat: Bestellworkflow hinzugefügt"
  5. Pull Request erstellen: Code-Review durch Teammitglieder
  6. 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 hoch

Migration zwischen Versionen

Vor dem Update

  1. Backup erstellen: Flows exportieren und Git-Commit sicherstellen
  2. Release-Notes pruefen: Aenderungen in der neuen Version lesen
  3. 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 zuruecksetzen

Bei Verwendung von Docker:

# Auf vorherige Image-Version zuruecksetzen docker compose down # In docker-compose.yaml das Image-Tag aendern docker compose up -d

Weiterführende Informationen