Stand: 2011-11-20
Diese Änderungsübersicht führt alle wesentlichen funktionalen Änderungen und Erweiterungen an Y.A.S. seit Erscheinen der Vorversion 0.0.4 auf. Dies umfasst Änderungen und Erweiterungen an der Bedienoberfläche, den Dateiformaten und sonstigen Programmeigenschaften. Nicht aufgeführt sind Fehlerbehebungen und kleinere entwicklungsbegleitend durchgeführte Programmoptimierungen zur Verbesserung der Benutzerfreundlichkeit, Stabilität und Performanz von Y.A.S.
Die vollständige Änderungsübersicht inkl. aller Vorversionen findet sich im Auslieferungsarchiv.
Die Ausdruckssprache von Y.A.S. wurde um eine neue Aufrufvariante der Funktion string() erweitert:
string: string
← enumeration
Die Ausdruckssprache von Y.A.S. wurde um die Möglichkeit erweitert, Instanzreferenzen zu dereferenzieren. Damit kann aus dem zumeist instanzbezogenen Auswertungskontext eines Ausdrucks auf die Werte anderer Instanzen zugegriffen werden, soweit zu ihnen Referenzbeziehungen bestehen.
Eine Vielzahl von Aufgabenstellungen erfordert die Vergabe eines eindeutigen Identifikationsmerkmals für die in einer Datenhaltung erfassten Entitäten. In der Praxis kommen hierfür häufig Identifikationsnummern zum Einsatz, die mit der Erzeugung der Entitäten fortlaufend vergeben werden.
Y.A.S. unterstützt die automatische Vergabe fortlaufender Identifikationsnummern bei der Erzeugung von Instanzen durch die Möglichkeit, im Informationsmodell entsprechende Generierfunktionen anzulegen und diese denjenigen Attributen zuzuordnen, die die Identifikationsnummern aufnehmen sollen.
Generierfunktionen für fortlaufend vergebene Identifikationsnummern können im Informationsmodell auf oberster Ebene oder innerhalb von Klassen definiert werden. Innerhalb einer Klasse definierte Generierfunktionen können ohne Einschränkung in Attributen anderer Klassen verwendet werden.
Jeder Generierfunktion wird ein Name zugewiesen, über den sie als Modellelement in ihrem Definitionskontext eindeutig identifiziert und von anderen Modellelementen namentlich referenziert werden kann.
Mit jeder im Informationsmodell definierten Generierfunktion ist in einer Objektdatenhaltung genau ein Nummernkreis von Identifikationsnummer verbunden. Das bedeutet, dass für mehrere Attribute, denen dieselbe Generierfunktion zugeordnet ist, in einer Objektdatenhaltung die generierten Identifikationsnummern fortlaufend aus demselben Nummernkreis erzeugt werden und damit über alle Belegungen dieser Attribute einmalig sind.
Im Kontext einer Objektdatenhaltung sind Generierfunktionen für fortlaufend vergebene Identifikationsnummern als zustandsabhängig zu betrachten. Aktueller Zustand ist jeweils der von einer Generierfunktion zuletzt generierte Wert. Der Zustand wird mit der Objektdatenhaltung verwaltet und auch in der zugeordneten Objektdatendatei gespeichert und beim Laden der Objektdatendatei wieder daraus restauriert.
Generierfunktionen für fortlaufend zu vergebende Identifikationsnummern haben in Y.A.S. eine Reihe von Eigenschaften, über die der Ersteller des Informationsmodells die Funktionsweise der Generierfunktion beeinflussen kann (vgl. Abbildung unten). Hierzu zählen der Startwert, der die erste durch die Generierfunktion zu vergebende Identifikationsnummer angibt, sowie der Inkrementbetrag, der den Abstand zwischen zwei aufeinanderfolgend vergebenen Identifikationsnummern angibt (der auch negativ sein kann). Darüber hinaus kann zu jeder Generierfunktion eingestellt werden, wie der Zustand der Generierfunktion in der Objektdatendatei gespeichert wird. Der Zustand kann einerseits explizit in der Objektdatendatei gespeichert werden, um ihn beim erneuten Laden wieder restaurieren zu können. Wird der Zustand nicht explizit gespeichert, so muss er beim Laden der Objektdatendatei aus den Attributwerten der beteiligten Attribute in den vorhandenen Instanzen ermittelt werden (implizite Speicherung). Im Gegensatz zur impliziten Speicherung ist bei expliziter Zustandsspeicherung sichergestellt, dass jede Identifikationsnummer pro Nummernkreis über die gesamte Lebenszeit der Objektdatenhaltung nur ein Mal vergeben werden kann. Neben der expliziten und impliziten Speicherung ist auch ein kombiniertes Vorgehen möglich. Hierbei wird der Zustand der Generierfunktion explizit in der Objektdatendatei gespeichert und beim Laden nur dann hilfsweise implizit ermittelt, wenn der Zustand nicht explizit in der Objektdatendatei repräsentiert ist. Schließlich kann auf eine explizite oder implizite Zustandsspeicherung auch ganz verzichtet werden. In diesem Fall beginnt die Generierfunktion die Vergabe von Werten nach jedem Laden der Objektdatendatei erneut mit dem im Informationsmodell spezifizierten Startwert.
Jedem Attribut kann eine im Informationsmodell namentlich definierte Generierfunktion zugeordnet werden. Die Anzeige- und Eingabemaske für Attributeigenschaften im Objektdatenmodell-Editor wurde um eine entsprechende Auswahlliste erweitert. Die Auswahlliste bietet alle im Informationsmodell definierten Generierfunktionen unabhängig vom Wertetyp zur Auswahl an. Die Prüfung, ob der Wertetyp der ausgewählten Generierfunktion mit dem Datentyp des Attributs übereinstimmt, erfolgt bei der Validierung des Informationsmodells.
Nach Initialisierung einer Attributbelegung ist der Attributwert im Objektdaten-Editor grundsätzlich beliebigen Änderungen durch den Benutzer zugänglich. Es wird erwogen, in einer zukünftigen Version von Y.A.S. die Konfiguration von attributbezogenen Änderungssperren im Informationsmodell vorzusehen, um bei der Instanzierung automatisch generierte Werte vor nachträglichen Änderungen zu schützen.
Eine häufig wiederkehrende Aufgabenstellung besteht darin, den Zeitpunkt der Erzeugung von Entitäten in der Objektdatenhaltung zu repräsentieren. Im einfachsten Fall erfolgt dies über formatierte Datums-/Zeitangaben als Zeichenketten in entsprechenden Attributen.
Y.A.S. unterstützt die automatische Generierung und Zuweisung von Zeichenketten mit einer Angabe des aktuellen Zeitpunkts bei der Erzeugung von Instanzen durch die Möglichkeit, im Informationsmodell entsprechende Generierfunktionen anzulegen und diese denjenigen Attributen zuzuordnen, die die Datums-/Zeitangaben aufnehmen sollen.
Generierfunktionen für Zeichenketten mit aktueller Datums-/Zeitangabe können im Informationsmodell auf oberster Ebene oder innerhalb von Klassen definiert werden. Aus der Definition innerhalb einer Klasse ergibt sich keine Einschränkung für die Sichtbarkeit bzw. Verwendbarkeit einer Generierfunktion in Attributen anderer Klassen.
Jeder Generierfunktion wird ein Name zugewiesen, über den sie als Modellelement in ihrem Definitionskontext eindeutig identifiziert und von anderen Modellelementen namentlich referenziert werden kann.
Die Erzeugung von Datums-/Zeitangaben durch die Generierfunktion wird durch eine Formatangabe geregelt. Derzeit verwendet Y.A.S. zur Formatspezifikation die Notation für Datum/Zeit-Format-Muster der Java-Klasse java.text.SimpleDateFormat (externer Link auf die Dokumentation von Java SE 6 bei oracle.com). Diese Notation definiert eine Reihe von Klein- und Großbuchstaben als Platzhalter. Die Platzhalter werden bei der Generierung eines Wertes durch die jeweils entsprechende Komponente einer konkreten Datums- bzw. Zeitrepräsentation des aktuellen Zeitpunktes ersetzt. Direkt aufeinander folgende Wiederholungen einzelner Platzhalter führen zu unterschiedlichen Darstellungvarianten.
Die nachfolgende Tabelle gibt eine Übersicht über die gebräuchlichsten Platzhalter in Formatangaben gemäß der verwendeten Notation für Datum-/Zeitformate:
Buchstabe | Datums- oder Zeitkomponente | Formatierungsvariante | Beispiel(e) |
---|---|---|---|
y | Jahr | y: Jahreszahl mit minimaler Stellenzahl | 2011 |
yy: die letzten beiden Stellen der Jahreszahl | 11 | ||
yyy, yyyy: Jahreszahl mit mindestens 3 bzw. 4 Stellen | 2011 | ||
M | Monat | M: Nummer des Monats mit minimaler Stellenzahl | 6, 12 |
MM: Nummer des Monats, zweistellig, ggf. mit führender Null | 06, 12 | ||
MMM: abgekürzter Monatsname | Jun, Dez | ||
MMMM: Monatsname | Juni, Dezember | ||
w | Kalenderwoche (1-52) | W: Nummer der Kalenderwoche mit minimaler Stellenzahl | 8, 23 |
WW: Nummer der Kalenderwoche, zweistellig, ggf. mit führender Null | 08, 23 | ||
D | Tag im Jahr (1-366) | D: Nummer des Tages im Jahr mit minimaler Stellenzahl | 18, 340 |
DDD: Nummer des Tages im Jahr, dreistellig, ggf. mit führenden Nullen | 018, 340 | ||
d | Tag im Monat (1-31) | d: Nummer des Tages im Monat mit minimaler Stellenzahl | 5, 25 |
DD: Nummer des Tages im Monat, zweistellig, ggf. mit führender Null | 05, 25 | ||
F | Tag in Woche (1-7) | F: Nummer des Tages in der Woche | 7 |
E | Wochentag | E, EE, EEE: abgekürzter Name des Wochentags | So |
EEEE: Name des Wochentags | Sonntag | ||
a | AM/PM-Kennung | a: Kennung ob Zeitpunkt vor oder nach Mittag liegt | AM, PM |
H | Stunde am Tag (0-23) | H: Nummer der Stunde mit minimaler Stellenzahl | 3, 23 |
HH: Nummer der Stunde, zweistellig, ggf. mit führender Null | 03, 23 | ||
k | Stunde am Tag (1-24) | k: Nummer der Stunde mit minimaler Stellenzahl | 4, 24 |
kk: Nummer der Stunde, zweistellig, ggf. mit führender Null | 04, 24 | ||
K | Stunde vor/nach Mittag (0-11) | K: Nummer der Stunde vor/nach Mittag mit minimaler Stellenzahl | 3, 11 |
KK: Nummer der Stunde, zweistellig, ggf. mit führender Null | 03, 11 | ||
h | Stunde vor/nach Mittag (1-12) | h: Nummer der Stunde vor/nach Mittag mit minimaler Stellenzahl | 4, 12 |
hh: Nummer der Stunde, zweistellig, ggf. mit führender Null | 04, 12 | ||
m | Minute in Stunde (0-59) | m: Nummer der Minute mit minimaler Stellenzahl | 2, 57 |
mm: Nummer der Minute, zweistellig, ggf. mit führender Null | 02, 57 | ||
s | Sekunde in Minute (0-59) | s: Nummer der Sekunde mit minimaler Stellenzahl | 2, 57 |
ss: Nummer der Sekunde, zweistellig, ggf. mit führender Null | 02, 57 | ||
S | Millisekunde in Sekunde (0-999) | S: Nummer der Millisekunde mit minimaler Stellenzahl | 7, 89, 114 |
SS: Nummer der Millisekunde, zweistellig, ggf. mit führender Null | 07, 89, 114 | ||
SSS: Nummer der Millisekunde, dreistellig, ggf. mit führender Null | 007, 089, 114 |
Die oben gemachten Ausführungen zur Zuordnung von Generierfunktionen zu Attributen und zur Änderbarkeit entsprechend initialisierter Attributbelegungen gelten auch für die hier behandelten Generierfunktionen für Zeichenketten mit aktueller Datums-/Zeitangabe.
Waren bis zur Version 0.0.4 alle Attribute persistent, so kann nun im Informationsmodell zu jedem Attribut eingestellt werden, ob das Attribut beim Laden und/oder beim Speichern einer Objektdatendatei berücksichtigt werden soll. Daraus ergeben sich in der Kombination vier alternative Persistenzmodi je Attribut, zwischen denen ausgewählt werden kann:
Achtung:
Für alle Persistenzmodi außer Persistent gilt:
Nach einem Lade-Speicher-Zyklus sind grundsätzlich alle vormals in der
Objektdatendatei enthaltenen Attributwerte für entsprechend
konfigurierte Attribute gelöscht.
Y.A.S. bietet die Möglichkeit, Objektdatendateien alternativ zum JSON-Format auch im XML-Format zu speichern und zu laden. Die gewählte XML-Auszeichunungsstruktur ist gleichwertig zur JSON-Auszeichnungsstruktur und analog aufgebaut. Sie ergibt sich durch einen Satz generischer Abbildungsregeln, die ein Informationsmodell auf ein gedachtes XML-Schema abbilden. Die in Y.A.S. implementierten Abbildungsregeln für XML wie für JSON sind derzeit proprietär, d. h. sie folgen keinem eingeführten Standard für die Serialisierung von Objektdatenhaltungen. Das gedachte XML-Schema zu einem Informationsmodell kann auch noch nicht in Form einer entsprechenden XML-Schema-Datei generiert werden. Selbiges gilt für eine etwaige JSON-Schema-Datei. (Funktionen zur Generierung expliziter Schema-Dateien werden ggf. in einer zukünftigen Version von Y.A.S. realisiert.)
Jeder geöffneten Objektdatenhaltung wird in Y.A.S. die Serialisierungsmethode zugeordnet, mit der die Objektdatenhaltung beim Kommando Save gespeichert werden soll. Bei einer neu erzeugten Objektdatenhaltung ist dies die JSON-Serialisierung, bei einer aus einer Objektdatendatei geladenen Objektdatenhaltung ist dies die zum Laden verwendete Serialisierungsmethode. Letztere wird von Y.A.S. beim Laden automatisch ermittelt. Soll beim Speichern die Serialisierungsmethode gewechselt werden, so kann die gewünschte Methode beim Kommando Save as im Dateidialog durch Auswahl des entsprechenden Dateifilters eingestellt werden. Bei Anzeige des Dateidialogs voreingestellt ist stets die aktuell zugeordnete Serialisierungsmethode. Zur besseren Übersicht über die verwendete Serialisierungsmethode ist es allgemein ratsam, dass der Benutzer eine passende Dateinamensendung vergibt.
Um die mehrfache Eingabe gleicher Attributwerte bei verschiedenen Instanzen einer Klassen zu vereinfachen, bietet Y.A.S. die Möglichkeit, ein oder mehrere Attribute einer Instanz auszuwählen, in eine spezielle (programminterne) Zwischenablage zu kopieren und aus dieser heraus in eine oder mehrere andere Instanzen derselben Klasse hinzukopieren.
Die Auswahl (Selektion und Deselektion) von Attributen kann mittels Klick auf die Attributbeschriftungen erfolgen oder im Kontextmenü zu den Attributbeschriftungen mit den Befehlen Select, Select all, Deselect und Deselect all. Das Kopieren selektierter Attributbelegungen in die Zwischenablage (Copy) und das nachfolgende Kopieren der Werte aus der Zwischenablage in andere Instanzen (Paste) geschieht über entsprechende Kontextmenübefehle.
Hinweis:
Die Implementierung der Mehrfachauswahl und der Funktion Copy & Paste
haben experimentellen Status. Dies betrifft die Bedienung der
Selektion/Deselektion und die farbliche Ausleuchtung ausgewählter
Attribute. Die Funktion Copy & Paste ist noch nicht
vollständig implementiert und funktioniert in bestimmten Konstellationen
nicht zuverlässig. Eine Erweiterung besagter Funktionen auf
untergeordnete Datenelemente in Wertekollektionen hat ebenfalls stark
experimentellen Status.
Der Objektdatenmodell-Editor unterstützt das Vor- und Zurückblättern entsprechend der automatisch aufgezeichneten Historie der im Verlauf angezeigten Elemente des Informationsmodells. Die Aufzeichnung der Anzeigehistorie ist begrenzt, so dass ggf. weiter zurückliegende Anzeigevorgänge aus der Anzeigehistorie herausfallen. Das Vor- und Zurückblättern erfolgt mittels zweier Schaltflächen in der Hauptwerkzeugleiste, die sich unterhalb des Hauptmenüs und oberhalb der Reiterleiste des Hauptfensters befindet.
Der Objektdatenmodell-Editor ermöglicht das Navigieren von unter- zu übergeordneten Elementen eines Informationsmodells mittels der mit einem schwarzen, nach oben weisenden Pfeil gekennzeichneten Schaltfläche in der Hauptwerkzeugleiste, die sich unterhalb des Hauptmenüs und oberhalb der Reiterleiste des Hauptfensters befindet.