Plant Simulation XML


<< Klicken um Inhaltsverzeichnis anzuzeigen >>

Navigation:  Module und Plug-ins > 4base > Datenbankdefinition >

Plant Simulation XML


In diesem Kapitel werden Informationen und Besonderheiten rund um das Thema Plant Simulation XML-Datenverbindung aufgelistet.

 

Plant Simulation XML konfigurieren

Plant Simulation XML ist als Schnittstelle in das Plug-in Datenbankdefinition integriert und stellt eine Möglichkeit dar, Daten, welche im Plant Simulation XML-Format exportiert wurden an SimAssist anzubinden.

Der Aufbau enthält teils die gleichen Elemente, wie bereits im Kapitel Datenbankdefinition beschrieben. Daher werden im Folgenden nur die Plant Simulation XML-spezifischen Elemente erklärt.

 

Beim Auswählen einer Datei wird diese auf das Plant-Simulation-spezifische XML-Schema geprüft. Beim Fehlschlagen der Prüfung wird eine Fehlermeldung angezeigt.

Bei erfolgreicher Prüfung werden Spaltenname und -typ aller Spalten der Tabelle inklusive aller Sub-Tabellen als Baumansicht dargestellt.

Die einzelnen Spalten sind über eine Checkbox auswählbar. Dabei sind Spalten vom Typ Tabelle standardmäßig abgewählt. Alle anderen Spaltentypen sind standardmäßig ausgewählt.

Durch die Auswahl können Nutzer bestimmen, welche Spalten der Tabelle geladen werden sollen. Die Auswahl wird mit dem Projekt gespeichert und beim Öffnen wiederhergestellt.

Die Spalte RowIndex wird (wenn vorhanden) wie jede andere Spalte behandelt und steht immer an erster Stelle.

20251216_dbdef_plantxml

Abbildung 1 - Plant Simulation XML Übersicht

 

 

Das Laden von Sub-Tabellen erfolgt als Produkt aus den Zeilenwerten der übergeordneten Tabelle und allen Werten der jeweiligen Sub-Tabelle.

Dies erfordert, dass das Schema der Sub-Tabellen innerhalb einer Tabellenspalte gleich ist. Stimmen die Schemas der Sub-Tabellen nicht überein, wird die Auswahlmöglichkeit in der Baumansicht deaktiviert.

Ein Laden der Sub-Tabellen ist dann nicht möglich. Die Vorgehensweise ist im nachfolgenden Beispiel Tabelle 4 bis Tabelle 7 verdeutlicht.

Die in SimAssist geladene Tabelle weist eine flache Struktur auf und kann wie jede andere Datenquelle direkt oder in SQL-Ausdrücken verwendet werden. In der flachen Tabellenstruktur werden eindeutige Spaltennamen benötigt. Deshalb wird der Spaltenname von Spalten aus SubTabellen mit dem Namen der übergeordneten Spalte zusammengesetzt.

 

Tabelle 4 – Beispiel Haupttabelle aus Plant Simulation

Land (String)

Hauptstadt (String)

Einwohner (Integer)

Städte (Tabelle)

Spanien

Madrid

48.000.000

Städte-Spanien

Frankreich

Paris

68.000.000

Städte-Frankreich

 

 

Tabelle 5 – Beispiel Sub-Tabelle Städte-Spanien aus Plant Simulation

Stadt (String)

Einwohner (Integer)

Bilbao

344.000

Barcelona

1.620.000

 

 

Tabelle 6 – Beispiel Sub-Tabelle Städte-Frankreich aus Plant Simulation

Stadt (String)

Einwohner (Integer)

Nizza

348.000

Lyon

522.000

 

 

Tabelle 7 – Beispiel geladene Ergebnistabelle in SimAssist

Land (String)

Hauptstadt (String)

Einwohner (Integer)

Städte_Stadt (String)

Städte_Einwohner (Integer)

Spanien

Madrid

48.000.000

Bilbao

344.000

Spanien

Madrid

68.000.000

Barcelona

1.620.000

Frankreich

Paris

68.000.000

Nizza

348.000

Frankreich

Paris

68.000.000

Lyon

522.000

 

 

