In ClassiX® können beliebige Datenfelder dynamisch definiert werden und in allen Geschäftsobjekten jederzeit zusätzlich gespeichert werden (sog. dynamische Datenfelder oder Slots). Eine Definition dieser Datenfelder nimmt üblicherweise der Systemadministrator vor, in Verbindung mit Erweiterung der Anwendungen/Bildschirmmasken, aus denen heraus diese Datenfelder gepflegt werden können.
Diese dynamischen Datenfelder sind zunächst nur Variablen eines bestimmten Typs. Will man aber z.B. für eine Variable vom Typ Wert (CX_VALUE) die Standardeinheit angeben oder diese dynamischen Variablen mit einer bestimmten - vom Anwender frei eingebbaren - Bezeichnung versehen, braucht man Objekte, die diese dynamischen Variablen umhüllen oder kapseln. Genau dieses leisten die Objekte der Klasse vom Typ CX_ATTRIBUTE.
Objekte vom Typ CX_ATTRIBUTE dienen insbesondere der Angabe von Sachmerkmalen eines Unternehmens.
Jedes dynamische Datenfeld kann mehrfach - in Form auch verschiedener Attributobjekte - beschrieben werden. Z.B. kann in einem bestimmten Zusammenhang die Fläche manuell eingegeben werden (z.B. Kapselung eines Slots 'Fläche' als voreingestelltes Attribut CX_SLOT_ATTRIBUTE), in einem anderen Zusammenhang soll sie automatisch errechnet werden (z.B. Kapselung des Slots 'Fläche' als errechnetes Attribut CX_FORMULA_ATTRIBUTE).
Soll ein dynamisches Datenfeld als Attributobjekt seinen Typ ändern, dann kann dieses über den allgemeinen Gültigkeits-Mechanismus von ClassiX® erfolgen (SpanDateValidity()).
Für alle Objekte vom Typ CX_ATTRIBUTE können Gültigkeitsbereiche angegeben werden. Z.B. für einen Slot Nennlänge "LN": "LN > 500 mm & LN <= 3000 mm": die Nennlänge "LN" darf nur größer 500 mm und kleiner 3000 mm sein. Bei jeder Änderung des Objektes wird der Gültigkeitsbereich überprüft.
Die CX_ATTRIBUTE Klassen im Einzelnen:
CX_SLOT_ATTRIBUTE ermöglicht es, einem dynamischen Datenfeld einen beschreibenden Namen, weitere erklärende Daten oder einen Standardwert mitzugeben.
CX_FORMULA_ATTRIBUTE kapselt eine Formel als dynamisches Datenfeld: Jede Abfrage des Werts der dynamischen Variablen führt automatisch zur Auswertung der Formel und Rückgabe des Ergebnisses (z.B. dynamisches Datenfeld "Fläche" mit Formel "Länge" * "Breite").
CX_CONDITIONED_ATTRIBUTE kapselt eine bedingte Tabelle CX_CONDITIONED_BAG als dynamisches Datenfeld: Jede Abfrage des Werts der dynamischen Variablen führt automatisch zur Abfrage der Tabelle und Rückgabe des Ergebnisses (z.B. dynamisches Datenfeld "Preis" mit Tabelle, deren Einträge bedingt von einer "Menge" sind).
Die Verwaltung mehrerer CX_ATTRIBUTE Objekte übernimmt die Klasse CX_ATTRIBUTE_SET, die quasi eine Erweiterung eines Geschäftsobjektes darstellt. Ein solches CX_ATTRIBUTE_SET kann auch über ein CX_CONDITIONED_BAG erreicht werden, falls in Abhängigkeit bestimmter Bedingungen verschiedene Attribut-Werträume modelliert werden sollen.
Auf einer nächst höheren Ebene soll es jedem Anwender ermöglicht werden,
beliebige Merkmale bestimmten Objekten mitzugeben, z.B. einen Artikel mit
Angaben für Farbe, Durchmesser oder Gewicht zu versehen. Hier ist a priori
nicht bekannt, welches Datenfeld wo verwendet wird.
Die Klassen vom Typ CX_ATTRIBUTE beschreiben die Sachmerkmale eines Unternehmens aus Anwendung(s)(er)sicht.
Jedes dynamische Datenfeld kann mehrfach in Form auch verschiedener Attributobjekte
beschrieben werden. Z.B. kann in einem bestimmten Zusammenhang die Fläche
manuell eingegeben werden (Definition des slots Fläche als
CX_DEFAULT_ATTRIBUTE), in einem anderen Zusammenhang soll sie automatisch errechnet werden (Definition
des slots Fläche als CX_FORMULA_ATTRIBUTE).
Soll ein Attributobjekt seinen Typ ändern, dann kann dieses über den Gültigkeits-Mechanismus erfolgen.
Die Verwaltung verschiedener CX_ATTRIBUT Objekte übernimmt die Klasse
CX_ATTRIBUTE_SET, die quasi eine Erweiterung eines Objektes darstellt. Ein solches CX_ATTRIBUTE_SET kann auch über ein CX_CONDITIONED_BAG
erreicht werden, falls in Abhängigkeit bestimmter Bedingungen verschiedene
Attribut-Werträume modelliert werden sollen.
Alle Objekte vom Typ CX_ATTRIBUTE haben einen pointer "constraint" vom Typ
CX_FORMULA. Damit werden Gültigkeitsbereiche der Objekte angegeben. Z.B. für
einen Slot "LN": "LN > 500 mm & LN <= 3000 mm". Bei jeder Änderung des
Objektes wird die Gültigkeit überprüft (beim Setzen time stamp). Sollte die
Evaluation der Gültigkeit Objekte aus dem PlugSpace benötigen, muss dieser
vorher entsprechend gesetzt sein (OFFEN: Pipe implementieren, ob Un-Gültigkeit
akzeptiert werden kann, z.B. bei Pflege des Attributes)
Die Verbindung zu den dynamischen Datenfeldern oder Slots stellt die Klasse
CX_SLOT_ATTRIBUTE her. CX_SLOT_ATTRIBUTE bezieht sich auf ein dyn. Datenfeld
(slot) und gestattet es z.B. dem Datenfeld einen beschreibenden Namen zu
geben.
CX_CONDITIONED_ATTRIBUTE, CX_FORMULA_ATTRIBUTE und CX_DEFAULT_ATTRIBUTE sind davon abgeleitet.
CX_DEFAULT_ATTRIBUTE beschreibt dynamische Datenfelder, die normalerweise
eingegeben werden müssen und daher über mögliche Voreinstellungen verfügen
müssen. Der mögliche Standardwert des slots wird im defaultValue Container
gehalten.
CX_DEFAULT_ATTRIBUTE hält auch Randbedingungen (constraint), die über eine BOOL Formel evaluiert werden FIXME: Funktion IsValid ???
CX_SLOT_ATTRIBUTE und CX_DEFAULT_ATTRIBUTE sind vom Typ eines sog. Value Attributes, d.h. sie repräsentieren direkt einen Wert (Funktion
IsValueType()), der editiert werden kann (Funktion Value()).
Artikel halten in ihrer Merkmalsleiste CX_DEFAULT_ATTRIBUTE, um Werte aufzunehmen. Diese Werte können immer wieder in den Standardwert
überführt werden (Funktion DefaultValue()). Teile halten
CX_SLOT_ATTRIBUTE, da hier nur direkt der Wert angegeben werden muss.
Einem CX_FORMULA_ATTRIBUTE können in seinem eigenem frame parameter für
die eigene formel mitgegeben werden, also z.b. unter-formeln, etc, so
z.b. (l=) a + 5, wobei a wiederum ein slot im frame des CX_FORMULA_ATTRIBUTE für
den wert l ist. a könnte also z.b. selbst ein conditioned_bag sein.
(Beispiel: Attribut Fläche = Attribut Länge * Attribut Breite)
Bei einem CX_CONDITIONED_ATTRIBUTE werden die Werte eines Attributes an Bedingungen geknüpft. Diese Bedingungen können Werte anderer Attribute
sein, wodurch eine Abhängigkeit der Wertigkeit dieses CONDITIONED_ATTRIBUTE
Attributes vom Wert anderer abhängig wird.
(Beispiel: Wenn Montagepunkt = rechts oder = beidseitig dann Längerechts = Länge;
Wenn Montagepunkt = links oder = beidseitig dann Längelinks = Länge)
OFFEN
=====
CopyConstructor von CX_CONDITIONED_ATTRIBUTE überprüfen
| Modul | Kurzbeschreibung | |
|---|---|---|
| attribut.mod | Sachmerkmale Basismodul | |
| attriedt.mod | Sachmerkmale Editiermodul | |
| attrisel.mod | Sachmerkmale Selektionsmodul | |
| attrfedt.mod | Errechnete Sachmerkmale Editiermodul | |
| attrfsel.mod | attribut.htm | attrform.htm | Errechnete Sachmerkmale Selektionsmodul |
| attrsedt.mod | Voreinstellbare Sachmerkmale Editiermodul | |
| attrssel.mod | attribut.htm | attrslot.htm | Voreinstellbare Sachmerkmale Selektionsmodul |
| attrise2.mod | Sachmerkmale Selektionsmodul | |
| testform.mod | Testen Formel Modul | |
| dynbind.mod | Dynamisches Binden von Variablen | |