|
|
Attribute haben in ClassiX® eine zentrale Bedeutung, da sie es ermöglichen, ein Objekt (Sachobjekt, Personenobjekte o.ä.) in allen seinen Merkmalen zu beschreiben, ohne dass Änderungen am Quellcode vorgenommen werden müssen.
Beispiel: Ziel ist es, einen Verkaufsartikel durch seine Farbe zu beschreiben.
Die Lösung herkömmlicher Software besteht darin, in
einer relationalen Datenbank ein weiteres Datenfeld für die Farbe
einzufügen und die Editiermaske 'Verkaufsteile' um eine Eingabemöglichkeit
für Farben zu erweitern. Dies kann man nur realisieren, in dem man
Änderungen sowohl im Quellcode als auch in der Datenbank vornimmt. Um
Redundanz zu vermeiden müsste man sogar eine neue Stammdatentabelle (1.
Normalform), mit allen möglichen Farben erzeugen.
Die ClassiX®-Lösung besteht aus den so genannten Attributen. So besitzt zum Beispiel jedes reale Objekt (Teile, Anlagen, etc.) ein Attribute Set, in das man Attribute sprich Merkmale einfügen/anlegen kann. Diese Attributobjekte kann jeder Anwender in der Datenbank anlegen/einfügen und sie einem Objekt zuweisen. Ein weiterer Vorteil ist, dass keine Änderungen an der Benutzeroberfläche vorgenommen werden müssen. Soll zum Beispiel ein Verkaufsteil durch seine Farbe und ein Ersatzteil durch seine Größe unterschieden werden, so kann das gleiche Editierfenster benutzt werden. Attribute können in ClassiX® auch eine Tabelle enthalten, somit werden die Daten automatisch und ohne großen Aufwand in die erste Normalform gebracht.
2.1 Voreingestelltes Attribut
Ein Voreingestelltes Attribut ermöglicht es, einem dynamischen Datenfeld einen beschreibenden Namen, weitere erklärende Daten oder eine Voreinstellung mitzugeben.
Beispiel: Ein Teppichverkäufer mit einer ClassiX® Software möchte seine Teppiche durch verschiedene Merkmale beschreiben. Zum Beispiel sollen alle Teppiche durch ihren Preis beschrieben werden. Er fügt also in allen Stammdaten ein Sachmerkmal ein, in dem er anschließend den Preis angeben kann. Wenn jetzt einzelne Teppiche durch ihre Farbe (es soll keine freie Eingabe erfolgen, sondern nur Farben aus einer Farbtabelle zur Verfügung stehen) beschrieben werden sollen, kann er dies über ein Attribut tun, welches zum Beispiel ein Datenfeld vom Typ 'String' beschreibt. Dieses Attribut wird dann mit einer Tabelle mit den verschiedenen Farben versehen.
Achtung:
Attributwerte werden in den Formeln nur bis maximal 100 Zeichen unterstützt!2.2 Formelattribute
Wie der Name schon sagt, dienen Formelattribute dem Füllen eines Datenfeldes durch ein Formel, beziehungsweise durch den Wert, den die Formel errechnet. Konstanten können hierbei direkt in die Formel mit eingegeben werden während die variablen Werte wiederum Slot-Attribute sind.
Beispiel: Der Teppichverkäufer will seine Teppiche nun auch durch die Größe beschreiben, wobei die Teppiche die Eigenschaft haben, dass alle Teppiche die gleiche Breite (4m) haben und sich nur durch die Länge unterscheiden. Hierbei kommen dem Teppichverkäufer die Formelattribute zu Gunsten. Er legt sich also ein Attribut mit der Formel '4m * Länge' an. Die Länge ist wiederum ein Voreingestelltes Attribute, wobei sich beim Ändern des Wertes automatisch auch der Wert bzw. das Ergebnis des Formelattributes ändert.
2.3 Bedingte Attribute
Bedingte Attribute können eine Tabelle enthalte welche ein "wenn - dann" Beziehung beschreibt.
Beispiel: Die Teppiche des Teppichverkäufer sollen je Farbe einen eigenen Preis bekommen. Wir legen nun ein Bedingtes Sachmerkmal an und füllen die Tabelle mit den Daten, die wir für die Preisberechnung brauchen. (z. B.: rot -> 10 € ; blau -> 20 € ; gelb -> 30€ ) Außerdem setzen wir unser gerade erzeugtes Sachmerkmal in Abhängigkeit des Sachmerkmales für die Farbe. (siehe Bsp. Voreingestelltes Attribut) Bei einer Änderung des Sachmerkmales für die Farbe, wird nun automatisch der zugehörige Wert der Bedingungstabelle zurückgegeben.
Der erste Schritt beim Anlegen eines Attributes ist erst einmal sehr allgemein, das heißt egal ob ich ein Voreingestelltes, ein Bedingtes oder ein Formelattribute anlegen möchte, werde ich immer als erstes ein Datenfeld auswählen müssen. Spätestens an dieser Stelle sollte man sich überlegen wofür man das Attribut benutzen möchte, da verschiedene Datenfelder mit verschiedenen Typen existieren. Diese verschiedenen Typen haben eine großen Einfluss darauf, wie später z.B. mit Vergleichsoperatoren gearbeitet werden kann. Möchte ich zum Beispiel das Attribut nutzen, um ein Objekt durch einen Text zu beschreiben (z.B.: Kommentare o.ä.), dann sollte man ein Datenfeld vom Typ CX_STRING aus wählen. Möchte ich einen Wert angeben, wird man sich normalerweise für ein CX_VALUE Datenfeld entscheiden u.s.w. Anschließend kann man einen Bearbeiter und das Datum angeben, an dem das Attribut angelegt oder zum letzten mal bearbeitet wurde. Die Datenfelder 'Beschreibung' und 'Text intern' können genutzt werden, um zu einem späteren Zeitpunkt noch zu wissen, welchem Zweck das Attribute dient.
Über die Checkbox 'Wertprüfung' ist es möglich Bedingungen für den Attributwert zu aktivieren und im erscheinenden Feld festzulegen. Im Beispielbild wurde festgelegt, dass der Wert unseres Attributes (technical.A_SPALT) nicht kleiner als 10 mm sein darf. Erfüllt der eingegebene Wert nicht die in der Wertprüfung festgelegten Beschränkungen, so erscheint ein entsprechendes Dialogfenster, welches den Anwender über seinen Eingabefehler informiert.3.1 Voreingestelltes Attribut
Bei Voreingestellten Attributen kann man den Wert jetzt in das Feld Voreinstellung eintragen, oder man legt über [Bearbeiten - Voreinstellung - Eigene Tabelle erzeugen] eine Tabelle an, welche man durch den Editier-Button bearbeiten kann. Fügt man das Attribut jetzt in einem Objekt ein, so übernimmt es den Voreingestellten Wert oder man kann gegebenenfalls einen Wert aus der Tabelle auswählen. Setzt man die Checkbox 'Ausschließlich', so kann man später ausschließlich die Werte der Tabelle übernehmen.
3.2 Formelattribute
Beim Anlegen von Formelattributen beginnt man wie bisher, bis man zum Eingabefenster von Formeln kommt.
Die festen Werte der Formel können direkt angegeben werden, während man bei den variablen Werten die Bezeichnung eines Slotattributes angibt, welches den gewünschten Wert enthält.
Folgende Operanden stehen dem Benutzer zur Verfügung:Arithmetische Operatoren: * / + - Vergleichsoperatoren: < > <= >= != Logische Operatoren: & | Zuweisung: := Separator: ; Bedingter Ausdruck: if ... elseÜber den Menüpunkt Bearbeiten kann man zwischen den Formeltypen 'Individuell' und 'Allgemein' wählen. Mit 'Individuell' (Standardeinstellung) wird im errechneten Sachmerkmal eine eigene Formel hinterlegt, mit 'Allgemein' wird auf eine bereits im System hinterlegte Berechnungsformel Bezug genommen. Der letztere Fall kann dann sinnvoll sein, wenn einige errechnete Sachmerkmale z.B. andere Namen, Steuerungen oder Gültigkeiten aufweisen sollen, die Formel aber immer die selbe sein soll.
3.3 Bedingte Attribute
Beim Anlegen von bedingten Attributen beginnt man wie bisher, unter 'Wertprüfung' stehen neue Optionen und eine bedingte Tabelle zur Verfügung.
Ergebnis vorgeschrieben Die bedingte Tabelle muss ein Ergebnis liefern Abbruch, wenn kein Ergebnis gefunden Sollte keine der Bedingungen der Tabelle zutreffen, wird eine Fehlermeldung ausgegeben. Ein Setzen dieser Auswahl setzt automatisch auch das Feld "Ergebnis vorgeschrieben" Nicht ermittelbare/berechenbare Bedingung übergehen Werden Variablen in einer Bedingungen im System automatisch nicht gefunden, so wird keine Meldung ausgegeben, sondern diese Bedingung wird übergangen. Dieses bedeutet ebenfalls, dass nach solchen Variablen auch nicht interaktiv abgefragt wird. Mittels der Knöpfe ('Einfügen', 'Duplizieren', 'Löschen') oberhalb der Tabelle können die einzelnen Zeilen bearbeitet werden.
Das Bearbeiten der Spalten erfolgt über das Kontextmenü (Rechtsklick) innerhalb der Tabelle. Um bestimmende Größen (Variablen) in den Bedingungen der Einträge der Tabelle nicht immer aufs Neue schreiben zu müssen, können diese als eigenständige Spalten der Tabelle herausgezogen werden. Bei "Einfügen Spalten" erhält man ein Selektionsfenster voreingestellter Sachmerkmale, mit "Bearbeiten Spalten" kann man direkt die Namen der Variablen der gewünschten Spalten angeben.3.4 Merkmalstabellen
Merkmalstabellen erleichtern die Arbeit mit Attributen, wenn man immer wieder gleiche 'Gruppen' von Attributen einem Attribute Set zuweisen muss. So lassen sich in einer Merkmalstabelle beliebige Attribute auflisten, so dass man nur noch die Merkmalstabelle einfügen brauch.
Über den Menüpunkt [Bearbeiten - Sachmerkmale] bzw. über das Kontextmenü lassen sich die einzelnen Attribute einfügen, anlegen, bearbeiten und löschen.
Sie können globale
Attribute einfügen, ändern oder löschen. Zusätzlich haben Sie die Möglichkeit neue lokale
Attribute anzulegen, die dann nur in diesem Objekt gültig sind.
Die Attributdaten können per Doppelklick bearbeitet werden.
Ein Rechtsklick auf ein lokal angelegtes Attribut ruft die Eingabemaske auf.
Schon vor dem Anlegen eines neuen Sachmerkmals mit einer anhängenden Tabelle muss man sich im Klaren darüber sein, wie damit später gearbeitet werden soll und kann. Dazu muss man wissen, dass intern die Sachmerkmale verschiedene Typen haben können, z.B. STRING, ENUMCHAR, etc.
Bei den Sachmerkmalen die als Typ STRING bzw. mit einem Datenfeld des Typs STRING angelegt werden, wird intern direkt der vom Benutzer eingegebene Wert (Text) gehalten und deshalb auch für Vergleiche herangezogen.
Legt man aber zum Beispiel ein Sachmerkmal mit dem Typ ENUMCHAR an, so ist der interne Aufbau der anhängenden Tabelle ein anderer. Dort steht nicht mehr direkt der Wert (z.B. Text im Fall des Typs STRING), sondern in der internen Tabelle gibt es eine vom Anleger vorgegebene Durchnummerierung und für jeden der Einträge den nach außen hin zu zeigenden Wert, z.B. 1 -> Äpfel, 2 -> Birnen und 3 -> Bananen.
Bei Vergleichsoperationen wird in allen Fällen von z.B. ENUMCHAR immer der interne Wert herangezogen, da man ja sozusagen nicht Äpfel mit Birnen über "größer" oder "kleiner" vergleichen kann. Auf "gleich" kann man aber natürlich ohne Probleme testen, nur eben bei nicht-"gleich" Vergleichen muss man sehr vorsichtig sein.
Das gilt besonders für die Fälle, in denen man z.B. folgende Tabelle angelegt hat: 1 -> "100", 2 -> "200" und 3 -> "150". Dort kann man nicht einfach den Vergleich machen "kleiner oder gleich 200", da die "200" erst in den internen Wert 2 umgewandelt wird, und bei den internen Werten sind nur 1 und 2 "kleiner oder gleich 2", so dass der Eintrag 3 -> "150" nicht ausgegeben wird.
Die folgenden Attribute werden im ClassiX System intern interpretiert und steuern gewisse Funktionalitäten im System
| Attribut | Funktion in ClassiX |
|---|---|
| suppliedID | Ist in einem Auftrag das Sachmerkmal suppliedID mit einer gültigen Lieferantennummer gefüllt und hat das Bestellteil keinen A-Lieferanten, so wird auf der Bedarfsanforderung und auf der Bestellung ein Lieferant mit dieser Nummer gezogen. In diesem Fall wird ebenfalls der auf der Auftragsposition eingegebene Einstandspreis als Bestellpreis benutzt |
| wages.primeOverheadRate | GMK für Lohn in Prozent |
| material.primeOverheadRate | GMK für Material in Prozent |
| lockForLink | Teil ist für neu zu erstellende Bewegungsdaten gesperrt (Stücklistenauflösung bricht ab, wenn es auf ein Teil mit einem Status stößt, der dieses Attribut mit dem Wert 1 hat) |
| suppressInList | Dieses Attribut wird zum Verstecken von Objekten benutzt. Teile, die einem Status mit diesem Attribut und dem Wert 1 zugeorndet sind, werden in der Teilestammliste nicht gezeigt. |
| lockForSiblings | Teil kann nicht mehr als Austauschobjekt benutzt werden |
| lockEditing | Bearbeitung des Teils ist gesperrt |
| length | Länge (Berechnung bei Verpackungen) |
| width | Breite (Berechnung bei Verpackungen) |
| height | Höhe (Berechnung bei Verpackungen) |
| weight | Gewicht |