# ATVANTAGE EDS Configurator
Web-Frontend zur Konfiguration des **External Data Service (EDS)** für IBM Content
Navigator. Das Tool bearbeitet die JSON-Konfigurationsdateien komfortabel über den
Browser und schreibt sie direkt in das konfigurierte Zielverzeichnis auf dem Server:
– **`ObjectTypes.json`** – Liste aller Dokumentklassen, für die EDS aktiv ist.
– **`<DOKUMENTKLASSENNAME>_PropertyData.json`** – die eigentliche EDS-Konfiguration
pro Dokumentklasse (Pflichtfelder, Formate, Auswahllisten, abhängige Eigenschaften
usw.), optional auch als Sprachvariante `<DOKUMENTKLASSENNAME>_PropertyData_<locale>.json`
(z.B. `_de`, `_ja`, `_pt_BR`).
Der `sample`-Ordner enthält die Original-Beispieldateien von IBM, an denen sich der
unterstützte Funktionsumfang orientiert.
Zusätzlich gibt es den Tab **„Bankverbindungen (SQL)“**: Er pflegt die Werte für ein
DB2-`UPDATE`-Statement, das ein separater Scheduled Task auf dem IBM-Content-Manager-8-
Server ausführt, um IBAN/Bankname/Account Type im Itemtype „Bankstatements“ anhand von
Kontonummer + Währung anzureichern. Das Tool schreibt daraus die `.sql`-Datei, die der
Scheduled Task aufruft.
## Voraussetzungen
– Node.js ≥ 18 (`node -v` prüfen)
## Installation & Start
„`powershell
npm install
npm start
„`
Der Server läuft danach standardmäßig auf `http://localhost:4173` (Port über die
Umgebungsvariable `PORT` änderbar). Im Browser einfach die Adresse öffnen.
## Erste Einrichtung
Beim ersten Start ist noch kein Zielverzeichnis hinterlegt – das Einstellungen-Fenster
öffnet sich automatisch. Dort das Verzeichnis auf dem Server angeben, in dem
`ObjectTypes.json` und die `*_PropertyData.json`-Dateien liegen (bzw. neu angelegt werden
sollen), mit „Prüfen“ testen und „Speichern“. Die Einstellung wird lokal in
`data/config.json` gespeichert und bleibt über Neustarts erhalten.
## Funktionsübersicht
– **Dokumentklassen verwalten**: Liste aller vorhandenen `*_PropertyData.json`-Dateien
bzw. `ObjectTypes.json`-Einträge im Zielverzeichnis, inkl. Hinweis, falls eine Klasse
nur in `ObjectTypes.json` steht (Datei fehlt noch) oder nur eine Datei existiert
(aber EDS nicht aktiviert ist).
– **Neue Dokumentklasse anlegen**: Name eingeben (nur Buchstaben, Ziffern, `.`, `_`, `-`
– identisch zur EDS-Namenskonvention), optional direkt in `ObjectTypes.json`
eintragen lassen.
– **Eigenschaften (Properties) bearbeiten**: links eine schlanke Liste aller
Eigenschaftsnamen (mit Filter-Suchfeld), rechts die volle Konfiguration der gerade
ausgewählten Eigenschaft – `required`, `hidden`, `displayMode`, `label`, `value`,
`initialValue`, `maxLength`, `format` / `formatDescription`, `validateAs`,
`timestamp` sowie eine `choiceList` mit beliebig vielen Werten (inkl.
Mehrfach-Einfügen per Copy&Paste). So bleibt auch eine Dokumentklasse mit sehr vielen
Eigenschaften übersichtlich, statt einer langen Kartenliste zum Durchscrollen.
Über „+ Eigenschaft hinzufügen“ neu angelegte Eigenschaften erscheinen oben in der
Liste und werden direkt zum Bearbeiten ausgewählt.
– **Abhängige Eigenschaften (`dependentOn` / `dependentValue`)**: eine Eigenschaft kann
mehrere Varianten haben, die jeweils nur greifen, wenn eine andere Eigenschaft einen
bestimmten Wert hat (wie in `Region` → `BranchOffice` in den Beispieldateien). Das
Flag `hasDependentProperties` wird beim Speichern automatisch berechnet.
– **Sprachvarianten**: pro Dokumentklasse können zusätzlich lokalisierte Dateien
(`_PropertyData_<locale>.json`) angelegt und bearbeitet werden.
– **JSON-Vorschau**: zeigt vor dem Speichern exakt den Inhalt, der geschrieben wird.
– **Backups**: vor jedem Überschreiben/Löschen einer Datei wird automatisch eine Kopie
in `<Zielverzeichnis>/_eds_builder_backups/` abgelegt.
### Tab „Bankverbindungen (SQL)“
– **Einstellungen**: Tabellenname (z.B. `BANKSTATEMENTS001`) und vollständiger Pfad zur
`.sql`-Ausgabedatei, die der Scheduled Task ausführt.
– **Tabellarische Bearbeitung**: pro Bankverbindung Kontonummer, IBAN, Bankname,
Account Type und Währung. Über „+ Zeile“ neu angelegte Zeilen erscheinen oben in der
Tabelle (kein Scrollen nötig, um sie zu finden). Die Kombination aus Kontonummer +
Währung muss eindeutig sein (sonst würde das generierte SQL beim Ausführen
fehlschlagen) – doppelte Zeilen werden rot markiert und blockieren das Speichern.
– **Mehrfach-Import**: Zeilen als `Kontonummer;IBAN;Bankname;AccountType;Währung` (oder
Tab-getrennt, z.B. direkt aus Excel eingefügt) auf einmal einfügen.
– **Import aus bestehendem SQL-Skript**: das komplette bisherige `UPDATE`-Statement
einfügen – die Wertetupel werden automatisch erkannt und als Zeilen übernommen
(praktisch für die einmalige Migration der aktuellen Werte in dieses Tool).
– **Speichern & SQL schreiben**: erzeugt das komplette `UPDATE`-Statement neu (inkl.
korrektem SQL-Escaping von Anführungszeichen) und schreibt es an den konfigurierten
Pfad – mit automatischem Backup der vorherigen Version.
## Deployment-Paket für das Zielsystem
Für den produktiven Server liegt ein startfertiges ZIP bei:
**`atvantage-eds-configurator-package.zip`** (bereits inkl. `node_modules` — auf dem
Zielsystem ist **kein `npm install` mehr nötig**, einzige Voraussetzung ist eine
installierte Node.js-Laufzeit, Version 18 oder neuer).
**Vorgehen auf dem Zielsystem:**
1. `atvantage-eds-configurator-package.zip` auf den Server kopieren und in einen
beliebigen Ordner entpacken (kompletten Ordnerinhalt behalten).
2. **Windows**: `start.bat` doppelklicken (öffnet automatisch den Browser auf
`http://localhost:4173`). Der Server läuft in einem eigenen Konsolenfenster
(„ATVANTAGE EDS Configurator“) — zum Beenden dieses Fenster schließen oder Strg+C.
**Linux/macOS**: `./start.sh` ausführen.
3. Beim ersten Start ist noch kein Zielverzeichnis für die EDS-JSON-Dateien
hinterlegt — der Einstellungsdialog öffnet sich automatisch, dort den Pfad auf dem
Zielsystem eintragen (siehe „Erste Einrichtung“ oben).
Ein anderer Port lässt sich per Umgebungsvariable `PORT` vor dem Start setzen (in der
`start.bat` z.B. `set PORT=8080` vor der `node server.js`-Zeile ergänzen).
## Als Windows-Dienst betreiben
Statt `start.bat` (offenes Konsolenfenster, muss nach Anmeldung manuell gestartet
werden) kann die Anwendung auch als richtiger **Windows-Dienst** laufen: startet
automatisch mit Windows, läuft im Hintergrund ohne offenes Fenster, wird bei einem
Absturz automatisch neu gestartet.
**Voraussetzung:** Administratorrechte auf dem Zielsystem (Windows-Dienste lassen sich
nur mit erhöhten Rechten anlegen).
**Installieren:**
1. `install-service.bat` **als Administrator** ausführen (Rechtsklick →
„Als Administrator ausführen“).
2. Der Dienst „ATVANTAGE EDS Configurator“ wird angelegt, gestartet und ist danach unter
„Dienste“ (`services.msc`) sichtbar sowie unter `http://localhost:4173/` erreichbar.
Anderer Port: vor der Installation in derselben Konsole `set SERVICE_PORT=8080` setzen
und danach `install-service.bat` ausführen.
**Bedienen (nach der Installation):** über `services.msc`, oder auf der Kommandozeile
(als Administrator):
„`powershell
net start „ATVANTAGE EDS Configurator“
net stop „ATVANTAGE EDS Configurator“
„`
**Logs:** Der Installationsprozess legt einen Unterordner `daemon\` an, der die
stdout-/stderr-Logs des Dienstes sowie den WinSW-Wrapper-Log enthält – hilfreich zur
Fehlersuche, falls der Dienst nicht startet.
**Deinstallieren:** `uninstall-service.bat` **als Administrator** ausführen. Entfernt
nur die Dienst-Registrierung und den `daemon`-Ordner, nicht die Anwendungsdateien
selbst.
**Wichtig:** Der Ordner sollte nach der Installation nicht mehr verschoben werden (der
Pfad zu `server.js` ist in den generierten Dienst-Dateien fest hinterlegt). Falls doch
nötig: zuerst `uninstall-service.bat`, dann verschieben, dann `install-service.bat`
erneut ausführen.
Technisch nutzt das Ganze das npm-Paket `node-windows` (bereits in `node_modules`
enthalten, kein separater Download nötig), das intern einen WinSW-basierten
Wrapper-Dienst erzeugt.
Das Paket wird über `build-package.ps1` erzeugt (im Quellprojekt, nicht im Paket
selbst enthalten) und lässt sich bei Codeänderungen jederzeit neu bauen:
„`powershell
.\build-package.ps1
„`
## Sicherheitshinweis
Das Tool hat **keine Anmeldung/Zugriffskontrolle** – wer die URL erreichen kann, kann
lesen und schreiben, ohne sich auszuweisen. Der Server schreibt außerdem mit den
Rechten des Node-Prozesses direkt in ein Verzeichnis auf dem Server. Das Tool ist
ausschließlich für den Betrieb in einem vertrauenswürdigen internen Netz gedacht
(zusätzlich z.B. hinter VPN oder Reverse Proxy mit eigener Zugriffskontrolle) – nicht
ohne weitere Absicherung im offenen Internet oder einem gemeinsam genutzten Netzsegment
exponieren.