Objektpersistenz: Zwischenspeichern von Objekten und Modulschnittstellen

Die Klasse TeamWise.Runtime.NativeSupport.Persistency ermöglicht es, den aktuellen Stand der Objekt- und Schnittstellendaten im aktuellen Modul auf eine Datei zu speichern und wiederherzustellen. Entweder kann die gesamte Modulschnittstelle mit den Daten aller zu dem Zeitpunkt bekannter Objekte gesichert werden (einschließlich lokaler Objekte), oder Objekte können einzeln gesichert werden.

Anlegen eines Persistenz-Objekts

Beliebige Instanzen der Klasse Persistency können über die Services mit der Methode CreatePersistency angelegt werden.

var pers = this.Services.CreatePersistency();

DIe Klasse Persistency unterstützt das IDisposable Interface. Insofern macht es Sinn, Instanzen dieser Klasse immer in einem using-Block zu verwenden.

using (var pers = this.Services.CreatePersistency()) {
   pers.SaveXml = true;
   pers.Filename = @"c:\t\test.xml";
   pers.Add(this.Data.Pvgesl);
   pers.Add(this);
   pers.Save();
}

Man beachte, dass im obigen Beispiel die Save-Anweisung im Grunde redundant ist, da beim Dispose ebenfalls die Daten persistent gemacht werden würden, insofern es noch ungespeicherte Änderungen gibt. Auch ist die Anweisung, das Pvgesl-Objekt hinzuzufügen, redundant, da durch die Add(this)-Anweisung alle bekannten Objekte persistent gemacht werden. Das gleiche Objekt kann durchaus mehrfach hinzugefügt werden. Die letzte Fassung ist allerdings die einzige, die persistent gemacht wird.

Hinzufügen und Entfernen von Objektdaten

bool Add(IDataObject obj);
bool Add(Module modl);
bool Remove(IDataObject obj);

Mit der Add-Methode kann das jeweilige Objekt oder alle bekannten Objekte des Bausteins (globale, lokale und Parameterobjekte) der Persistenz hinzugefügt werden. Die Remove-Methode entfernt das einzelne Objekt wieder aus der Persistenz.

Speichern und Laden

bool Save(String path);
bool Load(String path);

Mit der Save-Methode werden die Daten im angegebenen Pfad persistent gemacht. Die Load-Methode stellt das Persistenz-Objekt aus den gespeicherten Daten wieder her. Durch das Laden der Datei werden noch keine Objektdaten verändert. Sie können anschließend gezielt entscheiden, ob Sie diese Daten ganz oder teilweise in die Datenobjekte übernehmen möchten. Das Argument path kann leer sein, wenn zuvor die Eigenschaft Filename bestückt wurde.

Byte Array

bool Save(out byte[] data);
bool Load(byte[] data);

Alternativ1) kann beim Speichern und Laden ein Byte Array verwendet werden, wenn die Daten irgendwo anderes (z.B. eine SQL-Datenbank) gespeichert werden solle.

Übernehmen der Daten einzelner Objekte

bool Restore(IDataObject obj);
bool Restore(Module modl);

Mit der Restore-Methode kann entweder ein einzelnes Datenobjekt oder sämtliche passende Datenobjekte für einen Baustein wiederhergestellt werden. Die vorher in den jeweiligen Objekten vorhandene Daten gehen dabei verloren.

Eigenschaften

Filename

public string Filename { get; set; }

Mit der Eigenschaft Filename kann der Name der Datei für das anschließende Speichern oder Laden festgelegt werden. Dies ist insbesondere dann sinnvoll, wenn das Speichern als Nebeneffekt vom Dispose erfolgt.

SaveBinary, SaveXml, SaveExcel

bool SaveBinary { set; }
bool SaveXml { set; }
bool SaveExcel { set; }

Über die Eigenschaften SaveBinary und SaveXml kann festgelegt werden, in welchem Format die Daten persistent gemacht werden sollen. Wenn nichts explizit angegeben wird, werden die Daten binär gespeichert, da diese Speicherung am effizientesten ist. Die Eigenschaften schließen sich gegenseitig aus. Beim Laden der Persistenz wird das Format automatisch erkannt. Es können neben binäre und XML Persistenz-Dateien auch sog. TMI-Dateien geladen werden.

Ab TAA 9.07 kann man die Objektdaten (Parameter, globale oder lokale Objekte) zur Informationszwecken auch als Excel Tabelle (XLSX Datei) speichern. Die in Excel Format gespeicherten Objektdaten können nicht wieder geladen werden.

IgnoreRoleOnRestore

bool IgnoreRoleOnRestore { get; set; }

Wenn mit der Methode Restore sämtliche Daten für einen Baustein wiederhergestellt werden sollen, werden durch die definierte Rolle schreibgeschützte Daten übersprungen. Wenn jedoch die Eigenschaft IgnoreRoleOnRestore gesetzt wird, so werden sämtliche Daten wiederhergestellt. Außerdem werden in diesem Fall lokale Objekte angelegt für alle persistent gemachten Objekte, zu der nunmehr keinen passenden Empfänger ermittelt werden kann.

IgnoreEmpty

bool IgnoreEmpty { get; set; }

Beim Speichern im XML-Format kann Platz und Zeit gespart werden, wenn für leere Felder, resp. Felder dessen Inhalt mit dem Default- oder Initial-Wert übereinstimmen, keine Einträge vorgenommen werden. Bei der binären Speicherung wird diese Option ignoriert.

ApplicationVersion

string ApplicationVersion(string appl);

Diese Funktion liefert die Anwendungsversion, die verwendet wurde, als das Persistenz-Objekt erzeugt wurde. Damit kann z.B. zur Laufzeit entschieden werden, ob die in dem Persistenz-Objekt enthaltene Daten überhaupt geladen werden sollen.

if (pers.ApplicationVersion(this.Appl) != this.Services.Application.Version) { ...
1)
Release 9.08
dotnet:native:pers · Zuletzt geändert: 01.09.2022 14:24

Copyright © 1992-2024 TeamWiSE Gesellschaft für Softwaretechnik mbH         Adressen |  Kontakt |  AGB |  Datenschutzerklärung |  Impressum