Mit dem beschriebenen Vorgehen können beliebig viele Ebenen der Verschachtelung (SubTabellen in Subtabellen) behandelt werden.

Jedoch sorgt eine hohe Verschachtelung auch für eine häufige Duplikation der Daten in der Ergebnistabelle, was sich negativ auf die Performance auswirken kann.

 

 

Ermittlung von Spaltennamen

Tabellen in SimAssist setzen eindeutige Spaltennamen (Typ String) voraus. Diese werden wie folgend beschrieben aus der XML-Datei ermittelt:

Wenn ColumnIndex Knoten vorhanden (Dies ist der Fall, wenn in der Plant Simulation-Tabelle der Spaltenindex aktiv ist)

--> Übernahme der Werte als Name der Spalte in der Datentabelle (als Text, unabhängig vom Plant Simulation-Datentyp)

 

Wenn ColumnIndex Knoten nicht vorhanden (Dies ist der Fall, wenn in der Plant Simulation-Tabelle kein Spaltenindex aktiv ist)

--> Spaltenname ergibt sich aus Column_ + Index der Spalte in Plant Simulation

oWenn Row-Index aktiv: Erste Spalte in DataTable: Column_0

oWenn Row-Index nicht aktiv: Erste Spalte in DataTable: Column_1

 

Wenn ein Spaltenname bereits vorhanden ist, dann wird an den Namen ein „_“ und eine Zahl angehängt, beginnend mit 1.

Wenn der neue Name auch vorhanden ist, dann wird die Zahl so lange erhöht, bis der neue Name eindeutig ist.

 

Die Namen von Sub-Tabellenspalten erhalten den Namen der übergeordneten Spalte als Präfix, wobei ein Unterstrich als Trennzeichen eingesetzt wird (siehe Tabelle 7).

 

 

Prüfung des Schemas von Sub-Tabellen

Das Schema von Sub-Tabellen stimmt überein, wenn die folgenden Bedingungen in der XML-Datei erfüllt sind:

Der ColumnIndex Knoten (Name) der Tabellen ist gleich (wenn vorhanden)

Die Anzahl der Column Knoten innerhalb der Tabelle ist gleich

Die Column Knoten an gleicher Position haben das gleiche Typ-Attribut

 

 

Verarbeitung der XML-Datei

Zur Erstellung einer in SimAssist einsetzbaren Datentabelle werden von SimAssist die folgenden Schritte durchlaufen:

1.Angeben des Dateipfads zur XML-Datei durch den Nutzer oder Laden des Pfads aus den Einstellungen

2.Laden des vollständigen XML-Dokuments in den Arbeitsspeicher

3.Prüfen des XML-Schemas

4.Ermittlung der Spaltennamen und -typen aller Spalten der Haupttabelle und Sub-Tabellen

5.Bestätigung der Auswahl der Spalten durch den Nutzer oder Anwendung der gespeicherten Auswahl

6.Erzeugung einer SQLite Datenbank im temporären Ordner

7.Schreiben der Werte der ausgewählten Spalten in die Datenbank, wo wie oben beschrieben eine flache Struktur hergestellt wird

8.Verwerfen des XML-Dokuments aus dem Arbeitsspeicher

 

Nach der Verbindung einer XML-Datei wird diese überwacht. Bei einer Änderung der Datei, werden die oben genannten Schritte ab Schritt 2 erneut durchlaufen.

 

 

Verarbeitung der Datentypen

Gleitkommazahlen:

oPlant Simulation speichert Gleitkommazahlen (real, time, money, length, weight, speed, acceleration) immer im selben Format ab x.yz (mit einem Punkt). Dies ist sprachunabhängig.

Datumswerte:

oPlant Simulation speichert Datumswerte in zwei unterschiedlichen Formaten ab:

dd.MM.YYYY HH:mm:ss.ffff

YYYY/MM/dd HH:mm:ss.ffff

oBeide Formate werden automatisch erkannt und eingelesen.

Date (ohne Time) wird als DateTime mit einer Uhrzeit „00:00:00.0000“ eingelesen.

Boolean werte werden als Text eingelesen.

 

 


© SimPlan AG - AG Hanau HRB 6845 - info@simplan.de - www.simplan.de