# Ordnerstrukturen

Systemverzeichnis

Arbeitsverzeichnis

DynamicNodes arbeitet mit zwei Basisverzeichnissen. Dem Systemverzeichnis der Laufzeitumgebung, welches üblicherweise das Installationsverzeichnis von DynamicNodes ist und dem Arbeitsverzeichnis welches sich normalerweise im Profil des Benutzers befindet.

## Systemverzeichnis

Das Systemverzeichnis von DynamicNodes befindet sich nach einer Installation mit dem Setup-Programm typischerweise in `%ProgramFiles%\DynamicNodes`. DynamicNodes benötigt in der Regel keine Schreibrechte für dieses Verzeichnis. Es besitzt die folgende Struktur:

- assemblies
  In diesem Verzeichnis befinden sich die Programmbibliotheken des DynamicNodes-Systems.
  - ApplicationCoreShell.dll
    Eine Konsolenimplementierung für die PowerShell zum Einbinden in Windows-Forms-Anwendungen
  - DataTypesAndTools.dll
    Grundlegende Datentypen für die Verarbeitung in DynamicNodes
  - DNCore.dll
    Das Kernsystem mit der Laufzeitumgebung
  - DNExtCockpit.dll
    Eine Erweiterung des Systemkerns für die Unterstützung für Benutzerschnittstellenkomponenten in einer Cockpit genannten Ansicht.
  - DNExtGui.dll
    Eine Erweiterung des Systemkerns welche die Erweiterung des grafischen Editors durch PowerShell-Scripte ermöglicht.
  - DNExtObjects.dll
    Eine Erweiterung der Entwicklungsumgebung für die komfortable Nutzung der Knoten für die Low-Level-.NET-Programmierung.
  - DNExtRemoting.dll
    Eine Erweiterung des Systemkerns zur Fernsteuerung und -überwachung der DynamicNodes-Laufzeitumgebung über Netzwerk.
  - DNExtShell.dll
    Die Einbindung der Application-Core-Shell (PowerShell) in DynamicNodes.
  - DNTesting.dll
    Die Testumgebung für Knotentypen
  - DNVisual.dll
    Die visuellen Erweiterungen des Kernsystems und die Grundlagen für den grafischen Editor
  - ...
- gui
  In diesem Verzeichnis werden die PowerShell-basierten Erweiterungen des Editors hinterlegt
- help
  In diesem Verzeichnis ist das HTML-Hilfesystem und die XML-Knotenreferenz untergebracht.
  - design
    In diesem Verzeichnis liegen Resourcen für die HTML-Dateien der Hilfe. Z.B. CSS-Dateien und Bilder.
  - nodes
    Dieses Verzeichnis enthält die Referenzdateien der Knoten in XML-Form.
    - content.xml
      Diese Datei enthält einen Index über alle Knotentypen und Knotentypgruppen.
    - DynamicNode.Core.Nodes.htm
      Die Beschreibungsseite für eine Knotentypgruppe.
    - DynamicNode.Core.Nodes.NFlag.xml
      Die Referenzdatei für einen Knotentyp.
    - ...
- media
  In diesem Verzeichnis befinden sich einige Grafiken oder andere multimediale Ressourcen die von der Entwicklungsumgebung benötigt werden.
- modules
  In diesem Verzeichnis befindet sich die Bibliothek für Systemmodule. Module sind Graphen, die für die verschachtelte Wiederverwendung (Sub-Graphen) vorbereitet sind.
- nodelibs
  Dieses Verzeichnis enthält die Knotenbibliotheken des DynamicNodes-Systems.
  Wenn DynamicNodes dieses Verzeichnis bei der Suche nach Knotenbibliotheken ignorieren soll, kann `DNConsole.exe` oder `DNWinApp.exe` mit dem Befehlszeilenargument `-nosyslibs` oder `-nosl` gestartet werden.
  - NLibCockpit.dll
    Eine Knotenbibliothek mit Steuerelementen für das Cockpit.
  - NLibDefault.dll
    Die Standardbibliothek von DynamicNodes.
  - NLibExamples.dll
    Eine Knotenbibliothek mit Beispielknoten für die Knotenentwicklung. Die Quelltexte dieser Knotenbibliothek sind für den Nutzer verfügbar.
  - NLibImageProcessing.dll
    Eine Knotenbibliothek für die Bildverarbeitung.
  - NLibObjects.dll
    Eine Knotenbibliothel für die Microsoft .NET Programmierung. Dazu gehören z.B. generische Knoten für statische und dynamische Methodenaufrufe.
  - NLibShell.dll
    Eine Knotenbibliothek mit Knoten zur Ausführung von PowerShell-Befehlen.
  - ...
