Lade...
 

CX_ATTRIBUTE - Attribute Sachmerkmale

CX_ATTRIBUTE

Klassenhierarchie
Beschreibung:

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

Code-Beispiel:
...
Methodenverzeichnis (MDI)
Funktion MA* Parameter Rückgabe Kurzbeschreibung
ElementOf   CX_VALUE CX_BOOLEAN  
HasConstraint *     Gültigkeit vorhanden?
UnconditionalValue *     Wert des Slots - Constrains nicht beachten
UnconditionalValueObject     ANY Wert des Slots - Constrains nicht beachten
Value *     Liefert einen Fehler, da Value für diese Klasse keine Bedeutung hat.
ValueObject     ANY Liefert einen Fehler, da Value für diese Klasse keine Bedeutung hat.
  • MA = Member-Access-Funktion,
    grau unterlegt = geerbte Funktion
Datenverzeichnis (DDI)
Datenfeld Typ Referenz-Klasse I* Kurzbeschreibung
attributeEnum ENUMSHORT     Typ
constraint POINTER CX_FORMULA   Eine optionale Formel, die prüft, ob der Attributwert (bei Put via Value()) im gültigen Wertebereich für dieses Attribut liegt. Wird ein Wert eingegeben, für den diese Formel zu FALSE ausgewertet wird, dann wird der Nutzer auf die den Eingabefehler hingewiesen.
Siehe als Beispiel: Wertprüfung in Attributpflegemaske
Diese Prüfung wird bei UnconditionalValue() übersprungen.
uniqueID STRING   * Eindeutiger Schlüssel
validity POINTER CX_VALIDITY   Gültigkeitszeitraum des Objektes
  • I = Indizierbares Datenfeld,
    grau unterlegt = geerbtes Datenfeld
Verwendung in AppsWH
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