- scripts
  In diesem Verzeichnis liegen verschiedene PowerShell-Scripte. Unter anderem können hier auch Scripte zur Erweiterung des Editors abegelegt werden, die im Verzeichnis `gui` registriert sind.
  - boot.ps1
    Das Start-Script von DynamicNodes, das beim Start der Laufzeitumgebung mit ausgeführt wird.
  - DynamicNodes.format.ps1xml
    Enthält die Definitionen für die formatierte Ausgabe der DynamicNodes-Typen.
  - DynamicNodes.types.ps1xml
    Enthält die Definitionen für das erweiterte Typsystem der PowerShell.
  - ...
- styles
  Dieses Verzeichnis enthält die Design-Profile für den grafischen Editor von DynamicNodes.
- templates
  Dieses Verzeichnis enthält die Systemvorlagenbibliothek mit Graphen zu verschiedenen Themenbereichen.
- xml
  Enthält Ressourcen für die XML-Verarbeitung.
  - schema
    Enthält XMLSchema-Dateien für die Validierung von XML-Daten.
- DNConsole.exe
  Ist das Programm für die Ausführung von Flussgraphen auf der Konsole. Mit diesem Programm können Graphen nicht bearbeitet werden.
- DNConsole.exe.config
  Die Konfigurationsdatei für DNConsole.exe.
- DNStarter.exe
  Eine Windows-Anwendung für das komfortable Starten von DynamicNodes-Graphen ohne die grafische Entwicklungsumgebung.
- DNStarter.exe.config
  Die Konfigurationsdatei für DNStarter.exe.
- DNWinApp.exe
  Die Windows-Anwendung mit der Entwicklungsumgebung, dem Hilfesystem und der Testumgebung für Knotentypen.
- DNWinApp.exe.config
  Die Konfigurationsdatei für die Entwicklungsumgebung. In dieser Datei kann z.B. das Debug-Level für das Protokollsystem eingestellt werden.

## Arbeitsverzeichnis

Das Arbeitsverzeichnis wird von DynamicNodes verwendet, um Benutzereinstellungen, Protokolle und auch Projekte abzuspeichern. Für das Arbeitsverzeichnis benötigt DynamicNodes Schreibrechte.

Wenn die Ausführung von DynamicNodes keine Änderungen auf dem System hervorrufen soll, kann es mit dem Befehlszeilenargument `-noworkspace` oder `-nows` ohne ein Arbeitsverzeichnis gestartet werden. Allerdings können in diesem Fall die Einstellungen der Entwicklungsumgebung nicht gespeichert werden, sondern gehen nach Beenden von DynamicNodes verloren. Ohne Arbeitsverzeichnis können auch keine Protokolldateien geschrieben werden.

- logs
  In diesem Verzeichnis werden Protokolldateien gespeichert, wenn DynamicNodes mit dem Befehlszeilenargument `-log` gestartet wird.
- nodelibs
  In diesem Verzeichnis können benutzerspezifische Knotenbibliotheken installiert werden.
  Wenn DynamicNodes dieses Verzeichnis bei der Suche nach Knotenbibliotheken ignorieren soll, kann `DNConsole.exe` oder `DNWinApp.exe` mit dem Befehlszeilenargument `-noworkspacelibs` oder `-nowsl` gestartet werden.
- projects
  Dies ist das Standardverzeichnis für das Speichern von Graphen bzw. Projekten.
  - modules
    In diesem Verzeichnis befindet sich die benutzerspezifische Modulbibliothek.
  - templates
    In diesem Verzeichnis befindet sich die benutzerspezifische Vorlagenbibliothek.
  - ...
- settings
  In diesem Verzeichnis legt DynamicNodes Dateien mit Einstellungen ab. Um die Einstellungen der Entwicklungsumgebung von DynamicNodes auf den Auslieferungszustand zurückzusetzen, reicht es aus, dieses Verzeichnis zu löschen. Es wird beim nächsten Start der Entwicklungsumgebung automatisch neu angelegt.